public class org.h2.table.Plan
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.h2.table.Plan
super_class: java.lang.Object
{
private final org.h2.table.TableFilter[] filters;
descriptor: [Lorg/h2/table/TableFilter;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.HashMap<org.h2.table.TableFilter, org.h2.table.PlanItem> planItems;
descriptor: Ljava/util/HashMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/HashMap<Lorg/h2/table/TableFilter;Lorg/h2/table/PlanItem;>;
private final org.h2.expression.Expression[] allConditions;
descriptor: [Lorg/h2/expression/Expression;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.h2.table.TableFilter[] allFilters;
descriptor: [Lorg/h2/table/TableFilter;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
public void <init>(org.h2.table.TableFilter[], int, org.h2.expression.Expression);
descriptor: ([Lorg/h2/table/TableFilter;ILorg/h2/expression/Expression;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield org.h2.table.Plan.planItems:Ljava/util/HashMap;
2: aload 0
iload 2
anewarray org.h2.table.TableFilter
putfield org.h2.table.Plan.filters:[Lorg/h2/table/TableFilter;
3: aload 1
iconst_0
aload 0
getfield org.h2.table.Plan.filters:[Lorg/h2/table/TableFilter;
iconst_0
iload 2
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
4: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 4
start local 4 5: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 5
start local 5 6: aload 3
ifnull 8
7: aload 4
aload 3
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
8: StackMap locals: org.h2.table.Plan org.h2.table.TableFilter[] int org.h2.expression.Expression java.util.ArrayList java.util.ArrayList
StackMap stack:
iconst_0
istore 6
start local 6 9: goto 13
10: StackMap locals: int
StackMap stack:
aload 1
iload 6
aaload
astore 7
start local 7 11: aload 7
new org.h2.table.Plan$1
dup
aload 0
aload 5
aload 4
invokespecial org.h2.table.Plan$1.<init>:(Lorg/h2/table/Plan;Ljava/util/ArrayList;Ljava/util/ArrayList;)V
invokevirtual org.h2.table.TableFilter.visit:(Lorg/h2/table/TableFilter$TableFilterVisitor;)V
end local 7 12: iinc 6 1
StackMap locals:
StackMap stack:
13: iload 6
iload 2
if_icmplt 10
end local 6 14: aload 0
aload 4
iconst_0
anewarray org.h2.expression.Expression
invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast org.h2.expression.Expression[]
putfield org.h2.table.Plan.allConditions:[Lorg/h2/expression/Expression;
15: aload 0
aload 5
iconst_0
anewarray org.h2.table.TableFilter
invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast org.h2.table.TableFilter[]
putfield org.h2.table.Plan.allFilters:[Lorg/h2/table/TableFilter;
16: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lorg/h2/table/Plan;
0 17 1 filters [Lorg/h2/table/TableFilter;
0 17 2 count I
0 17 3 condition Lorg/h2/expression/Expression;
5 17 4 allCond Ljava/util/ArrayList<Lorg/h2/expression/Expression;>;
6 17 5 all Ljava/util/ArrayList<Lorg/h2/table/TableFilter;>;
9 14 6 i I
11 12 7 f Lorg/h2/table/TableFilter;
MethodParameters:
Name Flags
filters
count
condition
public org.h2.table.PlanItem getItem(org.h2.table.TableFilter);
descriptor: (Lorg/h2/table/TableFilter;)Lorg/h2/table/PlanItem;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.table.Plan.planItems:Ljava/util/HashMap;
aload 1
invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.h2.table.PlanItem
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/table/Plan;
0 1 1 filter Lorg/h2/table/TableFilter;
MethodParameters:
Name Flags
filter
public org.h2.table.TableFilter[] getFilters();
descriptor: ()[Lorg/h2/table/TableFilter;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.table.Plan.filters:[Lorg/h2/table/TableFilter;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/table/Plan;
public void removeUnusableIndexConditions();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: goto 9
2: StackMap locals: int
StackMap stack:
aload 0
getfield org.h2.table.Plan.allFilters:[Lorg/h2/table/TableFilter;
iload 1
aaload
astore 2
start local 2 3: aload 0
aload 2
iconst_1
invokevirtual org.h2.table.Plan.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
4: iload 1
aload 0
getfield org.h2.table.Plan.allFilters:[Lorg/h2/table/TableFilter;
arraylength
iconst_1
isub
if_icmplt 6
5: aload 2
invokevirtual org.h2.table.TableFilter.getSession:()Lorg/h2/engine/Session;
invokevirtual org.h2.engine.Session.getDatabase:()Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.getSettings:()Lorg/h2/engine/DbSettings;
getfield org.h2.engine.DbSettings.earlyFilter:Z
ifeq 7
6: StackMap locals: org.h2.table.TableFilter
StackMap stack:
aload 2
iconst_0
invokevirtual org.h2.table.TableFilter.optimizeFullCondition:(Z)V
7: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.h2.table.TableFilter.removeUnusableIndexConditions:()V
end local 2 8: iinc 1 1
StackMap locals:
StackMap stack:
9: iload 1
aload 0
getfield org.h2.table.Plan.allFilters:[Lorg/h2/table/TableFilter;
arraylength
if_icmplt 2
end local 1 10: aload 0
getfield org.h2.table.Plan.allFilters:[Lorg/h2/table/TableFilter;
dup
astore 4
arraylength
istore 3
iconst_0
istore 2
goto 14
StackMap locals: org.h2.table.Plan top int int org.h2.table.TableFilter[]
StackMap stack:
11: aload 4
iload 2
aaload
astore 1
start local 1 12: aload 0
aload 1
iconst_0
invokevirtual org.h2.table.Plan.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
end local 1 13: iinc 2 1
StackMap locals:
StackMap stack:
14: iload 2
iload 3
if_icmplt 11
15: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/h2/table/Plan;
1 10 1 i I
3 8 2 f Lorg/h2/table/TableFilter;
12 13 1 f Lorg/h2/table/TableFilter;
public double calculateCost(org.h2.engine.Session, org.h2.command.dml.AllColumnsForPlan);
descriptor: (Lorg/h2/engine/Session;Lorg/h2/command/dml/AllColumnsForPlan;)D
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=11, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual org.h2.engine.Session.getTrace:()Lorg/h2/message/Trace;
astore 3
start local 3 1: aload 3
invokevirtual org.h2.message.Trace.isDebugEnabled:()Z
ifeq 3
2: aload 3
ldc "Plan : calculate cost for plan {0}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 0
getfield org.h2.table.Plan.allFilters:[Lorg/h2/table/TableFilter;
invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
aastore
invokevirtual org.h2.message.Trace.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
3: StackMap locals: org.h2.message.Trace
StackMap stack:
dconst_1
dstore 4
start local 4 4: iconst_0
istore 6
start local 6 5: iconst_0
istore 7
start local 7 6: goto 24
7: StackMap locals: double int int
StackMap stack:
aload 0
getfield org.h2.table.Plan.allFilters:[Lorg/h2/table/TableFilter;
iload 7
aaload
astore 8
start local 8 8: aload 3
invokevirtual org.h2.message.Trace.isDebugEnabled:()Z
ifeq 10
9: aload 3
ldc "Plan : for table filter {0}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 8
aastore
invokevirtual org.h2.message.Trace.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
10: StackMap locals: org.h2.table.TableFilter
StackMap stack:
aload 8
aload 1
aload 0
getfield org.h2.table.Plan.allFilters:[Lorg/h2/table/TableFilter;
iload 7
aload 2
invokevirtual org.h2.table.TableFilter.getBestPlanItem:(Lorg/h2/engine/Session;[Lorg/h2/table/TableFilter;ILorg/h2/command/dml/AllColumnsForPlan;)Lorg/h2/table/PlanItem;
astore 9
start local 9 11: aload 0
getfield org.h2.table.Plan.planItems:Ljava/util/HashMap;
aload 8
aload 9
invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
12: aload 3
invokevirtual org.h2.message.Trace.isDebugEnabled:()Z
ifeq 16
13: aload 3
ldc "Plan : best plan item cost {0} index {1}"
iconst_2
anewarray java.lang.Object
dup
iconst_0
14: aload 9
getfield org.h2.table.PlanItem.cost:D
invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
aastore
dup
iconst_1
aload 9
invokevirtual org.h2.table.PlanItem.getIndex:()Lorg/h2/index/Index;
invokeinterface org.h2.index.Index.getPlanSQL:()Ljava/lang/String;
aastore
15: invokevirtual org.h2.message.Trace.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
16: StackMap locals: org.h2.table.PlanItem
StackMap stack:
dload 4
dload 4
aload 9
getfield org.h2.table.PlanItem.cost:D
dmul
dadd
dstore 4
17: aload 0
aload 8
iconst_1
invokevirtual org.h2.table.Plan.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
18: aload 8
invokevirtual org.h2.table.TableFilter.getJoinCondition:()Lorg/h2/expression/Expression;
astore 10
start local 10 19: aload 10
ifnull 23
20: aload 10
getstatic org.h2.expression.ExpressionVisitor.EVALUATABLE_VISITOR:Lorg/h2/expression/ExpressionVisitor;
invokevirtual org.h2.expression.Expression.isEverything:(Lorg/h2/expression/ExpressionVisitor;)Z
ifne 23
21: iconst_1
istore 6
22: goto 25
end local 10 end local 9 end local 8 23: StackMap locals:
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
24: iload 7
aload 0
getfield org.h2.table.Plan.allFilters:[Lorg/h2/table/TableFilter;
arraylength
if_icmplt 7
end local 7 25: StackMap locals:
StackMap stack:
iload 6
ifeq 27
26: ldc Infinity
dstore 4
27: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.h2.message.Trace.isDebugEnabled:()Z
ifeq 29
28: aload 1
invokevirtual org.h2.engine.Session.getTrace:()Lorg/h2/message/Trace;
ldc "Plan : plan cost {0}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
dload 4
invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
aastore
invokevirtual org.h2.message.Trace.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
29: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.table.Plan.allFilters:[Lorg/h2/table/TableFilter;
dup
astore 10
arraylength
istore 9
iconst_0
istore 8
goto 33
StackMap locals: org.h2.table.Plan org.h2.engine.Session org.h2.command.dml.AllColumnsForPlan org.h2.message.Trace double int top int int org.h2.table.TableFilter[]
StackMap stack:
30: aload 10
iload 8
aaload
astore 7
start local 7 31: aload 0
aload 7
iconst_0
invokevirtual org.h2.table.Plan.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
end local 7 32: iinc 8 1
StackMap locals:
StackMap stack:
33: iload 8
iload 9
if_icmplt 30
34: dload 4
dreturn
end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Lorg/h2/table/Plan;
0 35 1 session Lorg/h2/engine/Session;
0 35 2 allColumnsSet Lorg/h2/command/dml/AllColumnsForPlan;
1 35 3 t Lorg/h2/message/Trace;
4 35 4 cost D
5 35 6 invalidPlan Z
6 25 7 i I
8 23 8 tableFilter Lorg/h2/table/TableFilter;
11 23 9 item Lorg/h2/table/PlanItem;
19 23 10 on Lorg/h2/expression/Expression;
31 32 7 f Lorg/h2/table/TableFilter;
MethodParameters:
Name Flags
session
allColumnsSet
private void setEvaluatable(org.h2.table.TableFilter, boolean);
descriptor: (Lorg/h2/table/TableFilter;Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 1
iload 2
invokevirtual org.h2.table.TableFilter.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
1: aload 0
getfield org.h2.table.Plan.allConditions:[Lorg/h2/expression/Expression;
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 5
StackMap locals: org.h2.table.Plan org.h2.table.TableFilter int top int int org.h2.expression.Expression[]
StackMap stack:
2: aload 6
iload 4
aaload
astore 3
start local 3 3: aload 3
aload 1
iload 2
invokevirtual org.h2.expression.Expression.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
end local 3 4: iinc 4 1
StackMap locals:
StackMap stack:
5: iload 4
iload 5
if_icmplt 2
6: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/h2/table/Plan;
0 7 1 filter Lorg/h2/table/TableFilter;
0 7 2 b Z
3 4 3 e Lorg/h2/expression/Expression;
MethodParameters:
Name Flags
filter
b
}
SourceFile: "Plan.java"
NestMembers:
org.h2.table.Plan$1
InnerClasses:
org.h2.table.Plan$1
public abstract TableFilterVisitor = org.h2.table.TableFilter$TableFilterVisitor of org.h2.table.TableFilter