Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Allow comparison operators of a register against itself. Ticket [188f912b51cd802a], |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
401c9d30e06191d938503aae024bc453 |
User & Date: | drh 2019-12-24 01:53:05 |
References
2019-12-24
| ||
21:42 | Fix a minor performance regression from check-in [401c9d30e06191d9] (check-in: 76f54ee8 user: drh tags: trunk) | |
Context
2019-12-24
| ||
13:41 | Convert an ALWAYS() into an assert() with an extra error term. Dbsqlfuzz find, with test case in TH3. (check-in: b473ad35 user: drh tags: trunk) | |
01:53 | Allow comparison operators of a register against itself. Ticket [188f912b51cd802a], (check-in: 401c9d30 user: drh tags: trunk) | |
2019-12-23
| ||
21:11 | Test case for the zipfile-extension bug fix of the previous check-in. (check-in: bc8bfc7f user: drh tags: trunk) | |
Changes
Changes to src/vdbe.c.
︙ | ︙ | |||
2048 2049 2050 2051 2052 2053 2054 | if( (flags1 & MEM_Str)==0 && (flags1&(MEM_Int|MEM_Real|MEM_IntReal))!=0 ){ testcase( pIn1->flags & MEM_Int ); testcase( pIn1->flags & MEM_Real ); testcase( pIn1->flags & MEM_IntReal ); sqlite3VdbeMemStringify(pIn1, encoding, 1); testcase( (flags1&MEM_Dyn) != (pIn1->flags&MEM_Dyn) ); flags1 = (pIn1->flags & ~MEM_TypeMask) | (flags1 & MEM_TypeMask); | < > | > > | 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 | if( (flags1 & MEM_Str)==0 && (flags1&(MEM_Int|MEM_Real|MEM_IntReal))!=0 ){ testcase( pIn1->flags & MEM_Int ); testcase( pIn1->flags & MEM_Real ); testcase( pIn1->flags & MEM_IntReal ); sqlite3VdbeMemStringify(pIn1, encoding, 1); testcase( (flags1&MEM_Dyn) != (pIn1->flags&MEM_Dyn) ); flags1 = (pIn1->flags & ~MEM_TypeMask) | (flags1 & MEM_TypeMask); } if( (flags3 & MEM_Str)==0 && (flags3&(MEM_Int|MEM_Real|MEM_IntReal))!=0 && pIn1!=pIn3 ){ testcase( pIn3->flags & MEM_Int ); testcase( pIn3->flags & MEM_Real ); testcase( pIn3->flags & MEM_IntReal ); sqlite3VdbeMemStringify(pIn3, encoding, 1); testcase( (flags3&MEM_Dyn) != (pIn3->flags&MEM_Dyn) ); flags3 = (pIn3->flags & ~MEM_TypeMask) | (flags3 & MEM_TypeMask); } |
︙ | ︙ |
Changes to test/check.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2005 November 2 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing CHECK constraints # | < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # 2005 November 2 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing CHECK constraints # set testdir [file dirname $argv0] source $testdir/tester.tcl set ::testprefix check # Only run these tests if the build includes support for CHECK constraints ifcapable !check { |
︙ | ︙ | |||
532 533 534 535 536 537 538 | do_execsql_test 11.5 { INSERT INTO t2(b, a) VALUES(1, 'abc'||''); } do_execsql_test 11.6 { INSERT INTO t2(b, a) VALUES(2, 'abc'); } | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 | do_execsql_test 11.5 { INSERT INTO t2(b, a) VALUES(1, 'abc'||''); } do_execsql_test 11.6 { INSERT INTO t2(b, a) VALUES(2, 'abc'); } # 2019-12-24 ticket b383b90278186263 # reset_db do_execsql_test 12.10 { CREATE TABLE t1(a TEXT, CHECK(a=+a)); INSERT INTO t1(a) VALUES(NULL),('xyz'),(5),(x'303132'),(4.75); SELECT quote(a) FROM t1 ORDER BY rowid; } {NULL 'xyz' '5' X'303132' '4.75'} do_execsql_test 12.20 { DROP TABLE t1; CREATE TABLE t1(a TEXT, CHECK(a<>+a)); INSERT INTO t1(a) VALUES(NULL); } {} do_catchsql_test 12.21 { INSERT INTO t1(a) VALUES('xyz'); } {1 {CHECK constraint failed: t1}} do_catchsql_test 12.22 { INSERT INTO t1(a) VALUES(123); } {1 {CHECK constraint failed: t1}} do_execsql_test 12.30 { DROP TABLE t1; CREATE TABLE t1(a TEXT, CHECK(NOT(a=+a))); INSERT INTO t1(a) VALUES(NULL); } {} do_catchsql_test 12.31 { INSERT INTO t1(a) VALUES('xyz'); } {1 {CHECK constraint failed: t1}} do_catchsql_test 12.32 { INSERT INTO t1(a) VALUES(123); } {1 {CHECK constraint failed: t1}} do_execsql_test 12.40 { DROP TABLE t1; CREATE TABLE t1(a TEXT, CHECK(NOT(a<>+a))); INSERT INTO t1(a) VALUES(NULL),('xyz'),(5),(x'303132'),(4.75); SELECT quote(a) FROM t1 ORDER BY rowid; } {NULL 'xyz' '5' X'303132' '4.75'} do_execsql_test 12.50 { DROP TABLE t1; CREATE TABLE t1(a TEXT, CHECK(a BETWEEN 0 AND +a)); INSERT INTO t1(a) VALUES(NULL),('xyz'),(5),(x'303132'),(4.75); SELECT quote(a) FROM t1 ORDER BY rowid; } {NULL 'xyz' '5' X'303132' '4.75'} do_execsql_test 12.60 { DROP TABLE t1; CREATE TABLE t1(a TEXT, CHECK(a NOT BETWEEN 0 AND +a)); INSERT INTO t1(a) VALUES(NULL); SELECT quote(a) FROM t1 ORDER BY rowid; } {NULL} do_catchsql_test 12.61 { INSERT INTO t1(a) VALUES(456); } {1 {CHECK constraint failed: t1}} do_execsql_test 12.70 { DROP TABLE t1; CREATE TABLE t1(a TEXT, CHECK(a BETWEEN +a AND 999999)); INSERT INTO t1(a) VALUES(NULL),(5); SELECT quote(a) FROM t1 ORDER BY rowid; } {NULL '5'} do_execsql_test 12.80 { DROP TABLE t1; CREATE TABLE t1(a TEXT, CHECK(a NOT BETWEEN +a AND 999999)); INSERT INTO t1(a) VALUES(NULL); SELECT quote(a) FROM t1 ORDER BY rowid; } {NULL} do_catchsql_test 12.81 { INSERT INTO t1(a) VALUES(456); } {1 {CHECK constraint failed: t1}} finish_test |