Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add a test case for the fix on this branch. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | testFixes |
Files: | files | file ages | folders |
SHA3-256: |
7834cf6c28c63f6ca0e29a508c0f6e3e |
User & Date: | dan 2018-03-20 12:12:06.326 |
Context
2018-03-20
| ||
13:26 | Fix handling of "UPDATE OR REPLACE" statements run on zipfile virtual tables. (Closed-Leaf check-in: 9a5ef341de user: dan tags: testFixes) | |
12:12 | Add a test case for the fix on this branch. (check-in: 7834cf6c28 user: dan tags: testFixes) | |
2018-03-17
| ||
02:13 | For 'zipfile', detect attempts to cause a duplicate entry via UPDATE. (check-in: cf78a88279 user: mistachkin tags: testFixes) | |
Changes
Changes to ext/misc/zipfile.c.
︙ | |||
1520 1521 1522 1523 1524 1525 1526 | 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 | - + | int nPath = 0; /* strlen(zPath) */ const u8 *pData = 0; /* Pointer to buffer containing content */ int nData = 0; /* Size of pData buffer in bytes */ int iMethod = 0; /* Compression method for new entry */ u8 *pFree = 0; /* Free this */ char *zFree = 0; /* Also free this */ ZipfileEntry *pOld = 0; |
︙ |
Changes to test/zipfile2.test.
︙ | |||
205 206 207 208 209 210 211 212 213 214 215 | 205 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 | + + + + + + + + + + + + + + + + + + + + + + + + | set hex [binary encode hex $blob] set hex [string map {6e6f7461646972 6e6f746164692f} $hex] set blob2 [binary decode hex $hex] execsql { SELECT name, data IS NULL FROM zipfile($blob2) } } {notadi/ 1} #------------------------------------------------------------------------- # Test that duplicate entries may not be created using UPDATE # statements. # forcedelete test.zip do_execsql_test 6.0 { CREATE VIRTUAL TABLE temp.zip USING zipfile('test.zip'); INSERT INTO temp.zip (name,data) VALUES ('test1','test'); INSERT INTO temp.zip (name,data) VALUES ('test2','test'); } do_catchsql_test 6.1 { UPDATE temp.zip SET name='test1' WHERE name='test2' } {1 {duplicate name: "test1"}} forcedelete test.zip do_catchsql_test 6.2 { DROP TABLE zip; CREATE VIRTUAL TABLE temp.zip USING zipfile('test.zip'); INSERT INTO temp.zip (name,data) VALUES ('test','test'); UPDATE temp.zip set name=name||'new' where name='test'; INSERT INTO temp.zip (name,data) VALUES ('test','test'); UPDATE temp.zip set name=name||'new' where name='test'; } {1 {duplicate name: "testnew"}} finish_test |