1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-01 06:27:03 +03:00

Allow comparison operators of a register against itself.

Ticket [188f912b51cd802a],

FossilOrigin-Name: 401c9d30e06191d938503aae024bc453d960fa64dc812ed86c661f94533247fd
This commit is contained in:
drh
2019-12-24 01:53:05 +00:00
parent 1e490c4ca6
commit 22c04f8199
4 changed files with 78 additions and 13 deletions

View File

@ -11,7 +11,6 @@
# This file implements regression tests for SQLite library. The
# focus of this file is testing CHECK constraints
#
# $Id: check.test,v 1.13 2009/06/05 17:09:12 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -536,7 +535,71 @@ do_execsql_test 11.6 {
INSERT INTO t2(b, a) VALUES(2, 'abc');
}
finish_test
# 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