summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/returning1.test13
-rw-r--r--test/select7.test32
-rw-r--r--test/shell5.test12
-rw-r--r--test/window1.test18
4 files changed, 75 insertions, 0 deletions
diff --git a/test/returning1.test b/test/returning1.test
index 05bd445..e7be7c6 100644
--- a/test/returning1.test
+++ b/test/returning1.test
@@ -531,4 +531,17 @@ do_execsql_test 21.1 {
INSERT INTO sqlite_temp_schema DEFAULT VALUES RETURNING sqlite_temp_schema.name;
} {{}}
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 22.0 {
+ PRAGMA writable_schema=ON;
+ CREATE TABLE xyz (a);
+}
+do_catchsql_test 22.1 {
+ INSERT INTO sqlite_temp_schema DEFAULT VALUES
+ RETURNING
+ (SELECT * FROM xyz AS sqlite_master WHERE a=sqlite_master.name);
+} {1 {no such column: sqlite_master.name}}
+
+
finish_test
diff --git a/test/select7.test b/test/select7.test
index d705ebf..0c40510 100644
--- a/test/select7.test
+++ b/test/select7.test
@@ -155,6 +155,38 @@ if {[clang_sanitize_address]==0} {
}
}
+# https://issues.chromium.org/issues/358174302
+# Need to support an unlimited number of terms in a VALUES clause, even
+# if some of those terms contain double-quoted string literals.
+#
+do_execsql_test select7-6.5 {
+ DROP TABLE IF EXISTS t1;
+ CREATE TABLE t1(a,b,c);
+}
+sqlite3_limit db SQLITE_LIMIT_COMPOUND_SELECT 10
+sqlite3_db_config db SQLITE_DBCONFIG_DQS_DML 0
+do_catchsql_test select7-6.6 {
+ INSERT INTO t1 VALUES
+ (NULL,0,""), (X'',0.0,0.0), (X'',X'',""), (0.0,0.0,""), (NULL,NULL,0.0),
+ (0,"",0), (0.0,X'',0), ("",X'',0.0), (0.0,X'',NULL), (0,NULL,""),
+ (0,"",NULL), (0.0,NULL,X''), ("",X'',NULL), (NULL,0,""),
+ (0,NULL,0), (X'',X'',0.0);
+} {1 {no such column: "" - should this be a string literal in single-quotes?}}
+do_execsql_test select7-6.7 {
+ SELECT count(*) FROM t1;
+} {0}
+sqlite3_db_config db SQLITE_DBCONFIG_DQS_DML 1
+do_catchsql_test select7-6.8 {
+ INSERT INTO t1 VALUES
+ (NULL,0,""), (X'',0.0,0.0), (X'',X'',""), (0.0,0.0,""), (NULL,NULL,0.0),
+ (0,"",0), (0.0,X'',0), ("",X'',0.0), (0.0,X'',NULL), (0,NULL,""),
+ (0,"",NULL), (0.0,NULL,X''), ("",X'',NULL), (NULL,0,""),
+ (0,NULL,0), (X'',X'',0.0);
+} {0 {}}
+do_execsql_test select7-6.9 {
+ SELECT count(*) FROM t1;
+} {16}
+
# This block of tests verifies that bug aa92c76cd4 is fixed.
#
do_test select7-7.1 {
diff --git a/test/shell5.test b/test/shell5.test
index 877676d..8727eda 100644
--- a/test/shell5.test
+++ b/test/shell5.test
@@ -585,4 +585,16 @@ do_test shell5-7.1 {
SELECT * FROM t1;}
} {0 aaa|bbb|aaabbb}
+#-------------------------------------------------------------------------
+
+do_test shell5-8.1 {
+
+ set out [open shell5.csv w]
+ fconfigure $out -translation lf
+ puts $out x
+ close $out
+
+ catchcmd :memory: {.import --csv shell5.csv '""""""""""""""""""""""""""""""""""""""""""""""'}
+} {0 {}}
+
finish_test
diff --git a/test/window1.test b/test/window1.test
index d8348a8..457852c 100644
--- a/test/window1.test
+++ b/test/window1.test
@@ -2375,5 +2375,23 @@ do_execsql_test 77.2 {
SELECT max(~likely(x)) FILTER (WHERE true) FROM t1 INDEXED BY t1x GROUP BY x;
} {-2 -3 -5 -9}
+# 2024-05-23 https://sqlite.org/forum/forumpost/bf8f43aa522c2299
+#
+# A bug in group_concat() when used as a window function, reported
+# just hours after the 3.46.0 release, though first appearing
+# in 3.28.0.
+#
+# When used as a window function, a group_concat() was not
+# correctly distinguishing between NULL and empty-string for
+# its return value.
+#
+do_execsql_test 78.1 {
+ SELECT quote(group_concat(x) OVER ()) FROM (SELECT '' AS x);
+} ''
+do_execsql_test 78.2 {
+ SELECT quote(group_concat(x) OVER (
+ ORDER BY y RANGE BETWEEN 1 FOLLOWING AND 2 FOLLOWING
+ )) FROM (SELECT 'abc' AS x, 1 AS y);
+} NULL
finish_test