public class org.h2.result.SortOrder implements java.util.Comparator<org.h2.value.Value[]>
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.h2.result.SortOrder
super_class: java.lang.Object
{
public static final int ASCENDING;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 0
public static final int DESCENDING;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 1
public static final int NULLS_FIRST;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 2
public static final int NULLS_LAST;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 4
private static final int DEFAULT_NULL_SORT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int DEFAULT_ASC_NULLS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int DEFAULT_DESC_NULLS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final org.h2.engine.Database database;
descriptor: Lorg/h2/engine/Database;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int[] queryColumnIndexes;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int[] sortTypes;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.ArrayList<org.h2.command.dml.SelectOrderBy> orderList;
descriptor: Ljava/util/ArrayList;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic org.h2.engine.SysProperties.SORT_NULLS_HIGH:Z
ifeq 5
1: iconst_1
putstatic org.h2.result.SortOrder.DEFAULT_NULL_SORT:I
2: iconst_4
putstatic org.h2.result.SortOrder.DEFAULT_ASC_NULLS:I
3: iconst_2
putstatic org.h2.result.SortOrder.DEFAULT_DESC_NULLS:I
4: goto 8
5: StackMap locals:
StackMap stack:
iconst_m1
putstatic org.h2.result.SortOrder.DEFAULT_NULL_SORT:I
6: iconst_2
putstatic org.h2.result.SortOrder.DEFAULT_ASC_NULLS:I
7: iconst_4
putstatic org.h2.result.SortOrder.DEFAULT_DESC_NULLS:I
8: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.h2.engine.Database, int[], int[], java.util.ArrayList<org.h2.command.dml.SelectOrderBy>);
descriptor: (Lorg/h2/engine/Database;[I[ILjava/util/ArrayList;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield org.h2.result.SortOrder.database:Lorg/h2/engine/Database;
2: aload 0
aload 2
putfield org.h2.result.SortOrder.queryColumnIndexes:[I
3: aload 0
aload 3
putfield org.h2.result.SortOrder.sortTypes:[I
4: aload 0
aload 4
putfield org.h2.result.SortOrder.orderList:Ljava/util/ArrayList;
5: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/h2/result/SortOrder;
0 6 1 database Lorg/h2/engine/Database;
0 6 2 queryColumnIndexes [I
0 6 3 sortType [I
0 6 4 orderList Ljava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;
Signature: (Lorg/h2/engine/Database;[I[ILjava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;)V
MethodParameters:
Name Flags
database
queryColumnIndexes
sortType
orderList
public java.lang.String getSQL(org.h2.expression.Expression[], int, boolean);
descriptor: ([Lorg/h2/expression/Expression;IZ)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 4
start local 4 1: iconst_0
istore 5
start local 5 2: aload 0
getfield org.h2.result.SortOrder.queryColumnIndexes:[I
dup
astore 9
arraylength
istore 8
iconst_0
istore 7
goto 13
StackMap locals: org.h2.result.SortOrder org.h2.expression.Expression[] int int java.lang.StringBuilder int top int int int[]
StackMap stack:
3: aload 9
iload 7
iaload
istore 6
start local 6 4: iload 5
ifle 6
5: aload 4
ldc ", "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
6: StackMap locals: org.h2.result.SortOrder org.h2.expression.Expression[] int int java.lang.StringBuilder int int int int int[]
StackMap stack:
iload 6
iload 2
if_icmpge 9
7: aload 4
iload 6
iconst_1
iadd
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
pop
8: goto 11
9: StackMap locals:
StackMap stack:
aload 4
bipush 61
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
10: aload 1
iload 6
aaload
aload 4
iload 3
invokevirtual org.h2.expression.Expression.getUnenclosedSQL:(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
pop
11: StackMap locals:
StackMap stack:
aload 4
aload 0
getfield org.h2.result.SortOrder.sortTypes:[I
iload 5
iinc 5 1
iaload
invokestatic org.h2.result.SortOrder.typeToString:(Ljava/lang/StringBuilder;I)V
end local 6 12: iinc 7 1
StackMap locals: org.h2.result.SortOrder org.h2.expression.Expression[] int int java.lang.StringBuilder int top int int int[]
StackMap stack:
13: iload 7
iload 8
if_icmplt 3
14: aload 4
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
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 15 0 this Lorg/h2/result/SortOrder;
0 15 1 list [Lorg/h2/expression/Expression;
0 15 2 visible I
0 15 3 alwaysQuote Z
1 15 4 builder Ljava/lang/StringBuilder;
2 15 5 i I
4 12 6 idx I
MethodParameters:
Name Flags
list
visible
alwaysQuote
public static void typeToString(java.lang.StringBuilder, int);
descriptor: (Ljava/lang/StringBuilder;I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: iload 1
iconst_1
iand
ifeq 2
1: aload 0
ldc " DESC"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
2: StackMap locals:
StackMap stack:
iload 1
iconst_2
iand
ifeq 5
3: aload 0
ldc " NULLS FIRST"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
4: goto 7
StackMap locals:
StackMap stack:
5: iload 1
iconst_4
iand
ifeq 7
6: aload 0
ldc " NULLS LAST"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
7: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 builder Ljava/lang/StringBuilder;
0 8 1 type I
MethodParameters:
Name Flags
builder
type
public static int compareNull(boolean, int);
descriptor: (ZI)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: iload 1
iconst_2
iand
ifeq 4
1: iload 0
ifeq 2
iconst_m1
goto 3
StackMap locals:
StackMap stack:
2: iconst_1
StackMap locals:
StackMap stack: int
3: ireturn
4: StackMap locals:
StackMap stack:
iload 1
iconst_4
iand
ifeq 8
5: iload 0
ifeq 6
iconst_1
goto 7
StackMap locals:
StackMap stack:
6: iconst_m1
StackMap locals:
StackMap stack: int
7: ireturn
8: StackMap locals:
StackMap stack:
iload 0
ifeq 9
getstatic org.h2.result.SortOrder.DEFAULT_NULL_SORT:I
goto 10
StackMap locals:
StackMap stack:
9: getstatic org.h2.result.SortOrder.DEFAULT_NULL_SORT:I
ineg
StackMap locals:
StackMap stack: int
10: istore 2
start local 2 11: iload 1
iconst_1
iand
ifne 12
iload 2
goto 13
StackMap locals: int
StackMap stack:
12: iload 2
ineg
StackMap locals:
StackMap stack: int
13: ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 aNull Z
0 14 1 sortType I
11 14 2 comp I
MethodParameters:
Name Flags
aNull
sortType
public int compare(org.h2.value.Value[], org.h2.value.Value[]);
descriptor: ([Lorg/h2/value/Value;[Lorg/h2/value/Value;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=12, args_size=3
start local 0 start local 1 start local 2 0: iconst_0
istore 3
start local 3 1: aload 0
getfield org.h2.result.SortOrder.queryColumnIndexes:[I
arraylength
istore 4
start local 4 2: goto 23
3: StackMap locals: int int
StackMap stack:
aload 0
getfield org.h2.result.SortOrder.queryColumnIndexes:[I
iload 3
iaload
istore 5
start local 5 4: aload 0
getfield org.h2.result.SortOrder.sortTypes:[I
iload 3
iaload
istore 6
start local 6 5: aload 1
iload 5
aaload
astore 7
start local 7 6: aload 2
iload 5
aaload
astore 8
start local 8 7: aload 7
getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
if_acmpne 8
iconst_1
goto 9
StackMap locals: org.h2.result.SortOrder org.h2.value.Value[] org.h2.value.Value[] int int int int org.h2.value.Value org.h2.value.Value
StackMap stack:
8: iconst_0
StackMap locals:
StackMap stack: int
9: istore 9
start local 9 10: aload 8
getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
if_acmpne 11
iconst_1
goto 12
StackMap locals: int
StackMap stack:
11: iconst_0
StackMap locals:
StackMap stack: int
12: istore 10
start local 10 13: iload 9
ifne 14
iload 10
ifeq 17
14: StackMap locals: int
StackMap stack:
iload 9
iload 10
if_icmpne 16
15: goto 22
16: StackMap locals:
StackMap stack:
iload 9
iload 6
invokestatic org.h2.result.SortOrder.compareNull:(ZI)I
ireturn
17: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.result.SortOrder.database:Lorg/h2/engine/Database;
aload 7
aload 8
invokevirtual org.h2.engine.Database.compare:(Lorg/h2/value/Value;Lorg/h2/value/Value;)I
istore 11
start local 11 18: iload 11
ifeq 22
19: iload 6
iconst_1
iand
ifne 20
iload 11
goto 21
StackMap locals: int
StackMap stack:
20: iload 11
ineg
StackMap locals:
StackMap stack: int
21: ireturn
end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 22: StackMap locals: org.h2.result.SortOrder org.h2.value.Value[] org.h2.value.Value[] int int
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
23: iload 3
iload 4
if_icmplt 3
end local 4 end local 3 24: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Lorg/h2/result/SortOrder;
0 25 1 a [Lorg/h2/value/Value;
0 25 2 b [Lorg/h2/value/Value;
1 24 3 i I
2 24 4 len I
4 22 5 idx I
5 22 6 type I
6 22 7 ao Lorg/h2/value/Value;
7 22 8 bo Lorg/h2/value/Value;
10 22 9 aNull Z
13 22 10 bNull Z
18 22 11 comp I
MethodParameters:
Name Flags
a
b
public void sort(java.util.ArrayList<org.h2.value.Value[]>);
descriptor: (Ljava/util/ArrayList;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
invokestatic java.util.Collections.sort:(Ljava/util/List;Ljava/util/Comparator;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/result/SortOrder;
0 2 1 rows Ljava/util/ArrayList<[Lorg/h2/value/Value;>;
Signature: (Ljava/util/ArrayList<[Lorg/h2/value/Value;>;)V
MethodParameters:
Name Flags
rows
public void sort(java.util.ArrayList<org.h2.value.Value[]>, int, );
descriptor: (Ljava/util/ArrayList;II)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokevirtual java.util.ArrayList.size:()I
istore 4
start local 4 1: aload 1
invokevirtual java.util.ArrayList.isEmpty:()Z
ifne 2
iload 2
iload 4
if_icmpge 2
iload 3
ifne 3
2: StackMap locals: int
StackMap stack:
return
3: StackMap locals:
StackMap stack:
iload 2
ifge 5
4: iconst_0
istore 2
5: StackMap locals:
StackMap stack:
iload 2
iload 3
iadd
iload 4
if_icmple 7
6: iload 4
iload 2
isub
istore 3
7: StackMap locals:
StackMap stack:
iload 3
iconst_1
if_icmpne 10
iload 2
ifne 10
8: aload 1
iconst_0
aload 1
aload 0
invokestatic java.util.Collections.min:(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;
checkcast org.h2.value.Value[]
invokevirtual java.util.ArrayList.set:(ILjava/lang/Object;)Ljava/lang/Object;
pop
9: return
10: StackMap locals:
StackMap stack:
aload 1
iconst_0
anewarray org.h2.value.Value[]
invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast org.h2.value.Value[][]
astore 5
start local 5 11: aload 5
iload 2
iload 3
aload 0
invokestatic org.h2.util.Utils.sortTopN:([Ljava/lang/Object;IILjava/util/Comparator;)V
12: iconst_0
istore 6
start local 6 13: iload 2
iload 3
iadd
iload 4
invokestatic java.lang.Math.min:(II)I
istore 7
start local 7 14: goto 17
15: StackMap locals: org.h2.value.Value[][] int int
StackMap stack:
aload 1
iload 6
aload 5
iload 6
aaload
invokevirtual java.util.ArrayList.set:(ILjava/lang/Object;)Ljava/lang/Object;
pop
16: iinc 6 1
StackMap locals:
StackMap stack:
17: iload 6
iload 7
if_icmplt 15
end local 7 end local 6 18: 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 19 0 this Lorg/h2/result/SortOrder;
0 19 1 rows Ljava/util/ArrayList<[Lorg/h2/value/Value;>;
0 19 2 offset I
0 19 3 limit I
1 19 4 rowsSize I
11 19 5 arr [[Lorg/h2/value/Value;
13 18 6 i I
14 18 7 end I
Signature: (Ljava/util/ArrayList<[Lorg/h2/value/Value;>;II)V
MethodParameters:
Name Flags
rows
offset
limit
public int[] getQueryColumnIndexes();
descriptor: ()[I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.result.SortOrder.queryColumnIndexes:[I
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/result/SortOrder;
public org.h2.table.Column getColumn(int, org.h2.table.TableFilter);
descriptor: (ILorg/h2/table/TableFilter;)Lorg/h2/table/Column;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.h2.result.SortOrder.orderList:Ljava/util/ArrayList;
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.result.SortOrder.orderList:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.h2.command.dml.SelectOrderBy
astore 3
start local 3 3: aload 3
getfield org.h2.command.dml.SelectOrderBy.expression:Lorg/h2/expression/Expression;
astore 4
start local 4 4: aload 4
ifnonnull 6
5: aconst_null
areturn
6: StackMap locals: org.h2.command.dml.SelectOrderBy org.h2.expression.Expression
StackMap stack:
aload 4
invokevirtual org.h2.expression.Expression.getNonAliasExpression:()Lorg/h2/expression/Expression;
astore 4
7: aload 4
invokevirtual org.h2.expression.Expression.isConstant:()Z
ifeq 9
8: aconst_null
areturn
9: StackMap locals:
StackMap stack:
aload 4
instanceof org.h2.expression.ExpressionColumn
ifne 11
10: aconst_null
areturn
11: StackMap locals:
StackMap stack:
aload 4
checkcast org.h2.expression.ExpressionColumn
astore 5
start local 5 12: aload 5
invokevirtual org.h2.expression.ExpressionColumn.getTableFilter:()Lorg/h2/table/TableFilter;
aload 2
if_acmpeq 14
13: aconst_null
areturn
14: StackMap locals: org.h2.expression.ExpressionColumn
StackMap stack:
aload 5
invokevirtual org.h2.expression.ExpressionColumn.getColumn:()Lorg/h2/table/Column;
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 15 0 this Lorg/h2/result/SortOrder;
0 15 1 index I
0 15 2 filter Lorg/h2/table/TableFilter;
3 15 3 order Lorg/h2/command/dml/SelectOrderBy;
4 15 4 expr Lorg/h2/expression/Expression;
12 15 5 exprCol Lorg/h2/expression/ExpressionColumn;
MethodParameters:
Name Flags
index
filter
public int[] getSortTypes();
descriptor: ()[I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.result.SortOrder.sortTypes:[I
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/result/SortOrder;
public int[] getSortTypesWithNullPosition();
descriptor: ()[I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=1
start local 0 0: aload 0
getfield org.h2.result.SortOrder.sortTypes:[I
invokevirtual int[].clone:()Ljava/lang/Object;
checkcast int[]
astore 1
start local 1 1: iconst_0
istore 2
start local 2 2: aload 1
arraylength
istore 3
start local 3 3: goto 6
4: StackMap locals: int[] int int
StackMap stack:
aload 1
iload 2
aload 1
iload 2
iaload
invokestatic org.h2.result.SortOrder.addExplicitNullPosition:(I)I
iastore
5: iinc 2 1
StackMap locals:
StackMap stack:
6: iload 2
iload 3
if_icmplt 4
end local 3 end local 2 7: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/h2/result/SortOrder;
1 8 1 sortTypes [I
2 7 2 i I
3 7 3 length I
public java.util.Comparator<org.h2.value.Value> getRowValueComparator();
descriptor: ()Ljava/util/Comparator;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new org.h2.result.SortOrder$1
dup
aload 0
invokespecial org.h2.result.SortOrder$1.<init>:(Lorg/h2/result/SortOrder;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/result/SortOrder;
Signature: ()Ljava/util/Comparator<Lorg/h2/value/Value;>;
public static int addExplicitNullPosition(int);
descriptor: (I)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: iload 0
bipush 6
iand
ifne 4
1: iload 0
iload 0
iconst_1
iand
ifne 2
getstatic org.h2.result.SortOrder.DEFAULT_ASC_NULLS:I
goto 3
StackMap locals:
StackMap stack: int
2: getstatic org.h2.result.SortOrder.DEFAULT_DESC_NULLS:I
StackMap locals: int
StackMap stack: int int
3: ior
ireturn
4: StackMap locals:
StackMap stack:
iload 0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 sortType I
MethodParameters:
Name Flags
sortType
public int compare(java.lang.Object, java.lang.Object);
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)I
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=3, locals=3, args_size=3
0: aload 0
aload 1
checkcast org.h2.value.Value[]
aload 2
checkcast org.h2.value.Value[]
invokevirtual org.h2.result.SortOrder.compare:([Lorg/h2/value/Value;[Lorg/h2/value/Value;)I
ireturn
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Ljava/lang/Object;Ljava/util/Comparator<[Lorg/h2/value/Value;>;
SourceFile: "SortOrder.java"
NestMembers:
org.h2.result.SortOrder$1
InnerClasses:
org.h2.result.SortOrder$1