⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rowlockiso.out

📁 derby database source code.good for you.
💻 OUT
📖 第 1 页 / 共 3 页
字号:
ij> -- Very basic single user testing of row locking, verify that the right locks-- are obtained for simple operations.  This test only looks at table and-- row logical locks, it does not verify physical latches or lock ordering.-- The basic methodology is:--    start transaction--    simple operation--    print lock table which should match the master--    end transation-- run resource 'createTestProcedures.subsql';ij> CREATE FUNCTION  PADSTRING (DATA VARCHAR(32000), LENGTH INTEGER) RETURNS VARCHAR(32000) EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Formatters.padString' LANGUAGE JAVA PARAMETER STYLE JAVA;0 rows inserted/updated/deletedij> CREATE PROCEDURE WAIT_FOR_POST_COMMIT() DYNAMIC RESULT SETS 0 LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_Access.waitForPostCommitToFinish' PARAMETER STYLE JAVA;0 rows inserted/updated/deletedij> run  resource 'LockTableQuery.subsql';ij> create view lock_table asselect     cast(username as char(8)) as username,    cast(t.type as char(8)) as trantype,    cast(l.type as char(8)) as type,    cast(lockcount as char(3)) as cnt,    mode,    cast(tablename as char(12)) as tabname,    cast(lockname as char(10)) as lockname,    state,    statusfrom     new org.apache.derby.diag.LockTable() l  right outer join new org.apache.derby.diag.TransactionTable() ton l.xid = t.xid where l.tableType <> 'S' and t.type='UserTransaction';0 rows inserted/updated/deletedij> --on l.xid = t.xid where l.tableType <> 'S' or l.tableType is null-- order by--     tabname, type desc, mode, cnt, lockname-- lock table with system catalog locks included.create view full_lock_table asselect     cast(username as char(8)) as username,    cast(t.type as char(8)) as trantype,    cast(l.type as char(8)) as type,    cast(lockcount as char(3)) as cnt,    mode,    cast(tablename as char(12)) as tabname,    cast(lockname as char(10)) as lockname,    state,    statusfrom     new org.apache.derby.diag.LockTable() l right outer join new org.apache.derby.diag.TransactionTable() ton l.xid = t.xid where l.tableType <> 'S' ;0 rows inserted/updated/deletedij> -- lock table with no join.create view lock_table2 asselect     cast(l.xid as char(8)) as xid,    cast(l.type as char(8)) as type,    cast(lockcount as char(3)) as cnt,    mode,    cast(tablename as char(12)) as tabname,    cast(lockname as char(10)) as lockname,    statefrom     new org.apache.derby.diag.LockTable() l  where l.tableType <> 'S' ;0 rows inserted/updated/deletedij> -- transaction table with no join.create view tran_table asselect     *from     new org.apache.derby.diag.TransactionTable() t ;0 rows inserted/updated/deletedij> autocommit off;ij> CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize', '4096');0 rows inserted/updated/deletedij> create table a (a int, b int, c varchar(1900)) ;0 rows inserted/updated/deletedij> commit;ij> set isolation read committed;0 rows inserted/updated/deletedij> commit;ij> ---------------------------------------------------------------------------------- Test select from empty heap table--------------------------------------------------------------------------------select a, b from a;A          |B          -----------------------ij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------ij> commit;ij> ---------------------------------------------------------------------------------- Test select from one row heap table--------------------------------------------------------------------------------insert into a values (1, -1, PADSTRING('one',1900));1 row inserted/updated/deletedij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------APP     |UserTran|TABLE   |1   |IX  |A           |Tablelock |GRANT|ACTIVE  APP     |UserTran|ROW     |1   |X   |A           |(1,7)     |GRANT|ACTIVE  ij> commit;ij> select a, b from a;A          |B          -----------------------1          |-1         ij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------ij> commit;ij> ---------------------------------------------------------------------------------- Test select from two row heap table - this will release one row lock as it-- moves to the next one.--------------------------------------------------------------------------------insert into a values (2, -2, PADSTRING('two',1900));1 row inserted/updated/deletedij> commit;ij> select a,b from a;A          |B          -----------------------1          |-1         2          |-2         ij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------ij> commit;ij> ---------------------------------------------------------------------------------- Test select from three row heap table (multiple pages) - this will release -- one row lock as it moves to the next one.--------------------------------------------------------------------------------insert into a values (3, -3, PADSTRING('two',1900));1 row inserted/updated/deletedij> insert into a values (4, -4, PADSTRING('two',1900));1 row inserted/updated/deletedij> insert into a values (5, -5, PADSTRING('two',1900));1 row inserted/updated/deletedij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------APP     |UserTran|TABLE   |3   |IX  |A           |Tablelock |GRANT|ACTIVE  APP     |UserTran|ROW     |1   |X   |A           |(2,6)     |GRANT|ACTIVE  APP     |UserTran|ROW     |1   |X   |A           |(2,7)     |GRANT|ACTIVE  APP     |UserTran|ROW     |1   |X   |A           |(3,6)     |GRANT|ACTIVE  ij> commit;ij> delete from a where a.a = 3;1 row inserted/updated/deletedij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------APP     |UserTran|TABLE   |2   |IX  |A           |Tablelock |GRANT|ACTIVE  APP     |UserTran|ROW     |1   |X   |A           |(2,6)     |GRANT|ACTIVE  ij> commit;ij> select a,b from a;A          |B          -----------------------1          |-1         2          |-2         4          |-4         5          |-5         ij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------ij> commit;ij> ---------------------------------------------------------------------------------- Test full read cursor scan over all the rows in the heap, no group fetch.--------------------------------------------------------------------------------CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.language.bulkFetchDefault','1');0 rows inserted/updated/deletedij> -- RESOLVE: missing row locks-- WORKAROUND: creating an index and dropping it -- to force the query 'select a, b from a' to be recompiledcreate index ix1 on a(a);0 rows inserted/updated/deletedij> drop index ix1;0 rows inserted/updated/deletedij> commit;ij> get cursor scan_cursor as    'select a, b from a';ij> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.language.bulkFetchDefault', '16');0 rows inserted/updated/deletedij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------APP     |UserTran|TABLE   |1   |IS  |A           |Tablelock |GRANT|ACTIVE  ij> next scan_cursor;A          |B          -----------------------1          |-1         ij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------APP     |UserTran|TABLE   |1   |IS  |A           |Tablelock |GRANT|ACTIVE  APP     |UserTran|ROW     |1   |S   |A           |(1,7)     |GRANT|ACTIVE  ij> next scan_cursor;A          |B          -----------------------2          |-2         ij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------APP     |UserTran|TABLE   |1   |IS  |A           |Tablelock |GRANT|ACTIVE  APP     |UserTran|ROW     |1   |S   |A           |(1,8)     |GRANT|ACTIVE  ij> next scan_cursor;A          |B          -----------------------4          |-4         ij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------APP     |UserTran|TABLE   |1   |IS  |A           |Tablelock |GRANT|ACTIVE  APP     |UserTran|ROW     |1   |S   |A           |(2,7)     |GRANT|ACTIVE  ij> next scan_cursor;A          |B          -----------------------5          |-5         ij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------APP     |UserTran|TABLE   |1   |IS  |A           |Tablelock |GRANT|ACTIVE  APP     |UserTran|ROW     |1   |S   |A           |(3,6)     |GRANT|ACTIVE  ij> next scan_cursor;No current rowij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------APP     |UserTran|TABLE   |1   |IS  |A           |Tablelock |GRANT|ACTIVE  ij> close scan_cursor;ij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------ij> commit;ij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  ---------------------------------------------------------------------------ij> CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.language.bulkFetchDefault','16');0 rows inserted/updated/deletedij> ---------------------------------------------------------------------------------- Test full cursor scan over all the rows in the heap, with 2 row group fetch.--------------------------------------------------------------------------------CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.language.bulkFetchDefault','2');0 rows inserted/updated/deletedij> -- RESOLVE: missing row locks-- WORKAROUND: creating an index and dropping it -- to force the query 'select a, b from a' to be recompiledcreate index ix1 on a(a);0 rows inserted/updated/deletedij> drop index ix1;0 rows inserted/updated/deletedij> commit;ij> get cursor scan_cursor as    'select a, b from a';

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -