| # 2019-05-03 |
| # |
| # 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. |
| # |
| #*********************************************************************** |
| # Tests to exercise the MEM_IntReal representation of Mem objects. |
| # |
| set testdir [file dirname $argv0] |
| source $testdir/tester.tcl |
| set ::testprefix intreal |
| |
| sqlite3_create_function db |
| do_execsql_test 100 { |
| SELECT intreal(5); |
| } {5.0} |
| do_execsql_test 110 { |
| SELECT intreal(5)=5, 6=intreal(6); |
| } {1 1} |
| do_execsql_test 120 { |
| SELECT intreal(7)=7.0, 8.0=intreal(8); |
| } {1 1} |
| do_execsql_test 130 { |
| SELECT typeof(intreal(9)); |
| } {real} |
| do_execsql_test 140 { |
| SELECT 'a'||intreal(11)||'z'; |
| } {a11.0z} |
| |
| do_execsql_test 150 { |
| SELECT max(1.0,intreal(2),3.0), max(1,intreal(2),3); |
| } {3.0 3} |
| do_execsql_test 160 { |
| SELECT max(1.0,intreal(4),3.0), max(1,intreal(4),3); |
| } {4.0 4.0} |
| do_execsql_test 170 { |
| SELECT max(1.0,intreal(2),intreal(3),4.0), |
| max(1,intreal(2),intreal(3),4); |
| } {4.0 4} |
| do_execsql_test 180 { |
| SELECT max(1.0,intreal(5),intreal(3),4.0), |
| max(1,intreal(5),intreal(3),4); |
| } {5.0 5.0} |
| |
| #------------------------------------------------------------------------- |
| do_execsql_test 2.1 { |
| CREATE TABLE t2(a REAL); |
| INSERT INTO t2 VALUES( 836627109860825358 ); |
| SELECT substr(a,1,4) FROM t2 WHERE a = CAST(836627109860825358 AS REAL); |
| } {8.36} |
| |
| do_execsql_test 2.2 { |
| CREATE INDEX i2 ON t2(a); |
| SELECT substr(a,1,4) FROM t2 WHERE a = CAST(836627109860825358 AS REAL); |
| } {8.36} |
| |
| do_execsql_test 2.3 { |
| CREATE TABLE t0 (c0); |
| CREATE TABLE t1 (c1 REAL); |
| INSERT INTO t1(c1) VALUES (8366271098608253588); |
| INSERT INTO t0(c0) VALUES ('a'); |
| } |
| set D [db one {SELECT c1 FROM t1}] |
| |
| do_execsql_test 2.4 { |
| SELECT * FROM t1 WHERE (t1.c1 = CAST(8366271098608253588 AS REAL)); |
| } $D |
| |
| do_execsql_test 2.5 { |
| SELECT * FROM t0, t1 WHERE (t1.c1 = CAST(8366271098608253588 AS REAL)); |
| } [list a $D] |
| |
| do_execsql_test 2.6 { |
| SELECT * FROM t0, t1 |
| WHERE ( |
| t1.c1 >= CAST(8366271098608253588 AS REAL) |
| AND t1.c1 <= CAST(8366271098608253588 AS REAL) |
| ); |
| } [list a $D] |
| |
| # 2019-07-29 ticket ba2f4585cf495231 |
| # |
| db close |
| sqlite3 db :memory: |
| do_execsql_test 3.0 { |
| CREATE TABLE t0 (c0 REAL, c1); |
| CREATE UNIQUE INDEX i0 ON t0(c1, 0 | c0); |
| INSERT INTO t0(c0) VALUES (4750228396194493326), (0); |
| UPDATE OR REPLACE t0 SET c0 = 'a', c1 = ''; |
| SELECT * FROM t0 ORDER BY t0.c1; |
| PRAGMA integrity_check; |
| } {a {} ok} |
| |
| finish_test |