final class org.h2.expression.aggregate.Percentile
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: org.h2.expression.aggregate.Percentile
super_class: java.lang.Object
{
static final java.math.BigDecimal HALF;
descriptor: Ljava/math/BigDecimal;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc 0.5
invokestatic java.math.BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
putstatic org.h2.expression.aggregate.Percentile.HALF:Ljava/math/BigDecimal;
return
LocalVariableTable:
Start End Slot Name Signature
private static boolean isNullsLast(org.h2.index.Index);
descriptor: (Lorg/h2/index/Index;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
invokeinterface org.h2.index.Index.getIndexColumns:()[Lorg/h2/table/IndexColumn;
iconst_0
aaload
astore 1
start local 1 1: aload 1
getfield org.h2.table.IndexColumn.sortType:I
istore 2
start local 2 2: iload 2
iconst_4
iand
ifne 9
3: iload 2
iconst_2
iand
ifne 8
4: iload 2
iconst_1
iand
ifeq 5
iconst_1
goto 6
StackMap locals: org.h2.table.IndexColumn int
StackMap stack:
5: iconst_0
StackMap locals:
StackMap stack: int
6: getstatic org.h2.engine.SysProperties.SORT_NULLS_HIGH:Z
7: ixor
ifne 9
StackMap locals:
StackMap stack:
8: iconst_0
ireturn
StackMap locals:
StackMap stack:
9: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 index Lorg/h2/index/Index;
1 10 1 ic Lorg/h2/table/IndexColumn;
2 10 2 sortType I
MethodParameters:
Name Flags
index
static org.h2.index.Index getColumnIndex(org.h2.expression.Expression);
descriptor: (Lorg/h2/expression/Expression;)Lorg/h2/index/Index;
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=11, args_size=1
start local 0 0: aload 0
instanceof org.h2.expression.ExpressionColumn
ifeq 24
1: aload 0
checkcast org.h2.expression.ExpressionColumn
astore 1
start local 1 2: aload 1
invokevirtual org.h2.expression.ExpressionColumn.getColumn:()Lorg/h2/table/Column;
astore 2
start local 2 3: aload 1
invokevirtual org.h2.expression.ExpressionColumn.getTableFilter:()Lorg/h2/table/TableFilter;
astore 3
start local 3 4: aload 3
ifnull 24
5: aload 3
invokevirtual org.h2.table.TableFilter.getTable:()Lorg/h2/table/Table;
astore 4
start local 4 6: aload 4
invokevirtual org.h2.table.Table.getIndexes:()Ljava/util/ArrayList;
astore 5
start local 5 7: aconst_null
astore 6
start local 6 8: aload 5
ifnull 23
9: aload 2
invokevirtual org.h2.table.Column.isNullable:()Z
istore 7
start local 7 10: iconst_1
istore 8
start local 8 11: aload 5
invokevirtual java.util.ArrayList.size:()I
istore 9
start local 9 12: goto 22
13: StackMap locals: org.h2.expression.Expression org.h2.expression.ExpressionColumn org.h2.table.Column org.h2.table.TableFilter org.h2.table.Table java.util.ArrayList org.h2.index.Index int int int
StackMap stack:
aload 5
iload 8
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.h2.index.Index
astore 10
start local 10 14: aload 10
invokeinterface org.h2.index.Index.canFindNext:()Z
ifne 16
15: goto 21
16: StackMap locals: org.h2.index.Index
StackMap stack:
aload 10
aload 2
invokeinterface org.h2.index.Index.isFirstColumn:(Lorg/h2/table/Column;)Z
ifne 18
17: goto 21
18: StackMap locals:
StackMap stack:
aload 6
ifnull 20
aload 6
invokeinterface org.h2.index.Index.getColumns:()[Lorg/h2/table/Column;
arraylength
aload 10
invokeinterface org.h2.index.Index.getColumns:()[Lorg/h2/table/Column;
arraylength
if_icmpgt 20
19: iload 7
ifeq 21
aload 6
invokestatic org.h2.expression.aggregate.Percentile.isNullsLast:(Lorg/h2/index/Index;)Z
ifeq 21
aload 10
invokestatic org.h2.expression.aggregate.Percentile.isNullsLast:(Lorg/h2/index/Index;)Z
ifne 21
20: StackMap locals:
StackMap stack:
aload 10
astore 6
end local 10 21: StackMap locals:
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
22: iload 8
iload 9
if_icmplt 13
end local 9 end local 8 end local 7 23: StackMap locals:
StackMap stack:
aload 6
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 24: StackMap locals: org.h2.expression.Expression
StackMap stack:
aconst_null
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 on Lorg/h2/expression/Expression;
2 24 1 col Lorg/h2/expression/ExpressionColumn;
3 24 2 column Lorg/h2/table/Column;
4 24 3 filter Lorg/h2/table/TableFilter;
6 24 4 table Lorg/h2/table/Table;
7 24 5 indexes Ljava/util/ArrayList<Lorg/h2/index/Index;>;
8 24 6 result Lorg/h2/index/Index;
10 23 7 nullable Z
11 23 8 i I
12 23 9 size I
14 21 10 index Lorg/h2/index/Index;
MethodParameters:
Name Flags
on
static org.h2.value.Value getValue(org.h2.engine.Database, org.h2.value.Value[], int, java.util.ArrayList<org.h2.command.dml.SelectOrderBy>, java.math.BigDecimal, boolean);
descriptor: (Lorg/h2/engine/Database;[Lorg/h2/value/Value;ILjava/util/ArrayList;Ljava/math/BigDecimal;Z)Lorg/h2/value/Value;
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=14, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
invokevirtual org.h2.engine.Database.getCompareMode:()Lorg/h2/value/CompareMode;
astore 6
start local 6 1: aload 1
aload 6
invokestatic java.util.Arrays.sort:([Ljava/lang/Object;Ljava/util/Comparator;)V
2: aload 1
arraylength
istore 7
start local 7 3: aload 3
ifnull 4
aload 3
iconst_0
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.h2.command.dml.SelectOrderBy
getfield org.h2.command.dml.SelectOrderBy.sortType:I
iconst_1
iand
ifeq 4
iconst_1
goto 5
StackMap locals: org.h2.value.CompareMode int
StackMap stack:
4: iconst_0
StackMap locals:
StackMap stack: int
5: istore 8
start local 8 6: iload 7
iconst_1
isub
i2l
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
aload 4
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
astore 9
start local 9 7: aload 9
invokevirtual java.math.BigDecimal.intValue:()I
istore 10
start local 10 8: aload 9
iload 10
i2l
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
astore 11
start local 11 9: aload 11
invokevirtual java.math.BigDecimal.signum:()I
ifne 13
10: iconst_0
istore 5
11: iload 10
istore 12
start local 12 12: goto 19
end local 12 13: StackMap locals: org.h2.engine.Database org.h2.value.Value[] int java.util.ArrayList java.math.BigDecimal int org.h2.value.CompareMode int int java.math.BigDecimal int java.math.BigDecimal
StackMap stack:
iload 10
iconst_1
iadd
istore 12
start local 12 14: iload 5
ifne 19
15: aload 11
getstatic org.h2.expression.aggregate.Percentile.HALF:Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
ifle 18
16: iload 12
istore 10
17: goto 19
18: StackMap locals: int
StackMap stack:
iload 10
istore 12
19: StackMap locals:
StackMap stack:
iload 8
ifeq 22
20: iload 7
iconst_1
isub
iload 10
isub
istore 10
21: iload 7
iconst_1
isub
iload 12
isub
istore 12
22: StackMap locals:
StackMap stack:
aload 1
iload 10
aaload
astore 13
start local 13 23: iload 5
ifne 25
24: aload 13
iload 2
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
areturn
25: StackMap locals: org.h2.value.Value
StackMap stack:
aload 13
aload 1
iload 12
aaload
aload 11
iload 2
aload 0
invokevirtual org.h2.engine.Database.getMode:()Lorg/h2/engine/Mode;
aload 6
invokestatic org.h2.expression.aggregate.Percentile.interpolate:(Lorg/h2/value/Value;Lorg/h2/value/Value;Ljava/math/BigDecimal;ILorg/h2/engine/Mode;Lorg/h2/value/CompareMode;)Lorg/h2/value/Value;
areturn
end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 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 26 0 database Lorg/h2/engine/Database;
0 26 1 array [Lorg/h2/value/Value;
0 26 2 dataType I
0 26 3 orderByList Ljava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;
0 26 4 percentile Ljava/math/BigDecimal;
0 26 5 interpolate Z
1 26 6 compareMode Lorg/h2/value/CompareMode;
3 26 7 count I
6 26 8 reverseIndex Z
7 26 9 fpRow Ljava/math/BigDecimal;
8 26 10 rowIdx1 I
9 26 11 factor Ljava/math/BigDecimal;
12 13 12 rowIdx2 I
14 26 12 rowIdx2 I
23 26 13 v Lorg/h2/value/Value;
Signature: (Lorg/h2/engine/Database;[Lorg/h2/value/Value;ILjava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;Ljava/math/BigDecimal;Z)Lorg/h2/value/Value;
MethodParameters:
Name Flags
database
array
dataType
orderByList
percentile
interpolate
static org.h2.value.Value getFromIndex(org.h2.engine.Session, org.h2.expression.Expression, int, java.util.ArrayList<org.h2.command.dml.SelectOrderBy>, java.math.BigDecimal, boolean);
descriptor: (Lorg/h2/engine/Session;Lorg/h2/expression/Expression;ILjava/util/ArrayList;Ljava/math/BigDecimal;Z)Lorg/h2/value/Value;
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=26, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 1
invokestatic org.h2.expression.aggregate.Percentile.getColumnIndex:(Lorg/h2/expression/Expression;)Lorg/h2/index/Index;
astore 6
start local 6 1: aload 6
aload 0
invokeinterface org.h2.index.Index.getRowCount:(Lorg/h2/engine/Session;)J
lstore 7
start local 7 2: lload 7
lconst_0
lcmp
ifne 4
3: getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
areturn
4: StackMap locals: org.h2.index.Index long
StackMap stack:
aload 6
aload 0
aconst_null
aconst_null
invokeinterface org.h2.index.Index.find:(Lorg/h2/engine/Session;Lorg/h2/result/SearchRow;Lorg/h2/result/SearchRow;)Lorg/h2/index/Cursor;
astore 9
start local 9 5: aload 9
invokeinterface org.h2.index.Cursor.next:()Z
pop
6: aload 6
invokeinterface org.h2.index.Index.getColumns:()[Lorg/h2/table/Column;
iconst_0
aaload
invokevirtual org.h2.table.Column.getColumnId:()I
istore 10
start local 10 7: aload 1
checkcast org.h2.expression.ExpressionColumn
astore 11
start local 11 8: aload 11
invokevirtual org.h2.expression.ExpressionColumn.getColumn:()Lorg/h2/table/Column;
invokevirtual org.h2.table.Column.isNullable:()Z
ifeq 31
9: iconst_0
istore 12
start local 12 10: goto 18
11: StackMap locals: org.h2.engine.Session org.h2.expression.Expression int java.util.ArrayList java.math.BigDecimal int org.h2.index.Index long org.h2.index.Cursor int org.h2.expression.ExpressionColumn int
StackMap stack:
aload 9
invokeinterface org.h2.index.Cursor.getSearchRow:()Lorg/h2/result/SearchRow;
astore 13
start local 13 12: aload 13
ifnonnull 14
13: getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
areturn
14: StackMap locals: org.h2.result.SearchRow
StackMap stack:
aload 13
iload 10
invokeinterface org.h2.result.SearchRow.getValue:(I)Lorg/h2/value/Value;
getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
if_acmpne 19
15: lload 7
lconst_1
lsub
lstore 7
16: aload 9
invokeinterface org.h2.index.Cursor.next:()Z
pop
17: iconst_1
istore 12
end local 13 18: StackMap locals:
StackMap stack:
lload 7
lconst_0
lcmp
ifgt 11
19: StackMap locals:
StackMap stack:
lload 7
lconst_0
lcmp
ifne 21
20: getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
areturn
21: StackMap locals:
StackMap stack:
iload 12
ifne 31
aload 6
invokestatic org.h2.expression.aggregate.Percentile.isNullsLast:(Lorg/h2/index/Index;)Z
ifeq 31
22: aload 11
invokevirtual org.h2.expression.ExpressionColumn.getTableFilter:()Lorg/h2/table/TableFilter;
astore 14
start local 14 23: aload 14
invokevirtual org.h2.table.TableFilter.getTable:()Lorg/h2/table/Table;
iconst_1
invokevirtual org.h2.table.Table.getTemplateSimpleRow:(Z)Lorg/h2/result/SearchRow;
astore 15
start local 15 24: aload 15
iload 10
getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
invokeinterface org.h2.result.SearchRow.setValue:(ILorg/h2/value/Value;)V
25: aload 6
aload 0
aload 15
aload 15
invokeinterface org.h2.index.Index.find:(Lorg/h2/engine/Session;Lorg/h2/result/SearchRow;Lorg/h2/result/SearchRow;)Lorg/h2/index/Cursor;
astore 16
start local 16 26: goto 28
27: StackMap locals: org.h2.engine.Session org.h2.expression.Expression int java.util.ArrayList java.math.BigDecimal int org.h2.index.Index long org.h2.index.Cursor int org.h2.expression.ExpressionColumn int top org.h2.table.TableFilter org.h2.result.SearchRow org.h2.index.Cursor
StackMap stack:
lload 7
lconst_1
lsub
lstore 7
28: StackMap locals:
StackMap stack:
aload 16
invokeinterface org.h2.index.Cursor.next:()Z
ifne 27
29: lload 7
lconst_0
lcmp
ifgt 31
30: getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
areturn
end local 16 end local 15 end local 14 end local 12 31: StackMap locals: org.h2.engine.Session org.h2.expression.Expression int java.util.ArrayList java.math.BigDecimal int org.h2.index.Index long org.h2.index.Cursor int org.h2.expression.ExpressionColumn
StackMap stack:
aload 3
ifnull 32
aload 3
iconst_0
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.h2.command.dml.SelectOrderBy
getfield org.h2.command.dml.SelectOrderBy.sortType:I
iconst_1
iand
goto 33
StackMap locals:
StackMap stack:
32: iconst_0
33: StackMap locals:
StackMap stack: int
aload 6
invokeinterface org.h2.index.Index.getIndexColumns:()[Lorg/h2/table/IndexColumn;
iconst_0
aaload
getfield org.h2.table.IndexColumn.sortType:I
iconst_1
iand
34: if_icmpeq 35
iconst_1
goto 36
StackMap locals:
StackMap stack:
35: iconst_0
StackMap locals:
StackMap stack: int
36: istore 12
start local 12 37: lload 7
lconst_1
lsub
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
aload 4
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
astore 13
start local 13 38: aload 13
invokevirtual java.math.BigDecimal.longValue:()J
lstore 14
start local 14 39: aload 13
lload 14
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
astore 16
start local 16 40: aload 16
invokevirtual java.math.BigDecimal.signum:()I
ifne 44
41: iconst_0
istore 5
42: lload 14
lstore 17
start local 17 43: goto 50
end local 17 44: StackMap locals: org.h2.engine.Session org.h2.expression.Expression int java.util.ArrayList java.math.BigDecimal int org.h2.index.Index long org.h2.index.Cursor int org.h2.expression.ExpressionColumn int java.math.BigDecimal long java.math.BigDecimal
StackMap stack:
lload 14
lconst_1
ladd
lstore 17
start local 17 45: iload 5
ifne 50
46: aload 16
getstatic org.h2.expression.aggregate.Percentile.HALF:Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
ifle 49
47: lload 17
lstore 14
48: goto 50
49: StackMap locals: long
StackMap stack:
lload 14
lstore 17
50: StackMap locals:
StackMap stack:
iload 12
ifeq 51
lload 7
lconst_1
lsub
lload 17
lsub
goto 52
StackMap locals:
StackMap stack:
51: lload 14
StackMap locals:
StackMap stack: long
52: lstore 19
start local 19 53: iconst_0
istore 21
start local 21 54: goto 57
55: StackMap locals: long int
StackMap stack:
aload 9
invokeinterface org.h2.index.Cursor.next:()Z
pop
56: iinc 21 1
StackMap locals:
StackMap stack:
57: iload 21
i2l
lload 19
lcmp
iflt 55
end local 21 58: aload 9
invokeinterface org.h2.index.Cursor.getSearchRow:()Lorg/h2/result/SearchRow;
astore 21
start local 21 59: aload 21
ifnonnull 61
60: getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
areturn
61: StackMap locals: org.h2.engine.Session org.h2.expression.Expression int java.util.ArrayList java.math.BigDecimal int org.h2.index.Index long org.h2.index.Cursor int org.h2.expression.ExpressionColumn int java.math.BigDecimal long java.math.BigDecimal long long org.h2.result.SearchRow
StackMap stack:
aload 21
iload 10
invokeinterface org.h2.result.SearchRow.getValue:(I)Lorg/h2/value/Value;
astore 22
start local 22 62: aload 22
getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
if_acmpne 64
63: aload 22
areturn
64: StackMap locals: org.h2.value.Value
StackMap stack:
iload 5
ifeq 78
65: aload 9
invokeinterface org.h2.index.Cursor.next:()Z
pop
66: aload 9
invokeinterface org.h2.index.Cursor.getSearchRow:()Lorg/h2/result/SearchRow;
astore 21
67: aload 21
ifnonnull 69
68: aload 22
areturn
69: StackMap locals:
StackMap stack:
aload 21
iload 10
invokeinterface org.h2.result.SearchRow.getValue:(I)Lorg/h2/value/Value;
astore 23
start local 23 70: aload 23
getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
if_acmpne 72
71: aload 22
areturn
72: StackMap locals: org.h2.value.Value
StackMap stack:
aload 0
invokevirtual org.h2.engine.Session.getDatabase:()Lorg/h2/engine/Database;
astore 24
start local 24 73: iload 12
ifeq 77
74: aload 22
astore 25
start local 25 75: aload 23
astore 22
76: aload 25
astore 23
end local 25 77: StackMap locals: org.h2.engine.Database
StackMap stack:
aload 22
aload 23
aload 16
iload 2
aload 24
invokevirtual org.h2.engine.Database.getMode:()Lorg/h2/engine/Mode;
aload 24
invokevirtual org.h2.engine.Database.getCompareMode:()Lorg/h2/value/CompareMode;
invokestatic org.h2.expression.aggregate.Percentile.interpolate:(Lorg/h2/value/Value;Lorg/h2/value/Value;Ljava/math/BigDecimal;ILorg/h2/engine/Mode;Lorg/h2/value/CompareMode;)Lorg/h2/value/Value;
areturn
end local 24 end local 23 78: StackMap locals:
StackMap stack:
aload 22
iload 2
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
areturn
end local 22 end local 21 end local 19 end local 17 end local 16 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 7 end local 6 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 79 0 session Lorg/h2/engine/Session;
0 79 1 expression Lorg/h2/expression/Expression;
0 79 2 dataType I
0 79 3 orderByList Ljava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;
0 79 4 percentile Ljava/math/BigDecimal;
0 79 5 interpolate Z
1 79 6 index Lorg/h2/index/Index;
2 79 7 count J
5 79 9 cursor Lorg/h2/index/Cursor;
7 79 10 columnId I
8 79 11 expr Lorg/h2/expression/ExpressionColumn;
10 31 12 hasNulls Z
12 18 13 row Lorg/h2/result/SearchRow;
23 31 14 tableFilter Lorg/h2/table/TableFilter;
24 31 15 check Lorg/h2/result/SearchRow;
26 31 16 nullsCursor Lorg/h2/index/Cursor;
37 79 12 reverseIndex Z
38 79 13 fpRow Ljava/math/BigDecimal;
39 79 14 rowIdx1 J
40 79 16 factor Ljava/math/BigDecimal;
43 44 17 rowIdx2 J
45 79 17 rowIdx2 J
53 79 19 skip J
54 58 21 i I
59 79 21 row Lorg/h2/result/SearchRow;
62 79 22 v Lorg/h2/value/Value;
70 78 23 v2 Lorg/h2/value/Value;
73 78 24 database Lorg/h2/engine/Database;
75 77 25 t Lorg/h2/value/Value;
Signature: (Lorg/h2/engine/Session;Lorg/h2/expression/Expression;ILjava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;Ljava/math/BigDecimal;Z)Lorg/h2/value/Value;
MethodParameters:
Name Flags
session
expression
dataType
orderByList
percentile
interpolate
private static org.h2.value.Value interpolate(org.h2.value.Value, org.h2.value.Value, java.math.BigDecimal, int, org.h2.engine.Mode, org.h2.value.CompareMode);
descriptor: (Lorg/h2/value/Value;Lorg/h2/value/Value;Ljava/math/BigDecimal;ILorg/h2/engine/Mode;Lorg/h2/value/CompareMode;)Lorg/h2/value/Value;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=19, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
aload 1
aload 4
aload 5
invokevirtual org.h2.value.Value.compareTo:(Lorg/h2/value/Value;Lorg/h2/engine/Mode;Lorg/h2/value/CompareMode;)I
ifne 2
1: aload 0
iload 3
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
areturn
2: StackMap locals:
StackMap stack:
iload 3
tableswitch { // 2 - 38
2: 3
3: 3
4: 3
5: 5
6: 7
7: 8
8: 8
9: 11
10: 16
11: 22
12: 66
13: 66
14: 66
15: 66
16: 66
17: 66
18: 66
19: 66
20: 66
21: 66
22: 66
23: 66
24: 36
25: 66
26: 60
27: 60
28: 60
29: 60
30: 60
31: 60
32: 60
33: 60
34: 60
35: 60
36: 60
37: 60
38: 60
default: 66
}
3: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.h2.value.Value.getInt:()I
i2l
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
aload 1
invokevirtual org.h2.value.Value.getInt:()I
i2l
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
aload 2
invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
4: invokestatic org.h2.value.ValueDecimal.get:(Ljava/math/BigDecimal;)Lorg/h2/value/ValueDecimal;
areturn
5: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.h2.value.Value.getLong:()J
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
aload 1
invokevirtual org.h2.value.Value.getLong:()J
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
aload 2
invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
6: invokestatic org.h2.value.ValueDecimal.get:(Ljava/math/BigDecimal;)Lorg/h2/value/ValueDecimal;
areturn
7: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.h2.value.Value.getBigDecimal:()Ljava/math/BigDecimal;
aload 1
invokevirtual org.h2.value.Value.getBigDecimal:()Ljava/math/BigDecimal;
aload 2
invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokestatic org.h2.value.ValueDecimal.get:(Ljava/math/BigDecimal;)Lorg/h2/value/ValueDecimal;
areturn
8: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.h2.value.Value.getDouble:()D
invokestatic java.math.BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
aload 1
invokevirtual org.h2.value.Value.getDouble:()D
invokestatic java.math.BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
aload 2
9: invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
10: invokestatic org.h2.value.ValueDecimal.get:(Ljava/math/BigDecimal;)Lorg/h2/value/ValueDecimal;
areturn
11: StackMap locals:
StackMap stack:
aload 0
bipush 9
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
checkcast org.h2.value.ValueTime
astore 6
start local 6 12: aload 1
bipush 9
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
checkcast org.h2.value.ValueTime
astore 7
start local 7 13: aload 6
invokevirtual org.h2.value.ValueTime.getNanos:()J
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
astore 8
start local 8 14: aload 7
invokevirtual org.h2.value.ValueTime.getNanos:()J
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
astore 9
start local 9 15: aload 8
aload 9
aload 2
invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.longValue:()J
invokestatic org.h2.value.ValueTime.fromNanos:(J)Lorg/h2/value/ValueTime;
areturn
end local 9 end local 8 end local 7 end local 6 16: StackMap locals:
StackMap stack:
aload 0
bipush 10
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
checkcast org.h2.value.ValueDate
astore 6
start local 6 17: aload 1
bipush 10
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
checkcast org.h2.value.ValueDate
astore 7
start local 7 18: aload 6
invokevirtual org.h2.value.ValueDate.getDateValue:()J
invokestatic org.h2.util.DateTimeUtils.absoluteDayFromDateValue:(J)J
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
astore 8
start local 8 19: aload 7
invokevirtual org.h2.value.ValueDate.getDateValue:()J
invokestatic org.h2.util.DateTimeUtils.absoluteDayFromDateValue:(J)J
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
astore 9
start local 9 20: aload 8
aload 9
aload 2
invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.longValue:()J
invokestatic org.h2.util.DateTimeUtils.dateValueFromAbsoluteDay:(J)J
21: invokestatic org.h2.value.ValueDate.fromDateValue:(J)Lorg/h2/value/ValueDate;
areturn
end local 9 end local 8 end local 7 end local 6 22: StackMap locals:
StackMap stack:
aload 0
bipush 11
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
checkcast org.h2.value.ValueTimestamp
astore 6
start local 6 23: aload 1
bipush 11
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
checkcast org.h2.value.ValueTimestamp
astore 7
start local 7 24: aload 6
invokevirtual org.h2.value.ValueTimestamp.getDateValue:()J
aload 6
invokevirtual org.h2.value.ValueTimestamp.getTimeNanos:()J
invokestatic org.h2.expression.aggregate.Percentile.timestampToDecimal:(JJ)Ljava/math/BigDecimal;
astore 8
start local 8 25: aload 7
invokevirtual org.h2.value.ValueTimestamp.getDateValue:()J
aload 7
invokevirtual org.h2.value.ValueTimestamp.getTimeNanos:()J
invokestatic org.h2.expression.aggregate.Percentile.timestampToDecimal:(JJ)Ljava/math/BigDecimal;
astore 9
start local 9 26: aload 8
aload 9
aload 2
invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.toBigInteger:()Ljava/math/BigInteger;
27: getstatic org.h2.util.IntervalUtils.NANOS_PER_DAY_BI:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.divideAndRemainder:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
28: astore 10
start local 10 29: aload 10
iconst_0
aaload
invokevirtual java.math.BigInteger.longValue:()J
lstore 11
start local 11 30: aload 10
iconst_1
aaload
invokevirtual java.math.BigInteger.longValue:()J
lstore 13
start local 13 31: lload 13
lconst_0
lcmp
ifge 34
32: lload 13
ldc 86400000000000
ladd
lstore 13
33: lload 11
lconst_1
lsub
lstore 11
34: StackMap locals: org.h2.value.Value org.h2.value.Value java.math.BigDecimal int org.h2.engine.Mode org.h2.value.CompareMode org.h2.value.ValueTimestamp org.h2.value.ValueTimestamp java.math.BigDecimal java.math.BigDecimal java.math.BigInteger[] long long
StackMap stack:
lload 11
invokestatic org.h2.util.DateTimeUtils.dateValueFromAbsoluteDay:(J)J
lload 13
35: invokestatic org.h2.value.ValueTimestamp.fromDateValueAndNanos:(JJ)Lorg/h2/value/ValueTimestamp;
areturn
end local 13 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 36: StackMap locals: org.h2.value.Value org.h2.value.Value java.math.BigDecimal int org.h2.engine.Mode org.h2.value.CompareMode
StackMap stack:
aload 0
bipush 24
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
checkcast org.h2.value.ValueTimestampTimeZone
astore 6
start local 6 37: aload 1
bipush 24
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
checkcast org.h2.value.ValueTimestampTimeZone
astore 7
start local 7 38: aload 6
invokevirtual org.h2.value.ValueTimestampTimeZone.getDateValue:()J
aload 6
invokevirtual org.h2.value.ValueTimestampTimeZone.getTimeNanos:()J
invokestatic org.h2.expression.aggregate.Percentile.timestampToDecimal:(JJ)Ljava/math/BigDecimal;
astore 8
start local 8 39: aload 7
invokevirtual org.h2.value.ValueTimestampTimeZone.getDateValue:()J
aload 7
invokevirtual org.h2.value.ValueTimestampTimeZone.getTimeNanos:()J
invokestatic org.h2.expression.aggregate.Percentile.timestampToDecimal:(JJ)Ljava/math/BigDecimal;
astore 9
start local 9 40: aload 6
invokevirtual org.h2.value.ValueTimestampTimeZone.getTimeZoneOffsetMins:()S
i2l
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
41: getstatic java.math.BigDecimal.ONE:Ljava/math/BigDecimal;
aload 2
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
42: aload 7
invokevirtual org.h2.value.ValueTimestampTimeZone.getTimeZoneOffsetMins:()S
i2l
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
aload 2
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
43: astore 10
start local 10 44: aload 10
invokevirtual java.math.BigDecimal.shortValue:()S
istore 11
start local 11 45: iload 11
i2l
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
astore 12
start local 12 46: aload 8
aload 9
aload 2
invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
astore 13
start local 13 47: aload 10
aload 12
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
ifeq 51
48: aload 13
49: aload 10
aload 12
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
ldc 60000000000
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
50: invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
astore 13
51: StackMap locals: org.h2.value.Value org.h2.value.Value java.math.BigDecimal int org.h2.engine.Mode org.h2.value.CompareMode org.h2.value.ValueTimestampTimeZone org.h2.value.ValueTimestampTimeZone java.math.BigDecimal java.math.BigDecimal java.math.BigDecimal int java.math.BigDecimal java.math.BigDecimal
StackMap stack:
aload 13
invokevirtual java.math.BigDecimal.toBigInteger:()Ljava/math/BigInteger;
getstatic org.h2.util.IntervalUtils.NANOS_PER_DAY_BI:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.divideAndRemainder:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
astore 14
start local 14 52: aload 14
iconst_0
aaload
invokevirtual java.math.BigInteger.longValue:()J
lstore 15
start local 15 53: aload 14
iconst_1
aaload
invokevirtual java.math.BigInteger.longValue:()J
lstore 17
start local 17 54: lload 17
lconst_0
lcmp
ifge 57
55: lload 17
ldc 86400000000000
ladd
lstore 17
56: lload 15
lconst_1
lsub
lstore 15
57: StackMap locals: java.math.BigInteger[] long long
StackMap stack:
lload 15
invokestatic org.h2.util.DateTimeUtils.dateValueFromAbsoluteDay:(J)J
58: lload 17
iload 11
59: invokestatic org.h2.value.ValueTimestampTimeZone.fromDateValueAndNanos:(JJS)Lorg/h2/value/ValueTimestampTimeZone;
areturn
end local 17 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 60: StackMap locals: org.h2.value.Value org.h2.value.Value java.math.BigDecimal int org.h2.engine.Mode org.h2.value.CompareMode
StackMap stack:
iload 3
bipush 26
isub
invokestatic org.h2.api.IntervalQualifier.valueOf:(I)Lorg/h2/api/IntervalQualifier;
61: new java.math.BigDecimal
dup
aload 0
checkcast org.h2.value.ValueInterval
invokestatic org.h2.util.IntervalUtils.intervalToAbsolute:(Lorg/h2/value/ValueInterval;)Ljava/math/BigInteger;
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;)V
62: new java.math.BigDecimal
dup
aload 1
checkcast org.h2.value.ValueInterval
invokestatic org.h2.util.IntervalUtils.intervalToAbsolute:(Lorg/h2/value/ValueInterval;)Ljava/math/BigInteger;
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;)V
aload 2
63: invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
64: invokevirtual java.math.BigDecimal.toBigInteger:()Ljava/math/BigInteger;
65: invokestatic org.h2.util.IntervalUtils.intervalFromAbsolute:(Lorg/h2/api/IntervalQualifier;Ljava/math/BigInteger;)Lorg/h2/value/ValueInterval;
areturn
66: StackMap locals:
StackMap stack:
aload 2
getstatic org.h2.expression.aggregate.Percentile.HALF:Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
ifle 67
aload 1
goto 68
StackMap locals:
StackMap stack:
67: aload 0
StackMap locals:
StackMap stack: org.h2.value.Value
68: iload 3
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
areturn
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 69 0 v0 Lorg/h2/value/Value;
0 69 1 v1 Lorg/h2/value/Value;
0 69 2 factor Ljava/math/BigDecimal;
0 69 3 dataType I
0 69 4 databaseMode Lorg/h2/engine/Mode;
0 69 5 compareMode Lorg/h2/value/CompareMode;
12 16 6 t0 Lorg/h2/value/ValueTime;
13 16 7 t1 Lorg/h2/value/ValueTime;
14 16 8 n0 Ljava/math/BigDecimal;
15 16 9 n1 Ljava/math/BigDecimal;
17 22 6 d0 Lorg/h2/value/ValueDate;
18 22 7 d1 Lorg/h2/value/ValueDate;
19 22 8 a0 Ljava/math/BigDecimal;
20 22 9 a1 Ljava/math/BigDecimal;
23 36 6 ts0 Lorg/h2/value/ValueTimestamp;
24 36 7 ts1 Lorg/h2/value/ValueTimestamp;
25 36 8 a0 Ljava/math/BigDecimal;
26 36 9 a1 Ljava/math/BigDecimal;
29 36 10 dr [Ljava/math/BigInteger;
30 36 11 absoluteDay J
31 36 13 timeNanos J
37 60 6 ts0 Lorg/h2/value/ValueTimestampTimeZone;
38 60 7 ts1 Lorg/h2/value/ValueTimestampTimeZone;
39 60 8 a0 Ljava/math/BigDecimal;
40 60 9 a1 Ljava/math/BigDecimal;
44 60 10 offset Ljava/math/BigDecimal;
45 60 11 shortOffset S
46 60 12 shortOffsetBD Ljava/math/BigDecimal;
47 60 13 bd Ljava/math/BigDecimal;
52 60 14 dr [Ljava/math/BigInteger;
53 60 15 absoluteDay J
54 60 17 timeNanos J
MethodParameters:
Name Flags
v0
v1
factor
dataType
databaseMode
compareMode
private static java.math.BigDecimal timestampToDecimal(long, long);
descriptor: (JJ)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 2 0: new java.math.BigDecimal
dup
lload 0
invokestatic org.h2.util.DateTimeUtils.absoluteDayFromDateValue:(J)J
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
1: getstatic org.h2.util.IntervalUtils.NANOS_PER_DAY_BI:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
lload 2
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
2: invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;)V
areturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 dateValue J
0 3 2 timeNanos J
MethodParameters:
Name Flags
dateValue
timeNanos
private static java.math.BigDecimal interpolateDecimal(java.math.BigDecimal, java.math.BigDecimal, java.math.BigDecimal);
descriptor: (Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getstatic java.math.BigDecimal.ONE:Ljava/math/BigDecimal;
aload 2
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
aload 1
aload 2
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 d0 Ljava/math/BigDecimal;
0 1 1 d1 Ljava/math/BigDecimal;
0 1 2 factor Ljava/math/BigDecimal;
MethodParameters:
Name Flags
d0
d1
factor
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/expression/aggregate/Percentile;
}
SourceFile: "Percentile.java"