Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Update evidence marks due to wording changes in requirements text. No changes to code. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
86781093bdb4c4fdedd228cb1c8961db |
User & Date: | drh 2015-09-11 20:54:44.879 |
Context
2015-09-12
| ||
18:57 | Import common changes from the mutex initialization branch. (check-in: 334720c017 user: mistachkin tags: trunk) | |
16:59 | Merge updates from trunk. (check-in: 4859778900 user: mistachkin tags: mutexInitCmpSwap) | |
2015-09-11
| ||
20:54 | Update evidence marks due to wording changes in requirements text. No changes to code. (check-in: 86781093bd user: drh tags: trunk) | |
18:05 | Fix harmless compiler warnings. (check-in: bfc7b84b76 user: mistachkin tags: trunk) | |
Changes
Changes to test/e_createtable.test.
︙ | ︙ | |||
369 370 371 372 373 374 375 | 2 "CREATE TABLE temp.sqlitehelloworld(x)" {} 3 {CREATE TABLE auxa."sqlite"(x, y)} {} 4 {CREATE TABLE auxb."sqlite-"(z)} {} 5 {CREATE TABLE "SQLITE-TBL"(z)} {} } | | | | 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 | 2 "CREATE TABLE temp.sqlitehelloworld(x)" {} 3 {CREATE TABLE auxa."sqlite"(x, y)} {} 4 {CREATE TABLE auxb."sqlite-"(z)} {} 5 {CREATE TABLE "SQLITE-TBL"(z)} {} } # EVIDENCE-OF: R-18448-33677 If a schema-name is specified, it must be # either "main", "temp", or the name of an attached database. # # EVIDENCE-OF: R-39822-07822 In this case the new table is created in # the named database. # # Test cases 1.2.* test the first of the two requirements above. The # second is verified by cases 1.3.*. # |
︙ | ︙ | |||
418 419 420 421 422 423 424 | array set X [table_list] list $X(main) $X(temp) $X(auxa) $X(auxb) } { 1 "CREATE TEMP TABLE t1(a, b)" {{} t1 {} {}} 2 "CREATE TEMPORARY TABLE t2(a, b)" {{} {t1 t2} {} {}} } | | | | | 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 | array set X [table_list] list $X(main) $X(temp) $X(auxa) $X(auxb) } { 1 "CREATE TEMP TABLE t1(a, b)" {{} t1 {} {}} 2 "CREATE TEMPORARY TABLE t2(a, b)" {{} {t1 t2} {} {}} } # EVIDENCE-OF: R-23976-43329 It is an error to specify both a # schema-name and the TEMP or TEMPORARY keyword, unless the schema-name # is "temp". # drop_all_tables do_createtable_tests 1.5.1 -error { temporary table name must be unqualified } { 1 "CREATE TEMP TABLE main.t1(a, b)" {} 2 "CREATE TEMPORARY TABLE auxa.t2(a, b)" {} |
︙ | ︙ | |||
443 444 445 446 447 448 449 | } { 1 "CREATE TEMP TABLE temp.t1(a, b)" {{} t1 {} {}} 2 "CREATE TEMPORARY TABLE temp.t2(a, b)" {{} {t1 t2} {} {}} 3 "CREATE TEMP TABLE TEMP.t3(a, b)" {{} {t1 t2 t3} {} {}} 4 "CREATE TEMPORARY TABLE TEMP.xxx(x)" {{} {t1 t2 t3 xxx} {} {}} } | | | < | 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 | } { 1 "CREATE TEMP TABLE temp.t1(a, b)" {{} t1 {} {}} 2 "CREATE TEMPORARY TABLE temp.t2(a, b)" {{} {t1 t2} {} {}} 3 "CREATE TEMP TABLE TEMP.t3(a, b)" {{} {t1 t2 t3} {} {}} 4 "CREATE TEMPORARY TABLE TEMP.xxx(x)" {{} {t1 t2 t3 xxx} {} {}} } # EVIDENCE-OF: R-31997-24564 If no schema name is specified and the TEMP # keyword is not present then the table is created in the main database. # drop_all_tables do_createtable_tests 1.6 -tclquery { unset -nocomplain X array set X [table_list] list $X(main) $X(temp) $X(auxa) $X(auxb) } { |
︙ | ︙ |
Changes to test/e_delete.test.
︙ | ︙ | |||
66 67 68 69 70 71 72 | } } {} do_delete_tests e_delete-1.1 { 1 "DELETE FROM t1 ; SELECT * FROM t1" {} 2 "DELETE FROM main.t2 ; SELECT * FROM t2" {} } | | | | > > > | 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | } } {} do_delete_tests e_delete-1.1 { 1 "DELETE FROM t1 ; SELECT * FROM t1" {} 2 "DELETE FROM main.t2 ; SELECT * FROM t2" {} } # EVIDENCE-OF: R-26300-50198 If a WHERE clause is supplied, then only # those rows for which the WHERE clause boolean expression is true are # deleted. # # EVIDENCE-OF: R-23360-48280 Rows for which the expression is false or # NULL are retained. # do_delete_tests e_delete-1.2 { 1 "DELETE FROM t3 WHERE 1 ; SELECT x FROM t3" {} 2 "DELETE FROM main.t4 WHERE 0 ; SELECT x FROM t4" {1 2 3 4 5} 3 "DELETE FROM t4 WHERE 0.0 ; SELECT x FROM t4" {1 2 3 4 5} 4 "DELETE FROM t4 WHERE NULL ; SELECT x FROM t4" {1 2 3 4 5} 5 "DELETE FROM t4 WHERE y!='two'; SELECT x FROM t4" {2} |
︙ | ︙ | |||
113 114 115 116 117 118 119 | CREATE TABLE aux2.t10(a, b); INSERT INTO aux2.t10 VALUES(1, 2); } {} # EVIDENCE-OF: R-09681-58560 The table-name specified as part of a # DELETE statement within a trigger body must be unqualified. # | | | | 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | CREATE TABLE aux2.t10(a, b); INSERT INTO aux2.t10 VALUES(1, 2); } {} # EVIDENCE-OF: R-09681-58560 The table-name specified as part of a # DELETE statement within a trigger body must be unqualified. # # EVIDENCE-OF: R-12275-20298 In other words, the schema-name. prefix on # the table name is not allowed within triggers. # do_delete_tests e_delete-2.1 -error { qualified table names are not allowed on INSERT, UPDATE, and DELETE statements within triggers } { 1 { CREATE TRIGGER tr1 AFTER INSERT ON t1 BEGIN DELETE FROM main.t2; |
︙ | ︙ |
Changes to test/e_expr.test.
︙ | ︙ | |||
1422 1423 1424 1425 1426 1427 1428 | do_execsql_test e_expr-27.1.2 { SELECT typeof(CAST(X'555655' as TEXT)), CAST(X'555655' as TEXT), typeof(CAST('1.23abc' as REAL)), CAST('1.23abc' as REAL), typeof(CAST(4.5 as INTEGER)), CAST(4.5 as INTEGER) } {text UVU real 1.23 integer 4} | | | | | | 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 | do_execsql_test e_expr-27.1.2 { SELECT typeof(CAST(X'555655' as TEXT)), CAST(X'555655' as TEXT), typeof(CAST('1.23abc' as REAL)), CAST('1.23abc' as REAL), typeof(CAST(4.5 as INTEGER)), CAST(4.5 as INTEGER) } {text UVU real 1.23 integer 4} # EVIDENCE-OF: R-32434-09092 If the value of expr is NULL, then the # result of the CAST expression is also NULL. # do_expr_test e_expr-27.2.1 { CAST(NULL AS integer) } null {} do_expr_test e_expr-27.2.2 { CAST(NULL AS text) } null {} do_expr_test e_expr-27.2.3 { CAST(NULL AS blob) } null {} do_expr_test e_expr-27.2.4 { CAST(NULL AS number) } null {} # EVIDENCE-OF: R-43522-35548 Casting a value to a type-name with no # affinity causes the value to be converted into a BLOB. # do_expr_test e_expr-27.3.1 { CAST('abc' AS blob) } blob abc do_expr_test e_expr-27.3.2 { CAST('def' AS shobblob_x) } blob def do_expr_test e_expr-27.3.3 { CAST('ghi' AS abbLOb10) } blob ghi # EVIDENCE-OF: R-22956-37754 Casting to a BLOB consists of first casting # the value to TEXT in the encoding of the database connection, then |
︙ | ︙ |
Changes to test/e_insert.test.
︙ | ︙ | |||
153 154 155 156 157 158 159 | 2a "INSERT INTO a2(a, b) VALUES(1, 2)" {} 2b "SELECT count(*) FROM a2" {2} 3a "INSERT INTO a2(a) VALUES(3),(4)" {} 3b "SELECT count(*) FROM a2" {4} } | | | | | 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | 2a "INSERT INTO a2(a, b) VALUES(1, 2)" {} 2b "SELECT count(*) FROM a2" {2} 3a "INSERT INTO a2(a) VALUES(3),(4)" {} 3b "SELECT count(*) FROM a2" {4} } # EVIDENCE-OF: R-19218-01018 If the column-name list after table-name is # omitted then the number of values inserted into each row must be the # same as the number of columns in the table. # # A test in the block above verifies that if the VALUES list has the # correct number of columns (for table a2, 3 columns) works. So these # tests just show that other values cause an error. # do_insert_tests e_insert-1.2 -error { table %s has %d columns but %d values were supplied |
︙ | ︙ | |||
187 188 189 190 191 192 193 | 2a "INSERT INTO a2 VALUES('abc', NULL, 3*3+1)" {} 2b "SELECT * FROM a2 WHERE oid=last_insert_rowid()" {abc {} 10} 3a "INSERT INTO a2 VALUES((SELECT count(*) FROM a2), 'x', 'y')" {} 3b "SELECT * FROM a2 WHERE oid=last_insert_rowid()" {2 x y} } | | | | | 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 | 2a "INSERT INTO a2 VALUES('abc', NULL, 3*3+1)" {} 2b "SELECT * FROM a2 WHERE oid=last_insert_rowid()" {abc {} 10} 3a "INSERT INTO a2 VALUES((SELECT count(*) FROM a2), 'x', 'y')" {} 3b "SELECT * FROM a2 WHERE oid=last_insert_rowid()" {2 x y} } # EVIDENCE-OF: R-21115-58321 If a column-name list is specified, then # the number of values in each term of the VALUE list must match the # number of specified columns. # do_insert_tests e_insert-1.4 -error { %d values for %d columns } { 1 "INSERT INTO a2(a, b, c) VALUES(1)" {1 3} 2 "INSERT INTO a2(a, b, c) VALUES(1,2)" {2 3} 3 "INSERT INTO a2(a, b, c) VALUES(1,2,3,4)" {4 3} |
︙ | ︙ | |||
390 391 392 393 394 395 396 | 2.2 "REPLACE INTO a4 VALUES(2, 'f')" {} 1 {1 a 3 a 4 e 2 f} } { do_catchsql_test e_insert-4.1.$tn.1 $sql [list [expr {$error!=""}] $error] do_execsql_test e_insert-4.1.$tn.2 {SELECT * FROM a4} [list {*}$data] do_test e_insert-4.1.$tn.3 {sqlite3_get_autocommit db} $ac } | | | | 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 | 2.2 "REPLACE INTO a4 VALUES(2, 'f')" {} 1 {1 a 3 a 4 e 2 f} } { do_catchsql_test e_insert-4.1.$tn.1 $sql [list [expr {$error!=""}] $error] do_execsql_test e_insert-4.1.$tn.2 {SELECT * FROM a4} [list {*}$data] do_test e_insert-4.1.$tn.3 {sqlite3_get_autocommit db} $ac } # EVIDENCE-OF: R-59829-49719 The optional "schema-name." prefix on the # table-name is supported for top-level INSERT statements only. # # EVIDENCE-OF: R-05731-00924 The table name must be unqualified for # INSERT statements that occur within CREATE TRIGGER statements. # set err {1 {qualified table names are not allowed on INSERT, UPDATE, and DELETE statements within triggers}} do_catchsql_test e_insert-5.1.1 { |
︙ | ︙ |
Changes to test/e_reindex.test.
︙ | ︙ | |||
261 262 263 264 265 266 267 | test_index 5.37 t1 collA length test_index 5.38 t1 collB value test_index 5.39 t2 collA length test_index 5.40 t2 collB value test_index 5.41 aux.t1 collA length test_index 5.42 aux.t1 collB value | | | < | | 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 | test_index 5.37 t1 collA length test_index 5.38 t1 collB value test_index 5.39 t2 collA length test_index 5.40 t2 collB value test_index 5.41 aux.t1 collA length test_index 5.42 aux.t1 collB value # EVIDENCE-OF: R-35892-30289 For a command of the form "REINDEX name", a # match against collation-name takes precedence over a match against # index-name or table-name. # set_collations value length do_execsql_test e_reindex-2.6.0 { CREATE TABLE collA(x); CREATE INDEX icolla_a ON collA(x COLLATE collA); CREATE INDEX icolla_b ON collA(x COLLATE collB); |
︙ | ︙ |
Changes to test/e_resolve.test.
︙ | ︙ | |||
61 62 63 64 65 66 67 | # resolve_reopen_db do_execsql_test 1.1 { SELECT * FROM n1 } {temp n1} do_execsql_test 1.2 { SELECT * FROM n2 } {main n2} do_execsql_test 1.3 { SELECT * FROM n3 } {at1 n3} do_execsql_test 1.4 { SELECT * FROM n4 } {at2 n4} | | | | | | | | 61 62 63 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 | # resolve_reopen_db do_execsql_test 1.1 { SELECT * FROM n1 } {temp n1} do_execsql_test 1.2 { SELECT * FROM n2 } {main n2} do_execsql_test 1.3 { SELECT * FROM n3 } {at1 n3} do_execsql_test 1.4 { SELECT * FROM n4 } {at2 n4} # EVIDENCE-OF: R-00634-08585 If a schema name is specified as part of an # object reference, it must be either "main", or "temp" or the # schema-name of an attached database. # # Or else it is a "no such table: xxx" error. # resolve_reopen_db do_execsql_test 2.1.1 { SELECT * FROM main.n1 } {main n1} do_execsql_test 2.1.2 { SELECT * FROM temp.n1 } {temp n1} do_execsql_test 2.1.3 { SELECT * FROM at1.n1 } {at1 n1} do_execsql_test 2.1.4 { SELECT * FROM at2.n1 } {at2 n1} do_catchsql_test 2.2 { SELECT * FROM xxx.n1 } {1 {no such table: xxx.n1}} # EVIDENCE-OF: R-17446-42210 Like other SQL identifiers, schema names # are case-insensitive. # resolve_reopen_db do_execsql_test 3.1 { SELECT * FROM MAIN.n1 } {main n1} do_execsql_test 3.2 { SELECT * FROM tEmP.n1 } {temp n1} do_execsql_test 3.3 { SELECT * FROM aT1.n1 } {at1 n1} do_execsql_test 3.4 { SELECT * FROM At2.n1 } {at2 n1} # EVIDENCE-OF: R-14755-58619 If a schema name is specified, then only # that one schema is searched for the named object. # do_catchsql_test 4.1 { SELECT * FROM temp.n2 } {1 {no such table: temp.n2}} do_catchsql_test 4.2 { SELECT * FROM main.n2 } {0 {main n2}} do_catchsql_test 4.3 { SELECT * FROM at1.n2 } {0 {at1 n2}} do_catchsql_test 4.4 { SELECT * FROM at2.n2 } {0 {at2 n2}} # EVIDENCE-OF: R-08951-19801 When searching database schemas for a named |
︙ | ︙ |
Changes to test/e_update.test.
︙ | ︙ | |||
142 143 144 145 146 147 148 | 1 "UPDATE t1 SET b = 'roman' ; SELECT * FROM t1" {1 roman 2 roman 3 roman} 2 "UPDATE t1 SET a = 'greek' ; SELECT * FROM t1" {greek roman greek roman greek roman} } | | < | | 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | 1 "UPDATE t1 SET b = 'roman' ; SELECT * FROM t1" {1 roman 2 roman 3 roman} 2 "UPDATE t1 SET a = 'greek' ; SELECT * FROM t1" {greek roman greek roman greek roman} } # EVIDENCE-OF: R-58095-46013 Otherwise, the UPDATE affects only those # rows for which the WHERE clause boolean expression is true. # do_execsql_test e_update-1.3.0 { DELETE FROM main.t1; INSERT INTO main.t1 VALUES(NULL, ''); INSERT INTO main.t1 VALUES(1, 'i'); INSERT INTO main.t1 VALUES(2, 'ii'); INSERT INTO main.t1 VALUES(3, 'iii'); |
︙ | ︙ | |||
261 262 263 264 265 266 267 | SELECT * FROM t2 } { 1 "UPDATE t2 SET a=b+c" {5 1 4 14 5 9 11 6 5} 2 "UPDATE t2 SET a=b, b=a" {1 5 4 5 14 9 6 11 5} 3 "UPDATE t2 SET a=c||c, c=NULL" {44 5 {} 99 14 {} 55 11 {}} } | | > | | | 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 | SELECT * FROM t2 } { 1 "UPDATE t2 SET a=b+c" {5 1 4 14 5 9 11 6 5} 2 "UPDATE t2 SET a=b, b=a" {1 5 4 5 14 9 6 11 5} 3 "UPDATE t2 SET a=c||c, c=NULL" {44 5 {} 99 14 {} 55 11 {}} } # EVIDENCE-OF: R-28518-13457 The optional "OR action" conflict clause # that follows the UPDATE keyword allows the user to nominate a specific # constraint conflict resolution algorithm to use during this one UPDATE # command. # do_execsql_test e_update-1.8.0 { DELETE FROM t3; INSERT INTO t3 VALUES(1, 'one'); INSERT INTO t3 VALUES(2, 'two'); INSERT INTO t3 VALUES(3, 'three'); INSERT INTO t3 VALUES(4, 'four'); |
︙ | ︙ | |||
318 319 320 321 322 323 324 | } # EVIDENCE-OF: R-12123-54095 The table-name specified as part of an # UPDATE statement within a trigger body must be unqualified. # | | | | 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 | } # EVIDENCE-OF: R-12123-54095 The table-name specified as part of an # UPDATE statement within a trigger body must be unqualified. # # EVIDENCE-OF: R-43190-62442 In other words, the schema-name. prefix on # the table name of the UPDATE is not allowed within triggers. # do_update_tests e_update-2.1 -error { qualified table names are not allowed on INSERT, UPDATE, and DELETE statements within triggers } { 1 { CREATE TRIGGER tr1 AFTER INSERT ON t1 BEGIN UPDATE main.t2 SET a=1, b=2, c=3; |
︙ | ︙ |
Changes to test/fkey5.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. # # This file tests the PRAGMA foreign_key_check command. # | | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. # # This file tests the PRAGMA foreign_key_check command. # # EVIDENCE-OF: R-15402-03103 PRAGMA schema.foreign_key_check; PRAGMA # schema.foreign_key_check(table-name); # # EVIDENCE-OF: R-23918-17301 The foreign_key_check pragma checks the # database, or the table called "table-name", for foreign key # constraints that are violated and returns one row of output for each # violation. set testdir [file dirname $argv0] |
︙ | ︙ |
Changes to test/indexedby.test.
︙ | ︙ | |||
54 55 56 57 58 59 60 | } # Parser tests. Test that an INDEXED BY or NOT INDEX clause can be # attached to a table in the FROM clause, but not to a sub-select or # SQL view. Also test that specifying an index that does not exist or # is attached to a different table is detected as an error. # | | | 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | } # Parser tests. Test that an INDEXED BY or NOT INDEX clause can be # attached to a table in the FROM clause, but not to a sub-select or # SQL view. Also test that specifying an index that does not exist or # is attached to a different table is detected as an error. # # EVIDENCE-OF: R-07004-11522 -- syntax diagram qualified-table-name # # EVIDENCE-OF: R-58230-57098 The "INDEXED BY index-name" phrase # specifies that the named index must be used in order to look up values # on the preceding table. # do_test indexedby-2.1 { execsql { SELECT * FROM t1 NOT INDEXED WHERE a = 'one' AND b = 'two'} |
︙ | ︙ |
Changes to test/pragma.test.
︙ | ︙ | |||
79 80 81 82 83 84 85 | # that the "all.test" script does. # db close delete_file test.db test.db-journal delete_file test3.db test3.db-journal sqlite3 db test.db; set DB [sqlite3_connection_pointer db] | | | | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | # that the "all.test" script does. # db close delete_file test.db test.db-journal delete_file test3.db test3.db-journal sqlite3 db test.db; set DB [sqlite3_connection_pointer db] # EVIDENCE-OF: R-13861-56665 PRAGMA schema.cache_size; PRAGMA # schema.cache_size = pages; PRAGMA schema.cache_size = -kibibytes; # Query or change the suggested maximum number of database disk pages # that SQLite will hold in memory at once per open database file. # ifcapable pager_pragmas { set DFLT_CACHE_SZ [db one {PRAGMA default_cache_size}] set TEMP_CACHE_SZ [db one {PRAGMA temp.default_cache_size}] do_test pragma-1.1 { |
︙ | ︙ | |||
693 694 695 696 697 698 699 | # do_test pragma-6.5.1b { capture_pragma db out {PRAGMA index_xinfo(t3i1)} db eval {SELECT seqno, cid, name FROM out ORDER BY seqno} } {0 0 a 1 1 b 2 -1 {}} | | | | 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 | # do_test pragma-6.5.1b { capture_pragma db out {PRAGMA index_xinfo(t3i1)} db eval {SELECT seqno, cid, name FROM out ORDER BY seqno} } {0 0 a 1 1 b 2 -1 {}} # EVIDENCE-OF: R-29448-60346 PRAGMA schema.index_info(index-name); This # pragma returns one row for each key column in the named index. # # (The first column of output from PRAGMA index_info is...) # EVIDENCE-OF: R-34186-52914 The rank of the column within the index. (0 # means left-most.) # # (The second column of output from PRAGMA index_info is...) # EVIDENCE-OF: R-65019-08383 The rank of the column within the table |
︙ | ︙ | |||
780 781 782 783 784 785 786 | {1 b {} 0 {} 2} \ {2 c {} 0 {} 4} \ ] } ;# ifcapable schema_pragmas # Miscellaneous tests # ifcapable schema_pragmas { | | | < > | 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 | {1 b {} 0 {} 2} \ {2 c {} 0 {} 4} \ ] } ;# ifcapable schema_pragmas # Miscellaneous tests # ifcapable schema_pragmas { # EVIDENCE-OF: R-64103-17776 PRAGMA schema.index_list(table-name); This # pragma returns one row for each index associated with the given table. # do_test pragma-7.1.1 { # Make sure a pragma knows to read the schema if it needs to db close sqlite3 db test.db capture_pragma db out "PRAGMA index_list(t3)" db eval {SELECT name, "origin" FROM out ORDER BY name DESC} } {t3i1 c sqlite_autoindex_t3_1 u} |
︙ | ︙ | |||
1375 1376 1377 1378 1379 1380 1381 | } ;# ifcapable bloblit ifcapable pager_pragmas { db close forcedelete test.db sqlite3 db test.db | | | | 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 | } ;# ifcapable bloblit ifcapable pager_pragmas { db close forcedelete test.db sqlite3 db test.db # EVIDENCE-OF: R-15672-33611 PRAGMA schema.page_count; Return the total # number of pages in the database file. # do_test pragma-14.1 { execsql { pragma auto_vacuum = 0 } execsql { pragma page_count; pragma main.page_count } } {0 0} do_test pragma-14.2 { |
︙ | ︙ | |||
1813 1814 1815 1816 1817 1818 1819 | DROP INDEX i2; CREATE INDEX i2 ON t1(c,d,b); } capture_pragma db2 out {PRAGMA index_info(i2)} db2 eval {SELECT cid, name, '|' FROM out ORDER BY seqno} } {2 c | 3 d | 1 b |} | | | | 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 | DROP INDEX i2; CREATE INDEX i2 ON t1(c,d,b); } capture_pragma db2 out {PRAGMA index_info(i2)} db2 eval {SELECT cid, name, '|' FROM out ORDER BY seqno} } {2 c | 3 d | 1 b |} # EVIDENCE-OF: R-56143-29319 PRAGMA schema.index_xinfo(index-name); This # pragma returns information about every column in an index. # # EVIDENCE-OF: R-45970-35618 Unlike this index_info pragma, this pragma # returns information about every column in the index, not just the key # columns. # do_test 23.2b { capture_pragma db2 out {PRAGMA index_xinfo(i2)} |
︙ | ︙ | |||
1857 1858 1859 1860 1861 1862 1863 | do_test 23.2c { db2 eval {PRAGMA index_xinfo(i2)} } {0 2 c 0 BINARY 1 1 3 d 0 BINARY 1 2 1 b 0 BINARY 1 3 -1 {} 0 BINARY 0} do_test 23.2d { db2 eval {PRAGMA index_xinfo(i2x)} } {0 3 d 0 nocase 1 1 2 c 1 BINARY 1 2 -1 {} 0 BINARY 0} | | | < | 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 | do_test 23.2c { db2 eval {PRAGMA index_xinfo(i2)} } {0 2 c 0 BINARY 1 1 3 d 0 BINARY 1 2 1 b 0 BINARY 1 3 -1 {} 0 BINARY 0} do_test 23.2d { db2 eval {PRAGMA index_xinfo(i2x)} } {0 3 d 0 nocase 1 1 2 c 1 BINARY 1 2 -1 {} 0 BINARY 0} # EVIDENCE-OF: R-64103-17776 PRAGMA schema.index_list(table-name); This # pragma returns one row for each index associated with the given table. # # (The first column of output from PRAGMA index_list is...) # EVIDENCE-OF: R-02753-24748 A sequence number assigned to each index # for internal tracking purposes. # # (The second column of output from PRAGMA index_list is...) # EVIDENCE-OF: R-35496-03635 The name of the index. |
︙ | ︙ |
Changes to test/pragma2.test.
︙ | ︙ | |||
38 39 40 41 42 43 44 | db close delete_file test.db test.db-journal delete_file test3.db test3.db-journal sqlite3 db test.db; set DB [sqlite3_connection_pointer db] db eval {PRAGMA auto_vacuum=0} | | | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | db close delete_file test.db test.db-journal delete_file test3.db test3.db-journal sqlite3 db test.db; set DB [sqlite3_connection_pointer db] db eval {PRAGMA auto_vacuum=0} # EVIDENCE-OF: R-11211-21323 PRAGMA schema.freelist_count; Return the # number of unused pages in the database file. # do_test pragma2-1.1 { execsql { PRAGMA freelist_count; } } {0} |
︙ | ︙ |