diff options
Diffstat (limited to '')
-rw-r--r-- | storage/rocksdb/mysql-test/rocksdb/r/native_procedure.result | 397 |
1 files changed, 397 insertions, 0 deletions
diff --git a/storage/rocksdb/mysql-test/rocksdb/r/native_procedure.result b/storage/rocksdb/mysql-test/rocksdb/r/native_procedure.result new file mode 100644 index 00000000..725b74e1 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/native_procedure.result @@ -0,0 +1,397 @@ +create database linkdb; +use linkdb; +create table linktable ( +id1 bigint(20) unsigned NOT NULL DEFAULT '0', +id2 bigint(20) unsigned NOT NULL DEFAULT '0', +link_type bigint(20) unsigned NOT NULL DEFAULT '0', +visibility tinyint(3) NOT NULL DEFAULT '0', +data varchar(255) NOT NULL DEFAULT '', +time bigint(20) unsigned NOT NULL DEFAULT '0', +version int(11) unsigned NOT NULL DEFAULT '0', +primary key (id1,id2,link_type) COMMENT 'cf_link_pk', +KEY id1_type (id1,link_type,visibility,time,version,data) +COMMENT 'rev:cf_link_id1_type') ENGINE=rocksdb DEFAULT COLLATE=latin1_bin; +create table counttable ( +id bigint(20) unsigned NOT NULL DEFAULT '0', +link_type bigint(20) unsigned NOT NULL DEFAULT '0', +count int(10) unsigned NOT NULL DEFAULT '0', +time bigint(20) unsigned NOT NULL DEFAULT '0', +version bigint(20) unsigned NOT NULL DEFAULT '0', +primary key (id,link_type) COMMENT 'cf_count_pk') +ENGINE=rocksdb DEFAULT COLLATE=latin1_bin; +create table nodetable ( +id bigint(20) unsigned NOT NULL AUTO_INCREMENT, +type int(10) unsigned NOT NULL, +version bigint(20) unsigned NOT NULL, +time int(10) unsigned NOT NULL, +data mediumtext NOT NULL, +primary key(id) COMMENT 'cf_node_pk') +ENGINE=rocksdb DEFAULT COLLATE=latin1_bin; +# +# Test nodeGet function +# +create native procedure nodeGet soname "NP_EXAMPLE_LIB"; +%nodeGet 1; +id type version time data +1 1 1 1000 data +%nodeGet 50 anything can go here; +id type version time data +50 1 1 50000 data +%nodeGet 39; +id type version time data +39 1 1 39000 data +%nodeGet 98; +id type version time data +98 1 1 98000 data +%nodeGet 1000; +id type version time data +%nodeGet -1; +ERROR HY000: Native procedure failed. (code: 7, msg: 'Invalid arguments: Conversion failed for field id.', query 'nodeGet -1') +%nodeGet asdf; +ERROR HY000: Native procedure failed. (code: 7, msg: 'Invalid arguments: Conversion failed for field id.', query 'nodeGet asdf') +# +# Test linkGetRange/linkGetId2s function +# +create native procedure linkGetRange soname "NP_EXAMPLE_LIB"; +create native procedure linkGetId2s soname "NP_EXAMPLE_LIB"; +%linkGetRange 1 1 1000 2000 0 1000; +id1 id2 link_type visibility data time version +1 5 1 1 data 1005 1 +1 4 1 1 data 1004 1 +1 3 1 1 data 1003 1 +1 2 1 1 data 1002 1 +1 1 1 1 data 1001 1 +%linkGetRange 1 2 1000 2000 0 1000; +id1 id2 link_type visibility data time version +%linkGetRange 1 1 5000 2000 0 1000; +id1 id2 link_type visibility data time version +%linkGetRange 1 2 1000 6000 0 5; +id1 id2 link_type visibility data time version +1 5 2 1 data 2005 1 +1 4 2 1 data 2004 1 +1 3 2 1 data 2003 1 +1 2 2 1 data 2002 1 +1 1 2 1 data 2001 1 +%linkGetRange 1 2 1000 6000 0 2; +id1 id2 link_type visibility data time version +1 5 2 1 data 2005 1 +1 4 2 1 data 2004 1 +%linkGetRange 1 2 1000 6000 2 2; +id1 id2 link_type visibility data time version +1 3 2 1 data 2003 1 +1 2 2 1 data 2002 1 +%linkGetId2s 1 3 3 1 2 3; +id1 id2 link_type visibility data time version +1 1 3 1 data 3001 1 +1 2 3 1 data 3002 1 +1 3 3 1 data 3003 1 +%linkGetId2s 1 3 3 3 2 1; +id1 id2 link_type visibility data time version +1 3 3 1 data 3003 1 +1 2 3 1 data 3002 1 +1 1 3 1 data 3001 1 +%linkGetId2s 1 3 3 3 2 10; +id1 id2 link_type visibility data time version +1 3 3 1 data 3003 1 +1 2 3 1 data 3002 1 +%linkGetId2s 1 3 3 3 2 1 asdf; +id1 id2 link_type visibility data time version +1 3 3 1 data 3003 1 +1 2 3 1 data 3002 1 +1 1 3 1 data 3001 1 +%linkGetId2s 1 3 0; +id1 id2 link_type visibility data time version +%linkGetId2s 1 3 4 2; +ERROR HY000: Incorrect arguments to native procedure. (query 'linkGetId2s 1 3 4 2') +# +# Test rangeQuery function +# +create native procedure rangeQuery soname "NP_EXAMPLE_LIB"; +%rangeQuery 1 0 0 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005; +id1 id2 link_type visibility data time version +1 1 1 1 data 1001 1 +1 2 1 1 data 1002 1 +1 3 1 1 data 1003 1 +1 4 1 1 data 1004 1 +1 5 1 1 data 1005 1 +%rangeQuery 1 0 1 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005; +id1 id2 link_type visibility data time version +1 1 1 1 data 1001 1 +1 2 1 1 data 1002 1 +1 3 1 1 data 1003 1 +1 4 1 1 data 1004 1 +%rangeQuery 1 1 0 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005; +id1 id2 link_type visibility data time version +1 2 1 1 data 1002 1 +1 3 1 1 data 1003 1 +1 4 1 1 data 1004 1 +1 5 1 1 data 1005 1 +%rangeQuery 1 1 1 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005; +id1 id2 link_type visibility data time version +1 2 1 1 data 1002 1 +1 3 1 1 data 1003 1 +1 4 1 1 data 1004 1 +%rangeQuery 0 0 0 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005; +id1 id2 link_type visibility data time version +1 5 1 1 data 1005 1 +1 4 1 1 data 1004 1 +1 3 1 1 data 1003 1 +1 2 1 1 data 1002 1 +1 1 1 1 data 1001 1 +%rangeQuery 0 0 1 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005; +id1 id2 link_type visibility data time version +1 4 1 1 data 1004 1 +1 3 1 1 data 1003 1 +1 2 1 1 data 1002 1 +1 1 1 1 data 1001 1 +%rangeQuery 0 1 0 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005; +id1 id2 link_type visibility data time version +1 5 1 1 data 1005 1 +1 4 1 1 data 1004 1 +1 3 1 1 data 1003 1 +1 2 1 1 data 1002 1 +%rangeQuery 0 1 1 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005; +id1 id2 link_type visibility data time version +1 4 1 1 data 1004 1 +1 3 1 1 data 1003 1 +1 2 1 1 data 1002 1 +%rangeQuery 1 0 0 2 id1 1 link_type 1 2 id1 1 link_type 2; +id1 id2 link_type visibility data time version +1 1 1 1 data 1001 1 +1 2 1 1 data 1002 1 +1 3 1 1 data 1003 1 +1 4 1 1 data 1004 1 +1 5 1 1 data 1005 1 +1 1 2 1 data 2001 1 +1 2 2 1 data 2002 1 +1 3 2 1 data 2003 1 +1 4 2 1 data 2004 1 +1 5 2 1 data 2005 1 +%rangeQuery 1 0 1 2 id1 1 link_type 1 2 id1 1 link_type 2; +id1 id2 link_type visibility data time version +1 1 1 1 data 1001 1 +1 2 1 1 data 1002 1 +1 3 1 1 data 1003 1 +1 4 1 1 data 1004 1 +1 5 1 1 data 1005 1 +%rangeQuery 1 1 0 2 id1 1 link_type 1 2 id1 1 link_type 2; +id1 id2 link_type visibility data time version +1 1 2 1 data 2001 1 +1 2 2 1 data 2002 1 +1 3 2 1 data 2003 1 +1 4 2 1 data 2004 1 +1 5 2 1 data 2005 1 +%rangeQuery 1 1 1 2 id1 1 link_type 1 2 id1 1 link_type 2; +id1 id2 link_type visibility data time version +%rangeQuery 0 0 0 2 id1 1 link_type 1 2 id1 1 link_type 2; +id1 id2 link_type visibility data time version +1 5 2 1 data 2005 1 +1 4 2 1 data 2004 1 +1 3 2 1 data 2003 1 +1 2 2 1 data 2002 1 +1 1 2 1 data 2001 1 +1 5 1 1 data 1005 1 +1 4 1 1 data 1004 1 +1 3 1 1 data 1003 1 +1 2 1 1 data 1002 1 +1 1 1 1 data 1001 1 +%rangeQuery 0 0 1 2 id1 1 link_type 1 2 id1 1 link_type 2; +id1 id2 link_type visibility data time version +1 5 1 1 data 1005 1 +1 4 1 1 data 1004 1 +1 3 1 1 data 1003 1 +1 2 1 1 data 1002 1 +1 1 1 1 data 1001 1 +%rangeQuery 0 1 0 2 id1 1 link_type 1 2 id1 1 link_type 2; +id1 id2 link_type visibility data time version +1 5 2 1 data 2005 1 +1 4 2 1 data 2004 1 +1 3 2 1 data 2003 1 +1 2 2 1 data 2002 1 +1 1 2 1 data 2001 1 +%rangeQuery 0 1 1 2 id1 1 link_type 1 2 id1 1 link_type 2; +id1 id2 link_type visibility data time version +%rangeQuery 0 0 0 2 id1 1 link_type 1 4 id1 1 link_type 2 visibility 1 time 2004; +id1 id2 link_type visibility data time version +1 4 2 1 data 2004 1 +1 3 2 1 data 2003 1 +1 2 2 1 data 2002 1 +1 1 2 1 data 2001 1 +1 5 1 1 data 1005 1 +1 4 1 1 data 1004 1 +1 3 1 1 data 1003 1 +1 2 1 1 data 1002 1 +1 1 1 1 data 1001 1 +%rangeQuery 0 0 1 2 id1 1 link_type 1 4 id1 1 link_type 2 visibility 1 time 2004; +id1 id2 link_type visibility data time version +1 3 2 1 data 2003 1 +1 2 2 1 data 2002 1 +1 1 2 1 data 2001 1 +1 5 1 1 data 1005 1 +1 4 1 1 data 1004 1 +1 3 1 1 data 1003 1 +1 2 1 1 data 1002 1 +1 1 1 1 data 1001 1 +%rangeQuery 0 1 0 2 id1 1 link_type 1 4 id1 1 link_type 2 visibility 1 time 2004; +id1 id2 link_type visibility data time version +1 4 2 1 data 2004 1 +1 3 2 1 data 2003 1 +1 2 2 1 data 2002 1 +1 1 2 1 data 2001 1 +%rangeQuery 0 1 1 2 id1 1 link_type 1 4 id1 1 link_type 2 visibility 1 time 2004; +id1 id2 link_type visibility data time version +1 3 2 1 data 2003 1 +1 2 2 1 data 2002 1 +1 1 2 1 data 2001 1 +# +# Test countGet function +# +create native procedure countGet soname "NP_EXAMPLE_LIB"; +%countGet 1 1; +count +2 +%countGet 10 1; +count +20 +%countGet 111 1; +count +%countGet 1 111; +count +%countGet -1 1 1; +ERROR HY000: Native procedure failed. (code: 7, msg: 'Invalid arguments: Conversion failed for field id.', query 'countGet -1 1 1') +%countGet -1 1 2; +ERROR HY000: Native procedure failed. (code: 7, msg: 'Invalid arguments: Conversion failed for field id.', query 'countGet -1 1 2') +%countGet; +ERROR HY000: Incorrect arguments to native procedure. (query 'countGet') +# +# Check that DDL locks are respected. +# +create native procedure sleepRange soname "NP_EXAMPLE_LIB"; +%sleepRange 1; +set @start_lock_wait_timeout = @@session.lock_wait_timeout; +set lock_wait_timeout = 1; +drop table counttable; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: linkdb.counttable +set lock_wait_timeout = @start_lock_wait_timeout; +count +2 +4 +6 +8 +10 +12 +14 +16 +18 +20 +# +# Check that queries can be killed. +# +%sleepRange 0; +kill query ID; +ERROR 70100: Query execution was interrupted +# +# Check that native procedures work properly with transactions. +# +use linkdb; +set session transaction isolation level repeatable read; +%countGet 1 1; +count +2 +begin; +select count from counttable where id = 1 and link_type = 1; +count +2 +%countGet 1 1; +count +2 +# Before update +%countGet 1 1; +count +2 +update counttable set count = count + 1 where id = 1 and link_type = 1; +# After update +%countGet 1 1; +count +3 +# Unchanged due to consistent reads +%countGet 1 1; +count +2 +# +# Check index reads on prefixed data. +# +alter table linktable drop index id1_type; +alter table linktable +add index id1_type (id1,link_type,visibility,time,version,data(1)) +COMMENT 'rev:cf_link_id1_type'; +%linkGetRange 1 1 1000 2000 0 1000; +id1 id2 link_type visibility data time version +1 5 1 1 data 1005 1 +1 4 1 1 data 1004 1 +1 3 1 1 data 1003 1 +1 2 1 1 data 1002 1 +1 1 1 1 data 1001 1 +# +# Check correct error handling for various scenarios. +# +create native procedure invalidKey1 soname "NP_EXAMPLE_LIB"; +%invalidKey1; +ERROR HY000: Native procedure failed. (code: 6, msg: 'Not found: ', query 'invalidKey1') +create native procedure invalidOpen1 soname "NP_EXAMPLE_LIB"; +%invalidOpen1; +ERROR HY000: Native procedure failed. (code: 5, msg: 'Cannot reinitialize: ', query 'invalidOpen1') +create native procedure invalidOpen2 soname "NP_EXAMPLE_LIB"; +%invalidOpen2; +ERROR HY000: Native procedure failed. (code: 5, msg: 'Cannot reinitialize: ', query 'invalidOpen2') +create native procedure invalidOpen3 soname "NP_EXAMPLE_LIB"; +%invalidOpen3; +ERROR HY000: Native procedure failed. (code: 5, msg: 'Cannot reinitialize: ', query 'invalidOpen3') +create native procedure invalidOpen4 soname "NP_EXAMPLE_LIB"; +%invalidOpen4; +ERROR HY000: Native procedure failed. (code: 5, msg: 'Cannot reinitialize: ', query 'invalidOpen4') +%invalidProcedure; +ERROR HY000: Unknown native procedure. 'invalidProcedure' +create native procedure invalidProcedure soname "invalid.so"; +ERROR HY000: Can't open shared library +create native procedure invalidProcedure soname "NP_EXAMPLE_LIB"; +ERROR HY000: Can't find symbol 'invalidProcedure' in library +# +# Check that our functions are reloaded after restart. +# +select * from mysql.native_proc order by name; +name type dl lua +countGet native np_example.so +invalidKey1 native np_example.so +invalidOpen1 native np_example.so +invalidOpen2 native np_example.so +invalidOpen3 native np_example.so +invalidOpen4 native np_example.so +linkGetId2s native np_example.so +linkGetRange native np_example.so +nodeGet native np_example.so +rangeQuery native np_example.so +sleepRange native np_example.so +drop native procedure nodeGet; +create native procedure nodeGet soname "NP_EXAMPLE_LIB"; +ERROR HY000: Native procedure 'nodeGet' exists. +drop native procedure linkGetRange; +drop native procedure linkGetId2s; +drop native procedure countGet; +drop native procedure sleepRange; +drop native procedure rangeQuery; +drop native procedure invalidKey1; +drop native procedure invalidOpen1; +drop native procedure invalidOpen2; +drop native procedure invalidOpen3; +drop native procedure invalidOpen4; +%nodeGet 1; +ERROR HY000: Unknown native procedure. 'nodeGet' +# +# Check that our functions are unloaded after restart. +# +select * from mysql.native_proc order by name; +name type dl lua +%nodeGet 1; +ERROR HY000: Unknown native procedure. 'nodeGet' +drop database linkdb; |