public class org.h2.table.PageStoreTable extends org.h2.table.RegularTable
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.h2.table.PageStoreTable
super_class: org.h2.table.RegularTable
{
private org.h2.index.Index scanIndex;
descriptor: Lorg/h2/index/Index;
flags: (0x0002) ACC_PRIVATE
private long rowCount;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private final java.util.ArrayDeque<org.h2.engine.Session> waitingSessions;
descriptor: Ljava/util/ArrayDeque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/ArrayDeque<Lorg/h2/engine/Session;>;
private final org.h2.message.Trace traceLock;
descriptor: Lorg/h2/message/Trace;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.ArrayList<org.h2.index.Index> indexes;
descriptor: Ljava/util/ArrayList;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/ArrayList<Lorg/h2/index/Index;>;
private long lastModificationId;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private final org.h2.index.PageDataIndex mainIndex;
descriptor: Lorg/h2/index/PageDataIndex;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private int changesSinceAnalyze;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int nextAnalyze;
descriptor: I
flags: (0x0002) ACC_PRIVATE
public void <init>(org.h2.command.ddl.CreateTableData);
descriptor: (Lorg/h2/command/ddl/CreateTableData;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokespecial org.h2.table.RegularTable.<init>:(Lorg/h2/command/ddl/CreateTableData;)V
1: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield org.h2.table.PageStoreTable.waitingSessions:Ljava/util/ArrayDeque;
2: aload 0
invokestatic org.h2.util.Utils.newSmallArrayList:()Ljava/util/ArrayList;
putfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
3: aload 0
aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.getSettings:()Lorg/h2/engine/DbSettings;
getfield org.h2.engine.DbSettings.analyzeAuto:I
putfield org.h2.table.PageStoreTable.nextAnalyze:I
4: aload 1
getfield org.h2.command.ddl.CreateTableData.persistData:Z
ifeq 12
aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.isPersistent:()Z
ifeq 12
5: aload 0
new org.h2.index.PageDataIndex
dup
aload 0
aload 1
getfield org.h2.command.ddl.CreateTableData.id:I
6: aload 0
invokevirtual org.h2.table.PageStoreTable.getColumns:()[Lorg/h2/table/Column;
invokestatic org.h2.table.IndexColumn.wrap:([Lorg/h2/table/Column;)[Lorg/h2/table/IndexColumn;
7: aload 1
getfield org.h2.command.ddl.CreateTableData.persistData:Z
invokestatic org.h2.index.IndexType.createScan:(Z)Lorg/h2/index/IndexType;
8: aload 1
getfield org.h2.command.ddl.CreateTableData.create:Z
aload 1
getfield org.h2.command.ddl.CreateTableData.session:Lorg/h2/engine/Session;
invokespecial org.h2.index.PageDataIndex.<init>:(Lorg/h2/table/PageStoreTable;I[Lorg/h2/table/IndexColumn;Lorg/h2/index/IndexType;ZLorg/h2/engine/Session;)V
9: putfield org.h2.table.PageStoreTable.mainIndex:Lorg/h2/index/PageDataIndex;
10: aload 0
aload 0
getfield org.h2.table.PageStoreTable.mainIndex:Lorg/h2/index/PageDataIndex;
putfield org.h2.table.PageStoreTable.scanIndex:Lorg/h2/index/Index;
11: goto 16
12: StackMap locals: org.h2.table.PageStoreTable org.h2.command.ddl.CreateTableData
StackMap stack:
aload 0
aconst_null
putfield org.h2.table.PageStoreTable.mainIndex:Lorg/h2/index/PageDataIndex;
13: aload 0
new org.h2.index.ScanIndex
dup
aload 0
aload 1
getfield org.h2.command.ddl.CreateTableData.id:I
14: aload 0
invokevirtual org.h2.table.PageStoreTable.getColumns:()[Lorg/h2/table/Column;
invokestatic org.h2.table.IndexColumn.wrap:([Lorg/h2/table/Column;)[Lorg/h2/table/IndexColumn;
aload 1
getfield org.h2.command.ddl.CreateTableData.persistData:Z
invokestatic org.h2.index.IndexType.createScan:(Z)Lorg/h2/index/IndexType;
invokespecial org.h2.index.ScanIndex.<init>:(Lorg/h2/table/PageStoreTable;I[Lorg/h2/table/IndexColumn;Lorg/h2/index/IndexType;)V
15: putfield org.h2.table.PageStoreTable.scanIndex:Lorg/h2/index/Index;
16: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
aload 0
getfield org.h2.table.PageStoreTable.scanIndex:Lorg/h2/index/Index;
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
17: aload 0
aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
bipush 7
invokevirtual org.h2.engine.Database.getTrace:(I)Lorg/h2/message/Trace;
putfield org.h2.table.PageStoreTable.traceLock:Lorg/h2/message/Trace;
18: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lorg/h2/table/PageStoreTable;
0 19 1 data Lorg/h2/command/ddl/CreateTableData;
MethodParameters:
Name Flags
data
public void close(org.h2.engine.Session);
descriptor: (Lorg/h2/engine/Session;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
astore 3
goto 3
StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session top java.util.Iterator
StackMap stack:
1: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.h2.index.Index
astore 2
start local 2 2: aload 2
aload 1
invokeinterface org.h2.index.Index.close:(Lorg/h2/engine/Session;)V
end local 2 3: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/h2/table/PageStoreTable;
0 5 1 session Lorg/h2/engine/Session;
2 3 2 index Lorg/h2/index/Index;
MethodParameters:
Name Flags
session
public org.h2.result.Row getRow(org.h2.engine.Session, long);
descriptor: (Lorg/h2/engine/Session;J)Lorg/h2/result/Row;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.h2.table.PageStoreTable.scanIndex:Lorg/h2/index/Index;
aload 1
lload 2
invokeinterface org.h2.index.Index.getRow:(Lorg/h2/engine/Session;J)Lorg/h2/result/Row;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/table/PageStoreTable;
0 1 1 session Lorg/h2/engine/Session;
0 1 2 key J
MethodParameters:
Name Flags
session
key
public void addRow(org.h2.engine.Session, org.h2.result.Row);
descriptor: (Lorg/h2/engine/Session;Lorg/h2/result/Row;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.getNextModificationDataId:()J
putfield org.h2.table.PageStoreTable.lastModificationId:J
1: iconst_0
istore 3
start local 3 2: aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
istore 4
start local 4 3: goto 8
4: StackMap locals: int int
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
iload 3
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.h2.index.Index
astore 5
start local 5 5: aload 5
aload 1
aload 2
invokeinterface org.h2.index.Index.add:(Lorg/h2/engine/Session;Lorg/h2/result/Row;)V
6: aload 0
aload 1
aload 5
iconst_1
invokevirtual org.h2.table.PageStoreTable.checkRowCount:(Lorg/h2/engine/Session;Lorg/h2/index/Index;I)V
end local 5 7: iinc 3 1
StackMap locals:
StackMap stack:
8: iload 3
iload 4
if_icmplt 4
end local 4 9: aload 0
dup
getfield org.h2.table.PageStoreTable.rowCount:J
lconst_1
ladd
putfield org.h2.table.PageStoreTable.rowCount:J
10: goto 22
StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session org.h2.result.Row int
StackMap stack: java.lang.Throwable
11: astore 4
start local 4 12: goto 16
13: StackMap locals: java.lang.Throwable
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
iload 3
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.h2.index.Index
astore 5
start local 5 14: aload 5
aload 1
aload 2
invokeinterface org.h2.index.Index.remove:(Lorg/h2/engine/Session;Lorg/h2/result/Row;)V
15: aload 0
aload 1
aload 5
iconst_0
invokevirtual org.h2.table.PageStoreTable.checkRowCount:(Lorg/h2/engine/Session;Lorg/h2/index/Index;I)V
end local 5 16: StackMap locals:
StackMap stack:
iinc 3 -1
iload 3
ifge 13
17: goto 21
StackMap locals:
StackMap stack: org.h2.message.DbException
18: astore 5
start local 5 19: aload 0
getfield org.h2.table.PageStoreTable.trace:Lorg/h2/message/Trace;
aload 5
ldc "could not undo operation"
invokevirtual org.h2.message.Trace.error:(Ljava/lang/Throwable;Ljava/lang/String;)V
20: aload 5
athrow
end local 5 21: StackMap locals:
StackMap stack:
aload 4
invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
athrow
end local 4 22: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.h2.table.PageStoreTable.analyzeIfRequired:(Lorg/h2/engine/Session;)V
23: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lorg/h2/table/PageStoreTable;
0 24 1 session Lorg/h2/engine/Session;
0 24 2 row Lorg/h2/result/Row;
2 24 3 i I
3 9 4 size I
5 7 5 index Lorg/h2/index/Index;
12 22 4 e Ljava/lang/Throwable;
14 16 5 index Lorg/h2/index/Index;
19 21 5 e2 Lorg/h2/message/DbException;
Exception table:
from to target type
2 10 11 Class java.lang.Throwable
12 17 18 Class org.h2.message.DbException
MethodParameters:
Name Flags
session
row
private void checkRowCount(org.h2.engine.Session, org.h2.index.Index, int);
descriptor: (Lorg/h2/engine/Session;Lorg/h2/index/Index;I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic org.h2.engine.SysProperties.CHECK:Z
ifeq 8
1: aload 2
instanceof org.h2.index.PageDelegateIndex
ifne 8
2: aload 2
aload 1
invokeinterface org.h2.index.Index.getRowCount:(Lorg/h2/engine/Session;)J
lstore 4
start local 4 3: lload 4
aload 0
getfield org.h2.table.PageStoreTable.rowCount:J
iload 3
i2l
ladd
lcmp
ifeq 8
4: new java.lang.StringBuilder
dup
ldc "rowCount expected "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.h2.table.PageStoreTable.rowCount:J
iload 3
i2l
ladd
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
5: ldc " got "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 4
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual org.h2.table.PageStoreTable.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokeinterface org.h2.index.Index.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
6: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
7: invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
pop
end local 4 8: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/h2/table/PageStoreTable;
0 9 1 session Lorg/h2/engine/Session;
0 9 2 index Lorg/h2/index/Index;
0 9 3 offset I
3 8 4 rc J
MethodParameters:
Name Flags
session
index
offset
public org.h2.index.Index getScanIndex(org.h2.engine.Session);
descriptor: (Lorg/h2/engine/Session;)Lorg/h2/index/Index;
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.PageStoreTable.indexes:Ljava/util/ArrayList;
iconst_0
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.h2.index.Index
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/table/PageStoreTable;
0 1 1 session Lorg/h2/engine/Session;
MethodParameters:
Name Flags
session
public org.h2.index.Index getUniqueIndex();
descriptor: ()Lorg/h2/index/Index;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=3, args_size=1
start local 0 0: aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
astore 2
goto 4
StackMap locals: org.h2.table.PageStoreTable top java.util.Iterator
StackMap stack:
1: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.h2.index.Index
astore 1
start local 1 2: aload 1
invokeinterface org.h2.index.Index.getIndexType:()Lorg/h2/index/IndexType;
invokevirtual org.h2.index.IndexType.isUnique:()Z
ifeq 4
3: aload 1
areturn
end local 1 4: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
5: aconst_null
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/h2/table/PageStoreTable;
2 4 1 idx Lorg/h2/index/Index;
public java.util.ArrayList<org.h2.index.Index> getIndexes();
descriptor: ()Ljava/util/ArrayList;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/table/PageStoreTable;
Signature: ()Ljava/util/ArrayList<Lorg/h2/index/Index;>;
public org.h2.index.Index addIndex(org.h2.engine.Session, java.lang.String, int, org.h2.table.IndexColumn[], org.h2.index.IndexType, boolean, java.lang.String);
descriptor: (Lorg/h2/engine/Session;Ljava/lang/String;I[Lorg/h2/table/IndexColumn;Lorg/h2/index/IndexType;ZLjava/lang/String;)Lorg/h2/index/Index;
flags: (0x0001) ACC_PUBLIC
Code:
stack=10, locals=23, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 0: aload 5
invokevirtual org.h2.index.IndexType.isPrimaryKey:()Z
ifeq 10
1: aload 4
dup
astore 11
arraylength
istore 10
iconst_0
istore 9
goto 9
StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session java.lang.String int org.h2.table.IndexColumn[] org.h2.index.IndexType int java.lang.String top int int org.h2.table.IndexColumn[]
StackMap stack:
2: aload 11
iload 9
aaload
astore 8
start local 8 3: aload 8
getfield org.h2.table.IndexColumn.column:Lorg/h2/table/Column;
astore 12
start local 12 4: aload 12
invokevirtual org.h2.table.Column.isNullable:()Z
ifeq 7
5: ldc 90023
aload 12
invokevirtual org.h2.table.Column.getName:()Ljava/lang/String;
6: invokestatic org.h2.message.DbException.get:(ILjava/lang/String;)Lorg/h2/message/DbException;
athrow
7: StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session java.lang.String int org.h2.table.IndexColumn[] org.h2.index.IndexType int java.lang.String org.h2.table.IndexColumn int int org.h2.table.IndexColumn[] org.h2.table.Column
StackMap stack:
aload 12
iconst_1
invokevirtual org.h2.table.Column.setPrimaryKey:(Z)V
end local 12 end local 8 8: iinc 9 1
StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session java.lang.String int org.h2.table.IndexColumn[] org.h2.index.IndexType int java.lang.String top int int org.h2.table.IndexColumn[]
StackMap stack:
9: iload 9
iload 10
if_icmplt 2
10: StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session java.lang.String int org.h2.table.IndexColumn[] org.h2.index.IndexType int java.lang.String
StackMap stack:
aload 0
invokevirtual org.h2.table.PageStoreTable.isTemporary:()Z
ifeq 11
aload 0
invokevirtual org.h2.table.PageStoreTable.isGlobalTemporary:()Z
ifne 11
iconst_1
goto 12
StackMap locals:
StackMap stack:
11: iconst_0
StackMap locals:
StackMap stack: int
12: istore 8
start local 8 13: iload 8
ifne 15
14: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
aload 1
invokevirtual org.h2.engine.Database.lockMeta:(Lorg/h2/engine/Session;)Z
pop
15: StackMap locals: int
StackMap stack:
aload 0
invokevirtual org.h2.table.PageStoreTable.isPersistIndexes:()Z
ifeq 40
aload 5
invokevirtual org.h2.index.IndexType.isPersistent:()Z
ifeq 40
16: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.isStarting:()Z
ifeq 20
17: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.getPageStore:()Lorg/h2/store/PageStore;
iload 3
invokevirtual org.h2.store.PageStore.getRootPageId:(I)I
ifeq 20
18: iconst_m1
istore 10
start local 10 19: goto 25
end local 10 StackMap locals:
StackMap stack:
20: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.isStarting:()Z
ifne 21
aload 0
getfield org.h2.table.PageStoreTable.mainIndex:Lorg/h2/index/PageDataIndex;
aload 1
invokevirtual org.h2.index.PageDataIndex.getRowCount:(Lorg/h2/engine/Session;)J
lconst_0
lcmp
ifne 22
21: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.mainIndex:Lorg/h2/index/PageDataIndex;
invokevirtual org.h2.index.PageDataIndex.getMainIndexColumn:()I
iconst_m1
if_icmpeq 24
22: StackMap locals:
StackMap stack:
iconst_m1
istore 10
start local 10 23: goto 25
end local 10 24: StackMap locals:
StackMap stack:
aload 5
aload 4
invokestatic org.h2.table.PageStoreTable.getMainIndexColumn:(Lorg/h2/index/IndexType;[Lorg/h2/table/IndexColumn;)I
istore 10
start local 10 25: StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session java.lang.String int org.h2.table.IndexColumn[] org.h2.index.IndexType int java.lang.String int top int
StackMap stack:
iload 10
iconst_m1
if_icmpeq 31
26: aload 0
getfield org.h2.table.PageStoreTable.mainIndex:Lorg/h2/index/PageDataIndex;
iload 10
invokevirtual org.h2.index.PageDataIndex.setMainIndexColumn:(I)V
27: new org.h2.index.PageDelegateIndex
dup
aload 0
iload 3
aload 2
28: aload 5
aload 0
getfield org.h2.table.PageStoreTable.mainIndex:Lorg/h2/index/PageDataIndex;
iload 6
aload 1
29: invokespecial org.h2.index.PageDelegateIndex.<init>:(Lorg/h2/table/PageStoreTable;ILjava/lang/String;Lorg/h2/index/IndexType;Lorg/h2/index/PageDataIndex;ZLorg/h2/engine/Session;)V
astore 9
start local 9 30: goto 59
end local 9 StackMap locals:
StackMap stack:
31: aload 5
invokevirtual org.h2.index.IndexType.isSpatial:()Z
ifeq 36
32: new org.h2.index.SpatialTreeIndex
dup
aload 0
iload 3
aload 2
aload 4
33: aload 5
iconst_1
iload 6
aload 1
34: invokespecial org.h2.index.SpatialTreeIndex.<init>:(Lorg/h2/table/Table;ILjava/lang/String;[Lorg/h2/table/IndexColumn;Lorg/h2/index/IndexType;ZZLorg/h2/engine/Session;)V
astore 9
start local 9 35: goto 59
end local 9 36: StackMap locals:
StackMap stack:
new org.h2.index.PageBtreeIndex
dup
aload 0
iload 3
aload 2
aload 4
37: aload 5
iload 6
aload 1
38: invokespecial org.h2.index.PageBtreeIndex.<init>:(Lorg/h2/table/PageStoreTable;ILjava/lang/String;[Lorg/h2/table/IndexColumn;Lorg/h2/index/IndexType;ZLorg/h2/engine/Session;)V
astore 9
end local 10 start local 9 39: goto 59
end local 9 40: StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session java.lang.String int org.h2.table.IndexColumn[] org.h2.index.IndexType int java.lang.String int
StackMap stack:
aload 5
invokevirtual org.h2.index.IndexType.isHash:()Z
ifeq 53
41: aload 4
arraylength
iconst_1
if_icmpeq 44
42: ldc "hash indexes may index only one column"
43: invokestatic org.h2.message.DbException.getUnsupportedException:(Ljava/lang/String;)Lorg/h2/message/DbException;
athrow
44: StackMap locals:
StackMap stack:
aload 5
invokevirtual org.h2.index.IndexType.isUnique:()Z
ifeq 49
45: new org.h2.index.HashIndex
dup
aload 0
iload 3
aload 2
aload 4
46: aload 5
47: invokespecial org.h2.index.HashIndex.<init>:(Lorg/h2/table/PageStoreTable;ILjava/lang/String;[Lorg/h2/table/IndexColumn;Lorg/h2/index/IndexType;)V
astore 9
start local 9 48: goto 59
end local 9 49: StackMap locals:
StackMap stack:
new org.h2.index.NonUniqueHashIndex
dup
aload 0
iload 3
aload 2
50: aload 4
aload 5
51: invokespecial org.h2.index.NonUniqueHashIndex.<init>:(Lorg/h2/table/PageStoreTable;ILjava/lang/String;[Lorg/h2/table/IndexColumn;Lorg/h2/index/IndexType;)V
astore 9
start local 9 52: goto 59
end local 9 StackMap locals:
StackMap stack:
53: aload 5
invokevirtual org.h2.index.IndexType.isSpatial:()Z
ifeq 58
54: new org.h2.index.SpatialTreeIndex
dup
aload 0
iload 3
aload 2
aload 4
55: aload 5
iconst_0
iconst_1
aload 1
56: invokespecial org.h2.index.SpatialTreeIndex.<init>:(Lorg/h2/table/Table;ILjava/lang/String;[Lorg/h2/table/IndexColumn;Lorg/h2/index/IndexType;ZZLorg/h2/engine/Session;)V
astore 9
start local 9 57: goto 59
end local 9 58: StackMap locals:
StackMap stack:
new org.h2.index.TreeIndex
dup
aload 0
iload 3
aload 2
aload 4
aload 5
invokespecial org.h2.index.TreeIndex.<init>:(Lorg/h2/table/PageStoreTable;ILjava/lang/String;[Lorg/h2/table/IndexColumn;Lorg/h2/index/IndexType;)V
astore 9
start local 9 59: StackMap locals: org.h2.index.Index
StackMap stack:
aload 9
invokeinterface org.h2.index.Index.needRebuild:()Z
ifeq 93
aload 0
getfield org.h2.table.PageStoreTable.rowCount:J
lconst_0
lcmp
ifle 93
60: aload 0
aload 1
invokevirtual org.h2.table.PageStoreTable.getScanIndex:(Lorg/h2/engine/Session;)Lorg/h2/index/Index;
astore 10
start local 10 61: aload 10
aload 1
invokeinterface org.h2.index.Index.getRowCount:(Lorg/h2/engine/Session;)J
lstore 11
start local 11 62: lload 11
lstore 13
start local 13 63: aload 10
aload 1
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 15
start local 15 64: lconst_0
lstore 16
start local 16 65: aload 0
getfield org.h2.table.PageStoreTable.rowCount:J
aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.getMaxMemoryRows:()I
i2l
invokestatic java.lang.Math.min:(JJ)J
l2i
istore 18
start local 18 66: new java.util.ArrayList
dup
iload 18
invokespecial java.util.ArrayList.<init>:(I)V
astore 19
start local 19 67: new java.lang.StringBuilder
dup
aload 0
invokevirtual org.h2.table.PageStoreTable.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ":"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 9
invokeinterface org.h2.index.Index.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 20
start local 20 68: lload 13
invokestatic org.h2.util.MathUtils.convertLongToInt:(J)I
istore 21
start local 21 69: goto 78
70: StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session java.lang.String int org.h2.table.IndexColumn[] org.h2.index.IndexType int java.lang.String int org.h2.index.Index org.h2.index.Index long long org.h2.index.Cursor long int java.util.ArrayList java.lang.String int
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
iconst_1
aload 20
71: lload 16
dup2
lconst_1
ladd
lstore 16
invokestatic org.h2.util.MathUtils.convertLongToInt:(J)I
iload 21
72: invokevirtual org.h2.engine.Database.setProgress:(ILjava/lang/String;II)V
73: aload 15
invokeinterface org.h2.index.Cursor.get:()Lorg/h2/result/Row;
astore 22
start local 22 74: aload 19
aload 22
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
75: aload 19
invokevirtual java.util.ArrayList.size:()I
iload 18
if_icmplt 77
76: aload 1
aload 19
aload 9
invokestatic org.h2.table.PageStoreTable.addRowsToIndex:(Lorg/h2/engine/Session;Ljava/util/ArrayList;Lorg/h2/index/Index;)V
77: StackMap locals: org.h2.result.Row
StackMap stack:
lload 11
lconst_1
lsub
lstore 11
end local 22 78: StackMap locals:
StackMap stack:
aload 15
invokeinterface org.h2.index.Cursor.next:()Z
ifne 70
79: aload 1
aload 19
aload 9
invokestatic org.h2.table.PageStoreTable.addRowsToIndex:(Lorg/h2/engine/Session;Ljava/util/ArrayList;Lorg/h2/index/Index;)V
80: lload 11
lconst_0
lcmp
ifeq 93
81: new java.lang.StringBuilder
dup
ldc "rowcount remaining="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
82: lload 11
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual org.h2.table.PageStoreTable.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
83: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
pop
end local 21 end local 20 end local 19 end local 18 end local 16 end local 15 end local 13 end local 11 end local 10 84: goto 93
StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session java.lang.String int org.h2.table.IndexColumn[] org.h2.index.IndexType int java.lang.String int org.h2.index.Index
StackMap stack: org.h2.message.DbException
85: astore 10
start local 10 86: aload 0
invokevirtual org.h2.table.PageStoreTable.getSchema:()Lorg/h2/schema/Schema;
aload 2
invokevirtual org.h2.schema.Schema.freeUniqueName:(Ljava/lang/String;)V
87: aload 9
aload 1
invokeinterface org.h2.index.Index.remove:(Lorg/h2/engine/Session;)V
88: goto 92
StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session java.lang.String int org.h2.table.IndexColumn[] org.h2.index.IndexType int java.lang.String int org.h2.index.Index org.h2.message.DbException
StackMap stack: org.h2.message.DbException
89: astore 11
start local 11 90: aload 0
getfield org.h2.table.PageStoreTable.trace:Lorg/h2/message/Trace;
aload 11
ldc "could not remove index"
invokevirtual org.h2.message.Trace.error:(Ljava/lang/Throwable;Ljava/lang/String;)V
91: aload 11
athrow
end local 11 92: StackMap locals:
StackMap stack:
aload 10
athrow
end local 10 93: StackMap locals:
StackMap stack:
aload 9
aload 0
invokevirtual org.h2.table.PageStoreTable.isTemporary:()Z
invokeinterface org.h2.index.Index.setTemporary:(Z)V
94: aload 9
invokeinterface org.h2.index.Index.getCreateSQL:()Ljava/lang/String;
ifnull 100
95: aload 9
aload 7
invokeinterface org.h2.index.Index.setComment:(Ljava/lang/String;)V
96: iload 8
ifeq 99
97: aload 1
aload 9
invokevirtual org.h2.engine.Session.addLocalTempTableIndex:(Lorg/h2/index/Index;)V
98: goto 100
99: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
aload 1
aload 9
invokevirtual org.h2.engine.Database.addSchemaObject:(Lorg/h2/engine/Session;Lorg/h2/schema/SchemaObject;)V
100: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
aload 9
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
101: aload 0
invokevirtual org.h2.table.PageStoreTable.setModified:()V
102: aload 9
areturn
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 103 0 this Lorg/h2/table/PageStoreTable;
0 103 1 session Lorg/h2/engine/Session;
0 103 2 indexName Ljava/lang/String;
0 103 3 indexId I
0 103 4 cols [Lorg/h2/table/IndexColumn;
0 103 5 indexType Lorg/h2/index/IndexType;
0 103 6 create Z
0 103 7 indexComment Ljava/lang/String;
3 8 8 c Lorg/h2/table/IndexColumn;
4 8 12 column Lorg/h2/table/Column;
13 103 8 isSessionTemporary Z
30 31 9 index Lorg/h2/index/Index;
35 36 9 index Lorg/h2/index/Index;
39 40 9 index Lorg/h2/index/Index;
48 49 9 index Lorg/h2/index/Index;
52 53 9 index Lorg/h2/index/Index;
57 58 9 index Lorg/h2/index/Index;
59 103 9 index Lorg/h2/index/Index;
19 20 10 mainIndexColumn I
23 24 10 mainIndexColumn I
25 39 10 mainIndexColumn I
61 84 10 scan Lorg/h2/index/Index;
62 84 11 remaining J
63 84 13 total J
64 84 15 cursor Lorg/h2/index/Cursor;
65 84 16 i J
66 84 18 bufferSize I
67 84 19 buffer Ljava/util/ArrayList<Lorg/h2/result/Row;>;
68 84 20 n Ljava/lang/String;
69 84 21 t I
74 78 22 row Lorg/h2/result/Row;
86 93 10 e Lorg/h2/message/DbException;
90 92 11 e2 Lorg/h2/message/DbException;
Exception table:
from to target type
60 84 85 Class org.h2.message.DbException
87 88 89 Class org.h2.message.DbException
MethodParameters:
Name Flags
session
indexName
indexId
cols
indexType
create
indexComment
public long getRowCount(org.h2.engine.Session);
descriptor: (Lorg/h2/engine/Session;)J
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.PageStoreTable.rowCount:J
lreturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/table/PageStoreTable;
0 1 1 session Lorg/h2/engine/Session;
MethodParameters:
Name Flags
session
public void removeRow(org.h2.engine.Session, org.h2.result.Row);
descriptor: (Lorg/h2/engine/Session;Lorg/h2/result/Row;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.getNextModificationDataId:()J
putfield org.h2.table.PageStoreTable.lastModificationId:J
1: aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
iconst_1
isub
istore 3
start local 3 2: goto 7
3: StackMap locals: int
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
iload 3
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.h2.index.Index
astore 4
start local 4 4: aload 4
aload 1
aload 2
invokeinterface org.h2.index.Index.remove:(Lorg/h2/engine/Session;Lorg/h2/result/Row;)V
5: aload 0
aload 1
aload 4
iconst_m1
invokevirtual org.h2.table.PageStoreTable.checkRowCount:(Lorg/h2/engine/Session;Lorg/h2/index/Index;I)V
end local 4 6: iinc 3 -1
StackMap locals:
StackMap stack:
7: iload 3
ifge 3
8: aload 0
dup
getfield org.h2.table.PageStoreTable.rowCount:J
lconst_1
lsub
putfield org.h2.table.PageStoreTable.rowCount:J
9: goto 21
StackMap locals:
StackMap stack: java.lang.Throwable
10: astore 4
start local 4 11: goto 15
12: StackMap locals: java.lang.Throwable
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
iload 3
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.h2.index.Index
astore 5
start local 5 13: aload 5
aload 1
aload 2
invokeinterface org.h2.index.Index.add:(Lorg/h2/engine/Session;Lorg/h2/result/Row;)V
14: aload 0
aload 1
aload 5
iconst_0
invokevirtual org.h2.table.PageStoreTable.checkRowCount:(Lorg/h2/engine/Session;Lorg/h2/index/Index;I)V
end local 5 15: StackMap locals:
StackMap stack:
iinc 3 1
iload 3
aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 12
16: goto 20
StackMap locals:
StackMap stack: org.h2.message.DbException
17: astore 5
start local 5 18: aload 0
getfield org.h2.table.PageStoreTable.trace:Lorg/h2/message/Trace;
aload 5
ldc "could not undo operation"
invokevirtual org.h2.message.Trace.error:(Ljava/lang/Throwable;Ljava/lang/String;)V
19: aload 5
athrow
end local 5 20: StackMap locals:
StackMap stack:
aload 4
invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
athrow
end local 4 21: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.h2.table.PageStoreTable.analyzeIfRequired:(Lorg/h2/engine/Session;)V
22: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lorg/h2/table/PageStoreTable;
0 23 1 session Lorg/h2/engine/Session;
0 23 2 row Lorg/h2/result/Row;
2 23 3 i I
4 6 4 index Lorg/h2/index/Index;
11 21 4 e Ljava/lang/Throwable;
13 15 5 index Lorg/h2/index/Index;
18 20 5 e2 Lorg/h2/message/DbException;
Exception table:
from to target type
2 9 10 Class java.lang.Throwable
11 16 17 Class org.h2.message.DbException
MethodParameters:
Name Flags
session
row
public void truncate(org.h2.engine.Session);
descriptor: (Lorg/h2/engine/Session;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 0
aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.getNextModificationDataId:()J
putfield org.h2.table.PageStoreTable.lastModificationId:J
1: aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
iconst_1
isub
istore 2
start local 2 2: goto 6
3: StackMap locals: int
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
iload 2
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.h2.index.Index
astore 3
start local 3 4: aload 3
aload 1
invokeinterface org.h2.index.Index.truncate:(Lorg/h2/engine/Session;)V
end local 3 5: iinc 2 -1
StackMap locals:
StackMap stack:
6: iload 2
ifge 3
end local 2 7: aload 0
lconst_0
putfield org.h2.table.PageStoreTable.rowCount:J
8: aload 0
iconst_0
putfield org.h2.table.PageStoreTable.changesSinceAnalyze:I
9: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/h2/table/PageStoreTable;
0 10 1 session Lorg/h2/engine/Session;
2 7 2 i I
4 5 3 index Lorg/h2/index/Index;
MethodParameters:
Name Flags
session
private void analyzeIfRequired(org.h2.engine.Session);
descriptor: (Lorg/h2/engine/Session;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.table.PageStoreTable.nextAnalyze:I
ifeq 1
aload 0
getfield org.h2.table.PageStoreTable.nextAnalyze:I
aload 0
dup
getfield org.h2.table.PageStoreTable.changesSinceAnalyze:I
dup_x1
iconst_1
iadd
putfield org.h2.table.PageStoreTable.changesSinceAnalyze:I
if_icmple 2
1: StackMap locals:
StackMap stack:
return
2: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield org.h2.table.PageStoreTable.changesSinceAnalyze:I
3: iconst_2
aload 0
getfield org.h2.table.PageStoreTable.nextAnalyze:I
imul
istore 2
start local 2 4: iload 2
ifle 6
5: aload 0
iload 2
putfield org.h2.table.PageStoreTable.nextAnalyze:I
6: StackMap locals: int
StackMap stack:
aload 1
aload 0
invokevirtual org.h2.engine.Session.markTableForAnalyze:(Lorg/h2/table/Table;)V
7: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/h2/table/PageStoreTable;
0 8 1 session Lorg/h2/engine/Session;
4 8 2 n I
MethodParameters:
Name Flags
session
public boolean lock(org.h2.engine.Session, boolean, boolean);
descriptor: (Lorg/h2/engine/Session;ZZ)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.getLockMode:()I
istore 4
start local 4 1: iload 4
ifne 4
2: aload 0
getfield org.h2.table.PageStoreTable.lockExclusiveSession:Lorg/h2/engine/Session;
ifnull 3
iconst_1
ireturn
StackMap locals: int
StackMap stack:
3: iconst_0
ireturn
4: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.lockExclusiveSession:Lorg/h2/engine/Session;
aload 1
if_acmpne 6
5: iconst_1
ireturn
6: StackMap locals:
StackMap stack:
iload 2
ifne 8
aload 0
getfield org.h2.table.PageStoreTable.lockSharedSessions:Ljava/util/concurrent/ConcurrentHashMap;
aload 1
invokevirtual java.util.concurrent.ConcurrentHashMap.containsKey:(Ljava/lang/Object;)Z
ifeq 8
7: iconst_1
ireturn
8: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
dup
astore 5
monitorenter
9: iload 2
ifne 12
aload 0
getfield org.h2.table.PageStoreTable.lockSharedSessions:Ljava/util/concurrent/ConcurrentHashMap;
aload 1
invokevirtual java.util.concurrent.ConcurrentHashMap.contains:(Ljava/lang/Object;)Z
ifeq 12
10: aload 5
monitorexit
11: iconst_1
ireturn
12: StackMap locals: org.h2.engine.Database
StackMap stack:
aload 1
aload 0
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual org.h2.engine.Session.setWaitForLock:(Lorg/h2/table/Table;Ljava/lang/Thread;)V
13: aload 0
getfield org.h2.table.PageStoreTable.waitingSessions:Ljava/util/ArrayDeque;
aload 1
invokevirtual java.util.ArrayDeque.addLast:(Ljava/lang/Object;)V
14: aload 0
aload 1
iload 4
iload 2
invokevirtual org.h2.table.PageStoreTable.doLock1:(Lorg/h2/engine/Session;IZ)V
15: goto 20
StackMap locals:
StackMap stack: java.lang.Throwable
16: astore 6
17: aload 1
aconst_null
aconst_null
invokevirtual org.h2.engine.Session.setWaitForLock:(Lorg/h2/table/Table;Ljava/lang/Thread;)V
18: aload 0
getfield org.h2.table.PageStoreTable.waitingSessions:Ljava/util/ArrayDeque;
aload 1
invokevirtual java.util.ArrayDeque.remove:(Ljava/lang/Object;)Z
pop
19: aload 6
athrow
20: StackMap locals:
StackMap stack:
aload 1
aconst_null
aconst_null
invokevirtual org.h2.engine.Session.setWaitForLock:(Lorg/h2/table/Table;Ljava/lang/Thread;)V
21: aload 0
getfield org.h2.table.PageStoreTable.waitingSessions:Ljava/util/ArrayDeque;
aload 1
invokevirtual java.util.ArrayDeque.remove:(Ljava/lang/Object;)Z
pop
22: aload 5
monitorexit
23: goto 26
StackMap locals:
StackMap stack: java.lang.Throwable
24: aload 5
monitorexit
25: athrow
26: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lorg/h2/table/PageStoreTable;
0 27 1 session Lorg/h2/engine/Session;
0 27 2 exclusive Z
0 27 3 forceLockEvenInMvcc Z
1 27 4 lockMode I
Exception table:
from to target type
14 16 16 any
9 11 24 any
12 23 24 any
24 25 24 any
MethodParameters:
Name Flags
session
exclusive
forceLockEvenInMvcc
private void doLock1(org.h2.engine.Session, int, boolean);
descriptor: (Lorg/h2/engine/Session;IZ)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=14, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
iload 3
ldc "requesting for"
invokevirtual org.h2.table.PageStoreTable.traceLock:(Lorg/h2/engine/Session;ZLjava/lang/String;)V
1: lconst_0
lstore 4
start local 4 2: iconst_0
istore 6
start local 6 3: StackMap locals: long int
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.waitingSessions:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.getFirst:()Ljava/lang/Object;
aload 1
if_acmpne 6
4: aload 0
aload 1
iload 2
iload 3
invokevirtual org.h2.table.PageStoreTable.doLock2:(Lorg/h2/engine/Session;IZ)Z
ifeq 6
5: return
6: StackMap locals:
StackMap stack:
iload 6
ifeq 12
7: aload 0
aload 1
aconst_null
aconst_null
invokevirtual org.h2.table.PageStoreTable.checkDeadlock:(Lorg/h2/engine/Session;Lorg/h2/engine/Session;Ljava/util/Set;)Ljava/util/ArrayList;
astore 7
start local 7 8: aload 7
ifnull 13
9: ldc 40001
10: aload 7
iload 3
invokestatic org.h2.table.PageStoreTable.getDeadlockDetails:(Ljava/util/ArrayList;Z)Ljava/lang/String;
11: invokestatic org.h2.message.DbException.get:(ILjava/lang/String;)Lorg/h2/message/DbException;
athrow
end local 7 12: StackMap locals:
StackMap stack:
iconst_1
istore 6
13: StackMap locals:
StackMap stack:
invokestatic java.lang.System.nanoTime:()J
lstore 7
start local 7 14: lload 4
lconst_0
lcmp
ifne 17
15: lload 7
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
aload 1
invokevirtual org.h2.engine.Session.getLockTimeout:()I
i2l
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
ladd
lstore 4
16: goto 20
StackMap locals: long
StackMap stack:
17: lload 7
lload 4
lcmp
iflt 20
18: aload 0
aload 1
iload 3
new java.lang.StringBuilder
dup
ldc "timeout after "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual org.h2.engine.Session.getLockTimeout:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual org.h2.table.PageStoreTable.traceLock:(Lorg/h2/engine/Session;ZLjava/lang/String;)V
19: ldc 50200
aload 0
invokevirtual org.h2.table.PageStoreTable.getName:()Ljava/lang/String;
invokestatic org.h2.message.DbException.get:(ILjava/lang/String;)Lorg/h2/message/DbException;
athrow
20: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 3
ldc "waiting for"
invokevirtual org.h2.table.PageStoreTable.traceLock:(Lorg/h2/engine/Session;ZLjava/lang/String;)V
21: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.getLockMode:()I
iconst_2
if_icmpne 31
22: iconst_0
istore 9
start local 9 23: goto 30
24: StackMap locals: int
StackMap stack:
invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.freeMemory:()J
lstore 10
start local 10 25: invokestatic java.lang.System.gc:()V
26: invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.freeMemory:()J
lstore 12
start local 12 27: lload 10
lload 12
lcmp
ifne 29
28: goto 31
end local 12 end local 10 29: StackMap locals:
StackMap stack:
iinc 9 1
StackMap locals:
StackMap stack:
30: iload 9
bipush 20
if_icmplt 24
end local 9 31: StackMap locals:
StackMap stack:
ldc 100
32: getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
lload 4
lload 7
lsub
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
33: invokestatic java.lang.Math.min:(JJ)J
lstore 9
start local 9 34: lload 9
lconst_0
lcmp
ifne 36
35: lconst_1
lstore 9
36: StackMap locals: long
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
lload 9
invokevirtual java.lang.Object.wait:(J)V
end local 9 37: goto 3
StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session int int long int long
StackMap stack: java.lang.InterruptedException
38: pop
end local 7 39: goto 3
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 40 0 this Lorg/h2/table/PageStoreTable;
0 40 1 session Lorg/h2/engine/Session;
0 40 2 lockMode I
0 40 3 exclusive Z
2 40 4 max J
3 40 6 checkDeadlock Z
8 12 7 sessions Ljava/util/ArrayList<Lorg/h2/engine/Session;>;
14 39 7 now J
23 31 9 i I
25 29 10 free J
27 29 12 free2 J
34 37 9 sleep J
Exception table:
from to target type
20 37 38 Class java.lang.InterruptedException
MethodParameters:
Name Flags
session
lockMode
exclusive
private boolean doLock2(org.h2.engine.Session, int, boolean);
descriptor: (Lorg/h2/engine/Session;IZ)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 3
ifeq 12
1: aload 0
getfield org.h2.table.PageStoreTable.lockExclusiveSession:Lorg/h2/engine/Session;
ifnonnull 21
2: aload 0
getfield org.h2.table.PageStoreTable.lockSharedSessions:Ljava/util/concurrent/ConcurrentHashMap;
invokevirtual java.util.concurrent.ConcurrentHashMap.isEmpty:()Z
ifeq 7
3: aload 0
aload 1
iload 3
ldc "added for"
invokevirtual org.h2.table.PageStoreTable.traceLock:(Lorg/h2/engine/Session;ZLjava/lang/String;)V
4: aload 1
aload 0
invokevirtual org.h2.engine.Session.addLock:(Lorg/h2/table/Table;)V
5: aload 0
aload 1
putfield org.h2.table.PageStoreTable.lockExclusiveSession:Lorg/h2/engine/Session;
6: iconst_1
ireturn
7: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.lockSharedSessions:Ljava/util/concurrent/ConcurrentHashMap;
invokevirtual java.util.concurrent.ConcurrentHashMap.size:()I
iconst_1
if_icmpne 21
8: aload 0
getfield org.h2.table.PageStoreTable.lockSharedSessions:Ljava/util/concurrent/ConcurrentHashMap;
aload 1
invokevirtual java.util.concurrent.ConcurrentHashMap.containsKey:(Ljava/lang/Object;)Z
ifeq 21
9: aload 0
aload 1
iload 3
ldc "add (upgraded) for "
invokevirtual org.h2.table.PageStoreTable.traceLock:(Lorg/h2/engine/Session;ZLjava/lang/String;)V
10: aload 0
aload 1
putfield org.h2.table.PageStoreTable.lockExclusiveSession:Lorg/h2/engine/Session;
11: iconst_1
ireturn
12: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.lockExclusiveSession:Lorg/h2/engine/Session;
ifnonnull 21
13: iload 2
iconst_3
if_icmpne 16
14: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.isMultiThreaded:()Z
ifne 16
15: iconst_1
ireturn
16: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.lockSharedSessions:Ljava/util/concurrent/ConcurrentHashMap;
aload 1
invokevirtual java.util.concurrent.ConcurrentHashMap.containsKey:(Ljava/lang/Object;)Z
ifne 20
17: aload 0
aload 1
iload 3
ldc "ok"
invokevirtual org.h2.table.PageStoreTable.traceLock:(Lorg/h2/engine/Session;ZLjava/lang/String;)V
18: aload 1
aload 0
invokevirtual org.h2.engine.Session.addLock:(Lorg/h2/table/Table;)V
19: aload 0
getfield org.h2.table.PageStoreTable.lockSharedSessions:Ljava/util/concurrent/ConcurrentHashMap;
aload 1
aload 1
invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
20: StackMap locals:
StackMap stack:
iconst_1
ireturn
21: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lorg/h2/table/PageStoreTable;
0 22 1 session Lorg/h2/engine/Session;
0 22 2 lockMode I
0 22 3 exclusive Z
MethodParameters:
Name Flags
session
lockMode
exclusive
private void traceLock(org.h2.engine.Session, boolean, java.lang.String);
descriptor: (Lorg/h2/engine/Session;ZLjava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield org.h2.table.PageStoreTable.traceLock:Lorg/h2/message/Trace;
invokevirtual org.h2.message.Trace.isDebugEnabled:()Z
ifeq 6
1: aload 0
getfield org.h2.table.PageStoreTable.traceLock:Lorg/h2/message/Trace;
ldc "{0} {1} {2} {3}"
iconst_4
anewarray java.lang.Object
dup
iconst_0
aload 1
invokevirtual org.h2.engine.Session.getId:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_1
2: iload 2
ifeq 3
ldc "exclusive write lock"
goto 4
StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session int java.lang.String
StackMap stack: org.h2.message.Trace java.lang.String java.lang.Object[] java.lang.Object[] int
3: ldc "shared read lock"
StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session int java.lang.String
StackMap stack: org.h2.message.Trace java.lang.String java.lang.Object[] java.lang.Object[] int java.lang.String
4: aastore
dup
iconst_2
aload 3
aastore
dup
iconst_3
aload 0
invokevirtual org.h2.table.PageStoreTable.getName:()Ljava/lang/String;
aastore
5: invokevirtual org.h2.message.Trace.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
6: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/h2/table/PageStoreTable;
0 7 1 session Lorg/h2/engine/Session;
0 7 2 exclusive Z
0 7 3 s Ljava/lang/String;
MethodParameters:
Name Flags
session
exclusive
s
public void unlock(org.h2.engine.Session);
descriptor: (Lorg/h2/engine/Session;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
ifnull 16
1: aload 0
aload 1
aload 0
getfield org.h2.table.PageStoreTable.lockExclusiveSession:Lorg/h2/engine/Session;
aload 1
if_acmpne 2
iconst_1
goto 3
StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session
StackMap stack: org.h2.table.PageStoreTable org.h2.engine.Session
2: iconst_0
StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session
StackMap stack: org.h2.table.PageStoreTable org.h2.engine.Session int
3: ldc "unlock"
invokevirtual org.h2.table.PageStoreTable.traceLock:(Lorg/h2/engine/Session;ZLjava/lang/String;)V
4: aload 0
getfield org.h2.table.PageStoreTable.lockExclusiveSession:Lorg/h2/engine/Session;
aload 1
if_acmpne 7
5: aload 0
getfield org.h2.table.PageStoreTable.lockSharedSessions:Ljava/util/concurrent/ConcurrentHashMap;
aload 1
invokevirtual java.util.concurrent.ConcurrentHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
6: aload 0
aconst_null
putfield org.h2.table.PageStoreTable.lockExclusiveSession:Lorg/h2/engine/Session;
7: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
dup
astore 2
monitorenter
8: aload 0
getfield org.h2.table.PageStoreTable.lockSharedSessions:Ljava/util/concurrent/ConcurrentHashMap;
invokevirtual java.util.concurrent.ConcurrentHashMap.isEmpty:()Z
ifne 10
9: aload 0
getfield org.h2.table.PageStoreTable.lockSharedSessions:Ljava/util/concurrent/ConcurrentHashMap;
aload 1
invokevirtual java.util.concurrent.ConcurrentHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
10: StackMap locals: org.h2.engine.Database
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.waitingSessions:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.isEmpty:()Z
ifne 12
11: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual java.lang.Object.notifyAll:()V
12: StackMap locals:
StackMap stack:
aload 2
monitorexit
13: goto 16
StackMap locals:
StackMap stack: java.lang.Throwable
14: aload 2
monitorexit
15: athrow
16: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lorg/h2/table/PageStoreTable;
0 17 1 s Lorg/h2/engine/Session;
Exception table:
from to target type
8 13 14 any
14 15 14 any
MethodParameters:
Name Flags
s
public void setRowCount(long);
descriptor: (J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
lload 1
putfield org.h2.table.PageStoreTable.rowCount:J
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/table/PageStoreTable;
0 2 1 count J
MethodParameters:
Name Flags
count
public void removeChildrenAndResources(org.h2.engine.Session);
descriptor: (Lorg/h2/engine/Session;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.table.PageStoreTable.containsLargeObject:Z
ifeq 4
1: aload 0
aload 1
invokevirtual org.h2.table.PageStoreTable.truncate:(Lorg/h2/engine/Session;)V
2: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.getLobStorage:()Lorg/h2/store/LobStorageInterface;
aload 0
invokevirtual org.h2.table.PageStoreTable.getId:()I
invokeinterface org.h2.store.LobStorageInterface.removeAllForTable:(I)V
3: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
aload 1
invokevirtual org.h2.engine.Database.lockMeta:(Lorg/h2/engine/Session;)Z
pop
4: StackMap locals:
StackMap stack:
aload 0
aload 1
invokespecial org.h2.table.RegularTable.removeChildrenAndResources:(Lorg/h2/engine/Session;)V
5: goto 10
6: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
iconst_1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.h2.index.Index
astore 2
start local 2 7: aload 2
invokeinterface org.h2.index.Index.getName:()Ljava/lang/String;
ifnull 9
8: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
aload 1
aload 2
invokevirtual org.h2.engine.Database.removeSchemaObject:(Lorg/h2/engine/Session;Lorg/h2/schema/SchemaObject;)V
9: StackMap locals: org.h2.index.Index
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
aload 2
invokevirtual java.util.ArrayList.remove:(Ljava/lang/Object;)Z
pop
end local 2 10: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.indexes:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
iconst_1
if_icmpgt 6
11: getstatic org.h2.engine.SysProperties.CHECK:Z
ifeq 18
12: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
iconst_1
invokevirtual org.h2.engine.Database.getAllSchemaObjects:(I)Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
astore 3
goto 17
StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session top java.util.Iterator
StackMap stack:
13: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.h2.schema.SchemaObject
astore 2
start local 2 14: aload 2
checkcast org.h2.index.Index
astore 4
start local 4 15: aload 4
invokeinterface org.h2.index.Index.getTable:()Lorg/h2/table/Table;
aload 0
if_acmpne 17
16: new java.lang.StringBuilder
dup
ldc "index not dropped: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokeinterface org.h2.index.Index.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
pop
end local 4 end local 2 17: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 13
18: StackMap locals: org.h2.table.PageStoreTable org.h2.engine.Session
StackMap stack:
aload 0
getfield org.h2.table.PageStoreTable.scanIndex:Lorg/h2/index/Index;
aload 1
invokeinterface org.h2.index.Index.remove:(Lorg/h2/engine/Session;)V
19: aload 0
getfield org.h2.table.PageStoreTable.database:Lorg/h2/engine/Database;
aload 1
aload 0
invokevirtual org.h2.table.PageStoreTable.getId:()I
invokevirtual org.h2.engine.Database.removeMeta:(Lorg/h2/engine/Session;I)V
20: aload 0
aconst_null
putfield org.h2.table.PageStoreTable.scanIndex:Lorg/h2/index/Index;
21: aload 0
aconst_null
putfield org.h2.table.PageStoreTable.lockExclusiveSession:Lorg/h2/engine/Session;
22: aload 0
getfield org.h2.table.PageStoreTable.lockSharedSessions:Ljava/util/concurrent/ConcurrentHashMap;
invokevirtual java.util.concurrent.ConcurrentHashMap.clear:()V
23: aload 0
invokevirtual org.h2.table.PageStoreTable.invalidate:()V
24: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Lorg/h2/table/PageStoreTable;
0 25 1 session Lorg/h2/engine/Session;
7 10 2 index Lorg/h2/index/Index;
14 17 2 obj Lorg/h2/schema/SchemaObject;
15 17 4 index Lorg/h2/index/Index;
MethodParameters:
Name Flags
session
public long getMaxDataModificationId();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.table.PageStoreTable.lastModificationId:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/table/PageStoreTable;
public long getRowCountApproximation();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.table.PageStoreTable.scanIndex:Lorg/h2/index/Index;
invokeinterface org.h2.index.Index.getRowCountApproximation:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/table/PageStoreTable;
public long getDiskSpaceUsed();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.table.PageStoreTable.scanIndex:Lorg/h2/index/Index;
invokeinterface org.h2.index.Index.getDiskSpaceUsed:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/table/PageStoreTable;
public void setCompareMode(org.h2.value.CompareMode);
descriptor: (Lorg/h2/value/CompareMode;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield org.h2.table.PageStoreTable.compareMode:Lorg/h2/value/CompareMode;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/table/PageStoreTable;
0 2 1 compareMode Lorg/h2/value/CompareMode;
MethodParameters:
Name Flags
compareMode
}
SourceFile: "PageStoreTable.java"