Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Return SQLITE_CONSTRAINT if a user attempts to update a zipfile table. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
64c9ccf6c5598a68135e78dad128ec07 |
User & Date: | dan 2018-01-09 20:44:04.801 |
Context
2018-01-09
| ||
20:49 | Fix harmless compiler warnings. (check-in: 0fb42090cb user: mistachkin tags: trunk) | |
20:44 | Return SQLITE_CONSTRAINT if a user attempts to update a zipfile table. (check-in: 64c9ccf6c5 user: dan tags: trunk) | |
20:34 | In the os_unix.c implementation of xOpen(), do not return SQLITE_READONLY_DIRECTORY in cases where the file cannot be opened for reasons other than a readonly directory, such as the process running out of file descriptors. (check-in: fa8b80bb96 user: dan tags: trunk) | |
Changes
Changes to ext/misc/zipfile.c.
︙ | ︙ | |||
1217 1218 1219 1220 1221 1222 1223 | int mNull; assert( pTab->zFile ); assert( pTab->pWriteFd ); if( sqlite3_value_type(apVal[0])!=SQLITE_NULL ){ | > > > | | | | | | | | | > | 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 | int mNull; assert( pTab->zFile ); assert( pTab->pWriteFd ); if( sqlite3_value_type(apVal[0])!=SQLITE_NULL ){ if( nVal>1 ){ return SQLITE_CONSTRAINT; }else{ i64 iDelete = sqlite3_value_int64(apVal[0]); ZipfileEntry *p; for(p=pTab->pFirstEntry; p; p=p->pNext){ if( p->iRowid==iDelete ){ p->bDeleted = 1; break; } } return SQLITE_OK; } } mNull = (sqlite3_value_type(apVal[5])==SQLITE_NULL ? 0x0 : 0x8) /* sz */ + (sqlite3_value_type(apVal[6])==SQLITE_NULL ? 0x0 : 0x4) /* rawdata */ + (sqlite3_value_type(apVal[7])==SQLITE_NULL ? 0x0 : 0x2) /* data */ + (sqlite3_value_type(apVal[8])==SQLITE_NULL ? 0x0 : 0x1); /* method */ if( mNull==0x00 ){ |
︙ | ︙ |
Changes to test/zipfile.test.
︙ | ︙ | |||
98 99 100 101 102 103 104 105 106 107 108 | SELECT name, mode, data FROM zzz; } { dirname 16877 {} dirname2 16877 {} dirname2/file1.txt 33188 abcdefghijklmnop } finish_test | > > > > > > > > > > | 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | SELECT name, mode, data FROM zzz; } { dirname 16877 {} dirname2 16877 {} dirname2/file1.txt 33188 abcdefghijklmnop } do_catchsql_test 2.3 { UPDATE zzz SET name = 'dirname3' WHERE name = 'dirname'; } {1 {constraint failed}} do_execsql_test 2.4 { SELECT name, mode, data FROM zzz; } { dirname 16877 {} dirname2 16877 {} dirname2/file1.txt 33188 abcdefghijklmnop } finish_test |