[patches] [PATCH] sql: remove support of partial indexes
Gleb
gleb-skiba at mail.ru
Wed Mar 14 21:56:35 MSK 2018
Issue from https://github.com/tarantool/tarantool/issues/2165.
Source from https://github.com/tarantool/tarantool/tree/gh-2165-remove-support-partial-indexes.
Remove support partial indexes, and comment tests on this.
Rewrite commit in template way.
Fixes #2165
---
src/box/sql/build.c | 11 +-
src/box/sql/parse.c | 205 +++++++++---------
src/box/sql/parse.y | 3 +-
test/sql-tap/analyze9.test.lua | 144 ++++++-------
test/sql-tap/autoindex4.test.lua | 34 +--
test/sql-tap/fkey1.test.lua | 65 +++---
test/sql-tap/index6.test.lua | 437 ++++++++++++++++++++-------------------
test/sql-tap/index7.test.lua | 81 ++++----
8 files changed, 491 insertions(+), 489 deletions(-)
diff --git a/src/box/sql/build.c b/src/box/sql/build.c
index 9ad0c06..e39fa87 100644
--- a/src/box/sql/build.c
+++ b/src/box/sql/build.c
@@ -76,7 +76,7 @@ sqlite3FinishCoding(Parse * pParse)
return;
}
- /* Begin by generating some termination code at the end of the
+ /* Begin by generating some termination code at the end of the
* vdbe program
*/
v = sqlite3GetVdbe(pParse);
@@ -1031,8 +1031,8 @@ sqlite3AddPrimaryKey(Parse * pParse, /* Parsing context */
sqlite3ErrorMsg(pParse, "AUTOINCREMENT is only allowed on an "
"INTEGER PRIMARY KEY or INT PRIMARY KEY");
} else {
- sqlite3CreateIndex(pParse, 0, 0, pList, onError, 0,
- 0, sortOrder, 0, SQLITE_IDXTYPE_PRIMARYKEY);
+ sqlite3CreateIndex(pParse, 0, 0, pList, onError, 0, 0,
+ sortOrder, 0, SQLITE_IDXTYPE_PRIMARYKEY);
pList = 0;
}
@@ -2961,12 +2961,10 @@ sqlite3CreateIndex(Parse * pParse, /* All information about this parse */
/* Tarantool have access to each column by any index */
pIndex->isCovering = 1;
if (pPIWhere) {
- sqlite3ResolveSelfReference(pParse, pTab, NC_PartIdx, pPIWhere,
- 0);
+ sqlite3ResolveSelfReference(pParse, pTab, NC_PartIdx, pPIWhere,0);
pIndex->pPartIdxWhere = pPIWhere;
pPIWhere = 0;
}
-
/* Analyze the list of expressions that form the terms of the index and
* report any errors. In the common case where the expression is exactly
* a table column, store that column in aiColumn[]. For general expressions,
@@ -3207,7 +3205,6 @@ sqlite3CreateIndex(Parse * pParse, /* All information about this parse */
exit_create_index:
if (pIndex)
freeIndex(db, pIndex);
- sqlite3ExprDelete(db, pPIWhere);
sqlite3ExprListDelete(db, pList);
sqlite3SrcListDelete(db, pTblName);
sqlite3DbFree(db, zName);
diff --git a/src/box/sql/parse.c b/src/box/sql/parse.c
index 0019b77..2364feb 100644
--- a/src/box/sql/parse.c
+++ b/src/box/sql/parse.c
@@ -203,7 +203,7 @@ static void disableLookaside(Parse *pParse){
pOut->pExpr = sqlite3PExpr(pParse, op, pOperand->pExpr, 0);
pOut->zEnd = pOperand->zEnd;
}
-#line 1263 "parse.y"
+#line 1264 "parse.y"
/* Add a single new term to an ExprList that is used to store a
** list of identifiers. Report an error if the ID list contains
@@ -1494,7 +1494,7 @@ sqlite3ExprDelete(pParse->db, (yypminor->yy162).pExpr);
case 213: /* paren_exprlist */
case 215: /* case_exprlist */
{
-#line 1261 "parse.y"
+#line 1262 "parse.y"
sqlite3ExprListDelete(pParse->db, (yypminor->yy382));
#line 1500 "parse.c"
}
@@ -1512,7 +1512,7 @@ sqlite3SrcListDelete(pParse->db, (yypminor->yy387));
case 184: /* with */
case 229: /* wqlist */
{
-#line 1510 "parse.y"
+#line 1511 "parse.y"
sqlite3WithDelete(pParse->db, (yypminor->yy151));
#line 1518 "parse.c"
}
@@ -1541,14 +1541,14 @@ sqlite3IdListDelete(pParse->db, (yypminor->yy40));
case 221: /* trigger_cmd_list */
case 226: /* trigger_cmd */
{
-#line 1384 "parse.y"
+#line 1385 "parse.y"
sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy427));
#line 1547 "parse.c"
}
break;
case 223: /* trigger_event */
{
-#line 1370 "parse.y"
+#line 1371 "parse.y"
sqlite3IdListDelete(pParse->db, (yypminor->yy10).b);
#line 1554 "parse.c"
}
@@ -3405,219 +3405,220 @@ static void yy_reduce(
case 201: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm ON nm LP sortlist RP where_opt */
#line 1239 "parse.y"
{
- sqlite3CreateIndex(pParse, &yymsp[-6].minor.yy0,
+ assert(yymsp[0].minor.yy362 == NULL);
+ sqlite3CreateIndex(pParse, &yymsp[-6].minor.yy0,
sqlite3SrcListAppend(pParse->db,0,&yymsp[-4].minor.yy0), yymsp[-2].minor.yy382, yymsp[-9].minor.yy52,
&yymsp[-10].minor.yy0, yymsp[0].minor.yy362, SQLITE_SO_ASC, yymsp[-7].minor.yy52, SQLITE_IDXTYPE_APPDEF);
}
-#line 3413 "parse.c"
+#line 3414 "parse.c"
break;
case 202: /* uniqueflag ::= UNIQUE */
case 243: /* raisetype ::= ABORT */ yytestcase(yyruleno==243);
-#line 1246 "parse.y"
+#line 1247 "parse.y"
{yymsp[0].minor.yy52 = ON_CONFLICT_ACTION_ABORT;}
-#line 3419 "parse.c"
+#line 3420 "parse.c"
break;
case 203: /* uniqueflag ::= */
-#line 1247 "parse.y"
+#line 1248 "parse.y"
{yymsp[1].minor.yy52 = ON_CONFLICT_ACTION_NONE;}
-#line 3424 "parse.c"
+#line 3425 "parse.c"
break;
case 206: /* eidlist ::= eidlist COMMA nm collate sortorder */
-#line 1290 "parse.y"
+#line 1291 "parse.y"
{
yymsp[-4].minor.yy382 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy382, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy52, yymsp[0].minor.yy52);
}
-#line 3431 "parse.c"
+#line 3432 "parse.c"
break;
case 207: /* eidlist ::= nm collate sortorder */
-#line 1293 "parse.y"
+#line 1294 "parse.y"
{
yymsp[-2].minor.yy382 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy52, yymsp[0].minor.yy52); /*A-overwrites-Y*/
}
-#line 3438 "parse.c"
+#line 3439 "parse.c"
break;
case 210: /* cmd ::= DROP INDEX ifexists fullname ON nm */
-#line 1304 "parse.y"
+#line 1305 "parse.y"
{
sqlite3DropIndex(pParse, yymsp[-2].minor.yy387, &yymsp[0].minor.yy0, yymsp[-3].minor.yy52);
}
-#line 3445 "parse.c"
+#line 3446 "parse.c"
break;
case 211: /* cmd ::= PRAGMA nm */
-#line 1311 "parse.y"
+#line 1312 "parse.y"
{
sqlite3Pragma(pParse,&yymsp[0].minor.yy0,0,0,0,0);
}
-#line 3452 "parse.c"
+#line 3453 "parse.c"
break;
case 212: /* cmd ::= PRAGMA nm EQ nmnum */
-#line 1314 "parse.y"
+#line 1315 "parse.y"
{
sqlite3Pragma(pParse,&yymsp[-2].minor.yy0,0,&yymsp[0].minor.yy0,0,0);
}
-#line 3459 "parse.c"
+#line 3460 "parse.c"
break;
case 213: /* cmd ::= PRAGMA nm LP nmnum RP */
-#line 1317 "parse.y"
+#line 1318 "parse.y"
{
sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,0,&yymsp[-1].minor.yy0,0,0);
}
-#line 3466 "parse.c"
+#line 3467 "parse.c"
break;
case 214: /* cmd ::= PRAGMA nm EQ minus_num */
-#line 1320 "parse.y"
+#line 1321 "parse.y"
{
sqlite3Pragma(pParse,&yymsp[-2].minor.yy0,0,&yymsp[0].minor.yy0,0,1);
}
-#line 3473 "parse.c"
+#line 3474 "parse.c"
break;
case 215: /* cmd ::= PRAGMA nm LP minus_num RP */
-#line 1323 "parse.y"
+#line 1324 "parse.y"
{
sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,0,&yymsp[-1].minor.yy0,0,1);
}
-#line 3480 "parse.c"
+#line 3481 "parse.c"
break;
case 216: /* cmd ::= PRAGMA nm EQ nm DOT nm */
-#line 1326 "parse.y"
+#line 1327 "parse.y"
{
sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0,0);
}
-#line 3487 "parse.c"
+#line 3488 "parse.c"
break;
case 217: /* cmd ::= PRAGMA */
-#line 1329 "parse.y"
+#line 1330 "parse.y"
{
sqlite3Pragma(pParse, 0,0,0,0,0);
}
-#line 3494 "parse.c"
+#line 3495 "parse.c"
break;
case 220: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
-#line 1349 "parse.y"
+#line 1350 "parse.y"
{
Token all;
all.z = yymsp[-3].minor.yy0.z;
all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy427, &all);
}
-#line 3504 "parse.c"
+#line 3505 "parse.c"
break;
case 221: /* trigger_decl ::= TRIGGER ifnotexists nm trigger_time trigger_event ON fullname foreach_clause when_clause */
-#line 1358 "parse.y"
+#line 1359 "parse.y"
{
sqlite3BeginTrigger(pParse, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy52, yymsp[-4].minor.yy10.a, yymsp[-4].minor.yy10.b, yymsp[-2].minor.yy387, yymsp[0].minor.yy362, yymsp[-7].minor.yy52);
yymsp[-8].minor.yy0 = yymsp[-6].minor.yy0; /*yymsp[-8].minor.yy0-overwrites-T*/
}
-#line 3512 "parse.c"
+#line 3513 "parse.c"
break;
case 222: /* trigger_time ::= BEFORE */
-#line 1364 "parse.y"
+#line 1365 "parse.y"
{ yymsp[0].minor.yy52 = TK_BEFORE; }
-#line 3517 "parse.c"
+#line 3518 "parse.c"
break;
case 223: /* trigger_time ::= AFTER */
-#line 1365 "parse.y"
+#line 1366 "parse.y"
{ yymsp[0].minor.yy52 = TK_AFTER; }
-#line 3522 "parse.c"
+#line 3523 "parse.c"
break;
case 224: /* trigger_time ::= INSTEAD OF */
-#line 1366 "parse.y"
+#line 1367 "parse.y"
{ yymsp[-1].minor.yy52 = TK_INSTEAD;}
-#line 3527 "parse.c"
+#line 3528 "parse.c"
break;
case 225: /* trigger_time ::= */
-#line 1367 "parse.y"
+#line 1368 "parse.y"
{ yymsp[1].minor.yy52 = TK_BEFORE; }
-#line 3532 "parse.c"
+#line 3533 "parse.c"
break;
case 226: /* trigger_event ::= DELETE|INSERT */
case 227: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==227);
-#line 1371 "parse.y"
+#line 1372 "parse.y"
{yymsp[0].minor.yy10.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy10.b = 0;}
-#line 3538 "parse.c"
+#line 3539 "parse.c"
break;
case 228: /* trigger_event ::= UPDATE OF idlist */
-#line 1373 "parse.y"
+#line 1374 "parse.y"
{yymsp[-2].minor.yy10.a = TK_UPDATE; yymsp[-2].minor.yy10.b = yymsp[0].minor.yy40;}
-#line 3543 "parse.c"
+#line 3544 "parse.c"
break;
case 229: /* when_clause ::= */
-#line 1380 "parse.y"
+#line 1381 "parse.y"
{ yymsp[1].minor.yy362 = 0; }
-#line 3548 "parse.c"
+#line 3549 "parse.c"
break;
case 230: /* when_clause ::= WHEN expr */
-#line 1381 "parse.y"
+#line 1382 "parse.y"
{ yymsp[-1].minor.yy362 = yymsp[0].minor.yy162.pExpr; }
-#line 3553 "parse.c"
+#line 3554 "parse.c"
break;
case 231: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
-#line 1385 "parse.y"
+#line 1386 "parse.y"
{
assert( yymsp[-2].minor.yy427!=0 );
yymsp[-2].minor.yy427->pLast->pNext = yymsp[-1].minor.yy427;
yymsp[-2].minor.yy427->pLast = yymsp[-1].minor.yy427;
}
-#line 3562 "parse.c"
+#line 3563 "parse.c"
break;
case 232: /* trigger_cmd_list ::= trigger_cmd SEMI */
-#line 1390 "parse.y"
+#line 1391 "parse.y"
{
assert( yymsp[-1].minor.yy427!=0 );
yymsp[-1].minor.yy427->pLast = yymsp[-1].minor.yy427;
}
-#line 3570 "parse.c"
+#line 3571 "parse.c"
break;
case 233: /* trnm ::= nm DOT nm */
-#line 1401 "parse.y"
+#line 1402 "parse.y"
{
yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
sqlite3ErrorMsg(pParse,
"qualified table names are not allowed on INSERT, UPDATE, and DELETE "
"statements within triggers");
}
-#line 3580 "parse.c"
+#line 3581 "parse.c"
break;
case 234: /* tridxby ::= INDEXED BY nm */
-#line 1413 "parse.y"
+#line 1414 "parse.y"
{
sqlite3ErrorMsg(pParse,
"the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
"within triggers");
}
-#line 3589 "parse.c"
+#line 3590 "parse.c"
break;
case 235: /* tridxby ::= NOT INDEXED */
-#line 1418 "parse.y"
+#line 1419 "parse.y"
{
sqlite3ErrorMsg(pParse,
"the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
"within triggers");
}
-#line 3598 "parse.c"
+#line 3599 "parse.c"
break;
case 236: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt */
-#line 1431 "parse.y"
+#line 1432 "parse.y"
{yymsp[-6].minor.yy427 = sqlite3TriggerUpdateStep(pParse->db, &yymsp[-4].minor.yy0, yymsp[-1].minor.yy382, yymsp[0].minor.yy362, yymsp[-5].minor.yy52);}
-#line 3603 "parse.c"
+#line 3604 "parse.c"
break;
case 237: /* trigger_cmd ::= insert_cmd INTO trnm idlist_opt select */
-#line 1435 "parse.y"
+#line 1436 "parse.y"
{yymsp[-4].minor.yy427 = sqlite3TriggerInsertStep(pParse->db, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy40, yymsp[0].minor.yy279, yymsp[-4].minor.yy52);/*A-overwrites-R*/}
-#line 3608 "parse.c"
+#line 3609 "parse.c"
break;
case 238: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt */
-#line 1439 "parse.y"
+#line 1440 "parse.y"
{yymsp[-4].minor.yy427 = sqlite3TriggerDeleteStep(pParse->db, &yymsp[-2].minor.yy0, yymsp[0].minor.yy362);}
-#line 3613 "parse.c"
+#line 3614 "parse.c"
break;
case 239: /* trigger_cmd ::= select */
-#line 1443 "parse.y"
+#line 1444 "parse.y"
{yymsp[0].minor.yy427 = sqlite3TriggerSelectStep(pParse->db, yymsp[0].minor.yy279); /*A-overwrites-X*/}
-#line 3618 "parse.c"
+#line 3619 "parse.c"
break;
case 240: /* expr ::= RAISE LP IGNORE RP */
-#line 1446 "parse.y"
+#line 1447 "parse.y"
{
spanSet(&yymsp[-3].minor.yy162,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/
yymsp[-3].minor.yy162.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
@@ -3625,10 +3626,10 @@ static void yy_reduce(
yymsp[-3].minor.yy162.pExpr->affinity = ON_CONFLICT_ACTION_IGNORE;
}
}
-#line 3629 "parse.c"
+#line 3630 "parse.c"
break;
case 241: /* expr ::= RAISE LP raisetype COMMA STRING RP */
-#line 1453 "parse.y"
+#line 1454 "parse.y"
{
spanSet(&yymsp[-5].minor.yy162,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/
yymsp[-5].minor.yy162.pExpr = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
@@ -3636,85 +3637,85 @@ static void yy_reduce(
yymsp[-5].minor.yy162.pExpr->affinity = (char)yymsp[-3].minor.yy52;
}
}
-#line 3640 "parse.c"
+#line 3641 "parse.c"
break;
case 242: /* raisetype ::= ROLLBACK */
-#line 1463 "parse.y"
+#line 1464 "parse.y"
{yymsp[0].minor.yy52 = ON_CONFLICT_ACTION_ROLLBACK;}
-#line 3645 "parse.c"
+#line 3646 "parse.c"
break;
case 244: /* raisetype ::= FAIL */
-#line 1465 "parse.y"
+#line 1466 "parse.y"
{yymsp[0].minor.yy52 = ON_CONFLICT_ACTION_FAIL;}
-#line 3650 "parse.c"
+#line 3651 "parse.c"
break;
case 245: /* cmd ::= DROP TRIGGER ifexists fullname */
-#line 1470 "parse.y"
+#line 1471 "parse.y"
{
sqlite3DropTrigger(pParse,yymsp[0].minor.yy387,yymsp[-1].minor.yy52);
}
-#line 3657 "parse.c"
+#line 3658 "parse.c"
break;
case 246: /* cmd ::= REINDEX */
-#line 1477 "parse.y"
+#line 1478 "parse.y"
{sqlite3Reindex(pParse, 0, 0);}
-#line 3662 "parse.c"
+#line 3663 "parse.c"
break;
case 247: /* cmd ::= REINDEX nm */
-#line 1478 "parse.y"
+#line 1479 "parse.y"
{sqlite3Reindex(pParse, &yymsp[0].minor.yy0, 0);}
-#line 3667 "parse.c"
+#line 3668 "parse.c"
break;
case 248: /* cmd ::= REINDEX nm ON nm */
-#line 1479 "parse.y"
+#line 1480 "parse.y"
{sqlite3Reindex(pParse, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);}
-#line 3672 "parse.c"
+#line 3673 "parse.c"
break;
case 249: /* cmd ::= ANALYZE */
-#line 1484 "parse.y"
+#line 1485 "parse.y"
{sqlite3Analyze(pParse, 0);}
-#line 3677 "parse.c"
+#line 3678 "parse.c"
break;
case 250: /* cmd ::= ANALYZE nm */
-#line 1485 "parse.y"
+#line 1486 "parse.y"
{sqlite3Analyze(pParse, &yymsp[0].minor.yy0);}
-#line 3682 "parse.c"
+#line 3683 "parse.c"
break;
case 251: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
-#line 1490 "parse.y"
+#line 1491 "parse.y"
{
sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy387,&yymsp[0].minor.yy0);
}
-#line 3689 "parse.c"
+#line 3690 "parse.c"
break;
case 252: /* with ::= */
-#line 1513 "parse.y"
+#line 1514 "parse.y"
{yymsp[1].minor.yy151 = 0;}
-#line 3694 "parse.c"
+#line 3695 "parse.c"
break;
case 253: /* with ::= WITH wqlist */
-#line 1515 "parse.y"
+#line 1516 "parse.y"
{ yymsp[-1].minor.yy151 = yymsp[0].minor.yy151; }
-#line 3699 "parse.c"
+#line 3700 "parse.c"
break;
case 254: /* with ::= WITH RECURSIVE wqlist */
-#line 1516 "parse.y"
+#line 1517 "parse.y"
{ yymsp[-2].minor.yy151 = yymsp[0].minor.yy151; }
-#line 3704 "parse.c"
+#line 3705 "parse.c"
break;
case 255: /* wqlist ::= nm eidlist_opt AS LP select RP */
-#line 1518 "parse.y"
+#line 1519 "parse.y"
{
yymsp[-5].minor.yy151 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy382, yymsp[-1].minor.yy279); /*A-overwrites-X*/
}
-#line 3711 "parse.c"
+#line 3712 "parse.c"
break;
case 256: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
-#line 1521 "parse.y"
+#line 1522 "parse.y"
{
yymsp[-7].minor.yy151 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy151, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy382, yymsp[-1].minor.yy279);
}
-#line 3718 "parse.c"
+#line 3719 "parse.c"
break;
default:
/* (257) input ::= ecmd */ yytestcase(yyruleno==257);
@@ -3825,7 +3826,7 @@ static void yy_syntax_error(
} else {
sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &TOKEN);
}
-#line 3829 "parse.c"
+#line 3830 "parse.c"
/************ End %syntax_error code ******************************************/
sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
}
diff --git a/src/box/sql/parse.y b/src/box/sql/parse.y
index 914fc53..c14622f 100644
--- a/src/box/sql/parse.y
+++ b/src/box/sql/parse.y
@@ -1237,7 +1237,8 @@ paren_exprlist(A) ::= LP exprlist(X) RP. {A = X;}
//
cmd ::= createkw(S) uniqueflag(U) INDEX ifnotexists(NE) nm(X)
ON nm(Y) LP sortlist(Z) RP where_opt(W). {
- sqlite3CreateIndex(pParse, &X,
+ assert(W == NULL);
+ sqlite3CreateIndex(pParse, &X,
sqlite3SrcListAppend(pParse->db,0,&Y), Z, U,
&S, W, SQLITE_SO_ASC, NE, SQLITE_IDXTYPE_APPDEF);
}
diff --git a/test/sql-tap/analyze9.test.lua b/test/sql-tap/analyze9.test.lua
index 4ce575e..472bad7 100755
--- a/test/sql-tap/analyze9.test.lua
+++ b/test/sql-tap/analyze9.test.lua
@@ -1,6 +1,6 @@
#!/usr/bin/env tarantool
test = require("sqltester")
-test:plan(124)
+test:plan(118)
testprefix = "analyze9"
@@ -1105,82 +1105,82 @@ test:do_execsql_test(
---------------------------------------------------------------------------
-- Test that stat4 data may be used with partial indexes.
--
-test:do_test(
- 17.1,
- function()
- 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;
- 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;
- 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;
- 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;
- ]])
- local b = 0
- for i = 0, 31 do
- if (i < 8) then
- b = 0
- else
- b = i
- end
- test:execsql(string.format(" INSERT INTO t1 VALUES(null, %s%%2, %s, %s/2, 'abc') ", i, b, i))
- end
- return test:execsql("ANALYZE")
- end, {
- -- <17.1>
- -- </17.1>
- })
+--test:do_test(
+-- 17.1,
+-- function()
+-- 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;
+-- 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;
+-- 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;
+-- 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;
+-- ]])
+-- local b = 0
+-- for i = 0, 31 do
+-- if (i < 8) then
+-- b = 0
+-- else
+-- b = i
+-- end
+-- test:execsql(string.format(" INSERT INTO t1 VALUES(null, %s%%2, %s, %s/2, 'abc') ", i, b, i))
+-- end
+-- return test:execsql("ANALYZE")
+-- end, {
+-- -- <17.1>
+-- -- </17.1>
+-- })
-test:do_execsql_test(
- 17.2,
- [[
- EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE d IS NOT NULL AND a=0 AND b=10 AND c=10;
- ]], {
- -- <17.2>
- 0, 0, 0, 'SEARCH TABLE T1 USING COVERING INDEX I1 (A=? AND B=?)'
- -- </17.2>
- })
+--test:do_execsql_test(
+-- 17.2,
+-- [[
+-- EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE d IS NOT NULL AND a=0 AND b=10 AND c=10;
+-- ]], {
+-- -- <17.2>
+-- 0, 0, 0, 'SEARCH TABLE T1 USING COVERING INDEX I1 (A=? AND B=?)'
+-- -- </17.2>
+-- })
-test:do_execsql_test(
- 17.3,
- [[
- EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE d IS NOT NULL AND a=0 AND b=0 AND c=10;
- ]], {
- -- <17.3>
- 0, 0, 0, "SEARCH TABLE T1 USING COVERING INDEX I1 (A=? AND B=?)"
- -- </17.3>
- })
+--test:do_execsql_test(
+-- 17.3,
+-- [[
+-- EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE d IS NOT NULL AND a=0 AND b=0 AND c=10;
+-- ]], {
+-- -- <17.3>
+-- 0, 0, 0, "SEARCH TABLE T1 USING COVERING INDEX I1 (A=? AND B=?)"
+-- -- </17.3>
+-- })
-test:do_execsql_test(
- 17.4,
- [[
- CREATE INDEX i2 ON t1(c, d);
- ANALYZE;
- ]])
+--test:do_execsql_test(
+-- 17.4,
+-- [[
+-- CREATE INDEX i2 ON t1(c, d);
+-- ANALYZE;
+-- ]])
-test:do_execsql_test(
- 17.5,
- [[
- EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE d IS NOT NULL AND a=0 AND b=10 AND c=10;
- ]], {
- -- <17.5>
- 0, 0, 0, "SEARCH TABLE T1 USING COVERING INDEX I2 (C=? AND D>?)"
- -- </17.5>
- })
+--test:do_execsql_test(
+-- 17.5,
+-- [[
+-- EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE d IS NOT NULL AND a=0 AND b=10 AND c=10;
+-- ]], {
+-- -- <17.5>
+-- 0, 0, 0, "SEARCH TABLE T1 USING COVERING INDEX I2 (C=? AND D>?)"
+-- -- </17.5>
+-- })
-test:do_execsql_test(
- 17.6,
- [[
- EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE d IS NOT NULL AND a=0 AND b=0 AND c=10;
- ]], {
- -- <17.6>
- 0, 0, 0, "SEARCH TABLE T1 USING COVERING INDEX I2 (C=? AND D>?)"
- -- </17.6>
- })
+--test:do_execsql_test(
+-- 17.6,
+-- [[
+-- EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE d IS NOT NULL AND a=0 AND b=0 AND c=10;
+-- ]], {
+-- -- <17.6>
+-- 0, 0, 0, "SEARCH TABLE T1 USING COVERING INDEX I2 (C=? AND D>?)"
+-- -- </17.6>
+-- })
---------------------------------------------------------------------------
diff --git a/test/sql-tap/autoindex4.test.lua b/test/sql-tap/autoindex4.test.lua
index 45bae48..874aad7 100755
--- a/test/sql-tap/autoindex4.test.lua
+++ b/test/sql-tap/autoindex4.test.lua
@@ -1,6 +1,6 @@
#!/usr/bin/env tarantool
test = require("sqltester")
-test:plan(7)
+test:plan(6)
--!./tcltestrunner.lua
-- 2014-10-24
@@ -108,22 +108,22 @@ test:do_execsql_test(
-- </autoindex4-3.0>
})
-test:do_execsql_test(
- "autoindex4-3.1",
- [[
- CREATE INDEX Items_x1 ON Items(ItemName,Name) WHERE ItemName = 'dummy';
-
- SELECT Items.ItemName
- FROM Items
- LEFT JOIN A ON (A.Name = Items.ItemName and Items.ItemName = 'dummy')
- LEFT JOIN B ON (B.Name = Items.ItemName)
- WHERE Items.Name = 'Parent'
- ORDER BY Items.ItemName;
- ]], {
- -- <autoindex4-3.1>
- "Item1", "Item2"
- -- </autoindex4-3.1>
- })
+--test:do_execsql_test(
+-- "autoindex4-3.1",
+-- [[
+-- CREATE INDEX Items_x1 ON Items(ItemName,Name) WHERE ItemName = 'dummy';
+--
+-- SELECT Items.ItemName
+-- FROM Items
+-- LEFT JOIN A ON (A.Name = Items.ItemName and Items.ItemName = 'dummy')
+-- LEFT JOIN B ON (B.Name = Items.ItemName)
+-- WHERE Items.Name = 'Parent'
+-- ORDER BY Items.ItemName;
+-- ]], {
+-- -- <autoindex4-3.1>
+-- "Item1", "Item2"
+-- -- </autoindex4-3.1>
+-- })
test:finish_test()
diff --git a/test/sql-tap/fkey1.test.lua b/test/sql-tap/fkey1.test.lua
index 8749e1f..7c36efe 100755
--- a/test/sql-tap/fkey1.test.lua
+++ b/test/sql-tap/fkey1.test.lua
@@ -1,6 +1,7 @@
#!/usr/bin/env tarantool
test = require("sqltester")
-test:plan(19)
+test:plan(16)
+
-- This file implements regression tests for foreign keys.
@@ -208,36 +209,36 @@ test:do_execsql_test(
-- </fkey1-5.6>
})
-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;
- INSERT INTO p1 VALUES(1, 1, 1);
- CREATE TABLE c1(a PRIMARY KEY REFERENCES p1(x));
- ]], {
- -- <fkey1-6.1>
- -- </fkey1-6.1>
- })
-
-test:do_catchsql_test(
- "fkey1-6.2",
- [[
- INSERT INTO c1 VALUES(1);
- ]], {
- -- <fkey1-6.2>
- 1, "foreign key mismatch - \"C1\" referencing \"P1\""
- -- </fkey1-6.2>
- })
-
-test:do_execsql_test(
- "fkey1-6.3",
- [[
- CREATE UNIQUE INDEX p1x2 ON p1(x);
- INSERT INTO c1 VALUES(1);
- ]], {
- -- <fkey1-6.3>
- -- </fkey1-6.3>
- })
+--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;
+-- INSERT INTO p1 VALUES(1, 1, 1);
+-- CREATE TABLE c1(a PRIMARY KEY REFERENCES p1(x));
+-- ]], {
+-- -- <fkey1-6.1>
+-- -- </fkey1-6.1>
+-- })
+
+--test:do_catchsql_test(
+-- "fkey1-6.2",
+-- [[
+-- INSERT INTO c1 VALUES(1);
+-- ]], {
+-- -- <fkey1-6.2>
+-- 1, "foreign key mismatch - \"C1\" referencing \"P1\""
+-- -- </fkey1-6.2>
+-- })
+
+--test:do_execsql_test(
+-- "fkey1-6.3",
+-- [[
+-- CREATE UNIQUE INDEX p1x2 ON p1(x);
+-- INSERT INTO c1 VALUES(1);
+-- ]], {
+-- -- <fkey1-6.3>
+-- -- </fkey1-6.3>
+-- })
test:finish_test()
diff --git a/test/sql-tap/index6.test.lua b/test/sql-tap/index6.test.lua
index 2aa97e8..d2edc56 100755
--- a/test/sql-tap/index6.test.lua
+++ b/test/sql-tap/index6.test.lua
@@ -1,6 +1,7 @@
#!/usr/bin/env tarantool
test = require("sqltester")
-test:plan(14)
+test:plan(0)
+
--!./tcltestrunner.lua
-- 2013-07-31
@@ -220,34 +221,34 @@ test:plan(14)
-- 2014-04-13: Partial index causes assertion fault on UPDATE OR REPLACE.
--
-- MUST_WORK_TEST #2311 partial index
-if 0>0 then
-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;
- INSERT INTO t6(a,b) VALUES(123,456);
- SELECT * FROM t6;
- ]], {
- -- <index6-6.0>
- 123, 456
- -- </index6-6.0>
- })
-else
- test:execsql("CREATE TABLE t6(a,b, PRIMARY KEY (a,b));")
- test:execsql("INSERT INTO t6(a,b) VALUES(123,456);")
-end
+--if 0>0 then
+--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;
+-- INSERT INTO t6(a,b) VALUES(123,456);
+-- SELECT * FROM t6;
+-- ]], {
+-- -- <index6-6.0>
+-- 123, 456
+-- -- </index6-6.0>
+-- })
+--else
+-- test:execsql("CREATE TABLE t6(a,b, PRIMARY KEY (a,b));")
+-- test:execsql("INSERT INTO t6(a,b) VALUES(123,456);")
+--end
-test:do_execsql_test(
- "index6-6.1",
- [[
- UPDATE OR REPLACE t6 SET b=789;
- SELECT * FROM t6;
- ]], {
- -- <index6-6.1>
- 123, 789
- -- </index6-6.1>
- })
+--test:do_execsql_test(
+-- "index6-6.1",
+-- [[
+-- UPDATE OR REPLACE t6 SET b=789;
+-- SELECT * FROM t6;
+-- ]], {
+-- -- <index6-6.1>
+-- 123, 789
+-- -- </index6-6.1>
+-- })
-- do_execsql_test index6-6.2 {
-- } {ok}
@@ -256,212 +257,212 @@ test:do_execsql_test(
-- the ON clause of a LEFT JOIN was causing incorrect results for all
-- versions of SQLite 3.8.0 through 3.8.8.
--
-test:do_execsql_test(
- "index6-7.0",
- [[
- 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;
- SELECT x,y FROM t7a LEFT JOIN t7b ON (x=99) ORDER BY x;
- ]], {
- -- <index6-7.0>
- 1, ""
- -- </index6-7.0>
- })
-
-test:do_execsql_test(
- "index6-7.1",
- [[
- INSERT INTO t7b VALUES(1, 2);
- SELECT x,y FROM t7a JOIN t7b ON (x=99) ORDER BY x;
- ]], {
- -- <index6-7.1>
-
- -- </index6-7.1>
- })
+--test:do_execsql_test(
+-- "index6-7.0",
+-- [[
+-- 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;
+-- SELECT x,y FROM t7a LEFT JOIN t7b ON (x=99) ORDER BY x;
+-- ]], {
+-- -- <index6-7.0>
+-- 1, ""
+-- -- </index6-7.0>
+-- })
-test:do_execsql_test(
- "index6-7.2",
- [[
- INSERT INTO t7a VALUES(2, 99);
- SELECT x,y FROM t7a LEFT JOIN t7b ON (x=99) ORDER BY x;
- ]], {
- -- <index6-7.2>
- 1, "", 99, 2
- -- </index6-7.2>
- })
-
-test:do_execsql_test(
- "index6-7.3",
- [[
- SELECT x,y FROM t7a JOIN t7b ON (x=99) ORDER BY x;
- ]], {
- -- <index6-7.3>
- 99, 2
- -- </index6-7.3>
- })
+--test:do_execsql_test(
+-- "index6-7.1",
+-- [[
+-- INSERT INTO t7b VALUES(1, 2);
+-- SELECT x,y FROM t7a JOIN t7b ON (x=99) ORDER BY x;
+-- ]], {
+-- -- <index6-7.1>
+--
+-- -- </index6-7.1>
+-- })
-test:do_execsql_test(
- "index6-7.4",
- [[
- EXPLAIN QUERY PLAN
- SELECT x,y FROM t7a JOIN t7b ON (x=99) ORDER BY x;
- ]], {
- -- <index6-7.4>
- "/USING COVERING INDEX T7AX/"
- -- </index6-7.4>
- })
+--test:do_execsql_test(
+-- "index6-7.2",
+-- [[
+-- INSERT INTO t7a VALUES(2, 99);
+-- SELECT x,y FROM t7a LEFT JOIN t7b ON (x=99) ORDER BY x;
+-- ]], {
+-- -- <index6-7.2>
+-- 1, "", 99, 2
+-- -- </index6-7.2>
+-- })
-test:do_execsql_test(
- "index6-8.0",
- [[
- 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';
+--test:do_execsql_test(
+-- "index6-7.3",
+-- [[
+-- SELECT x,y FROM t7a JOIN t7b ON (x=99) ORDER BY x;
+-- ]], {
+-- -- <index6-7.3>
+-- 99, 2
+-- -- </index6-7.3>
+-- })
- INSERT INTO t8a VALUES(1, 1, 'one');
- INSERT INTO t8a VALUES(2, 2, 'two');
- INSERT INTO t8a VALUES(3, 3, 'three');
+--test:do_execsql_test(
+-- "index6-7.4",
+-- [[
+-- EXPLAIN QUERY PLAN
+-- SELECT x,y FROM t7a JOIN t7b ON (x=99) ORDER BY x;
+-- ]], {
+-- -- <index6-7.4>
+-- "/USING COVERING INDEX T7AX/"
+-- -- </index6-7.4>
+-- })
- INSERT INTO t8b VALUES(1, 'value', 1);
- INSERT INTO t8b VALUES(2, 'dummy', 2);
- INSERT INTO t8b VALUES(3, 'value', 3);
- INSERT INTO t8b VALUES(4, 'dummy', 4);
- ]], {
- -- <index6-8.0>
-
- -- </index6-8.0>
- })
+--test:do_execsql_test(
+-- "index6-8.0",
+-- [[
+-- 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';
+--
+-- INSERT INTO t8a VALUES(1, 1, 'one');
+-- INSERT INTO t8a VALUES(2, 2, 'two');
+-- INSERT INTO t8a VALUES(3, 3, 'three');
+--
+-- INSERT INTO t8b VALUES(1, 'value', 1);
+-- INSERT INTO t8b VALUES(2, 'dummy', 2);
+-- INSERT INTO t8b VALUES(3, 'value', 3);
+-- INSERT INTO t8b VALUES(4, 'dummy', 4);
+-- ]], {
+-- -- <index6-8.0>
+--
+-- -- </index6-8.0>
+-- })
-test:do_eqp_test(
- "index6-8.1",
- [[
- SELECT * FROM t8a LEFT JOIN t8b ON (x = 'value' AND y = a)
- ]], {
- -- <index6-8.1>
- {0, 0, 0, "SCAN TABLE T8A"},
- {0, 1, 1, "SEARCH TABLE T8B USING COVERING INDEX I8C (Y=?)"}
- -- </index6-8.1>
- })
+--test:do_eqp_test(
+-- "index6-8.1",
+-- [[
+-- SELECT * FROM t8a LEFT JOIN t8b ON (x = 'value' AND y = a)
+-- ]], {
+-- -- <index6-8.1>
+-- {0, 0, 0, "SCAN TABLE T8A"},
+-- {0, 1, 1, "SEARCH TABLE T8B USING COVERING INDEX I8C (Y=?)"}
+-- -- </index6-8.1>
+-- })
-test:do_execsql_test(
- "index6-8.2",
- [[
- SELECT a,b,x,y FROM t8a LEFT JOIN t8b ON (x = 'value' AND y = a)
- ]], {
- -- <index6-8.2>
- 1, "one", "value", 1, 2, "two", "", "", 3, "three", "value", 3
- -- </index6-8.2>
- })
+--test:do_execsql_test(
+-- "index6-8.2",
+-- [[
+-- SELECT a,b,x,y FROM t8a LEFT JOIN t8b ON (x = 'value' AND y = a)
+-- ]], {
+-- -- <index6-8.2>
+-- 1, "one", "value", 1, 2, "two", "", "", 3, "three", "value", 3
+-- -- </index6-8.2>
+-- })
-- MUST_WORK_TEST
-if (0 > 0)
- then
- -- 2015-06-11. Assertion fault found by AFL
- --
- test:do_execsql_test(
- "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);
- 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;
- ]], {
- -- <index6-9.1>
- "", 7, 3, "|", 1, 1, 9, "|", 10, 35, 35, "|", 11, 15, 82, "|", 20, 5, 5, "|"
- -- </index6-9.1>
- })
+--if (0 > 0)
+-- then
+-- -- 2015-06-11. Assertion fault found by AFL
+-- --
+-- test:do_execsql_test(
+-- "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);
+-- 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;
+-- ]], {
+-- -- <index6-9.1>
+-- "", 7, 3, "|", 1, 1, 9, "|", 10, 35, 35, "|", 11, 15, 82, "|", 20, 5, 5, "|"
+-- -- </index6-9.1>
+-- })
-test:do_execsql_test(
- "index6-9.2",
- [[
- --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);
- 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;
- ]], {
- -- <index6-9.2>
- 1, 1, 9, "|", 10, 35, 35, "|", 11, 15, 82, "|", 20, 5, 5, "|"
- -- </index6-9.2>
- })
-end
+--test:do_execsql_test(
+-- "index6-9.2",
+-- [[
+-- --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);
+-- 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;
+-- ]], {
+-- -- <index6-9.2>
+-- 1, 1, 9, "|", 10, 35, 35, "|", 11, 15, 82, "|", 20, 5, 5, "|"
+-- -- </index6-9.2>
+-- })
+--end
-- AND-connected terms in the WHERE clause of a partial index
--
-test:do_execsql_test(
- "index6-10.1",
- [[
- CREATE TABLE t10(a,b,c,d,e INTEGER PRIMARY KEY);
- INSERT INTO t10 VALUES
- (1,2,3,4,5),
- (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;
- SELECT e FROM t10 WHERE a=1 AND b=2 AND c=3 ORDER BY d;
- ]], {
- -- <index6-10.1>
- 5, 9
- -- </index6-10.1>
- })
+--test:do_execsql_test(
+-- "index6-10.1",
+-- [[
+-- CREATE TABLE t10(a,b,c,d,e INTEGER PRIMARY KEY);
+-- INSERT INTO t10 VALUES
+-- (1,2,3,4,5),
+-- (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;
+-- SELECT e FROM t10 WHERE a=1 AND b=2 AND c=3 ORDER BY d;
+-- ]], {
+-- -- <index6-10.1>
+-- 5, 9
+-- -- </index6-10.1>
+-- })
-test:do_execsql_test(
- "index6-10.1eqp",
- [[
- EXPLAIN QUERY PLAN
- SELECT e FROM t10 WHERE a=1 AND b=2 AND c=3 ORDER BY d;
- ]], {
- -- <index6-10.1eqp>
- "/USING COVERING INDEX T10X/"
- -- </index6-10.1eqp>
- })
+--test:do_execsql_test(
+-- "index6-10.1eqp",
+-- [[
+-- EXPLAIN QUERY PLAN
+-- SELECT e FROM t10 WHERE a=1 AND b=2 AND c=3 ORDER BY d;
+-- ]], {
+-- -- <index6-10.1eqp>
+-- "/USING COVERING INDEX T10X/"
+-- -- </index6-10.1eqp>
+-- })
-test:do_execsql_test(
- "index6-10.2",
- [[
- SELECT e FROM t10 WHERE c=3 AND 2=b AND a=1 ORDER BY d DESC;
- ]], {
- -- <index6-10.2>
- 9, 5
- -- </index6-10.2>
- })
+--test:do_execsql_test(
+-- "index6-10.2",
+-- [[
+-- SELECT e FROM t10 WHERE c=3 AND 2=b AND a=1 ORDER BY d DESC;
+-- ]], {
+-- -- <index6-10.2>
+-- 9, 5
+-- -- </index6-10.2>
+-- })
-test:do_execsql_test(
- "index6-10.2eqp",
- [[
- EXPLAIN QUERY PLAN
- SELECT e FROM t10 WHERE c=3 AND 2=b AND a=1 ORDER BY d DESC;
- ]], {
- -- <index6-10.2eqp>
- "/USING COVERING INDEX T10X/"
- -- </index6-10.2eqp>
- })
+--test:do_execsql_test(
+-- "index6-10.2eqp",
+-- [[
+-- EXPLAIN QUERY PLAN
+-- SELECT e FROM t10 WHERE c=3 AND 2=b AND a=1 ORDER BY d DESC;
+-- ]], {
+-- -- <index6-10.2eqp>
+-- "/USING COVERING INDEX T10X/"
+-- -- </index6-10.2eqp>
+-- })
-test:do_execsql_test(
- "index6-10.3",
- [[
- SELECT e FROM t10 WHERE a=1 AND b=2 ORDER BY d DESC;
- ]], {
- -- <index6-10.3>
- 9, 5
- -- </index6-10.3>
- })
+--test:do_execsql_test(
+-- "index6-10.3",
+-- [[
+-- SELECT e FROM t10 WHERE a=1 AND b=2 ORDER BY d DESC;
+-- ]], {
+-- -- <index6-10.3>
+-- 9, 5
+-- -- </index6-10.3>
+-- })
-- MUST_WORK_TEST why did plan change?
-if 0>0 then
-test:do_execsql_test(
- "index6-10.3eqp",
- [[
- EXPLAIN QUERY PLAN
- SELECT e FROM t10 WHERE a=1 AND b=2 ORDER BY d DESC;
- ]], {
- -- <index6-10.3eqp>
- "~/USING", "INDEX", "t10x/"
- -- </index6-10.3eqp>
- })
-end
-
+--if 0>0 then
+--test:do_execsql_test(
+-- "index6-10.3eqp",
+-- [[
+-- EXPLAIN QUERY PLAN
+-- SELECT e FROM t10 WHERE a=1 AND b=2 ORDER BY d DESC;
+-- ]], {
+-- -- <index6-10.3eqp>
+-- "~/USING", "INDEX", "t10x/"
+-- -- </index6-10.3eqp>
+-- })
+--end
+--garbej test
test:finish_test()
diff --git a/test/sql-tap/index7.test.lua b/test/sql-tap/index7.test.lua
index c8f56eb..97ac194 100755
--- a/test/sql-tap/index7.test.lua
+++ b/test/sql-tap/index7.test.lua
@@ -1,6 +1,7 @@
#!/usr/bin/env tarantool
test = require("sqltester")
-test:plan(5)
+test:plan(1)
+
--!./tcltestrunner.lua
-- 2013-11-04
@@ -258,47 +259,47 @@ test:do_execsql_test(
-- </index7-6.1>
})
-test:do_execsql_test(
- "index7-6.2",
- [[
- CREATE INDEX i4 ON t4(c) WHERE d='xyz';
- SELECT a,b,c,d FROM (SELECT a,b FROM t5 WHERE a=1 AND b='xyz'), t4 WHERE c='abc';
- ]], {
- -- <index7-6.2>
- 1, "xyz", "abc", "not xyz"
- -- </index7-6.2>
- })
+--test:do_execsql_test(
+-- "index7-6.2",
+-- [[
+-- CREATE INDEX i4 ON t4(c) WHERE d='xyz';
+-- SELECT a,b,c,d FROM (SELECT a,b FROM t5 WHERE a=1 AND b='xyz'), t4 WHERE c='abc';
+-- ]], {
+-- -- <index7-6.2>
+-- 1, "xyz", "abc", "not xyz"
+-- -- </index7-6.2>
+-- })
-test:do_execsql_test(
- "index7-6.3",
- [[
- CREATE VIEW v4 AS SELECT c,d FROM t4;
- INSERT INTO t4 VALUES(2, 'def', 'xyz');
- SELECT * FROM v4 WHERE d='xyz' AND c='def'
- ]], {
- -- <index7-6.3>
- "def", "xyz"
- -- </index7-6.3>
- })
+--test:do_execsql_test(
+-- "index7-6.3",
+-- [[
+-- CREATE VIEW v4 AS SELECT c,d FROM t4;
+-- INSERT INTO t4 VALUES(2, 'def', 'xyz');
+-- SELECT * FROM v4 WHERE d='xyz' AND c='def'
+-- ]], {
+-- -- <index7-6.3>
+-- "def", "xyz"
+-- -- </index7-6.3>
+-- })
-test:do_eqp_test(
- "index7-6.4",
- [[
- SELECT * FROM v4 WHERE d='xyz' AND c='def'
- ]], {
- -- <index7-6.4>
- {0, 0, 0, "SEARCH TABLE T4 USING COVERING INDEX I4 (C=?)"}
- -- </index7-6.4>
- })
+--test:do_eqp_test(
+-- "index7-6.4",
+-- [[
+-- SELECT * FROM v4 WHERE d='xyz' AND c='def'
+-- ]], {
+-- -- <index7-6.4>
+-- {0, 0, 0, "SEARCH TABLE T4 USING COVERING INDEX I4 (C=?)"}
+-- -- </index7-6.4>
+-- })
-test:do_catchsql_test(
- "index7-6.5",
- [[
- CREATE INDEX t5a ON t5(a) WHERE a=#1;
- ]], {
- -- <index7-6.5>
- 1, [[near "#1": syntax error]]
- -- </index7-6.5>
- })
+--test:do_catchsql_test(
+-- "index7-6.5",
+-- [[
+-- CREATE INDEX t5a ON t5(a) WHERE a=#1;
+-- ]], {
+-- -- <index7-6.5>
+-- 1, [[near "#1": syntax error]]
+-- -- </index7-6.5>
+-- })
test:finish_test()
--
2.7.4
More information about the Tarantool-patches
mailing list