| OLD | NEW |
| 1 # 2001 September 15 | 1 # 2001 September 15 |
| 2 # | 2 # |
| 3 # The author disclaims copyright to this source code. In place of | 3 # The author disclaims copyright to this source code. In place of |
| 4 # a legal notice, here is a blessing: | 4 # a legal notice, here is a blessing: |
| 5 # | 5 # |
| 6 # May you do good and not evil. | 6 # May you do good and not evil. |
| 7 # May you find forgiveness for yourself and forgive others. | 7 # May you find forgiveness for yourself and forgive others. |
| 8 # May you share freely, never taking more than you give. | 8 # May you share freely, never taking more than you give. |
| 9 # | 9 # |
| 10 #*********************************************************************** | 10 #*********************************************************************** |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 # from a read-only database. Ticket #304. | 268 # from a read-only database. Ticket #304. |
| 269 # | 269 # |
| 270 do_test delete-8.0 { | 270 do_test delete-8.0 { |
| 271 execsql { | 271 execsql { |
| 272 PRAGMA count_changes=OFF; | 272 PRAGMA count_changes=OFF; |
| 273 INSERT INTO t3 VALUES(123); | 273 INSERT INTO t3 VALUES(123); |
| 274 SELECT * FROM t3; | 274 SELECT * FROM t3; |
| 275 } | 275 } |
| 276 } {123} | 276 } {123} |
| 277 db close | 277 db close |
| 278 catch {file delete -force test.db-journal} | 278 catch {forcedelete test.db-journal} |
| 279 catch {file attributes test.db -permissions 0444} | 279 catch {file attributes test.db -permissions 0444} |
| 280 catch {file attributes test.db -readonly 1} | 280 catch {file attributes test.db -readonly 1} |
| 281 sqlite3 db test.db | 281 sqlite3 db test.db |
| 282 set ::DB [sqlite3_connection_pointer db] | 282 set ::DB [sqlite3_connection_pointer db] |
| 283 do_test delete-8.1 { | 283 do_test delete-8.1 { |
| 284 catchsql { | 284 catchsql { |
| 285 DELETE FROM t3; | 285 DELETE FROM t3; |
| 286 } | 286 } |
| 287 } {1 {attempt to write a readonly database}} | 287 } {1 {attempt to write a readonly database}} |
| 288 do_test delete-8.2 { | 288 do_test delete-8.2 { |
| (...skipping 16 matching lines...) Expand all Loading... |
| 305 DELETE FROM t3 WHERE a<100; | 305 DELETE FROM t3 WHERE a<100; |
| 306 } | 306 } |
| 307 # v2 result: {0 {}} | 307 # v2 result: {0 {}} |
| 308 } {1 {attempt to write a readonly database}} | 308 } {1 {attempt to write a readonly database}} |
| 309 do_test delete-8.6 { | 309 do_test delete-8.6 { |
| 310 execsql {SELECT * FROM t3} | 310 execsql {SELECT * FROM t3} |
| 311 } {123} | 311 } {123} |
| 312 integrity_check delete-8.7 | 312 integrity_check delete-8.7 |
| 313 | 313 |
| 314 # Need to do the following for tcl 8.5 on mac. On that configuration, the | 314 # Need to do the following for tcl 8.5 on mac. On that configuration, the |
| 315 # -readonly flag is taken so seriously that a subsequent [file delete -force] | 315 # -readonly flag is taken so seriously that a subsequent [forcedelete] |
| 316 # (required before the next test file can be executed) will fail. | 316 # (required before the next test file can be executed) will fail. |
| 317 # | 317 # |
| 318 catch {file attributes test.db -readonly 0} | 318 catch {file attributes test.db -readonly 0} |
| 319 db close | 319 db close |
| 320 file delete -force test.db test.db-journal | 320 forcedelete test.db test.db-journal |
| 321 | 321 |
| 322 # The following tests verify that SQLite correctly handles the case | 322 # The following tests verify that SQLite correctly handles the case |
| 323 # where an index B-Tree is being scanned, the rowid column being read | 323 # where an index B-Tree is being scanned, the rowid column being read |
| 324 # from each index entry and another statement deletes some rows from | 324 # from each index entry and another statement deletes some rows from |
| 325 # the index B-Tree. At one point this (obscure) scenario was causing | 325 # the index B-Tree. At one point this (obscure) scenario was causing |
| 326 # SQLite to return spurious SQLITE_CORRUPT errors and arguably incorrect | 326 # SQLite to return spurious SQLITE_CORRUPT errors and arguably incorrect |
| 327 # query results. | 327 # query results. |
| 328 # | 328 # |
| 329 do_test delete-9.1 { | 329 do_test delete-9.1 { |
| 330 sqlite3 db test.db | 330 sqlite3 db test.db |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 set res [list] | 385 set res [list] |
| 386 db eval { SELECT t5.rowid AS r, c, d FROM t5, t6 ORDER BY a } { | 386 db eval { SELECT t5.rowid AS r, c, d FROM t5, t6 ORDER BY a } { |
| 387 if {$r==2} { db eval { DELETE FROM t5 WHERE rowid = 3 } } | 387 if {$r==2} { db eval { DELETE FROM t5 WHERE rowid = 3 } } |
| 388 lappend res $r $c $d | 388 lappend res $r $c $d |
| 389 } | 389 } |
| 390 set res | 390 set res |
| 391 } {1 a b 1 c d 2 a b 2 c d} | 391 } {1 a b 1 c d 2 a b 2 c d} |
| 392 | 392 |
| 393 | 393 |
| 394 finish_test | 394 finish_test |
| OLD | NEW |