Skip to content

Commit

Permalink
sql: remove support of partial indexes from parser
Browse files Browse the repository at this point in the history
Currently, Tarantool doesn't support partial indexes, so lets temporary
remove their processing from SQL parser to avoid confusing situations.
It can be returned after #1260 (implement functional indexes in
Tarantool) is done.

Closes #2165
  • Loading branch information
pansershrek authored and kyukhin committed Jul 3, 2018
1 parent b09f596 commit 38ec150
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 17 deletions.
4 changes: 2 additions & 2 deletions src/box/sql/parse.y
Original file line number Diff line number Diff line change
Expand Up @@ -1193,9 +1193,9 @@ paren_exprlist(A) ::= LP exprlist(X) RP. {A = X;}
///////////////////////////// The CREATE INDEX command ///////////////////////
//
cmd ::= createkw(S) uniqueflag(U) INDEX ifnotexists(NE) nm(X)
ON nm(Y) LP sortlist(Z) RP where_opt(W). {
ON nm(Y) LP sortlist(Z) RP. {
sql_create_index(pParse, &X, sqlite3SrcListAppend(pParse->db,0,&Y), Z, U, &S,
W, SORT_ORDER_ASC, NE, SQLITE_IDXTYPE_APPDEF);
NULL, SORT_ORDER_ASC, NE, SQLITE_IDXTYPE_APPDEF);
}

%type uniqueflag {int}
Expand Down
2 changes: 1 addition & 1 deletion test/sql-tap/analyze9.test.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1112,7 +1112,7 @@ test:do_test(
test:execsql([[
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(id INTEGER PRIMARY KEY AUTOINCREMENT, a, b, c, d);
CREATE INDEX i1 ON t1(a, b) WHERE d IS NOT NULL;
CREATE INDEX i1 ON t1(a, b);
INSERT INTO t1 VALUES(null, -1, -1, -1, NULL);
INSERT INTO t1 SELECT null, 2*a,2*b,2*c,d FROM t1;
INSERT INTO t1 SELECT null, 2*a,2*b,2*c,d FROM t1;
Expand Down
2 changes: 1 addition & 1 deletion test/sql-tap/autoindex4.test.lua
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ test:do_execsql_test(
test:do_execsql_test(
"autoindex4-3.1",
[[
CREATE INDEX Items_x1 ON Items(ItemName,Name) WHERE ItemName = 'dummy';
CREATE INDEX Items_x1 ON Items(ItemName,Name);
SELECT Items.ItemName
FROM Items
Expand Down
2 changes: 1 addition & 1 deletion test/sql-tap/fkey1.test.lua
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ test:do_execsql_test(
"fkey1-6.1",
[[
CREATE TABLE p1(id PRIMARY KEY, x, y);
CREATE UNIQUE INDEX p1x ON p1(x) WHERE y<2;
CREATE INDEX p1x ON p1(x);
INSERT INTO p1 VALUES(1, 1, 1);
CREATE TABLE c1(a PRIMARY KEY REFERENCES p1(x));
]], {
Expand Down
12 changes: 6 additions & 6 deletions test/sql-tap/index6.test.lua
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ test:do_execsql_test(
"index6-6.0",
[[
CREATE TABLE t6(a,b, PRIMARY KEY (a,b));
CREATE INDEX t6b ON t6(b) WHERE b=1;
CREATE INDEX t6b ON t6(b);
INSERT INTO t6(a,b) VALUES(123,456);
SELECT * FROM t6;
]], {
Expand Down Expand Up @@ -262,7 +262,7 @@ test:do_execsql_test(
CREATE TABLE t7a(id primary key, x);
CREATE TABLE t7b(id primary key, y);
INSERT INTO t7a VALUES(1, 1);
CREATE INDEX t7ax ON t7a(x) WHERE x=99;
CREATE INDEX t7ax ON t7a(x);
SELECT x,y FROM t7a LEFT JOIN t7b ON (x=99) ORDER BY x;
]], {
-- <index6-7.0>
Expand Down Expand Up @@ -318,7 +318,7 @@ test:do_execsql_test(
[[
CREATE TABLE t8a(id primary key, a,b);
CREATE TABLE t8b(id primary key, x,y);
CREATE INDEX i8c ON t8b(y) WHERE x = 'value';
CREATE INDEX i8c ON t8b(y);
INSERT INTO t8a VALUES(1, 1, 'one');
INSERT INTO t8a VALUES(2, 2, 'two');
Expand Down Expand Up @@ -364,7 +364,7 @@ if (0 > 0)
"index6-9.1",
[[
CREATE TABLE t9(a int, b int, c int);
CREATE INDEX t9ca ON t9(c,a) WHERE a in (10,12,20);
CREATE INDEX t9ca ON t9(c,a);
INSERT INTO t9 VALUES(1,1,9),(10,2,35),(11,15,82),(20,19,5),(NULL,7,3);
UPDATE t9 SET b=c WHERE a in (10,12,20);
SELECT a,b,c,'|' FROM t9 ORDER BY a;
Expand All @@ -379,7 +379,7 @@ test:do_execsql_test(
[[
--DROP TABLE t9;
CREATE TABLE t9(a int, b int, c int, PRIMARY KEY(a));
CREATE INDEX t9ca ON t9(c,a) WHERE a in (10,12,20);
CREATE INDEX t9ca ON t9(c,a);
INSERT INTO t9 VALUES(1,1,9),(10,2,35),(11,15,82),(20,19,5);
UPDATE t9 SET b=c WHERE a in (10,12,20);
SELECT a,b,c,'|' FROM t9 ORDER BY a;
Expand All @@ -400,7 +400,7 @@ test:do_execsql_test(
(2,3,4,5,6),
(3,4,5,6,7),
(1,2,3,8,9);
CREATE INDEX t10x ON t10(d) WHERE a=1 AND b=2 AND c=3;
CREATE INDEX t10x ON t10(d);
SELECT e FROM t10 WHERE a=1 AND b=2 AND c=3 ORDER BY d;
]], {
-- <index6-10.1>
Expand Down
14 changes: 8 additions & 6 deletions test/sql-tap/index7.test.lua
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ test:do_execsql_test(
test:do_execsql_test(
"index7-6.2",
[[
CREATE INDEX i4 ON t4(c) WHERE d='xyz';
CREATE INDEX i4 ON t4(c);
SELECT a,b,c,d FROM (SELECT a,b FROM t5 WHERE a=1 AND b='xyz'), t4 WHERE c='abc';
]], {
-- <index7-6.2>
Expand Down Expand Up @@ -291,14 +291,16 @@ test:do_eqp_test(
-- </index7-6.4>
})

-- gh-2165 Currently, Tarantool lacks support of partial indexes,
-- so temporary we removed processing of their syntax from parser.
--
test:do_catchsql_test(
"index7-6.5",
"index7-7.1",
[[
CREATE INDEX t5a ON t5(a) WHERE a=#1;
CREATE TABLE t1 (a INTEGER PRIMARY KEY, b INTEGER);
CREATE UNIQUE INDEX i ON t1 (a) WHERE a = 3;
]], {
-- <index7-6.5>
1, [[near "#1": syntax error]]
-- </index7-6.5>
1, "keyword \"WHERE\" is reserved"
})

test:finish_test()

0 comments on commit 38ec150

Please sign in to comment.