mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
Always evaluate window functions using the alternative path usually only used by EXCLUDE frames if the SQLITE_QueryFlattener test flag is set.
FossilOrigin-Name: 2879a691aca9304aea5acb46bab8e82bb2e08eb54201f3679d60bfc0e8383845
This commit is contained in:
20
manifest
20
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Fixes\sfor\sRANGE\swindows\sand\sNULL\svalues.
|
C Always\sevaluate\swindow\sfunctions\susing\sthe\salternative\spath\susually\sonly\sused\sby\sEXCLUDE\sframes\sif\sthe\sSQLITE_QueryFlattener\stest\sflag\sis\sset.
|
||||||
D 2019-03-18T16:51:24.785
|
D 2019-03-18T18:55:35.969
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F Makefile.in 236d2739dc3e823c3c909bca2d6cef93009bafbefd7018a8f3281074ecb92954
|
F Makefile.in 236d2739dc3e823c3c909bca2d6cef93009bafbefd7018a8f3281074ecb92954
|
||||||
@@ -586,7 +586,7 @@ F src/upsert.c 0dd81b40206841814d46942a7337786932475f085716042d0cb2fc7791bf8ca4
|
|||||||
F src/utf.c 810fbfebe12359f10bc2a011520a6e10879ab2a163bcb26c74768eab82ea62a5
|
F src/utf.c 810fbfebe12359f10bc2a011520a6e10879ab2a163bcb26c74768eab82ea62a5
|
||||||
F src/util.c 82a2e3f691a3b654be872e305dab1f455e565dedf5e6a90c818c1ab307c00432
|
F src/util.c 82a2e3f691a3b654be872e305dab1f455e565dedf5e6a90c818c1ab307c00432
|
||||||
F src/vacuum.c a9f389f41556c0ec310bc9169dc9476603c30a0a913ad92bfbc75c86886967ca
|
F src/vacuum.c a9f389f41556c0ec310bc9169dc9476603c30a0a913ad92bfbc75c86886967ca
|
||||||
F src/vdbe.c 1bad4337cb9931338f77b2375a894e8d61e8482c9843af9c8d2e988c34786203
|
F src/vdbe.c 26da7a980ae9ec4c3d5db8583631e6845a48d4d9dd1b31de19efc046a336884c
|
||||||
F src/vdbe.h 712bca562eaed1c25506b9faf9680bdc75fc42e2f4a1cd518d883fa79c7a4237
|
F src/vdbe.h 712bca562eaed1c25506b9faf9680bdc75fc42e2f4a1cd518d883fa79c7a4237
|
||||||
F src/vdbeInt.h a76d5eed62c76bcd8de7afd3147fac1bc40c5a870582664bcd7d071ef437c37f
|
F src/vdbeInt.h a76d5eed62c76bcd8de7afd3147fac1bc40c5a870582664bcd7d071ef437c37f
|
||||||
F src/vdbeapi.c 7a052df80d7e2e55382076174633e888f21fe200feb5d49b1b441b4c38ab851a
|
F src/vdbeapi.c 7a052df80d7e2e55382076174633e888f21fe200feb5d49b1b441b4c38ab851a
|
||||||
@@ -604,7 +604,7 @@ F src/where.c 8a207cb2ca6b99e1edb1e4bbff9b0504385a759cbf66180d1deb34d80ca4b799
|
|||||||
F src/whereInt.h 5f14db426ca46a83eabab1ae9aa6d4b8f27504ad35b64c290916289b1ddb2e88
|
F src/whereInt.h 5f14db426ca46a83eabab1ae9aa6d4b8f27504ad35b64c290916289b1ddb2e88
|
||||||
F src/wherecode.c ce7b21e1be2b981d62683fc59c4ca73a04a7ff2f1ebec23d41baf2da2349afd6
|
F src/wherecode.c ce7b21e1be2b981d62683fc59c4ca73a04a7ff2f1ebec23d41baf2da2349afd6
|
||||||
F src/whereexpr.c 90859652920f153d2c03f075488744be2926625ebd36911bcbcb17d0d29c891c
|
F src/whereexpr.c 90859652920f153d2c03f075488744be2926625ebd36911bcbcb17d0d29c891c
|
||||||
F src/window.c aa50be1fc05d03c89b64954529c8041f47cfb09e3f56f7e3f636f2f3a405e002
|
F src/window.c ff735851ee35202a3b8834923121c3c1144b6dfed44c07453135684ccb9d1541
|
||||||
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
|
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
|
||||||
F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd
|
F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd
|
||||||
F test/affinity3.test 6a101af2fc945ce2912f6fe54dd646018551710d
|
F test/affinity3.test 6a101af2fc945ce2912f6fe54dd646018551710d
|
||||||
@@ -1196,7 +1196,7 @@ F test/parser1.test 6ccdf5e459a5dc4673d3273dc311a7e9742ca952dd0551a6a6320d27035c
|
|||||||
F test/pcache.test c8acbedd3b6fd0f9a7ca887a83b11d24a007972b
|
F test/pcache.test c8acbedd3b6fd0f9a7ca887a83b11d24a007972b
|
||||||
F test/pcache2.test af7f3deb1a819f77a6d0d81534e97d1cf62cd442
|
F test/pcache2.test af7f3deb1a819f77a6d0d81534e97d1cf62cd442
|
||||||
F test/percentile.test 4243af26b8f3f4555abe166f723715a1f74c77ff
|
F test/percentile.test 4243af26b8f3f4555abe166f723715a1f74c77ff
|
||||||
F test/permutations.test 52d2c37fe8cc07ec7362024c214b04bb69432995b3a984a3fbabc60fa6ada3ee
|
F test/permutations.test b8f0da2f53ef1bd7ff149a140ee625aa7276c94ae15eb9acc2d8ed4af8f22b13
|
||||||
F test/pg_common.tcl 4740dc35190d6acdab14c097783331361301ab504a94d948f6afbb56ce0a51e8
|
F test/pg_common.tcl 4740dc35190d6acdab14c097783331361301ab504a94d948f6afbb56ce0a51e8
|
||||||
F test/pragma.test c267bf02742c823a191960895b3d52933cebd7beee26757d1ed694f213fcd867
|
F test/pragma.test c267bf02742c823a191960895b3d52933cebd7beee26757d1ed694f213fcd867
|
||||||
F test/pragma2.test e5d5c176360c321344249354c0c16aec46214c9f
|
F test/pragma2.test e5d5c176360c321344249354c0c16aec46214c9f
|
||||||
@@ -1682,7 +1682,7 @@ F test/window2.test 8e6d2a1b9f54dfebee1cde961c8590cd87b4db45c50f44947a211e1b63c2
|
|||||||
F test/window3.tcl acea6e86a4324a210fd608d06741010ca83ded9fde438341cb978c49928faf03
|
F test/window3.tcl acea6e86a4324a210fd608d06741010ca83ded9fde438341cb978c49928faf03
|
||||||
F test/window3.test f58f92026a7f51c9a4227e656cc392b4c6a7c856e03b114453937a48d1c98159
|
F test/window3.test f58f92026a7f51c9a4227e656cc392b4c6a7c856e03b114453937a48d1c98159
|
||||||
F test/window4.tcl 5fbaab489677914ee5686b2008426e336daf88a2f58be7df92757f780a5ebf91
|
F test/window4.tcl 5fbaab489677914ee5686b2008426e336daf88a2f58be7df92757f780a5ebf91
|
||||||
F test/window4.test 0e3d595705f0e74c2fd77658b388d8547f6b612c7eb4fb2ad4dd5725a62bfc12
|
F test/window4.test bf8f86586ce101bf98e2306e597fa24aadc96c58d70ba4d11f956cf8ca4e0be3
|
||||||
F test/window5.test d328dd18221217c49c144181975eea17339eaeaf0e9aa558cee3afb84652821e
|
F test/window5.test d328dd18221217c49c144181975eea17339eaeaf0e9aa558cee3afb84652821e
|
||||||
F test/window6.test 604890f2b0f976339e6a1774cd90d48840e57a54b4f21a8b4b3047aa2c9787d1
|
F test/window6.test 604890f2b0f976339e6a1774cd90d48840e57a54b4f21a8b4b3047aa2c9787d1
|
||||||
F test/window7.tcl 6a1210f05d40ec89c22960213a22cd3f98d4e2f2eb20646c83c8c30d4d76108f
|
F test/window7.tcl 6a1210f05d40ec89c22960213a22cd3f98d4e2f2eb20646c83c8c30d4d76108f
|
||||||
@@ -1691,7 +1691,7 @@ F test/window8.tcl 9755f960fb3197e741b393e00841bb9374a5d5058f12b2d056213bfb53877
|
|||||||
F test/window8.test daacb65e98c21a614bed6cf55f0bb73146e0abac99916b3ed25041aa84911767
|
F test/window8.test daacb65e98c21a614bed6cf55f0bb73146e0abac99916b3ed25041aa84911767
|
||||||
F test/windowerr.tcl 4f0b111cdbb8de401a8135cd116604fb8add13042bb47a1f1496dd47a690e864
|
F test/windowerr.tcl 4f0b111cdbb8de401a8135cd116604fb8add13042bb47a1f1496dd47a690e864
|
||||||
F test/windowerr.test 461bc504d4af0ae16a081e0c3bdb3724356cdcfb07bdc4b1b2dc4ad91b69bb7e
|
F test/windowerr.test 461bc504d4af0ae16a081e0c3bdb3724356cdcfb07bdc4b1b2dc4ad91b69bb7e
|
||||||
F test/windowfault.test 12ceb6bbb355d13e8fcd88c5731a57256dfdf77b9a7ae20842a76fcd4623df5b
|
F test/windowfault.test cb27a4d8c85982733b123af667921df3a96e23d3739b15d414de75054b334cbe
|
||||||
F test/with1.test a07b5aad7f77acdf13e52e8814ea94606fcc72e9ea4c99baf293e9d7c63940be
|
F test/with1.test a07b5aad7f77acdf13e52e8814ea94606fcc72e9ea4c99baf293e9d7c63940be
|
||||||
F test/with2.test e0030e2f0267a910d6c0e4f46f2dfe941c1cc0d4f659ba69b3597728e7e8f1ab
|
F test/with2.test e0030e2f0267a910d6c0e4f46f2dfe941c1cc0d4f659ba69b3597728e7e8f1ab
|
||||||
F test/with3.test 8d26920c88283e0a473ceebd3451554922108ce7b2a6a1157c47eb0a7011212c
|
F test/with3.test 8d26920c88283e0a473ceebd3451554922108ce7b2a6a1157c47eb0a7011212c
|
||||||
@@ -1812,7 +1812,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P cebe09e11cc91d9776f259dd9b87e9c760a460f53ba6fa36481dfe58f77ad417
|
P 723c84be3ec5ae941b7abd2442cdb76ca3bd76a5ce2d830b0e648c6e1424885a
|
||||||
R 8d2c171861aade8c47279f8542c6aefc
|
R 2e8f4bf64033471c17340b1908337f7f
|
||||||
U dan
|
U dan
|
||||||
Z b15d3ba2de246cd1586a8b207d7ccea2
|
Z e0a3f305963abba314f3600ee55e636f
|
||||||
|
@@ -1 +1 @@
|
|||||||
723c84be3ec5ae941b7abd2442cdb76ca3bd76a5ce2d830b0e648c6e1424885a
|
2879a691aca9304aea5acb46bab8e82bb2e08eb54201f3679d60bfc0e8383845
|
@@ -6540,6 +6540,7 @@ case OP_AggFinal: {
|
|||||||
assert( (pMem->flags & ~(MEM_Null|MEM_Agg))==0 );
|
assert( (pMem->flags & ~(MEM_Null|MEM_Agg))==0 );
|
||||||
#ifndef SQLITE_OMIT_WINDOWFUNC
|
#ifndef SQLITE_OMIT_WINDOWFUNC
|
||||||
if( pOp->p3 ){
|
if( pOp->p3 ){
|
||||||
|
memAboutToChange(p, &aMem[pOp->p3]);
|
||||||
rc = sqlite3VdbeMemAggValue(pMem, &aMem[pOp->p3], pOp->p4.pFunc);
|
rc = sqlite3VdbeMemAggValue(pMem, &aMem[pOp->p3], pOp->p4.pFunc);
|
||||||
pMem = &aMem[pOp->p3];
|
pMem = &aMem[pOp->p3];
|
||||||
}else
|
}else
|
||||||
|
46
src/window.c
46
src/window.c
@@ -215,14 +215,38 @@ static void nth_valueStepFunc(
|
|||||||
struct NthValueCtx *p;
|
struct NthValueCtx *p;
|
||||||
p = (struct NthValueCtx*)sqlite3_aggregate_context(pCtx, sizeof(*p));
|
p = (struct NthValueCtx*)sqlite3_aggregate_context(pCtx, sizeof(*p));
|
||||||
if( p ){
|
if( p ){
|
||||||
i64 iVal = sqlite3_value_int64(apArg[1]);
|
i64 iVal;
|
||||||
|
switch( sqlite3_value_numeric_type(apArg[1]) ){
|
||||||
|
case SQLITE_INTEGER:
|
||||||
|
iVal = sqlite3_value_int64(apArg[1]);
|
||||||
|
break;
|
||||||
|
case SQLITE_FLOAT: {
|
||||||
|
double fVal = sqlite3_value_double(apArg[1]);
|
||||||
|
if( ((i64)fVal)!=fVal ) goto error_out;
|
||||||
|
iVal = (i64)fVal;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
goto error_out;
|
||||||
|
}
|
||||||
|
if( iVal<=0 ) goto error_out;
|
||||||
|
|
||||||
p->nStep++;
|
p->nStep++;
|
||||||
if( iVal==p->nStep ){
|
if( iVal==p->nStep ){
|
||||||
p->pValue = sqlite3_value_dup(apArg[0]);
|
p->pValue = sqlite3_value_dup(apArg[0]);
|
||||||
|
if( !p->pValue ){
|
||||||
|
sqlite3_result_error_nomem(pCtx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UNUSED_PARAMETER(nArg);
|
UNUSED_PARAMETER(nArg);
|
||||||
UNUSED_PARAMETER(apArg);
|
UNUSED_PARAMETER(apArg);
|
||||||
|
return;
|
||||||
|
|
||||||
|
error_out:
|
||||||
|
sqlite3_result_error(
|
||||||
|
pCtx, "second argument to nth_value must be a positive integer", -1
|
||||||
|
);
|
||||||
}
|
}
|
||||||
static void nth_valueValueFunc(sqlite3_context *pCtx){
|
static void nth_valueValueFunc(sqlite3_context *pCtx){
|
||||||
struct NthValueCtx *p;
|
struct NthValueCtx *p;
|
||||||
@@ -251,6 +275,9 @@ static void first_valueStepFunc(
|
|||||||
p = (struct NthValueCtx*)sqlite3_aggregate_context(pCtx, sizeof(*p));
|
p = (struct NthValueCtx*)sqlite3_aggregate_context(pCtx, sizeof(*p));
|
||||||
if( p && p->pValue==0 ){
|
if( p && p->pValue==0 ){
|
||||||
p->pValue = sqlite3_value_dup(apArg[0]);
|
p->pValue = sqlite3_value_dup(apArg[0]);
|
||||||
|
if( !p->pValue ){
|
||||||
|
sqlite3_result_error_nomem(pCtx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
UNUSED_PARAMETER(nArg);
|
UNUSED_PARAMETER(nArg);
|
||||||
UNUSED_PARAMETER(apArg);
|
UNUSED_PARAMETER(apArg);
|
||||||
@@ -1072,6 +1099,9 @@ Window *sqlite3WindowAlloc(
|
|||||||
pWin->eType = eType;
|
pWin->eType = eType;
|
||||||
pWin->eStart = eStart;
|
pWin->eStart = eStart;
|
||||||
pWin->eEnd = eEnd;
|
pWin->eEnd = eEnd;
|
||||||
|
if( eExclude==0 && OptimizationDisabled(pParse->db, SQLITE_QueryFlattener) ){
|
||||||
|
eExclude = TK_NO;
|
||||||
|
}
|
||||||
pWin->eExclude = eExclude;
|
pWin->eExclude = eExclude;
|
||||||
pWin->bImplicitFrame = bImplicitFrame;
|
pWin->bImplicitFrame = bImplicitFrame;
|
||||||
pWin->pEnd = sqlite3WindowOffsetExpr(pParse, pEnd);
|
pWin->pEnd = sqlite3WindowOffsetExpr(pParse, pEnd);
|
||||||
@@ -1536,12 +1566,15 @@ static void windowFullScan(WindowCodeArg *p){
|
|||||||
addrNext = sqlite3VdbeCurrentAddr(v);
|
addrNext = sqlite3VdbeCurrentAddr(v);
|
||||||
sqlite3VdbeAddOp2(v, OP_Rowid, csr, regRowid);
|
sqlite3VdbeAddOp2(v, OP_Rowid, csr, regRowid);
|
||||||
sqlite3VdbeAddOp3(v, OP_Gt, pMWin->regEndRowid, lblBrk, regRowid);
|
sqlite3VdbeAddOp3(v, OP_Gt, pMWin->regEndRowid, lblBrk, regRowid);
|
||||||
|
|
||||||
if( pMWin->eExclude==TK_CURRENT ){
|
if( pMWin->eExclude==TK_CURRENT ){
|
||||||
sqlite3VdbeAddOp3(v, OP_Eq, regCRowid, lblNext, regRowid);
|
sqlite3VdbeAddOp3(v, OP_Eq, regCRowid, lblNext, regRowid);
|
||||||
}else if( pMWin->eExclude!=TK_NO ){
|
}else if( pMWin->eExclude!=TK_NO ){
|
||||||
int addr;
|
int addr;
|
||||||
int addrEq = 0;;
|
int addrEq = 0;
|
||||||
KeyInfo *pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pMWin->pOrderBy,0,0);
|
KeyInfo *pKeyInfo;
|
||||||
|
|
||||||
|
pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pMWin->pOrderBy, 0, 0);
|
||||||
if( pMWin->eExclude==TK_TIES ){
|
if( pMWin->eExclude==TK_TIES ){
|
||||||
addrEq = sqlite3VdbeAddOp3(v, OP_Eq, regCRowid, lblNext, regRowid);
|
addrEq = sqlite3VdbeAddOp3(v, OP_Eq, regCRowid, lblNext, regRowid);
|
||||||
}
|
}
|
||||||
@@ -1668,7 +1701,7 @@ static int windowInitAccum(Parse *pParse, Window *pMWin){
|
|||||||
FuncDef *pFunc = pWin->pFunc;
|
FuncDef *pFunc = pWin->pFunc;
|
||||||
sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum);
|
sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum);
|
||||||
nArg = MAX(nArg, windowArgCount(pWin));
|
nArg = MAX(nArg, windowArgCount(pWin));
|
||||||
if( pWin->eExclude==0 ){
|
if( pMWin->regStartRowid==0 ){
|
||||||
if( pFunc->zName==nth_valueName || pFunc->zName==first_valueName ){
|
if( pFunc->zName==nth_valueName || pFunc->zName==first_valueName ){
|
||||||
sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp);
|
sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp);
|
||||||
sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1);
|
sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1);
|
||||||
@@ -1764,7 +1797,6 @@ static void windowCodeRangeTest(
|
|||||||
int reg2 = sqlite3GetTempReg(pParse);
|
int reg2 = sqlite3GetTempReg(pParse);
|
||||||
int arith = OP_Add;
|
int arith = OP_Add;
|
||||||
int addrGe;
|
int addrGe;
|
||||||
int addrNotNull;
|
|
||||||
|
|
||||||
int regString = ++pParse->nMem;
|
int regString = ++pParse->nMem;
|
||||||
|
|
||||||
@@ -2337,6 +2369,10 @@ void sqlite3WindowCodeStep(
|
|||||||
assert( pMWin->eEnd==TK_FOLLOWING || pMWin->eEnd==TK_CURRENT
|
assert( pMWin->eEnd==TK_FOLLOWING || pMWin->eEnd==TK_CURRENT
|
||||||
|| pMWin->eEnd==TK_UNBOUNDED || pMWin->eEnd==TK_PRECEDING
|
|| pMWin->eEnd==TK_UNBOUNDED || pMWin->eEnd==TK_PRECEDING
|
||||||
);
|
);
|
||||||
|
assert( pMWin->eExclude==0 || pMWin->eExclude==TK_CURRENT
|
||||||
|
|| pMWin->eExclude==TK_GROUP || pMWin->eExclude==TK_TIES
|
||||||
|
|| pMWin->eExclude==TK_NO
|
||||||
|
);
|
||||||
|
|
||||||
lblWhereEnd = sqlite3VdbeMakeLabel(pParse);
|
lblWhereEnd = sqlite3VdbeMakeLabel(pParse);
|
||||||
|
|
||||||
|
@@ -1032,13 +1032,15 @@ test_suite "rbu" -description {
|
|||||||
test_suite "no_optimization" -description {
|
test_suite "no_optimization" -description {
|
||||||
Run test scripts with optimizations disabled using the
|
Run test scripts with optimizations disabled using the
|
||||||
sqlite3_test_control(SQLITE_TESTCTRL_OPTIMIZATIONS) interface.
|
sqlite3_test_control(SQLITE_TESTCTRL_OPTIMIZATIONS) interface.
|
||||||
} -files {
|
} -files [
|
||||||
where.test where2.test where3.test where4.test where5.test
|
test_set \
|
||||||
where6.test where7.test where8.test where9.test
|
[glob -nocomplain $::testdir/window*.test] \
|
||||||
whereA.test whereB.test wherelimit.test
|
where.test where2.test where3.test where4.test where5.test \
|
||||||
select1.test select2.test select3.test select4.test select5.test
|
where6.test where7.test where8.test where9.test \
|
||||||
select7.test select8.test selectA.test selectC.test
|
whereA.test whereB.test wherelimit.test \
|
||||||
} -dbconfig {
|
select1.test select2.test select3.test select4.test select5.test \
|
||||||
|
select7.test select8.test selectA.test selectC.test
|
||||||
|
] -dbconfig {
|
||||||
optimization_control $::dbhandle all 0
|
optimization_control $::dbhandle all 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -150,7 +150,8 @@ do_execsql_test 2.4.1 {
|
|||||||
SELECT group_concat(b, '.') OVER (
|
SELECT group_concat(b, '.') OVER (
|
||||||
ORDER BY a ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
ORDER BY a ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||||
) FROM t4
|
) FROM t4
|
||||||
} {A.B.C.D.E.F.G.H.I.J B.C.D.E.F.G.H.I.J C.D.E.F.G.H.I.J D.E.F.G.H.I.J E.F.G.H.I.J F.G.H.I.J G.H.I.J H.I.J I.J J}
|
} {A.B.C.D.E.F.G.H.I.J B.C.D.E.F.G.H.I.J C.D.E.F.G.H.I.J D.E.F.G.H.I.J
|
||||||
|
E.F.G.H.I.J F.G.H.I.J G.H.I.J H.I.J I.J J}
|
||||||
|
|
||||||
do_execsql_test 3.0 {
|
do_execsql_test 3.0 {
|
||||||
DROP TABLE IF EXISTS t5;
|
DROP TABLE IF EXISTS t5;
|
||||||
|
@@ -28,7 +28,7 @@ do_execsql_test 1.0 {
|
|||||||
}
|
}
|
||||||
faultsim_save_and_close
|
faultsim_save_and_close
|
||||||
|
|
||||||
do_faultsim_test 1 -start 1 -faults oom-* -prep {
|
do_faultsim_test 1 -start 1 -faults oom-t* -prep {
|
||||||
faultsim_restore_and_reopen
|
faultsim_restore_and_reopen
|
||||||
} -body {
|
} -body {
|
||||||
execsql {
|
execsql {
|
||||||
|
Reference in New Issue
Block a user