Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Reactivate disabled "alter2" tests. (CVS 3553) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
093467a099bb205897a58c1eeb734e1d |
User & Date: | drh 2007-01-04 14:36:02.000 |
Context
2007-01-04
| ||
14:58 | Fix a memory leak introduced by the latest changes to pager.c. (CVS 3554) (check-in: 8cad5d671b user: drh tags: trunk) | |
14:36 | Reactivate disabled "alter2" tests. (CVS 3553) (check-in: 093467a099 user: drh tags: trunk) | |
01:20 | Fix for ticket #2141. (CVS 3552) (check-in: 70f5f3b85f user: drh tags: trunk) | |
Changes
Changes to test/alter2.test.
︙ | ︙ | |||
9 10 11 12 13 14 15 | # #************************************************************************* # This file implements regression tests for SQLite library. The # focus of this script is testing that SQLite can handle a subtle # file format change that may be used in the future to implement # "ALTER TABLE ... ADD COLUMN". # | | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # #************************************************************************* # This file implements regression tests for SQLite library. The # focus of this script is testing that SQLite can handle a subtle # file format change that may be used in the future to implement # "ALTER TABLE ... ADD COLUMN". # # $Id: alter2.test,v 1.6 2007/01/04 14:36:02 drh Exp $ # set testdir [file dirname $argv0] source $testdir/tester.tcl # We have to have pragmas in order to do this test ifcapable {!pragma} return # These tests do not work if there is a codec. The # btree_open command does not know how to handle codecs. # #if {[catch {sqlite3 -has_codec} r] || $r} return # The file format change affects the way row-records stored in tables (but # not indices) are interpreted. Before version 3.1.3, a row-record for a # table with N columns was guaranteed to contain exactly N fields. As # of version 3.1.3, the record may contain up to N fields. In this case # the M fields that are present are the values for the left-most M # columns. The (N-M) rightmost columns contain NULL. |
︙ | ︙ | |||
64 65 66 67 68 69 70 | # This procedure sets the SQL statement stored for table $tbl in the # sqlite_master table of file 'test.db' to $sql. Also set the file format # to the supplied value. This is 2 if the added column has a default that is # NULL, or 3 otherwise. # proc alter_table {tbl sql {file_format 2}} { sqlite3 dbat test.db | < < < < < | 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | # This procedure sets the SQL statement stored for table $tbl in the # sqlite_master table of file 'test.db' to $sql. Also set the file format # to the supplied value. This is 2 if the added column has a default that is # NULL, or 3 otherwise. # proc alter_table {tbl sql {file_format 2}} { sqlite3 dbat test.db dbat eval { PRAGMA writable_schema = 1; UPDATE sqlite_master SET sql = $sql WHERE name = $tbl AND type = 'table'; PRAGMA writable_schema = 0; } dbat close set_file_format 2 } #----------------------------------------------------------------------- # Some basic tests to make sure short rows are handled. # do_test alter2-1.1 { execsql { CREATE TABLE abc(a, b); INSERT INTO abc VALUES(1, 2); INSERT INTO abc VALUES(3, 4); INSERT INTO abc VALUES(5, 6); } } {} do_test alter2-1.2 { # ALTER TABLE abc ADD COLUMN c; alter_table abc {CREATE TABLE abc(a, b, c);} } {} do_test alter2-1.3 { execsql { SELECT * FROM abc; } } {1 2 {} 3 4 {} 5 6 {}} do_test alter2-1.4 { execsql { |
︙ | ︙ | |||
123 124 125 126 127 128 129 | SELECT * FROM abc WHERE c = 10; } } {1 2 10} do_test alter2-1.8 { execsql { SELECT sum(a), c FROM abc GROUP BY c; } | | | 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | SELECT * FROM abc WHERE c = 10; } } {1 2 10} do_test alter2-1.8 { execsql { SELECT sum(a), c FROM abc GROUP BY c; } } {8 {} 1 10} do_test alter2-1.9 { # ALTER TABLE abc ADD COLUMN d; alter_table abc {CREATE TABLE abc(a, b, c, d);} execsql { SELECT * FROM abc; } execsql { UPDATE abc SET d = 11 WHERE c IS NULL AND a<4; SELECT * FROM abc; |
︙ | ︙ | |||
230 231 232 233 234 235 236 | SELECT * FROM clog; } } {{} 2 {} 6 {} 10} } #--------------------------------------------------------------------- # Check that an error occurs if the database is upgraded to a file | | | | 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 | SELECT * FROM clog; } } {{} 2 {} 6 {} 10} } #--------------------------------------------------------------------- # Check that an error occurs if the database is upgraded to a file # format that SQLite does not support (in this case 5). Note: The # file format is checked each time the schema is read, so changing the # file format requires incrementing the schema cookie. # do_test alter2-4.1 { set_file_format 5 } {} do_test alter2-4.2 { catchsql { SELECT * FROM sqlite_master; } } {1 {unsupported file format}} do_test alter2-4.3 { |
︙ | ︙ | |||
337 338 339 340 341 342 343 | } {1 integer 123 text 123 integer} do_test alter2-7.5 { set sql {CREATE TABLE t1(a, b DEFAULT -123.0, c VARCHAR(10) default 5)} alter_table t1 $sql 3 execsql { SELECT a, typeof(a), b, typeof(b), c, typeof(c) FROM t1 LIMIT 1; } | | | 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 | } {1 integer 123 text 123 integer} do_test alter2-7.5 { set sql {CREATE TABLE t1(a, b DEFAULT -123.0, c VARCHAR(10) default 5)} alter_table t1 $sql 3 execsql { SELECT a, typeof(a), b, typeof(b), c, typeof(c) FROM t1 LIMIT 1; } } {1 integer -123 integer 5 text} #----------------------------------------------------------------------- # Test that UPDATE trigger tables work with default values, and that when # a row is updated the default values are correctly transfered to the # new row. # ifcapable trigger { |
︙ | ︙ | |||
363 364 365 366 367 368 369 | } {} } do_test alter2-8.2 { execsql { UPDATE t1 SET c = 10 WHERE a = 1; SELECT a, typeof(a), b, typeof(b), c, typeof(c) FROM t1 LIMIT 1; } | | | | 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 | } {} } do_test alter2-8.2 { execsql { UPDATE t1 SET c = 10 WHERE a = 1; SELECT a, typeof(a), b, typeof(b), c, typeof(c) FROM t1 LIMIT 1; } } {1 integer -123 integer 10 text} ifcapable trigger { do_test alter2-8.3 { set ::val } {-123 integer 5 text -123 integer 10 text} } #----------------------------------------------------------------------- # Test that DELETE trigger tables work with default values, and that when # a row is updated the default values are correctly transfered to the # new row. # |
︙ | ︙ | |||
391 392 393 394 395 396 397 | list } {} do_test alter2-9.2 { execsql { DELETE FROM t1 WHERE a = 2; } set ::val | | | 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 | list } {} do_test alter2-9.2 { execsql { DELETE FROM t1 WHERE a = 2; } set ::val } {-123 integer 5 text} } #----------------------------------------------------------------------- # Test creating an index on a column added with a default value. # do_test alter2-10.1 { execsql { |
︙ | ︙ |