Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Have OTA always specify SQLITE_CONFIG_URI when opening databases. Fix a test issue causing otacrash.test to fail. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | ota-update |
Files: | files | file ages | folders |
SHA1: |
0d0e5ec064eaecb200b9b601b7a54a17 |
User & Date: | dan 2015-04-17 08:36:05.998 |
Context
2015-04-17
| ||
16:29 | Fix a memory leak in sqlite3ota.c that can follow an OOM error. (check-in: c3dc15e717 user: dan tags: ota-update) | |
08:36 | Have OTA always specify SQLITE_CONFIG_URI when opening databases. Fix a test issue causing otacrash.test to fail. (check-in: 0d0e5ec064 user: dan tags: ota-update) | |
2015-04-16
| ||
18:49 | Be sure to release any xShmLock locks held when closing an OTA handle. (check-in: d0fba72a47 user: dan tags: ota-update) | |
Changes
Changes to ext/ota/otacrash.test.
︙ | ︙ | |||
11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # if {![info exists testdir]} { set testdir [file join [file dirname [info script]] .. .. test] } source $testdir/tester.tcl set ::testprefix otacrash # Set up a target database and an ota update database. The target # db is the usual "test.db", the ota db is "test.db2". # forcedelete test.db2 do_execsql_test 1.0 { CREATE TABLE t1(a, b, c, PRIMARY KEY(a), UNIQUE(b)); | > > > > > > | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # if {![info exists testdir]} { set testdir [file join [file dirname [info script]] .. .. test] } source $testdir/tester.tcl set ::testprefix otacrash db close forcedelete test.db-oal ota.db sqlite3_shutdown sqlite3_config_uri 1 reset_db # Set up a target database and an ota update database. The target # db is the usual "test.db", the ota db is "test.db2". # forcedelete test.db2 do_execsql_test 1.0 { CREATE TABLE t1(a, b, c, PRIMARY KEY(a), UNIQUE(b)); |
︙ | ︙ | |||
105 106 107 108 109 110 111 | set i 0 for {set i 0} {$i < $nPre} {incr i} { if {[ota step]!="SQLITE_OK"} break } ota close } | > | > | 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | set i 0 for {set i 0} {$i < $nPre} {incr i} { if {[ota step]!="SQLITE_OK"} break } ota close } set res [ crashsql -file test.db2 -delay $iDelay -tclbody $script -opendb {} {} ] set bDone 1 if {$res == "1 {child process exited abnormally}"} { set bDone 0 } elseif {$res != "0 {}"} { error "unexected catchsql result: $res" } |
︙ | ︙ |
Changes to ext/ota/sqlite3ota.c.
︙ | ︙ | |||
1764 1765 1766 1767 1768 1769 1770 | } return p->rc; } static sqlite3 *otaOpenDbhandle(sqlite3ota *p, const char *zName){ sqlite3 *db = 0; if( p->rc==SQLITE_OK ){ | | | 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 | } return p->rc; } static sqlite3 *otaOpenDbhandle(sqlite3ota *p, const char *zName){ sqlite3 *db = 0; if( p->rc==SQLITE_OK ){ const int flags = SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_URI; p->rc = sqlite3_open_v2(zName, &db, flags, p->zVfsName); if( p->rc ){ p->zErrmsg = sqlite3_mprintf("%s", sqlite3_errmsg(db)); sqlite3_close(db); db = 0; } } |
︙ | ︙ |
Changes to ext/ota/sqlite3ota.h.
︙ | ︙ | |||
233 234 235 236 237 238 239 | typedef struct sqlite3ota sqlite3ota; /* ** Open an OTA handle. ** ** Argument zTarget is the path to the target database. Argument zOta is ** the path to the OTA database. Each call to this function must be matched | | > > > | 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 | typedef struct sqlite3ota sqlite3ota; /* ** Open an OTA handle. ** ** Argument zTarget is the path to the target database. Argument zOta is ** the path to the OTA database. Each call to this function must be matched ** by a call to sqlite3ota_close(). When opening the databases, OTA passes ** the SQLITE_CONFIG_URI flag to sqlite3_open_v2(). So if either zTarget ** or zOta begin with "file:", it will be interpreted as an SQLite ** database URI, not a regular file name. ** ** By default, OTA uses the default VFS to access the files on disk. To ** use a VFS other than the default, an SQLite "file:" URI containing a ** "vfs=..." option may be passed as the zTarget option. ** ** IMPORTANT NOTE FOR ZIPVFS USERS: The OTA extension works with all of ** SQLite's built-in VFSs, including the multiplexor VFS. However it does |
︙ | ︙ |
Changes to test/tester.tcl.
︙ | ︙ | |||
1305 1306 1307 1308 1309 1310 1311 | # default, so here we force it to the "nativename" format. set cfile [string map {\\ \\\\} [file nativename [file join [get_pwd] $crashfile]]] set f [open crash.tcl w] puts $f "sqlite3_crash_enable 1" puts $f "sqlite3_crashparams $blocksize $dc $crashdelay $cfile" puts $f "sqlite3_test_control_pending_byte $::sqlite_pending_byte" | < > > | | | > | 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 | # default, so here we force it to the "nativename" format. set cfile [string map {\\ \\\\} [file nativename [file join [get_pwd] $crashfile]]] set f [open crash.tcl w] puts $f "sqlite3_crash_enable 1" puts $f "sqlite3_crashparams $blocksize $dc $crashdelay $cfile" puts $f "sqlite3_test_control_pending_byte $::sqlite_pending_byte" # This block sets the cache size of the main database to 10 # pages. This is done in case the build is configured to omit # "PRAGMA cache_size". if {$opendb!=""} { puts $f $opendb puts $f {db eval {SELECT * FROM sqlite_master;}} puts $f {set bt [btree_from_db db]} puts $f {btree_set_cache_size $bt 10} } if {$prngseed} { set seed [expr {$prngseed%10007+1}] # puts seed=$seed puts $f "db eval {SELECT randomblob($seed)}" } |
︙ | ︙ |