-C Add\sthe\s".eqp\strace"\scommand\sto\sthe\sCLI\swhen\susing\sSQLITE_DEBUG,\sas\sa\nconvenient\sshorthand\sfor\s"PRAGMA\svdbe_debug=ON"\sbut\swith\sautomatic\sindentation\nfeature\sfor\sprogram\slistings\sprovided\sby\sthe\sCLI.
-D 2019-01-26T15:40:04.766
+C Roll\sback\sthe\stransaction\sif\sa\swrite\sstatement\sfails\swith\sOE_Abort\sbut\sthere\sis\sno\sopen\sstatement\stransaction.
+D 2019-01-26T16:34:08.268
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F Makefile.in 9947eae873c07ae894d4c8633b76c0a0daca7b9fd54401096a77d1a6c7b74359
F src/upsert.c 0dd81b40206841814d46942a7337786932475f085716042d0cb2fc7791bf8ca4
F src/utf.c 810fbfebe12359f10bc2a011520a6e10879ab2a163bcb26c74768eab82ea62a5
F src/util.c 82a2e3f691a3b654be872e305dab1f455e565dedf5e6a90c818c1ab307c00432
-F src/vacuum.c a9f389f41556c0ec310bc9169dc9476603c30a0a913ad92bfbc75c86886967ca
-F src/vdbe.c b7b6f965153607072917dbd81d654a268abf4872c58d556701d1549550766c02
+F src/vacuum.c c3b29ca1fad775a44689a0c1a76db364f6da8fd91bfd3ed95b3e8319224da0ac
+F src/vdbe.c e5f6b9a31b6d2c1345d9f6652c8b904c43dda8cbf1c3fd7c40d943bc5b6e9cf4
F src/vdbe.h 712bca562eaed1c25506b9faf9680bdc75fc42e2f4a1cd518d883fa79c7a4237
F src/vdbeInt.h a76d5eed62c76bcd8de7afd3147fac1bc40c5a870582664bcd7d071ef437c37f
F src/vdbeapi.c 57a2d794a8833f269b878dbc24e955369bdb379af6c4e93ebc5ce1a20fa3daf4
-F src/vdbeaux.c 158abc9c49a6870ce9c173b080faa6c3382a9b5a2d653d0a002eb20482e17cb2
+F src/vdbeaux.c 698579727cc7722a8c4c7aece21d8913b70c4bc969827cec3b263c7fe8d0a456
F src/vdbeblob.c f5c70f973ea3a9e915d1693278a5f890dc78594300cf4d54e64f2b0917c94191
F src/vdbemem.c 8d170e387c230d12250d2feaec2c1a0d9a7184753f676df10a4b28f17abfcdaf
F src/vdbesort.c 90aad5a92608f2dd771c96749beabdb562c9d881131a860a7a5bccf66dc3be7f
F src/whereInt.h 5f14db426ca46a83eabab1ae9aa6d4b8f27504ad35b64c290916289b1ddb2e88
F src/wherecode.c 89d2ec668aec884dfa7ac500c6744e42ec0590fcd72fb740a8b48326a8412811
F src/whereexpr.c 36b47f7261d6b6f1a72d774c113b74beddf6745aba1018e64b196e29db233442
-F src/window.c 1f4f7c69f23992b91c82e71fe47dd4e3ed70ceae12ce5ca6a1e757fdb158dcae
+F src/window.c c59090ba8a8530bc733b3f9e645ce7516520772a08e08c3726d4ceba5bc93765
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd
F test/affinity3.test 6a101af2fc945ce2912f6fe54dd646018551710d
F test/triggerD.test 8e7f3921a92a5797d472732108109e44575fa650
F test/triggerE.test ede2e4bce4ba802337bd69d39447fa04a938e06d84a8bfc53c76850fc36ed86d
F test/triggerF.test 5d76f0a8c428ff87a4d5ed52da06f6096a2c787a1e21b846111dfac4123de3ad
-F test/triggerG.test d5caeef6144ede2426dd13211fd72248241ff2ebc68e12a4c0bf30f5faa21499
+F test/triggerG.test 87ceb4c486240a6270fbd123c68cd21d24b99d14641a7a9c38e6916bd6ef894e
F test/tt3_checkpoint.c 9e75cf7c1c364f52e1c47fd0f14c4340a9db0fe1
F test/tt3_index.c 39eec10a35f57672225be4d182862152896dee4a
F test/tt3_lookaside1.c 0377e202c3c2a50d688cb65ba203afeda6fafeb9
F test/win32lock.test fbf107c91d8f5512be5a5b87c4c42ab9fdd54972
F test/win32longpath.test 169c75a3b2e43481f4a62122510210c67b08f26d
F test/win32nolock.test ac4f08811a562e45a5755e661f45ca85892bdbbc
-F test/window1.test 2798c8249e0f122c9bacce6aa7324765a5cd9106e49e7aacc81f6033d281577b
+F test/window1.test 8910b6d158e8b27452bdf0d3e13605c2d25dd98b7ab846d69956ad7cd230f9b1
F test/window2.tcl 9bfa842d8a62b0d36dc8c1b5972206393c43847433c6d75940b87fec93ce3143
F test/window2.test 8e6d2a1b9f54dfebee1cde961c8590cd87b4db45c50f44947a211e1b63c2a05e
F test/window3.tcl 577a3b1ff913208e5248c04dab9df17fd760ce159a752789e26d0cb4a5f91823
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 13f6942eb0da2d92a0830f18640ce64208bd0cd6ff6d0c97e4a4c57ac3d65ba6
-R 526b182186e89dc3ca0b6f304ae40eae
-U drh
-Z abb2dd0860dab724b6ef3b845cc9519b
+P 626502faa17b5b7a0fa36cabfd12e463eb09aec048d01c587a18d3977cf04662
+R 374a4a5a4902f8068a8e4fb4932d79c2
+U dan
+Z 051e3778c0a596a848823fd20b772e47
-626502faa17b5b7a0fa36cabfd12e463eb09aec048d01c587a18d3977cf04662
\ No newline at end of file
+d536be698d1c6479e09f99ac12620c900f7f57bad0842372cbfe0755e41355e9
\ No newline at end of file
}
sqlite3VdbeAddOp2(v, OP_Vacuum, iDb, iIntoReg);
sqlite3VdbeUsesBtree(v, iDb);
+ assert( pParse==pParse->pToplevel || pParse->pToplevel==0 );
+ pParse->mayAbort = pParse->isMultiWrite = 1;
}
build_vacuum_end:
sqlite3ExprDelete(pParse->db, pInto);
pcx = (int)(pOp - aOp);
#ifdef SQLITE_DEBUG
- if( pOp->p2==OE_Abort ){ sqlite3VdbeAssertAbortable(p); }
+ if( pOp->p2==OE_Abort && !pOp->p3 ){ sqlite3VdbeAssertAbortable(p); }
#endif
if( pOp->p1==SQLITE_OK && p->pFrame ){
/* Halt the sub-program. Return control to the parent frame. */
while( (pOp = opIterNext(&sIter))!=0 ){
int opcode = pOp->opcode;
if( opcode==OP_Destroy || opcode==OP_VUpdate || opcode==OP_VRename
- || opcode==OP_VDestroy
+ || opcode==OP_VDestroy || opcode==OP_Vacuum
|| ((opcode==OP_Halt || opcode==OP_HaltIfNull)
&& ((pOp->p1&0xff)==SQLITE_CONSTRAINT && pOp->p2==OE_Abort))
){
}else if( eStatementOp==0 ){
if( p->rc==SQLITE_OK || p->errorAction==OE_Fail ){
eStatementOp = SAVEPOINT_RELEASE;
- }else if( p->errorAction==OE_Abort ){
+ }else if( p->errorAction==OE_Abort
+ && (p->usesStmtJournal || p->readOnly || p->rc!=SQLITE_ERROR)
+ ){
eStatementOp = SAVEPOINT_ROLLBACK;
}else{
sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK);
VdbeCoverageNeverNullIf(v, eCond==1);
VdbeCoverageNeverNullIf(v, eCond==2);
sqlite3VdbeAddOp2(v, OP_Halt, SQLITE_ERROR, OE_Abort);
+#ifdef SQLITE_DEBUG
+ sqlite3VdbeChangeP3(v, -1, 1);
+#endif
sqlite3VdbeAppendP4(v, (void*)azErr[eCond], P4_STATIC);
sqlite3ReleaseTempReg(pParse, regZero);
}
INSERT INTO t4 VALUES(1);
} {1 {hex literal too big: 0x2147483648e0e0099}}
+#-------------------------------------------------------------------------
+
+do_execsql_test 400 {
+ CREATE TABLE x1(a, b);
+ CREATE TRIGGER x1t AFTER INSERT ON x1 BEGIN
+ SELECT abs(-9223372036854775808 + new.a);
+ END;
+ BEGIN;
+}
+
+do_catchsql_test 410 {
+ INSERT INTO x1 VALUES(2, 2), (0, 0), (1, 1);
+} {1 {integer overflow}}
+
+do_execsql_test 420 {
+ SELECT * FROM x1;
+} {}
+
+do_test 430 { sqlite3_get_autocommit db } {1}
+
finish_test
+
3 101
}
+#-------------------------------------------------------------------------
+do_execsql_test 17.0 {
+ CREATE TABLE tbl1(a,b,c,d);
+ CREATE TRIGGER r1 AFTER INSERT ON tbl1 WHEN new.a NOT NULL BEGIN
+ SELECT sum(d) OVER
+ (PARTITION BY b ORDER BY d ROWS BETWEEN 2 PRECEDING AND -2 FOLLOWING)
+ FROM tbl1;
+ END;
+}
+
+do_catchsql_test 17.1.1 {
+ INSERT INTO tbl1(a) VALUES(1);
+} {1 {frame ending offset must be a non-negative integer}}
+do_execsql_test 17.1.2 {
+ SELECT count(*) FROM tbl1;
+} 0
+
+do_catchsql_test 17.2.1 {
+ INSERT INTO tbl1(a) VALUES(NULL), (NULL), (1);
+} {1 {frame ending offset must be a non-negative integer}}
+do_execsql_test 17.2.2 {
+ SELECT count(*) FROM tbl1;
+} 0
+
+do_catchsql_test 17.3.1 {
+ BEGIN;
+ INSERT INTO tbl1(a) VALUES(NULL);
+ INSERT INTO tbl1(a) VALUES(NULL), (1);
+} {1 {frame ending offset must be a non-negative integer}}
+do_execsql_test 17.3.2 {
+ SELECT count(*) FROM tbl1;
+} 0
+do_test 17.3.3 { sqlite3_get_autocommit db } 1
finish_test