should be it

This commit is contained in:
2025-10-24 19:21:19 -05:00
parent a4b23fc57c
commit f09560c7b1
14047 changed files with 3161551 additions and 1 deletions

View File

@@ -0,0 +1,112 @@
# name: test/sql/binder/string_literal_binding.test
# description: Test string literal binding
# group: [binder]
statement ok
PRAGMA enable_verification
# string literals bind differently from strings
# they can be auto-cast to everything
# this is an integer comparison
query I
select '01'=1;
----
true
query I
SELECT cos('0')
----
1
# date comparison
query I
select date '1992-01-01'>'1991-01-01';
----
true
# Issue #9948 - this is a date comparison, and (2023-12-11 < 2023-12-11) = false
query I
select date '2023-12-11' < '2023-12-11 15:54:45.119';
----
false
# Issue #8529 - Inconsistent Date Partition Handling Between DuckDB and PostgreSQL
statement ok
CREATE TABLE test (
"date" DATE,
value VARCHAR
);
statement ok
INSERT INTO test VALUES ('2023-08-01', 1), ('2023-08-02', 2), ('2023-08-03', 3), ('2023-08-04', 4), ('2023-08-05', 5), ('2023-08-06', 6), ('2023-08-07', 7);
query II
SELECT * FROM test WHERE date >= '2023-08-05 00:00:00' AND date < '2023-08-06 00:00:00';
----
2023-08-05 5
# literals prefer to be strings
query I
SELECT '[hello]'[1];
----
[
query I
SELECT list('hello world')
----
[hello world]
# literals in IN clause work correctly
query I
select 1 IN ('1', '2');
----
true
# as does COALESCE with string literals
query I
SELECT COALESCE(1, '1');
----
1
# we can do equality comparison with string columns
query I
select i=1 from (values ('01')) t(i);
----
true
# or with an IN clause
query I
select i IN (1) from (values ('01')) t(i);
----
true
# consistency between IN and equality
query I
WITH cte AS (SELECT '01' AS s)
SELECT 1=s AS in_res FROM cte;
----
true
query I
WITH cte AS (SELECT '01' AS s)
SELECT 1 IN (s) AS in_res FROM cte;
----
true
# but not >
statement error
select i>1 from (values ('01')) t(i);
----
an explicit cast is required
# we cannot do the same comparison with string columns
statement error
select date '1992-01-01'>i from (values ('1991-01-01')) t(i);
----
Cannot compare values of type
# we cannot subscript dates or other types
statement error
select d[1] from (values (date '1992-01-01')) t(d);
----
No function matches the given name and argument types