Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a problem introduced by [77948b5eceab92a7] causing duplicate calls to be made to the xSavepoint() method of virtual tables under some circumstances. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
e64a4173d2899acf13b73e6e28f2e164 |
User & Date: | dan 2016-08-02 11:29:16.818 |
Context
2016-08-02
| ||
13:26 | Updates to requirements marks. No changes to code. (check-in: b23c10ac8f user: drh tags: trunk) | |
11:29 | Fix a problem introduced by [77948b5eceab92a7] causing duplicate calls to be made to the xSavepoint() method of virtual tables under some circumstances. (check-in: e64a4173d2 user: dan tags: trunk) | |
08:45 | Fix harmless compiler warnings in sqlite3_status(). (check-in: 7c38a79cdd user: drh tags: trunk) | |
Changes
Changes to src/vtab.c.
︙ | ︙ | |||
943 944 945 946 947 948 949 | ** sqlite3.aVTrans[] array. */ rc = growVTrans(db); if( rc==SQLITE_OK ){ rc = pModule->xBegin(pVTab->pVtab); if( rc==SQLITE_OK ){ int iSvpt = db->nStatement + db->nSavepoint; addToVTrans(db, pVTab); | | > > > | 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 | ** sqlite3.aVTrans[] array. */ rc = growVTrans(db); if( rc==SQLITE_OK ){ rc = pModule->xBegin(pVTab->pVtab); if( rc==SQLITE_OK ){ int iSvpt = db->nStatement + db->nSavepoint; addToVTrans(db, pVTab); if( iSvpt && pModule->xSavepoint ){ pVTab->iSavepoint = iSvpt; rc = pModule->xSavepoint(pVTab->pVtab, iSvpt-1); } } } } return rc; } /* |
︙ | ︙ |
Changes to test/fts3conf.test.
︙ | ︙ | |||
206 207 208 209 210 211 212 213 214 | ROLLBACK TO abc; COMMIT; } do_execsql_test 4.2.2 { SELECT * FROM t01 WHERE t01 MATCH 'b'; INSERT INTO t01(t01) VALUES('integrity-check'); } {} finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 | ROLLBACK TO abc; COMMIT; } do_execsql_test 4.2.2 { SELECT * FROM t01 WHERE t01 MATCH 'b'; INSERT INTO t01(t01) VALUES('integrity-check'); } {} do_execsql_test 4.3.1 { CREATE VIRTUAL TABLE t02 USING fts4; INSERT INTO t01 VALUES('1 1 1'); INSERT INTO t02 VALUES('2 2 2'); BEGIN; SAVEPOINT abc; INSERT INTO t01 VALUES('a b c'); INSERT INTO t02 VALUES('a b c'); ROLLBACK TO abc; COMMIT; } do_execsql_test 4.3.2 { SELECT * FROM t01 WHERE t01 MATCH 'b'; INSERT INTO t01(t01) VALUES('integrity-check'); } {} do_execsql_test 4.4.1 { CREATE TABLE A(ID INTEGER PRIMARY KEY, AnotherID INTEGER, Notes TEXT); CREATE VIRTUAL TABLE AFTS USING FTS4 (Notes); CREATE TRIGGER A_DeleteTrigger AFTER DELETE ON A FOR EACH ROW BEGIN DELETE FROM AFTS WHERE rowid=OLD.ID; END; CREATE TABLE B(ID INTEGER PRIMARY KEY,Notes TEXT); CREATE VIRTUAL TABLE BFTS USING FTS3 (Notes); CREATE TRIGGER B_DeleteTrigger AFTER DELETE ON B FOR EACH ROW BEGIN DELETE FROM BFTS WHERE rowid=OLD.ID; END; } do_execsql_test 4.4.2 { BEGIN TRANSACTION; DELETE FROM A WHERE AnotherID=1; DELETE FROM B WHERE ID=1; COMMIT; } finish_test |