From e8893240557bd4651e00cd982066c6d899bc62c7 Mon Sep 17 00:00:00 2001 From: Aleksey Demakov <ademakov@gmail.com> Date: Tue, 17 Jan 2012 19:02:41 +0400 Subject: [PATCH] Add test for tree-index-optimization --- test/box_big/tarantool.cfg | 59 +++++++++++++++++++++++ test/box_big/tree_variants.result | 79 +++++++++++++++++++++++++++++++ test/box_big/tree_variants.test | 31 ++++++++++++ 3 files changed, 169 insertions(+) create mode 100644 test/box_big/tree_variants.result create mode 100644 test/box_big/tree_variants.test diff --git a/test/box_big/tarantool.cfg b/test/box_big/tarantool.cfg index a7f934b946..f298f2bdd0 100644 --- a/test/box_big/tarantool.cfg +++ b/test/box_big/tarantool.cfg @@ -65,3 +65,62 @@ space[5].index[1].key_field[0].fieldno = 1 space[5].index[1].key_field[0].type = "STR" space[5].index[1].key_field[1].fieldno = 2 space[5].index[1].key_field[1].type = "STR" + + +# +# Tree index variants +# +# Tuple fields: +# +# 0: NUM, 1: NUM64, 2: NUM64, 3: STR, 4: STR, 5: STR, 6: STR, 7: *, 8: NUM +# + +space[6].enabled = 1 + +space[6].index[0].type = "TREE" +space[6].index[0].unique = 1 +space[6].index[0].key_field[0].fieldno = 0 +space[6].index[0].key_field[0].type = "NUM" + +space[6].index[1].type = "TREE" +space[6].index[1].unique = 1 +space[6].index[1].key_field[0].fieldno = 1 +space[6].index[1].key_field[0].type = "NUM64" + +space[6].index[2].type = "TREE" +space[6].index[2].unique = 0 +space[6].index[2].key_field[0].fieldno = 2 +space[6].index[2].key_field[0].type = "NUM64" + +space[6].index[3].type = "TREE" +space[6].index[3].unique = 0 +space[6].index[3].key_field[0].fieldno = 3 +space[6].index[3].key_field[0].type = "STR" +space[6].index[3].key_field[1].fieldno = 4 +space[6].index[3].key_field[1].type = "STR" + +space[6].index[4].type = "TREE" +space[6].index[4].unique = 0 +space[6].index[4].key_field[0].fieldno = 6 +space[6].index[4].key_field[0].type = "STR" +space[6].index[4].key_field[1].fieldno = 5 +space[6].index[4].key_field[1].type = "STR" + +space[6].index[5].type = "TREE" +space[6].index[5].unique = 0 +space[6].index[5].key_field[0].fieldno = 8 +space[6].index[5].key_field[0].type = "NUM" + +space[6].index[6].type = "TREE" +space[6].index[6].unique = 1 +space[6].index[6].key_field[0].fieldno = 6 +space[6].index[6].key_field[0].type = "STR" +space[6].index[6].key_field[1].fieldno = 5 +space[6].index[6].key_field[1].type = "STR" +space[6].index[6].key_field[2].fieldno = 3 +space[6].index[6].key_field[2].type = "STR" +space[6].index[6].key_field[3].fieldno = 4 +space[6].index[6].key_field[3].type = "STR" +space[6].index[6].key_field[4].fieldno = 8 +space[6].index[6].key_field[4].type = "NUM" + diff --git a/test/box_big/tree_variants.result b/test/box_big/tree_variants.result new file mode 100644 index 0000000000..dcc277aced --- /dev/null +++ b/test/box_big/tree_variants.result @@ -0,0 +1,79 @@ +insert into t6 values (0, '00000000', '00000100', 'Joe', 'Sixpack', 'Drinks', 'Amstel', 'bar', 2000 ) +Insert OK, 1 row affected +insert into t6 values (1, '00000001', '00000200', 'Joe', 'Sixpack', 'Drinks', 'Heineken', 'bar', 2001 ) +Insert OK, 1 row affected +insert into t6 values (2, '00000002', '00000200', 'Joe', 'Sixpack', 'Drinks', 'Carlsberg', 'bar', 2002 ) +Insert OK, 1 row affected +insert into t6 values (3, '00000003', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Corona Extra', 'bar', 2003 ) +Insert OK, 1 row affected +insert into t6 values (4, '00000004', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Stella Artois', 'bar', 2004 ) +Insert OK, 1 row affected +insert into t6 values (5, '00000005', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Miller Genuine Draft', 'bar', 2005 ) +Insert OK, 1 row affected +insert into t6 values (6, '00000006', '00000400', 'John', 'Smoker', 'Hits', 'A Pipe', 'foo', 2006 ) +Insert OK, 1 row affected +insert into t6 values (7, '00000007', '00000400', 'John', 'Smoker', 'Hits', 'A Bong', 'foo', 2007 ) +Insert OK, 1 row affected +insert into t6 values (8, '00000008', '00000400', 'John', 'Smoker', 'Rolls', 'A Joint', 'foo', 2008 ) +Insert OK, 1 row affected +insert into t6 values (9, '00000009', '00000400', 'John', 'Smoker', 'Rolls', 'A Blunt', 'foo', 2009 ) +Insert OK, 1 row affected +select * from t6 where k0 = 1 +Found 1 tuple: +[1, '00000001', '00000200', 'Joe', 'Sixpack', 'Drinks', 'Heineken', 'bar', 2001] +select * from t6 where k1 = '00000002' +Found 1 tuple: +[2, '00000002', '00000200', 'Joe', 'Sixpack', 'Drinks', 'Carlsberg', 'bar', 2002] +select * from t6 where k2 = '00000300' +Found 3 tuples: +[3, '00000003', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Corona Extra', 'bar', 2003] +[4, '00000004', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Stella Artois', 'bar', 2004] +[5, '00000005', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Miller Genuine Draft', 'bar', 2005] +lua box.space[6]:select(3, 'Joe', 'Sixpack') +--- + - 0: {'00000000', '00000100', 'Joe', 'Sixpack', 'Drinks', 'Amstel', 'bar', 2000} + - 1: {'00000001', '00000200', 'Joe', 'Sixpack', 'Drinks', 'Heineken', 'bar', 2001} + - 2: {'00000002', '00000200', 'Joe', 'Sixpack', 'Drinks', 'Carlsberg', 'bar', 2002} + - 3: {'00000003', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Corona Extra', 'bar', 2003} + - 4: {'00000004', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Stella Artois', 'bar', 2004} + - 5: {'00000005', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Miller Genuine Draft', 'bar', 2005} +... +lua box.space[6]:select(3, 'John') +--- + - 6: {'00000006', '00000400', 1852337994, 'Smoker', 1937008968, 'A Pipe', 'foo', 2006} + - 7: {'00000007', '00000400', 1852337994, 'Smoker', 1937008968, 'A Bong', 'foo', 2007} + - 8: {'00000008', '00000400', 1852337994, 'Smoker', 'Rolls', 'A Joint', 'foo', 2008} + - 9: {'00000009', '00000400', 1852337994, 'Smoker', 'Rolls', 'A Blunt', 'foo', 2009} +... +lua box.space[6]:select(4, 'A Pipe') +--- + - 6: {'00000006', '00000400', 1852337994, 'Smoker', 1937008968, 'A Pipe', 'foo', 2006} +... +lua box.space[6]:select(4, 'Miller Genuine Draft', 'Drinks') +--- + - 5: {'00000005', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Miller Genuine Draft', 'bar', 2005} +... +select * from t6 where k5 = 2007 +Found 1 tuple: +[7, '00000007', '00000400', 1852337994, 'Smoker', 1937008968, 'A Bong', 'foo', 2007] +lua box.space[6]:select(6, 'Miller Genuine Draft', 'Drinks') +--- + - 5: {'00000005', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Miller Genuine Draft', 'bar', 2005} +... +delete from t6 where k0 = 6 +Delete OK, 1 row affected +delete from t6 where k0 = 7 +Delete OK, 1 row affected +delete from t6 where k0 = 8 +Delete OK, 1 row affected +delete from t6 where k0 = 9 +Delete OK, 1 row affected +lua for k,v in box.space[6]:pairs() do print(v) end +--- +0: {'00000000', '00000100', 'Joe', 'Sixpack', 'Drinks', 'Amstel', 'bar', 2000} +1: {'00000001', '00000200', 'Joe', 'Sixpack', 'Drinks', 'Heineken', 'bar', 2001} +2: {'00000002', '00000200', 'Joe', 'Sixpack', 'Drinks', 'Carlsberg', 'bar', 2002} +3: {'00000003', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Corona Extra', 'bar', 2003} +4: {'00000004', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Stella Artois', 'bar', 2004} +5: {'00000005', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Miller Genuine Draft', 'bar', 2005} +... diff --git a/test/box_big/tree_variants.test b/test/box_big/tree_variants.test new file mode 100644 index 0000000000..9c26aa3ac1 --- /dev/null +++ b/test/box_big/tree_variants.test @@ -0,0 +1,31 @@ +# encoding: tarantool +# + +exec sql "insert into t6 values (0, '00000000', '00000100', 'Joe', 'Sixpack', 'Drinks', 'Amstel', 'bar', 2000 )" +exec sql "insert into t6 values (1, '00000001', '00000200', 'Joe', 'Sixpack', 'Drinks', 'Heineken', 'bar', 2001 )" +exec sql "insert into t6 values (2, '00000002', '00000200', 'Joe', 'Sixpack', 'Drinks', 'Carlsberg', 'bar', 2002 )" +exec sql "insert into t6 values (3, '00000003', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Corona Extra', 'bar', 2003 )" +exec sql "insert into t6 values (4, '00000004', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Stella Artois', 'bar', 2004 )" +exec sql "insert into t6 values (5, '00000005', '00000300', 'Joe', 'Sixpack', 'Drinks', 'Miller Genuine Draft', 'bar', 2005 )" +exec sql "insert into t6 values (6, '00000006', '00000400', 'John', 'Smoker', 'Hits', 'A Pipe', 'foo', 2006 )" +exec sql "insert into t6 values (7, '00000007', '00000400', 'John', 'Smoker', 'Hits', 'A Bong', 'foo', 2007 )" +exec sql "insert into t6 values (8, '00000008', '00000400', 'John', 'Smoker', 'Rolls', 'A Joint', 'foo', 2008 )" +exec sql "insert into t6 values (9, '00000009', '00000400', 'John', 'Smoker', 'Rolls', 'A Blunt', 'foo', 2009 )" + +exec sql "select * from t6 where k0 = 1" +exec sql "select * from t6 where k1 = '00000002'" +exec sql "select * from t6 where k2 = '00000300'" +exec admin "lua box.space[6]:select(3, 'Joe', 'Sixpack')" +exec admin "lua box.space[6]:select(3, 'John')" +exec admin "lua box.space[6]:select(4, 'A Pipe')" +exec admin "lua box.space[6]:select(4, 'Miller Genuine Draft', 'Drinks')" +exec sql "select * from t6 where k5 = 2007" +exec admin "lua box.space[6]:select(6, 'Miller Genuine Draft', 'Drinks')" + +exec sql "delete from t6 where k0 = 6" +exec sql "delete from t6 where k0 = 7" +exec sql "delete from t6 where k0 = 8" +exec sql "delete from t6 where k0 = 9" + +exec admin "lua for k,v in box.space[6]:pairs() do print(v) end" + -- GitLab