public class org.h2.store.LobStorageBackend implements org.h2.store.LobStorageInterface
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.h2.store.LobStorageBackend
super_class: java.lang.Object
{
public static final java.lang.String LOB_DATA_TABLE;
descriptor: Ljava/lang/String;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: "LOB_DATA"
private static final java.lang.String LOB_SCHEMA;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "INFORMATION_SCHEMA"
private static final java.lang.String LOBS;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "INFORMATION_SCHEMA.LOBS"
private static final java.lang.String LOB_MAP;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "INFORMATION_SCHEMA.LOB_MAP"
private static final java.lang.String LOB_DATA;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "INFORMATION_SCHEMA.LOB_DATA"
private static final int BLOCK_LENGTH;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 20000
private static final int HASH_CACHE_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4096
org.h2.jdbc.JdbcConnection conn;
descriptor: Lorg/h2/jdbc/JdbcConnection;
flags: (0x0000)
final org.h2.engine.Database database;
descriptor: Lorg/h2/engine/Database;
flags: (0x0010) ACC_FINAL
private final java.util.HashMap<java.lang.String, java.sql.PreparedStatement> prepared;
descriptor: Ljava/util/HashMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/HashMap<Ljava/lang/String;Ljava/sql/PreparedStatement;>;
private long nextBlock;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private final org.h2.tools.CompressTool compress;
descriptor: Lorg/h2/tools/CompressTool;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private long[] hashBlocks;
descriptor: [J
flags: (0x0002) ACC_PRIVATE
private boolean init;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/h2/store/LobStorageBackend;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic org.h2.store.LobStorageBackend.$assertionsDisabled:Z
3: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.h2.engine.Database);
descriptor: (Lorg/h2/engine/Database;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield org.h2.store.LobStorageBackend.prepared:Ljava/util/HashMap;
2: aload 0
invokestatic org.h2.tools.CompressTool.getInstance:()Lorg/h2/tools/CompressTool;
putfield org.h2.store.LobStorageBackend.compress:Lorg/h2/tools/CompressTool;
3: aload 0
aload 1
putfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/h2/store/LobStorageBackend;
0 5 1 database Lorg/h2/engine/Database;
MethodParameters:
Name Flags
database
public void init();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=7, args_size=1
start local 0 0: aload 0
getfield org.h2.store.LobStorageBackend.init:Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
dup
astore 1
monitorenter
3: aload 0
getfield org.h2.store.LobStorageBackend.init:Z
ifeq 6
4: aload 1
monitorexit
5: return
6: StackMap locals: org.h2.engine.Database
StackMap stack:
aload 0
iconst_1
putfield org.h2.store.LobStorageBackend.init:Z
7: aload 0
aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.getLobConnectionForRegularUse:()Lorg/h2/jdbc/JdbcConnection;
putfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
8: aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.getLobConnectionForInit:()Lorg/h2/jdbc/JdbcConnection;
astore 2
start local 2 9: aload 2
invokevirtual org.h2.jdbc.JdbcConnection.createStatement:()Ljava/sql/Statement;
astore 3
start local 3 10: iconst_1
istore 4
start local 4 11: aload 2
12: ldc "SELECT ZERO() FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=? AND TABLE_NAME=? AND COLUMN_NAME=?"
13: invokevirtual org.h2.jdbc.JdbcConnection.prepareStatement:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 5
start local 5 14: aload 5
iconst_1
ldc "INFORMATION_SCHEMA"
invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
15: aload 5
iconst_2
ldc "LOB_MAP"
invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
16: aload 5
iconst_3
ldc "POS"
invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
17: aload 5
invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
astore 6
start local 6 18: aload 6
invokeinterface java.sql.ResultSet.next:()Z
ifeq 27
19: aload 2
20: ldc "SELECT ZERO() FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=? AND TABLE_NAME=?"
21: invokevirtual org.h2.jdbc.JdbcConnection.prepareStatement:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 5
22: aload 5
iconst_1
ldc "INFORMATION_SCHEMA"
invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
23: aload 5
iconst_2
ldc "LOB_DATA"
invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
24: aload 5
invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
astore 6
25: aload 6
invokeinterface java.sql.ResultSet.next:()Z
ifeq 27
26: iconst_0
istore 4
27: StackMap locals: org.h2.store.LobStorageBackend org.h2.engine.Database org.h2.jdbc.JdbcConnection java.sql.Statement int java.sql.PreparedStatement java.sql.ResultSet
StackMap stack:
iload 4
ifeq 36
28: aload 3
ldc "CREATE CACHED TABLE IF NOT EXISTS INFORMATION_SCHEMA.LOBS(ID BIGINT PRIMARY KEY, BYTE_COUNT BIGINT, `TABLE` INT) HIDDEN"
invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
pop
29: aload 3
ldc "CREATE INDEX IF NOT EXISTS INFORMATION_SCHEMA.INDEX_LOB_TABLE ON INFORMATION_SCHEMA.LOBS(`TABLE`)"
invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
pop
30: aload 3
ldc "CREATE CACHED TABLE IF NOT EXISTS INFORMATION_SCHEMA.LOB_MAP(LOB BIGINT, SEQ INT, POS BIGINT, HASH INT, BLOCK BIGINT, PRIMARY KEY(LOB, SEQ)) HIDDEN"
invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
pop
31: aload 3
ldc "ALTER TABLE INFORMATION_SCHEMA.LOB_MAP RENAME TO INFORMATION_SCHEMA.LOB_MAP HIDDEN"
invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
pop
32: aload 3
ldc "ALTER TABLE INFORMATION_SCHEMA.LOB_MAP ADD IF NOT EXISTS POS BIGINT BEFORE HASH"
invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
pop
33: aload 3
ldc "ALTER TABLE INFORMATION_SCHEMA.LOB_MAP DROP COLUMN IF EXISTS \"OFFSET\""
invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
pop
34: aload 3
ldc "CREATE INDEX IF NOT EXISTS INFORMATION_SCHEMA.INDEX_LOB_MAP_DATA_LOB ON INFORMATION_SCHEMA.LOB_MAP(BLOCK, LOB)"
invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
pop
35: aload 3
ldc "CREATE CACHED TABLE IF NOT EXISTS INFORMATION_SCHEMA.LOB_DATA(BLOCK BIGINT PRIMARY KEY, COMPRESSED INT, DATA BINARY) HIDDEN"
invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
pop
36: StackMap locals:
StackMap stack:
aload 3
ldc "SELECT MAX(BLOCK) FROM INFORMATION_SCHEMA.LOB_DATA"
invokeinterface java.sql.Statement.executeQuery:(Ljava/lang/String;)Ljava/sql/ResultSet;
astore 6
37: aload 6
invokeinterface java.sql.ResultSet.next:()Z
pop
38: aload 0
aload 6
iconst_1
invokeinterface java.sql.ResultSet.getLong:(I)J
lconst_1
ladd
putfield org.h2.store.LobStorageBackend.nextBlock:J
39: aload 3
invokeinterface java.sql.Statement.close:()V
end local 6 end local 5 end local 4 end local 3 40: goto 43
StackMap locals: org.h2.store.LobStorageBackend org.h2.engine.Database org.h2.jdbc.JdbcConnection
StackMap stack: java.sql.SQLException
41: astore 3
start local 3 42: aload 3
invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
athrow
end local 3 end local 2 43: StackMap locals:
StackMap stack:
aload 1
monitorexit
44: goto 47
StackMap locals:
StackMap stack: java.lang.Throwable
45: aload 1
monitorexit
46: athrow
47: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 48 0 this Lorg/h2/store/LobStorageBackend;
9 43 2 initConn Lorg/h2/jdbc/JdbcConnection;
10 40 3 stat Ljava/sql/Statement;
11 40 4 create Z
14 40 5 prep Ljava/sql/PreparedStatement;
18 40 6 rs Ljava/sql/ResultSet;
42 43 3 e Ljava/sql/SQLException;
Exception table:
from to target type
9 40 41 Class java.sql.SQLException
3 5 45 any
6 44 45 any
45 46 45 any
private long getNextLobId();
descriptor: ()J
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=6, args_size=1
start local 0 0: ldc "SELECT MAX(LOB) FROM INFORMATION_SCHEMA.LOB_MAP"
astore 1
start local 1 1: aload 0
aload 1
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 2
start local 2 2: aload 2
invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
astore 3
start local 3 3: aload 3
invokeinterface java.sql.ResultSet.next:()Z
pop
4: aload 3
iconst_1
invokeinterface java.sql.ResultSet.getLong:(I)J
lconst_1
ladd
lstore 4
start local 4 5: aload 0
aload 1
aload 2
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
6: ldc "SELECT MAX(ID) FROM INFORMATION_SCHEMA.LOBS"
astore 1
7: aload 0
aload 1
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 2
8: aload 2
invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
astore 3
9: aload 3
invokeinterface java.sql.ResultSet.next:()Z
pop
10: lload 4
aload 3
iconst_1
invokeinterface java.sql.ResultSet.getLong:(I)J
lconst_1
ladd
invokestatic java.lang.Math.max:(JJ)J
lstore 4
11: aload 0
aload 1
aload 2
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
12: lload 4
lreturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/h2/store/LobStorageBackend;
1 13 1 sql Ljava/lang/String;
2 13 2 prep Ljava/sql/PreparedStatement;
3 13 3 rs Ljava/sql/ResultSet;
5 13 4 x J
Exceptions:
throws java.sql.SQLException
public void removeAllForTable(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.h2.store.LobStorageBackend.init:()V
1: ldc "SELECT ID FROM INFORMATION_SCHEMA.LOBS WHERE `TABLE` = ?"
astore 2
start local 2 2: aload 0
aload 2
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 3
start local 3 3: aload 3
iconst_1
iload 1
invokeinterface java.sql.PreparedStatement.setInt:(II)V
4: aload 3
invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
astore 4
start local 4 5: goto 7
6: StackMap locals: java.lang.String java.sql.PreparedStatement java.sql.ResultSet
StackMap stack:
aload 0
aload 4
iconst_1
invokeinterface java.sql.ResultSet.getLong:(I)J
invokevirtual org.h2.store.LobStorageBackend.removeLob:(J)V
7: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.sql.ResultSet.next:()Z
ifne 6
8: aload 0
aload 2
aload 3
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
end local 4 end local 3 end local 2 9: goto 12
StackMap locals: org.h2.store.LobStorageBackend int
StackMap stack: java.sql.SQLException
10: astore 2
start local 2 11: aload 2
invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
athrow
end local 2 12: StackMap locals:
StackMap stack:
iload 1
iconst_m1
if_icmpne 15
13: aload 0
bipush -2
invokevirtual org.h2.store.LobStorageBackend.removeAllForTable:(I)V
14: aload 0
bipush -3
invokevirtual org.h2.store.LobStorageBackend.removeAllForTable:(I)V
15: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/h2/store/LobStorageBackend;
0 16 1 tableId I
2 9 2 sql Ljava/lang/String;
3 9 3 prep Ljava/sql/PreparedStatement;
5 9 4 rs Ljava/sql/ResultSet;
11 12 2 e Ljava/sql/SQLException;
Exception table:
from to target type
1 9 10 Class java.sql.SQLException
MethodParameters:
Name Flags
tableId
byte[] readBlock(long);
descriptor: (J)[B
flags: (0x0000)
Code:
stack=4, locals=10, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
invokestatic org.h2.store.LobStorageBackend.assertNotHolds:(Ljava/lang/Object;)V
1: aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
dup
astore 3
monitorenter
2: aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
dup
astore 4
monitorenter
3: ldc "SELECT COMPRESSED, DATA FROM INFORMATION_SCHEMA.LOB_DATA WHERE BLOCK = ?"
astore 5
start local 5 4: aload 0
aload 5
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 6
start local 6 5: aload 6
iconst_1
lload 1
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
6: aload 6
invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
astore 7
start local 7 7: aload 7
invokeinterface java.sql.ResultSet.next:()Z
ifne 11
8: ldc 90028
9: new java.lang.StringBuilder
dup
ldc "Missing lob entry, block: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
lload 1
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
10: invokestatic org.h2.message.DbException.getJdbcSQLException:(ILjava/lang/String;)Ljava/sql/SQLException;
athrow
11: StackMap locals: org.h2.store.LobStorageBackend long org.h2.engine.Database org.h2.engine.SessionInterface java.lang.String java.sql.PreparedStatement java.sql.ResultSet
StackMap stack:
aload 7
iconst_1
invokeinterface java.sql.ResultSet.getInt:(I)I
istore 8
start local 8 12: aload 7
iconst_2
invokeinterface java.sql.ResultSet.getBytes:(I)[B
astore 9
start local 9 13: iload 8
ifeq 15
14: aload 0
getfield org.h2.store.LobStorageBackend.compress:Lorg/h2/tools/CompressTool;
aload 9
invokevirtual org.h2.tools.CompressTool.expand:([B)[B
astore 9
15: StackMap locals: int byte[]
StackMap stack:
aload 0
aload 5
aload 6
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
16: aload 9
aload 4
monitorexit
17: aload 3
monitorexit
18: areturn
end local 9 end local 8 end local 7 end local 6 end local 5 19: StackMap locals: org.h2.store.LobStorageBackend long org.h2.engine.Database org.h2.engine.SessionInterface
StackMap stack: java.lang.Throwable
aload 4
monitorexit
20: athrow
21: StackMap locals: org.h2.store.LobStorageBackend long org.h2.engine.Database
StackMap stack: java.lang.Throwable
aload 3
monitorexit
22: athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lorg/h2/store/LobStorageBackend;
0 23 1 block J
4 19 5 sql Ljava/lang/String;
5 19 6 prep Ljava/sql/PreparedStatement;
7 19 7 rs Ljava/sql/ResultSet;
12 19 8 compressed I
13 19 9 buffer [B
Exception table:
from to target type
3 17 19 any
19 20 19 any
2 18 21 any
19 22 21 any
Exceptions:
throws java.sql.SQLException
MethodParameters:
Name Flags
block
java.sql.PreparedStatement prepare(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/sql/PreparedStatement;
flags: (0x0000)
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: getstatic org.h2.store.LobStorageBackend.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.store.LobStorageBackend.prepared:Ljava/util/HashMap;
aload 1
invokevirtual java.util.HashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.sql.PreparedStatement
astore 2
start local 2 2: aload 2
ifnonnull 4
3: aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
aload 1
invokevirtual org.h2.jdbc.JdbcConnection.prepareStatement:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 2
4: StackMap locals: java.sql.PreparedStatement
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/h2/store/LobStorageBackend;
0 5 1 sql Ljava/lang/String;
2 5 2 prep Ljava/sql/PreparedStatement;
Exceptions:
throws java.sql.SQLException
MethodParameters:
Name Flags
sql
void reuse(java.lang.String, java.sql.PreparedStatement);
descriptor: (Ljava/lang/String;Ljava/sql/PreparedStatement;)V
flags: (0x0000)
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.h2.store.LobStorageBackend.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.store.LobStorageBackend.prepared:Ljava/util/HashMap;
aload 1
aload 2
invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/h2/store/LobStorageBackend;
0 3 1 sql Ljava/lang/String;
0 3 2 prep Ljava/sql/PreparedStatement;
MethodParameters:
Name Flags
sql
prep
public void removeLob(org.h2.value.ValueLobDb);
descriptor: (Lorg/h2/value/ValueLobDb;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual org.h2.value.ValueLobDb.getLobId:()J
invokevirtual org.h2.store.LobStorageBackend.removeLob:(J)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/store/LobStorageBackend;
0 2 1 lob Lorg/h2/value/ValueLobDb;
MethodParameters:
Name Flags
lob
private void removeLob(long);
descriptor: (J)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=12, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
invokestatic org.h2.store.LobStorageBackend.assertNotHolds:(Ljava/lang/Object;)V
1: aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
dup
astore 3
monitorenter
2: aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
dup
astore 4
monitorenter
3: ldc "SELECT BLOCK, HASH FROM INFORMATION_SCHEMA.LOB_MAP D WHERE D.LOB = ? AND NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.LOB_MAP O WHERE O.BLOCK = D.BLOCK AND O.LOB <> ?)"
astore 5
start local 5 4: aload 0
aload 5
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 6
start local 6 5: aload 6
iconst_1
lload 1
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
6: aload 6
iconst_2
lload 1
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
7: aload 6
invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
astore 7
start local 7 8: invokestatic org.h2.util.Utils.newSmallArrayList:()Ljava/util/ArrayList;
astore 8
start local 8 9: goto 13
10: StackMap locals: org.h2.store.LobStorageBackend long org.h2.engine.Database org.h2.engine.SessionInterface java.lang.String java.sql.PreparedStatement java.sql.ResultSet java.util.ArrayList
StackMap stack:
aload 8
aload 7
iconst_1
invokeinterface java.sql.ResultSet.getLong:(I)J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
11: aload 7
iconst_2
invokeinterface java.sql.ResultSet.getInt:(I)I
istore 9
start local 9 12: aload 0
iload 9
ldc -1
invokevirtual org.h2.store.LobStorageBackend.setHashCacheBlock:(IJ)V
end local 9 13: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.sql.ResultSet.next:()Z
ifne 10
14: aload 0
aload 5
aload 6
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
15: ldc "DELETE FROM INFORMATION_SCHEMA.LOB_MAP WHERE LOB = ?"
astore 5
16: aload 0
aload 5
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 6
17: aload 6
iconst_1
lload 1
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
18: aload 6
invokeinterface java.sql.PreparedStatement.execute:()Z
pop
19: aload 0
aload 5
aload 6
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
20: ldc "DELETE FROM INFORMATION_SCHEMA.LOB_DATA WHERE BLOCK = ?"
astore 5
21: aload 0
aload 5
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 6
22: aload 8
invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
astore 11
goto 26
StackMap locals: org.h2.store.LobStorageBackend long org.h2.engine.Database org.h2.engine.SessionInterface java.lang.String java.sql.PreparedStatement java.sql.ResultSet java.util.ArrayList top top java.util.Iterator
StackMap stack:
23: aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.Long
invokevirtual java.lang.Long.longValue:()J
lstore 9
start local 9 24: aload 6
iconst_1
lload 9
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
25: aload 6
invokeinterface java.sql.PreparedStatement.execute:()Z
pop
end local 9 26: StackMap locals:
StackMap stack:
aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 23
27: aload 0
aload 5
aload 6
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
28: ldc "DELETE FROM INFORMATION_SCHEMA.LOBS WHERE ID = ?"
astore 5
29: aload 0
aload 5
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 6
30: aload 6
iconst_1
lload 1
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
31: aload 6
invokeinterface java.sql.PreparedStatement.execute:()Z
pop
32: aload 0
aload 5
aload 6
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
end local 8 end local 7 end local 6 end local 5 33: aload 4
monitorexit
34: goto 37
StackMap locals: org.h2.store.LobStorageBackend long org.h2.engine.Database org.h2.engine.SessionInterface
StackMap stack: java.lang.Throwable
35: aload 4
monitorexit
36: athrow
37: StackMap locals:
StackMap stack:
aload 3
monitorexit
38: goto 43
StackMap locals:
StackMap stack: java.lang.Throwable
39: aload 3
monitorexit
40: athrow
41: StackMap locals: org.h2.store.LobStorageBackend long
StackMap stack: java.sql.SQLException
astore 3
start local 3 42: aload 3
invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
athrow
end local 3 43: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 44 0 this Lorg/h2/store/LobStorageBackend;
0 44 1 lobId J
4 33 5 sql Ljava/lang/String;
5 33 6 prep Ljava/sql/PreparedStatement;
8 33 7 rs Ljava/sql/ResultSet;
9 33 8 blocks Ljava/util/ArrayList<Ljava/lang/Long;>;
12 13 9 hash I
24 26 9 block J
42 43 3 e Ljava/sql/SQLException;
Exception table:
from to target type
3 34 35 any
35 36 35 any
2 38 39 any
39 40 39 any
0 41 41 Class java.sql.SQLException
MethodParameters:
Name Flags
lobId
public java.io.InputStream getInputStream(org.h2.value.ValueLobDb, byte[], long);
descriptor: (Lorg/h2/value/ValueLobDb;[BJ)Ljava/io/InputStream;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual org.h2.store.LobStorageBackend.init:()V
1: aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
invokestatic org.h2.store.LobStorageBackend.assertNotHolds:(Ljava/lang/Object;)V
2: aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
dup
astore 5
monitorenter
3: aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
dup
astore 6
monitorenter
4: aload 1
invokevirtual org.h2.value.ValueLobDb.getLobId:()J
lstore 7
start local 7 5: new org.h2.store.LobStorageBackend$LobInputStream
dup
aload 0
lload 7
lload 3
invokespecial org.h2.store.LobStorageBackend$LobInputStream.<init>:(Lorg/h2/store/LobStorageBackend;JJ)V
aload 6
monitorexit
6: aload 5
monitorexit
7: areturn
end local 7 8: StackMap locals: org.h2.store.LobStorageBackend org.h2.value.ValueLobDb byte[] long org.h2.engine.Database org.h2.engine.SessionInterface
StackMap stack: java.lang.Throwable
aload 6
monitorexit
9: athrow
10: StackMap locals: org.h2.store.LobStorageBackend org.h2.value.ValueLobDb byte[] long org.h2.engine.Database
StackMap stack: java.lang.Throwable
aload 5
monitorexit
11: athrow
12: StackMap locals: org.h2.store.LobStorageBackend org.h2.value.ValueLobDb byte[] long
StackMap stack: java.sql.SQLException
astore 5
start local 5 13: aload 5
invokestatic org.h2.message.DbException.convertToIOException:(Ljava/lang/Throwable;)Ljava/io/IOException;
athrow
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lorg/h2/store/LobStorageBackend;
0 14 1 lob Lorg/h2/value/ValueLobDb;
0 14 2 hmac [B
0 14 3 byteCount J
5 8 7 lobId J
13 14 5 e Ljava/sql/SQLException;
Exception table:
from to target type
4 6 8 any
8 9 8 any
3 7 10 any
8 11 10 any
0 7 12 Class java.sql.SQLException
8 12 12 Class java.sql.SQLException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
lob
hmac
byteCount
private org.h2.value.ValueLobDb addLob(java.io.InputStream, long, int, org.h2.store.CountingReaderInputStream);
descriptor: (Ljava/io/InputStream;JILorg/h2/store/CountingReaderInputStream;)Lorg/h2/value/ValueLobDb;
flags: (0x0002) ACC_PRIVATE
Code:
stack=9, locals=19, args_size=5
start local 0 start local 1 start local 2 start local 4 start local 5 0: sipush 20000
newarray 8
astore 6
start local 6 1: lload 2
lconst_0
lcmp
ifge 3
2: ldc 9223372036854775807
lstore 2
3: StackMap locals: byte[]
StackMap stack:
lconst_0
lstore 7
start local 7 4: ldc -1
lstore 9
start local 9 5: aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.getMaxLengthInplaceLob:()I
istore 11
start local 11 6: aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
iload 4
invokevirtual org.h2.engine.Database.getLobCompressionAlgorithm:(I)Ljava/lang/String;
astore 12
start local 12 7: aconst_null
astore 13
start local 13 8: iconst_0
istore 14
start local 14 9: goto 39
10: StackMap locals: org.h2.store.LobStorageBackend java.io.InputStream long int org.h2.store.CountingReaderInputStream byte[] long long int java.lang.String byte[] int
StackMap stack:
ldc 20000
lload 2
invokestatic java.lang.Math.min:(JJ)J
l2i
istore 15
start local 15 11: aload 1
aload 6
iload 15
invokestatic org.h2.util.IOUtils.readFully:(Ljava/io/InputStream;[BI)I
istore 15
12: iload 15
ifgt 14
13: goto 40
14: StackMap locals: int
StackMap stack:
lload 2
iload 15
i2l
lsub
lstore 2
15: iload 15
aload 6
arraylength
if_icmpeq 18
16: aload 6
iload 15
invokestatic java.util.Arrays.copyOf:([BI)[B
astore 16
start local 16 17: goto 19
end local 16 18: StackMap locals:
StackMap stack:
aload 6
astore 16
start local 16 19: StackMap locals: byte[]
StackMap stack:
iload 14
ifne 23
aload 16
arraylength
sipush 20000
if_icmpge 23
20: aload 16
arraylength
iload 11
if_icmpgt 23
21: aload 16
astore 13
22: goto 40
23: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
invokestatic org.h2.store.LobStorageBackend.assertNotHolds:(Ljava/lang/Object;)V
24: aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
dup
astore 17
monitorenter
25: aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
dup
astore 18
monitorenter
26: iload 14
ifne 28
27: aload 0
invokevirtual org.h2.store.LobStorageBackend.getNextLobId:()J
lstore 9
28: StackMap locals: org.h2.engine.Database org.h2.engine.SessionInterface
StackMap stack:
aload 0
lload 9
iload 14
lload 7
aload 16
aload 12
invokevirtual org.h2.store.LobStorageBackend.storeBlock:(JIJ[BLjava/lang/String;)V
29: aload 18
monitorexit
30: goto 33
StackMap locals:
StackMap stack: java.lang.Throwable
31: aload 18
monitorexit
32: athrow
33: StackMap locals:
StackMap stack:
aload 17
monitorexit
34: goto 37
StackMap locals:
StackMap stack: java.lang.Throwable
35: aload 17
monitorexit
36: athrow
37: StackMap locals:
StackMap stack:
lload 7
iload 15
i2l
ladd
lstore 7
end local 16 end local 15 38: iinc 14 1
StackMap locals:
StackMap stack:
39: lload 2
lconst_0
lcmp
ifgt 10
end local 14 40: StackMap locals:
StackMap stack:
lload 9
ldc -1
lcmp
ifne 42
aload 13
ifnonnull 42
41: iconst_0
newarray 8
astore 13
42: StackMap locals:
StackMap stack:
aload 13
ifnull 49
43: aload 5
ifnonnull 45
44: aload 13
arraylength
i2l
goto 46
StackMap locals:
StackMap stack:
45: aload 5
invokevirtual org.h2.store.CountingReaderInputStream.getLength:()J
46: StackMap locals:
StackMap stack: long
lstore 14
start local 14 47: iload 4
aload 13
lload 14
invokestatic org.h2.value.ValueLobDb.createSmallLob:(I[BJ)Lorg/h2/value/ValueLobDb;
48: areturn
end local 14 49: StackMap locals:
StackMap stack:
aload 5
ifnonnull 51
50: lload 7
goto 52
StackMap locals:
StackMap stack:
51: aload 5
invokevirtual org.h2.store.CountingReaderInputStream.getLength:()J
52: StackMap locals:
StackMap stack: long
lstore 14
start local 14 53: aload 0
iload 4
lload 9
54: bipush -2
lload 7
lload 14
55: invokevirtual org.h2.store.LobStorageBackend.registerLob:(IJIJJ)Lorg/h2/value/ValueLobDb;
56: areturn
end local 14 end local 13 57: StackMap locals: org.h2.store.LobStorageBackend java.io.InputStream long int org.h2.store.CountingReaderInputStream byte[] long long int java.lang.String
StackMap stack: java.io.IOException
astore 13
start local 13 58: lload 9
ldc -1
lcmp
ifeq 60
59: aload 0
lload 9
invokevirtual org.h2.store.LobStorageBackend.removeLob:(J)V
60: StackMap locals: java.io.IOException
StackMap stack:
aload 13
aconst_null
invokestatic org.h2.message.DbException.convertIOException:(Ljava/io/IOException;Ljava/lang/String;)Lorg/h2/message/DbException;
athrow
end local 13 end local 12 end local 11 end local 9 end local 7 end local 6 61: StackMap locals: org.h2.store.LobStorageBackend java.io.InputStream long int org.h2.store.CountingReaderInputStream
StackMap stack: java.sql.SQLException
astore 6
start local 6 62: aload 6
invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
athrow
end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 63 0 this Lorg/h2/store/LobStorageBackend;
0 63 1 in Ljava/io/InputStream;
0 63 2 maxLength J
0 63 4 type I
0 63 5 countingReaderForClob Lorg/h2/store/CountingReaderInputStream;
1 61 6 buff [B
4 61 7 length J
5 61 9 lobId J
6 61 11 maxLengthInPlaceLob I
7 61 12 compressAlgorithm Ljava/lang/String;
8 57 13 small [B
9 40 14 seq I
11 38 15 len I
17 18 16 b [B
19 38 16 b [B
47 49 14 precision J
53 57 14 precision J
58 61 13 e Ljava/io/IOException;
62 63 6 e Ljava/sql/SQLException;
Exception table:
from to target type
26 30 31 any
31 32 31 any
25 34 35 any
35 36 35 any
7 48 57 Class java.io.IOException
49 56 57 Class java.io.IOException
0 48 61 Class java.sql.SQLException
49 56 61 Class java.sql.SQLException
57 61 61 Class java.sql.SQLException
MethodParameters:
Name Flags
in
maxLength
type
countingReaderForClob
private org.h2.value.ValueLobDb registerLob(int, long, int, long, long);
descriptor: (IJIJJ)Lorg/h2/value/ValueLobDb;
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=13, args_size=6
start local 0 start local 1 start local 2 start local 4 start local 5 start local 7 0: aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
invokestatic org.h2.store.LobStorageBackend.assertNotHolds:(Ljava/lang/Object;)V
1: aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
dup
astore 9
monitorenter
2: aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
dup
astore 10
monitorenter
3: ldc "INSERT INTO INFORMATION_SCHEMA.LOBS(ID, BYTE_COUNT, `TABLE`) VALUES(?, ?, ?)"
astore 11
start local 11 4: aload 0
aload 11
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 12
start local 12 5: aload 12
iconst_1
lload 2
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
6: aload 12
iconst_2
lload 5
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
7: aload 12
iconst_3
iload 4
invokeinterface java.sql.PreparedStatement.setInt:(II)V
8: aload 12
invokeinterface java.sql.PreparedStatement.execute:()Z
pop
9: aload 0
aload 11
aload 12
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
10: iload 1
11: aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
iload 4
lload 2
aconst_null
lload 7
12: invokestatic org.h2.value.ValueLobDb.create:(ILorg/h2/store/DataHandler;IJ[BJ)Lorg/h2/value/ValueLobDb;
aload 10
monitorexit
13: aload 9
monitorexit
14: areturn
end local 12 end local 11 15: StackMap locals: org.h2.store.LobStorageBackend int long int long long org.h2.engine.Database org.h2.engine.SessionInterface
StackMap stack: java.lang.Throwable
aload 10
monitorexit
16: athrow
17: StackMap locals: org.h2.store.LobStorageBackend int long int long long org.h2.engine.Database
StackMap stack: java.lang.Throwable
aload 9
monitorexit
18: athrow
end local 7 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lorg/h2/store/LobStorageBackend;
0 19 1 type I
0 19 2 lobId J
0 19 4 tableId I
0 19 5 byteCount J
0 19 7 precision J
4 15 11 sql Ljava/lang/String;
5 15 12 prep Ljava/sql/PreparedStatement;
Exception table:
from to target type
3 13 15 any
15 16 15 any
2 14 17 any
15 18 17 any
Exceptions:
throws java.sql.SQLException
MethodParameters:
Name Flags
type
lobId
tableId
byteCount
precision
public boolean isReadOnly();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
invokevirtual org.h2.engine.Database.isReadOnly:()Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/store/LobStorageBackend;
public org.h2.value.ValueLobDb copyLob(org.h2.value.ValueLobDb, int, long);
descriptor: (Lorg/h2/value/ValueLobDb;IJ)Lorg/h2/value/ValueLobDb;
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=15, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokevirtual org.h2.value.ValueLobDb.getValueType:()I
istore 5
start local 5 1: aload 1
invokevirtual org.h2.value.ValueLobDb.getLobId:()J
lstore 6
start local 6 2: aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
invokestatic org.h2.store.LobStorageBackend.assertNotHolds:(Ljava/lang/Object;)V
3: aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
dup
astore 8
monitorenter
4: aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
dup
astore 9
monitorenter
5: aload 0
invokevirtual org.h2.store.LobStorageBackend.init:()V
6: aconst_null
astore 10
start local 10 7: aload 1
invokevirtual org.h2.value.ValueLobDb.isRecoveryReference:()Z
ifne 24
8: aload 0
invokevirtual org.h2.store.LobStorageBackend.getNextLobId:()J
lstore 11
start local 11 9: ldc "INSERT INTO INFORMATION_SCHEMA.LOB_MAP(LOB, SEQ, POS, HASH, BLOCK) SELECT ?, SEQ, POS, HASH, BLOCK FROM INFORMATION_SCHEMA.LOB_MAP WHERE LOB = ?"
astore 13
start local 13 10: aload 0
aload 13
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 14
start local 14 11: aload 14
iconst_1
lload 11
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
12: aload 14
iconst_2
lload 6
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
13: aload 14
invokeinterface java.sql.PreparedStatement.executeUpdate:()I
pop
14: aload 0
aload 13
aload 14
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
15: ldc "INSERT INTO INFORMATION_SCHEMA.LOBS(ID, BYTE_COUNT, `TABLE`) SELECT ?, BYTE_COUNT, ? FROM INFORMATION_SCHEMA.LOBS WHERE ID = ?"
astore 13
16: aload 0
aload 13
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 14
17: aload 14
iconst_1
lload 11
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
18: aload 14
iconst_2
iload 2
i2l
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
19: aload 14
iconst_3
lload 6
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
20: aload 14
invokeinterface java.sql.PreparedStatement.executeUpdate:()I
pop
21: aload 0
aload 13
aload 14
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
22: iload 5
aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
iload 2
lload 11
aconst_null
lload 3
invokestatic org.h2.value.ValueLobDb.create:(ILorg/h2/store/DataHandler;IJ[BJ)Lorg/h2/value/ValueLobDb;
astore 10
end local 14 end local 13 end local 11 23: goto 25
24: StackMap locals: org.h2.store.LobStorageBackend org.h2.value.ValueLobDb int long int long org.h2.engine.Database org.h2.engine.SessionInterface org.h2.value.ValueLobDb
StackMap stack:
iload 5
aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
iload 2
lload 6
aconst_null
lload 3
invokestatic org.h2.value.ValueLobDb.create:(ILorg/h2/store/DataHandler;IJ[BJ)Lorg/h2/value/ValueLobDb;
astore 10
25: StackMap locals:
StackMap stack:
aload 10
26: aload 9
monitorexit
27: aload 8
monitorexit
28: areturn
end local 10 29: StackMap locals: org.h2.store.LobStorageBackend org.h2.value.ValueLobDb int long int long org.h2.engine.Database org.h2.engine.SessionInterface
StackMap stack: java.sql.SQLException
astore 10
start local 10 30: aload 10
invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
athrow
end local 10 31: StackMap locals:
StackMap stack: java.lang.Throwable
aload 9
monitorexit
32: athrow
33: StackMap locals: org.h2.store.LobStorageBackend org.h2.value.ValueLobDb int long int long org.h2.engine.Database
StackMap stack: java.lang.Throwable
aload 8
monitorexit
34: athrow
end local 6 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Lorg/h2/store/LobStorageBackend;
0 35 1 old Lorg/h2/value/ValueLobDb;
0 35 2 tableId I
0 35 3 length J
1 35 5 type I
2 35 6 oldLobId J
7 29 10 v Lorg/h2/value/ValueLobDb;
9 23 11 lobId J
10 23 13 sql Ljava/lang/String;
11 23 14 prep Ljava/sql/PreparedStatement;
30 31 10 e Ljava/sql/SQLException;
Exception table:
from to target type
5 26 29 Class java.sql.SQLException
5 27 31 any
29 32 31 any
4 28 33 any
29 34 33 any
MethodParameters:
Name Flags
old
tableId
length
private long getHashCacheBlock(int);
descriptor: (I)J
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.h2.store.LobStorageBackend.initHashCache:()V
1: iload 1
sipush 4095
iand
istore 2
start local 2 2: aload 0
getfield org.h2.store.LobStorageBackend.hashBlocks:[J
iload 2
laload
lstore 3
start local 3 3: lload 3
iload 1
i2l
lcmp
ifne 5
4: aload 0
getfield org.h2.store.LobStorageBackend.hashBlocks:[J
iload 2
sipush 4096
iadd
laload
lreturn
end local 3 end local 2 5: StackMap locals:
StackMap stack:
ldc -1
lreturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/h2/store/LobStorageBackend;
0 6 1 hash I
2 5 2 index I
3 5 3 oldHash J
MethodParameters:
Name Flags
hash
private void setHashCacheBlock(int, long);
descriptor: (IJ)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual org.h2.store.LobStorageBackend.initHashCache:()V
1: iload 1
sipush 4095
iand
istore 4
start local 4 2: aload 0
getfield org.h2.store.LobStorageBackend.hashBlocks:[J
iload 4
iload 1
i2l
lastore
3: aload 0
getfield org.h2.store.LobStorageBackend.hashBlocks:[J
iload 4
sipush 4096
iadd
lload 2
lastore
end local 4 4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/h2/store/LobStorageBackend;
0 5 1 hash I
0 5 2 block J
2 4 4 index I
MethodParameters:
Name Flags
hash
block
private void initHashCache();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.store.LobStorageBackend.hashBlocks:[J
ifnonnull 2
1: aload 0
sipush 8192
newarray 11
putfield org.h2.store.LobStorageBackend.hashBlocks:[J
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/h2/store/LobStorageBackend;
void storeBlock(long, int, long, byte[], java.lang.String);
descriptor: (JIJ[BLjava/lang/String;)V
flags: (0x0000)
Code:
stack=7, locals=17, args_size=6
start local 0 start local 1 start local 3 start local 4 start local 6 start local 7 0: iconst_0
istore 10
start local 10 1: aload 7
ifnull 3
2: aload 0
getfield org.h2.store.LobStorageBackend.compress:Lorg/h2/tools/CompressTool;
aload 6
aload 7
invokevirtual org.h2.tools.CompressTool.compress:([BLjava/lang/String;)[B
astore 6
3: StackMap locals: org.h2.store.LobStorageBackend long int long byte[] java.lang.String top top int
StackMap stack:
aload 6
invokestatic java.util.Arrays.hashCode:([B)I
istore 11
start local 11 4: aload 0
getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
invokestatic org.h2.store.LobStorageBackend.assertHoldsLock:(Ljava/lang/Object;)V
5: aload 0
getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
invokestatic org.h2.store.LobStorageBackend.assertHoldsLock:(Ljava/lang/Object;)V
6: aload 0
iload 11
invokevirtual org.h2.store.LobStorageBackend.getHashCacheBlock:(I)J
lstore 8
start local 8 7: lload 8
ldc -1
lcmp
ifeq 22
8: ldc "SELECT COMPRESSED, DATA FROM INFORMATION_SCHEMA.LOB_DATA WHERE BLOCK = ?"
astore 12
start local 12 9: aload 0
aload 12
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 13
start local 13 10: aload 13
iconst_1
lload 8
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
11: aload 13
invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
astore 14
start local 14 12: aload 14
invokeinterface java.sql.ResultSet.next:()Z
ifeq 21
13: aload 14
iconst_1
invokeinterface java.sql.ResultSet.getInt:(I)I
ifeq 14
iconst_1
goto 15
StackMap locals: org.h2.store.LobStorageBackend long int long byte[] java.lang.String long int int java.lang.String java.sql.PreparedStatement java.sql.ResultSet
StackMap stack:
14: iconst_0
StackMap locals:
StackMap stack: int
15: istore 15
start local 15 16: aload 14
iconst_2
invokeinterface java.sql.ResultSet.getBytes:(I)[B
astore 16
start local 16 17: iload 15
aload 7
ifnull 18
iconst_1
goto 19
StackMap locals: org.h2.store.LobStorageBackend long int long byte[] java.lang.String long int int java.lang.String java.sql.PreparedStatement java.sql.ResultSet int byte[]
StackMap stack: int
18: iconst_0
StackMap locals: org.h2.store.LobStorageBackend long int long byte[] java.lang.String long int int java.lang.String java.sql.PreparedStatement java.sql.ResultSet int byte[]
StackMap stack: int int
19: if_icmpne 21
aload 6
aload 16
invokestatic java.util.Arrays.equals:([B[B)Z
ifeq 21
20: iconst_1
istore 10
end local 16 end local 15 21: StackMap locals:
StackMap stack:
aload 0
aload 12
aload 13
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
end local 14 end local 13 end local 12 22: StackMap locals:
StackMap stack:
iload 10
ifne 34
23: aload 0
dup
getfield org.h2.store.LobStorageBackend.nextBlock:J
dup2_x1
lconst_1
ladd
putfield org.h2.store.LobStorageBackend.nextBlock:J
lstore 8
24: aload 0
iload 11
lload 8
invokevirtual org.h2.store.LobStorageBackend.setHashCacheBlock:(IJ)V
25: ldc "INSERT INTO INFORMATION_SCHEMA.LOB_DATA(BLOCK, COMPRESSED, DATA) VALUES(?, ?, ?)"
astore 12
start local 12 26: aload 0
aload 12
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 13
start local 13 27: aload 13
iconst_1
lload 8
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
28: aload 13
iconst_2
aload 7
ifnonnull 29
iconst_0
goto 30
StackMap locals: org.h2.store.LobStorageBackend long int long byte[] java.lang.String long int int java.lang.String java.sql.PreparedStatement
StackMap stack: java.sql.PreparedStatement int
29: iconst_1
StackMap locals: org.h2.store.LobStorageBackend long int long byte[] java.lang.String long int int java.lang.String java.sql.PreparedStatement
StackMap stack: java.sql.PreparedStatement int int
30: invokeinterface java.sql.PreparedStatement.setInt:(II)V
31: aload 13
iconst_3
aload 6
invokeinterface java.sql.PreparedStatement.setBytes:(I[B)V
32: aload 13
invokeinterface java.sql.PreparedStatement.execute:()Z
pop
33: aload 0
aload 12
aload 13
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
end local 13 end local 12 34: StackMap locals:
StackMap stack:
ldc "INSERT INTO INFORMATION_SCHEMA.LOB_MAP(LOB, SEQ, POS, HASH, BLOCK) VALUES(?, ?, ?, ?, ?)"
astore 12
start local 12 35: aload 0
aload 12
invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
astore 13
start local 13 36: aload 13
iconst_1
lload 1
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
37: aload 13
iconst_2
iload 3
invokeinterface java.sql.PreparedStatement.setInt:(II)V
38: aload 13
iconst_3
lload 4
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
39: aload 13
iconst_4
iload 11
i2l
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
40: aload 13
iconst_5
lload 8
invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
41: aload 13
invokeinterface java.sql.PreparedStatement.execute:()Z
pop
42: aload 0
aload 12
aload 13
invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
43: return
end local 13 end local 12 end local 11 end local 10 end local 8 end local 7 end local 6 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 44 0 this Lorg/h2/store/LobStorageBackend;
0 44 1 lobId J
0 44 3 seq I
0 44 4 pos J
0 44 6 b [B
0 44 7 compressAlgorithm Ljava/lang/String;
7 44 8 block J
1 44 10 blockExists Z
4 44 11 hash I
9 22 12 sql Ljava/lang/String;
10 22 13 prep Ljava/sql/PreparedStatement;
12 22 14 rs Ljava/sql/ResultSet;
16 21 15 compressed Z
17 21 16 compare [B
26 34 12 sql Ljava/lang/String;
27 34 13 prep Ljava/sql/PreparedStatement;
35 44 12 sql Ljava/lang/String;
36 44 13 prep Ljava/sql/PreparedStatement;
Exceptions:
throws java.sql.SQLException
MethodParameters:
Name Flags
lobId
seq
pos
b
compressAlgorithm
public org.h2.value.Value createBlob(java.io.InputStream, long);
descriptor: (Ljava/io/InputStream;J)Lorg/h2/value/Value;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual org.h2.store.LobStorageBackend.init:()V
1: aload 0
aload 1
lload 2
bipush 15
aconst_null
invokevirtual org.h2.store.LobStorageBackend.addLob:(Ljava/io/InputStream;JILorg/h2/store/CountingReaderInputStream;)Lorg/h2/value/ValueLobDb;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/store/LobStorageBackend;
0 2 1 in Ljava/io/InputStream;
0 2 2 maxLength J
MethodParameters:
Name Flags
in
maxLength
public org.h2.value.Value createClob(java.io.Reader, long);
descriptor: (Ljava/io/Reader;J)Lorg/h2/value/Value;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual org.h2.store.LobStorageBackend.init:()V
1: lload 2
ldc -1
lcmp
ifne 2
ldc 9223372036854775807
goto 3
StackMap locals:
StackMap stack:
2: lload 2
StackMap locals:
StackMap stack: long
3: lstore 4
start local 4 4: new org.h2.store.CountingReaderInputStream
dup
aload 1
lload 4
invokespecial org.h2.store.CountingReaderInputStream.<init>:(Ljava/io/Reader;J)V
astore 6
start local 6 5: aload 0
aload 6
ldc 9223372036854775807
bipush 16
aload 6
invokevirtual org.h2.store.LobStorageBackend.addLob:(Ljava/io/InputStream;JILorg/h2/store/CountingReaderInputStream;)Lorg/h2/value/ValueLobDb;
areturn
end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/h2/store/LobStorageBackend;
0 6 1 reader Ljava/io/Reader;
0 6 2 maxLength J
4 6 4 max J
5 6 6 in Lorg/h2/store/CountingReaderInputStream;
MethodParameters:
Name Flags
reader
maxLength
private static void assertNotHolds(java.lang.Object);
descriptor: (Ljava/lang/Object;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifeq 2
1: aload 0
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 lock Ljava/lang/Object;
MethodParameters:
Name Flags
lock
static void assertHoldsLock(java.lang.Object);
descriptor: (Ljava/lang/Object;)V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifne 2
1: aload 0
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 lock Ljava/lang/Object;
MethodParameters:
Name Flags
lock
}
SourceFile: "LobStorageBackend.java"
NestMembers:
org.h2.store.LobStorageBackend$LobInputStream
InnerClasses:
public LobInputStream = org.h2.store.LobStorageBackend$LobInputStream of org.h2.store.LobStorageBackend