github.com/jdgcs/sqlite3@v1.12.1-0.20210908114423-bc5f96e4dd51/testdata/tcl/notnull.test (about) 1 # 2002 January 29 2 # 3 # The author disclaims copyright to this source code. In place of 4 # a legal notice, here is a blessing: 5 # 6 # May you do good and not evil. 7 # May you find forgiveness for yourself and forgive others. 8 # May you share freely, never taking more than you give. 9 # 10 #*********************************************************************** 11 # This file implements regression tests for SQLite library. 12 # 13 # This file implements tests for the NOT NULL constraint. 14 # 15 # $Id: notnull.test,v 1.4 2006/01/17 09:35:02 danielk1977 Exp $ 16 17 set testdir [file dirname $argv0] 18 source $testdir/tester.tcl 19 20 ifcapable !conflict { 21 finish_test 22 return 23 } 24 25 do_test notnull-1.0 { 26 execsql { 27 CREATE TABLE t1 ( 28 a NOT NULL, 29 b NOT NULL DEFAULT 5, 30 c NOT NULL ON CONFLICT REPLACE DEFAULT 6, 31 d NOT NULL ON CONFLICT IGNORE DEFAULT 7, 32 e NOT NULL ON CONFLICT ABORT DEFAULT 8 33 ); 34 SELECT * FROM t1; 35 } 36 } {} 37 do_test notnull-1.1 { 38 catchsql { 39 DELETE FROM t1; 40 INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 41 SELECT * FROM t1 order by a; 42 } 43 } {0 {1 2 3 4 5}} 44 do_test notnull-1.2 { 45 catchsql { 46 DELETE FROM t1; 47 INSERT INTO t1(b,c,d,e) VALUES(2,3,4,5); 48 SELECT * FROM t1 order by a; 49 } 50 } {1 {NOT NULL constraint failed: t1.a}} 51 verify_ex_errcode notnull-1.2b SQLITE_CONSTRAINT_NOTNULL 52 do_test notnull-1.3 { 53 catchsql { 54 DELETE FROM t1; 55 INSERT OR IGNORE INTO t1(b,c,d,e) VALUES(2,3,4,5); 56 SELECT * FROM t1 order by a; 57 } 58 } {0 {}} 59 do_test notnull-1.4 { 60 catchsql { 61 DELETE FROM t1; 62 INSERT OR REPLACE INTO t1(b,c,d,e) VALUES(2,3,4,5); 63 SELECT * FROM t1 order by a; 64 } 65 } {1 {NOT NULL constraint failed: t1.a}} 66 verify_ex_errcode notnull-1.4b SQLITE_CONSTRAINT_NOTNULL 67 do_test notnull-1.5 { 68 catchsql { 69 DELETE FROM t1; 70 INSERT OR ABORT INTO t1(b,c,d,e) VALUES(2,3,4,5); 71 SELECT * FROM t1 order by a; 72 } 73 } {1 {NOT NULL constraint failed: t1.a}} 74 verify_ex_errcode notnull-1.5b SQLITE_CONSTRAINT_NOTNULL 75 do_test notnull-1.6 { 76 catchsql { 77 DELETE FROM t1; 78 INSERT INTO t1(a,c,d,e) VALUES(1,3,4,5); 79 SELECT * FROM t1 order by a; 80 } 81 } {0 {1 5 3 4 5}} 82 do_test notnull-1.7 { 83 catchsql { 84 DELETE FROM t1; 85 INSERT OR IGNORE INTO t1(a,c,d,e) VALUES(1,3,4,5); 86 SELECT * FROM t1 order by a; 87 } 88 } {0 {1 5 3 4 5}} 89 do_test notnull-1.8 { 90 catchsql { 91 DELETE FROM t1; 92 INSERT OR REPLACE INTO t1(a,c,d,e) VALUES(1,3,4,5); 93 SELECT * FROM t1 order by a; 94 } 95 } {0 {1 5 3 4 5}} 96 do_test notnull-1.9 { 97 catchsql { 98 DELETE FROM t1; 99 INSERT OR ABORT INTO t1(a,c,d,e) VALUES(1,3,4,5); 100 SELECT * FROM t1 order by a; 101 } 102 } {0 {1 5 3 4 5}} 103 do_test notnull-1.10 { 104 catchsql { 105 DELETE FROM t1; 106 INSERT INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5); 107 SELECT * FROM t1 order by a; 108 } 109 } {1 {NOT NULL constraint failed: t1.b}} 110 verify_ex_errcode notnull-1.10b SQLITE_CONSTRAINT_NOTNULL 111 do_test notnull-1.11 { 112 catchsql { 113 DELETE FROM t1; 114 INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5); 115 SELECT * FROM t1 order by a; 116 } 117 } {0 {}} 118 do_test notnull-1.12 { 119 catchsql { 120 DELETE FROM t1; 121 INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5); 122 SELECT * FROM t1 order by a; 123 } 124 } {0 {1 5 3 4 5}} 125 do_test notnull-1.13 { 126 catchsql { 127 DELETE FROM t1; 128 INSERT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5); 129 SELECT * FROM t1 order by a; 130 } 131 } {0 {1 2 6 4 5}} 132 do_test notnull-1.14 { 133 catchsql { 134 DELETE FROM t1; 135 INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5); 136 SELECT * FROM t1 order by a; 137 } 138 } {0 {}} 139 do_test notnull-1.15 { 140 catchsql { 141 DELETE FROM t1; 142 INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5); 143 SELECT * FROM t1 order by a; 144 } 145 } {0 {1 2 6 4 5}} 146 do_test notnull-1.16 { 147 catchsql { 148 DELETE FROM t1; 149 INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5); 150 SELECT * FROM t1 order by a; 151 } 152 } {1 {NOT NULL constraint failed: t1.c}} 153 verify_ex_errcode notnull-1.16b SQLITE_CONSTRAINT_NOTNULL 154 do_test notnull-1.17 { 155 catchsql { 156 DELETE FROM t1; 157 INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,3,null,5); 158 SELECT * FROM t1 order by a; 159 } 160 } {1 {NOT NULL constraint failed: t1.d}} 161 verify_ex_errcode notnull-1.17b SQLITE_CONSTRAINT_NOTNULL 162 do_test notnull-1.18 { 163 catchsql { 164 DELETE FROM t1; 165 INSERT OR ABORT INTO t1(a,b,c,e) VALUES(1,2,3,5); 166 SELECT * FROM t1 order by a; 167 } 168 } {0 {1 2 3 7 5}} 169 do_test notnull-1.19 { 170 catchsql { 171 DELETE FROM t1; 172 INSERT INTO t1(a,b,c,d) VALUES(1,2,3,4); 173 SELECT * FROM t1 order by a; 174 } 175 } {0 {1 2 3 4 8}} 176 do_test notnull-1.20 { 177 catchsql { 178 DELETE FROM t1; 179 INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,null); 180 SELECT * FROM t1 order by a; 181 } 182 } {1 {NOT NULL constraint failed: t1.e}} 183 verify_ex_errcode notnull-1.20b SQLITE_CONSTRAINT_NOTNULL 184 do_test notnull-1.21 { 185 catchsql { 186 DELETE FROM t1; 187 INSERT OR REPLACE INTO t1(e,d,c,b,a) VALUES(1,2,3,null,5); 188 SELECT * FROM t1 order by a; 189 } 190 } {0 {5 5 3 2 1}} 191 192 do_test notnull-2.1 { 193 catchsql { 194 DELETE FROM t1; 195 INSERT INTO t1 VALUES(1,2,3,4,5); 196 UPDATE t1 SET a=null; 197 SELECT * FROM t1 ORDER BY a; 198 } 199 } {1 {NOT NULL constraint failed: t1.a}} 200 verify_ex_errcode notnull-2.1b SQLITE_CONSTRAINT_NOTNULL 201 do_test notnull-2.2 { 202 catchsql { 203 DELETE FROM t1; 204 INSERT INTO t1 VALUES(1,2,3,4,5); 205 UPDATE OR REPLACE t1 SET a=null; 206 SELECT * FROM t1 ORDER BY a; 207 } 208 } {1 {NOT NULL constraint failed: t1.a}} 209 verify_ex_errcode notnull-2.2b SQLITE_CONSTRAINT_NOTNULL 210 do_test notnull-2.3 { 211 catchsql { 212 DELETE FROM t1; 213 INSERT INTO t1 VALUES(1,2,3,4,5); 214 UPDATE OR IGNORE t1 SET a=null; 215 SELECT * FROM t1 ORDER BY a; 216 } 217 } {0 {1 2 3 4 5}} 218 do_test notnull-2.4 { 219 catchsql { 220 DELETE FROM t1; 221 INSERT INTO t1 VALUES(1,2,3,4,5); 222 UPDATE OR ABORT t1 SET a=null; 223 SELECT * FROM t1 ORDER BY a; 224 } 225 } {1 {NOT NULL constraint failed: t1.a}} 226 verify_ex_errcode notnull-2.4b SQLITE_CONSTRAINT_NOTNULL 227 do_test notnull-2.5 { 228 catchsql { 229 DELETE FROM t1; 230 INSERT INTO t1 VALUES(1,2,3,4,5); 231 UPDATE t1 SET b=null; 232 SELECT * FROM t1 ORDER BY a; 233 } 234 } {1 {NOT NULL constraint failed: t1.b}} 235 verify_ex_errcode notnull-2.6b SQLITE_CONSTRAINT_NOTNULL 236 do_test notnull-2.6 { 237 catchsql { 238 DELETE FROM t1; 239 INSERT INTO t1 VALUES(1,2,3,4,5); 240 UPDATE OR REPLACE t1 SET b=null, d=e, e=d; 241 SELECT * FROM t1 ORDER BY a; 242 } 243 } {0 {1 5 3 5 4}} 244 do_test notnull-2.7 { 245 catchsql { 246 DELETE FROM t1; 247 INSERT INTO t1 VALUES(1,2,3,4,5); 248 UPDATE OR IGNORE t1 SET b=null, d=e, e=d; 249 SELECT * FROM t1 ORDER BY a; 250 } 251 } {0 {1 2 3 4 5}} 252 do_test notnull-2.8 { 253 catchsql { 254 DELETE FROM t1; 255 INSERT INTO t1 VALUES(1,2,3,4,5); 256 UPDATE t1 SET c=null, d=e, e=d; 257 SELECT * FROM t1 ORDER BY a; 258 } 259 } {0 {1 2 6 5 4}} 260 do_test notnull-2.9 { 261 catchsql { 262 DELETE FROM t1; 263 INSERT INTO t1 VALUES(1,2,3,4,5); 264 UPDATE t1 SET d=null, a=b, b=a; 265 SELECT * FROM t1 ORDER BY a; 266 } 267 } {0 {1 2 3 4 5}} 268 do_test notnull-2.10 { 269 catchsql { 270 DELETE FROM t1; 271 INSERT INTO t1 VALUES(1,2,3,4,5); 272 UPDATE t1 SET e=null, a=b, b=a; 273 SELECT * FROM t1 ORDER BY a; 274 } 275 } {1 {NOT NULL constraint failed: t1.e}} 276 verify_ex_errcode notnull-2.10b SQLITE_CONSTRAINT_NOTNULL 277 278 do_test notnull-3.0 { 279 execsql { 280 CREATE INDEX t1a ON t1(a); 281 CREATE INDEX t1b ON t1(b); 282 CREATE INDEX t1c ON t1(c); 283 CREATE INDEX t1d ON t1(d); 284 CREATE INDEX t1e ON t1(e); 285 CREATE INDEX t1abc ON t1(a,b,c); 286 } 287 } {} 288 do_test notnull-3.1 { 289 catchsql { 290 DELETE FROM t1; 291 INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 292 SELECT * FROM t1 order by a; 293 } 294 } {0 {1 2 3 4 5}} 295 do_test notnull-3.2 { 296 catchsql { 297 DELETE FROM t1; 298 INSERT INTO t1(b,c,d,e) VALUES(2,3,4,5); 299 SELECT * FROM t1 order by a; 300 } 301 } {1 {NOT NULL constraint failed: t1.a}} 302 verify_ex_errcode notnull-3.2b SQLITE_CONSTRAINT_NOTNULL 303 do_test notnull-3.3 { 304 catchsql { 305 DELETE FROM t1; 306 INSERT OR IGNORE INTO t1(b,c,d,e) VALUES(2,3,4,5); 307 SELECT * FROM t1 order by a; 308 } 309 } {0 {}} 310 do_test notnull-3.4 { 311 catchsql { 312 DELETE FROM t1; 313 INSERT OR REPLACE INTO t1(b,c,d,e) VALUES(2,3,4,5); 314 SELECT * FROM t1 order by a; 315 } 316 } {1 {NOT NULL constraint failed: t1.a}} 317 verify_ex_errcode notnull-3.4b SQLITE_CONSTRAINT_NOTNULL 318 do_test notnull-3.5 { 319 catchsql { 320 DELETE FROM t1; 321 INSERT OR ABORT INTO t1(b,c,d,e) VALUES(2,3,4,5); 322 SELECT * FROM t1 order by a; 323 } 324 } {1 {NOT NULL constraint failed: t1.a}} 325 verify_ex_errcode notnull-3.5b SQLITE_CONSTRAINT_NOTNULL 326 do_test notnull-3.6 { 327 catchsql { 328 DELETE FROM t1; 329 INSERT INTO t1(a,c,d,e) VALUES(1,3,4,5); 330 SELECT * FROM t1 order by a; 331 } 332 } {0 {1 5 3 4 5}} 333 do_test notnull-3.7 { 334 catchsql { 335 DELETE FROM t1; 336 INSERT OR IGNORE INTO t1(a,c,d,e) VALUES(1,3,4,5); 337 SELECT * FROM t1 order by a; 338 } 339 } {0 {1 5 3 4 5}} 340 do_test notnull-3.8 { 341 catchsql { 342 DELETE FROM t1; 343 INSERT OR REPLACE INTO t1(a,c,d,e) VALUES(1,3,4,5); 344 SELECT * FROM t1 order by a; 345 } 346 } {0 {1 5 3 4 5}} 347 do_test notnull-3.9 { 348 catchsql { 349 DELETE FROM t1; 350 INSERT OR ABORT INTO t1(a,c,d,e) VALUES(1,3,4,5); 351 SELECT * FROM t1 order by a; 352 } 353 } {0 {1 5 3 4 5}} 354 do_test notnull-3.10 { 355 catchsql { 356 DELETE FROM t1; 357 INSERT INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5); 358 SELECT * FROM t1 order by a; 359 } 360 } {1 {NOT NULL constraint failed: t1.b}} 361 verify_ex_errcode notnull-3.10b SQLITE_CONSTRAINT_NOTNULL 362 do_test notnull-3.11 { 363 catchsql { 364 DELETE FROM t1; 365 INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5); 366 SELECT * FROM t1 order by a; 367 } 368 } {0 {}} 369 do_test notnull-3.12 { 370 catchsql { 371 DELETE FROM t1; 372 INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5); 373 SELECT * FROM t1 order by a; 374 } 375 } {0 {1 5 3 4 5}} 376 do_test notnull-3.13 { 377 catchsql { 378 DELETE FROM t1; 379 INSERT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5); 380 SELECT * FROM t1 order by a; 381 } 382 } {0 {1 2 6 4 5}} 383 do_test notnull-3.14 { 384 catchsql { 385 DELETE FROM t1; 386 INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5); 387 SELECT * FROM t1 order by a; 388 } 389 } {0 {}} 390 do_test notnull-3.15 { 391 catchsql { 392 DELETE FROM t1; 393 INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5); 394 SELECT * FROM t1 order by a; 395 } 396 } {0 {1 2 6 4 5}} 397 do_test notnull-3.16 { 398 catchsql { 399 DELETE FROM t1; 400 INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5); 401 SELECT * FROM t1 order by a; 402 } 403 } {1 {NOT NULL constraint failed: t1.c}} 404 verify_ex_errcode notnull-3.16b SQLITE_CONSTRAINT_NOTNULL 405 do_test notnull-3.17 { 406 catchsql { 407 DELETE FROM t1; 408 INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,3,null,5); 409 SELECT * FROM t1 order by a; 410 } 411 } {1 {NOT NULL constraint failed: t1.d}} 412 verify_ex_errcode notnull-3.17b SQLITE_CONSTRAINT_NOTNULL 413 do_test notnull-3.18 { 414 catchsql { 415 DELETE FROM t1; 416 INSERT OR ABORT INTO t1(a,b,c,e) VALUES(1,2,3,5); 417 SELECT * FROM t1 order by a; 418 } 419 } {0 {1 2 3 7 5}} 420 do_test notnull-3.19 { 421 catchsql { 422 DELETE FROM t1; 423 INSERT INTO t1(a,b,c,d) VALUES(1,2,3,4); 424 SELECT * FROM t1 order by a; 425 } 426 } {0 {1 2 3 4 8}} 427 do_test notnull-3.20 { 428 catchsql { 429 DELETE FROM t1; 430 INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,null); 431 SELECT * FROM t1 order by a; 432 } 433 } {1 {NOT NULL constraint failed: t1.e}} 434 verify_ex_errcode notnull-3.20b SQLITE_CONSTRAINT_NOTNULL 435 do_test notnull-3.21 { 436 catchsql { 437 DELETE FROM t1; 438 INSERT OR REPLACE INTO t1(e,d,c,b,a) VALUES(1,2,3,null,5); 439 SELECT * FROM t1 order by a; 440 } 441 } {0 {5 5 3 2 1}} 442 443 do_test notnull-4.1 { 444 catchsql { 445 DELETE FROM t1; 446 INSERT INTO t1 VALUES(1,2,3,4,5); 447 UPDATE t1 SET a=null; 448 SELECT * FROM t1 ORDER BY a; 449 } 450 } {1 {NOT NULL constraint failed: t1.a}} 451 verify_ex_errcode notnull-4.1b SQLITE_CONSTRAINT_NOTNULL 452 do_test notnull-4.2 { 453 catchsql { 454 DELETE FROM t1; 455 INSERT INTO t1 VALUES(1,2,3,4,5); 456 UPDATE OR REPLACE t1 SET a=null; 457 SELECT * FROM t1 ORDER BY a; 458 } 459 } {1 {NOT NULL constraint failed: t1.a}} 460 verify_ex_errcode notnull-4.2b SQLITE_CONSTRAINT_NOTNULL 461 do_test notnull-4.3 { 462 catchsql { 463 DELETE FROM t1; 464 INSERT INTO t1 VALUES(1,2,3,4,5); 465 UPDATE OR IGNORE t1 SET a=null; 466 SELECT * FROM t1 ORDER BY a; 467 } 468 } {0 {1 2 3 4 5}} 469 do_test notnull-4.4 { 470 catchsql { 471 DELETE FROM t1; 472 INSERT INTO t1 VALUES(1,2,3,4,5); 473 UPDATE OR ABORT t1 SET a=null; 474 SELECT * FROM t1 ORDER BY a; 475 } 476 } {1 {NOT NULL constraint failed: t1.a}} 477 verify_ex_errcode notnull-4.4b SQLITE_CONSTRAINT_NOTNULL 478 do_test notnull-4.5 { 479 catchsql { 480 DELETE FROM t1; 481 INSERT INTO t1 VALUES(1,2,3,4,5); 482 UPDATE t1 SET b=null; 483 SELECT * FROM t1 ORDER BY a; 484 } 485 } {1 {NOT NULL constraint failed: t1.b}} 486 verify_ex_errcode notnull-4.5b SQLITE_CONSTRAINT_NOTNULL 487 do_test notnull-4.6 { 488 catchsql { 489 DELETE FROM t1; 490 INSERT INTO t1 VALUES(1,2,3,4,5); 491 UPDATE OR REPLACE t1 SET b=null, d=e, e=d; 492 SELECT * FROM t1 ORDER BY a; 493 } 494 } {0 {1 5 3 5 4}} 495 do_test notnull-4.7 { 496 catchsql { 497 DELETE FROM t1; 498 INSERT INTO t1 VALUES(1,2,3,4,5); 499 UPDATE OR IGNORE t1 SET b=null, d=e, e=d; 500 SELECT * FROM t1 ORDER BY a; 501 } 502 } {0 {1 2 3 4 5}} 503 do_test notnull-4.8 { 504 catchsql { 505 DELETE FROM t1; 506 INSERT INTO t1 VALUES(1,2,3,4,5); 507 UPDATE t1 SET c=null, d=e, e=d; 508 SELECT * FROM t1 ORDER BY a; 509 } 510 } {0 {1 2 6 5 4}} 511 do_test notnull-4.9 { 512 catchsql { 513 DELETE FROM t1; 514 INSERT INTO t1 VALUES(1,2,3,4,5); 515 UPDATE t1 SET d=null, a=b, b=a; 516 SELECT * FROM t1 ORDER BY a; 517 } 518 } {0 {1 2 3 4 5}} 519 do_test notnull-4.10 { 520 catchsql { 521 DELETE FROM t1; 522 INSERT INTO t1 VALUES(1,2,3,4,5); 523 UPDATE t1 SET e=null, a=b, b=a; 524 SELECT * FROM t1 ORDER BY a; 525 } 526 } {1 {NOT NULL constraint failed: t1.e}} 527 verify_ex_errcode notnull-4.10b SQLITE_CONSTRAINT_NOTNULL 528 529 # Test that bug 29ab7be99f is fixed. 530 # 531 do_test notnull-5.1 { 532 execsql { 533 DROP TABLE IF EXISTS t1; 534 CREATE TABLE t1(a, b NOT NULL); 535 CREATE TABLE t2(c, d); 536 INSERT INTO t2 VALUES(3, 4); 537 INSERT INTO t2 VALUES(5, NULL); 538 } 539 } {} 540 do_test notnull-5.2 { 541 catchsql { 542 INSERT INTO t1 VALUES(1, 2); 543 INSERT INTO t1 SELECT * FROM t2; 544 } 545 } {1 {NOT NULL constraint failed: t1.b}} 546 verify_ex_errcode notnull-5.2b SQLITE_CONSTRAINT_NOTNULL 547 do_test notnull-5.3 { 548 execsql { SELECT * FROM t1 } 549 } {1 2} 550 do_test notnull-5.4 { 551 catchsql { 552 DELETE FROM t1; 553 BEGIN; 554 INSERT INTO t1 VALUES(1, 2); 555 INSERT INTO t1 SELECT * FROM t2; 556 COMMIT; 557 } 558 } {1 {NOT NULL constraint failed: t1.b}} 559 verify_ex_errcode notnull-5.4b SQLITE_CONSTRAINT_NOTNULL 560 do_test notnull-5.5 { 561 execsql { SELECT * FROM t1 } 562 } {1 2} 563 564 #------------------------------------------------------------------------- 565 # Check that UNIQUE NOT NULL indexes are always recognized as such. 566 # 567 proc uses_op_next {sql} { 568 db eval "EXPLAIN $sql" a { 569 if {$a(opcode)=="Next"} { return 1 } 570 } 571 return 0 572 } 573 574 proc do_uses_op_next_test {tn sql res} { 575 uplevel [list do_test $tn [list uses_op_next $sql] $res] 576 } 577 578 reset_db 579 do_execsql_test notnull-6.0 { 580 CREATE TABLE t1(a UNIQUE); 581 CREATE TABLE t2(a NOT NULL UNIQUE); 582 CREATE TABLE t3(a UNIQUE NOT NULL); 583 CREATE TABLE t4(a NOT NULL); 584 CREATE UNIQUE INDEX t4a ON t4(a); 585 586 CREATE TABLE t5(a PRIMARY KEY); 587 CREATE TABLE t6(a PRIMARY KEY NOT NULL); 588 CREATE TABLE t7(a NOT NULL PRIMARY KEY); 589 CREATE TABLE t8(a PRIMARY KEY) WITHOUT ROWID; 590 591 CREATE TABLE t9(a PRIMARY KEY UNIQUE NOT NULL); 592 CREATE TABLE t10(a UNIQUE PRIMARY KEY NOT NULL); 593 } 594 595 do_uses_op_next_test notnull-6.1 "SELECT * FROM t1 WHERE a IS ?" 1 596 do_uses_op_next_test notnull-6.2 "SELECT * FROM t2 WHERE a IS ?" 0 597 do_uses_op_next_test notnull-6.3 "SELECT * FROM t3 WHERE a IS ?" 0 598 do_uses_op_next_test notnull-6.4 "SELECT * FROM t4 WHERE a IS ?" 0 599 600 do_uses_op_next_test notnull-6.5 "SELECT * FROM t5 WHERE a IS ?" 1 601 do_uses_op_next_test notnull-6.6 "SELECT * FROM t6 WHERE a IS ?" 0 602 do_uses_op_next_test notnull-6.7 "SELECT * FROM t7 WHERE a IS ?" 0 603 do_uses_op_next_test notnull-6.8 "SELECT * FROM t8 WHERE a IS ?" 0 604 605 do_uses_op_next_test notnull-6.9 "SELECT * FROM t8 WHERE a IS ?" 0 606 do_uses_op_next_test notnull-6.10 "SELECT * FROM t8 WHERE a IS ?" 0 607 608 finish_test