Changeset: 05e97a4c3892 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=05e97a4c3892
Modified Files:
        sql/common/sql_types.c
        sql/test/SQLancer/Tests/sqlancer03.sql
        sql/test/SQLancer/Tests/sqlancer03.stable.out
Branch: Jun2020
Log Message:

Added test and fix for SQLancer query, ie when checking check that the types of 
all EC_ANY's are equal, skip if one is already EC_ANY


diffs (59 lines):

diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -603,7 +603,7 @@ sql_dup_subfunc(sql_allocator *sa, sql_f
                                sql_arg *s = m->data;
 
                                if (s->type.type->eclass == EC_ANY) {
-                                       if (!st)
+                                       if (!st || st->type->eclass == EC_ANY) 
/* if input parameter is ANY, skip validation */
                                                st = tn->data;
                                        else if (subtype_cmp(st, tn->data))
                                                return NULL;
diff --git a/sql/test/SQLancer/Tests/sqlancer03.sql 
b/sql/test/SQLancer/Tests/sqlancer03.sql
--- a/sql/test/SQLancer/Tests/sqlancer03.sql
+++ b/sql/test/SQLancer/Tests/sqlancer03.sql
@@ -15,3 +15,12 @@ SELECT v0.c0 FROM t0 FULL OUTER JOIN v0 
        -- empty
 
 ROLLBACK;
+
+START TRANSACTION; -- Bug 6918
+CREATE TABLE "sys"."t0" ("c0" BOOLEAN NOT NULL,"c1" BIGINT,CONSTRAINT 
"t0_c0_pkey" PRIMARY KEY ("c0"),CONSTRAINT "t0_c0_unique" UNIQUE ("c0"));
+create view v0(c0, c1, c2) as (select all 2.020551048E9, 0.16688174, 
0.3732000026221729 from t0 where t0.c0) with check option;
+SELECT sql_min(sql_max(NULL, ''), '') FROM v0 LEFT OUTER JOIN t0 ON true;
+SELECT sql_min(sql_max(NULL, ''), '');
+SELECT ALL length(upper(MIN(ALL CAST(((trim(CAST(r'' AS STRING(659)), 
CAST(r'o3%+i]抔DCöf▟nßOpNbybಜ7' AS STRING)))||(sql_min(sql_max(NULL, r''), 
splitpart(r'x', r',7+.', t0.c1)))) AS STRING(151))))), 0.4179268710155164 
+FROM v0 LEFT OUTER JOIN t0 ON NOT (t0.c0) WHERE t0.c0 GROUP BY 0.3584962, 
CAST(t0.c1 AS STRING(601)), t0.c1;
+ROLLBACK;
diff --git a/sql/test/SQLancer/Tests/sqlancer03.stable.out 
b/sql/test/SQLancer/Tests/sqlancer03.stable.out
--- a/sql/test/SQLancer/Tests/sqlancer03.stable.out
+++ b/sql/test/SQLancer/Tests/sqlancer03.stable.out
@@ -39,6 +39,27 @@ stdout of test 'sqlancer03` in directory
 % smallint # type
 % 1 # length
 #ROLLBACK;
+#START TRANSACTION;
+#CREATE TABLE "sys"."t0" ("c0" BOOLEAN NOT NULL,"c1" BIGINT,CONSTRAINT 
"t0_c0_pkey" PRIMARY KEY ("c0"),CONSTRAINT "t0_c0_unique" UNIQUE ("c0"));
+#create view v0(c0, c1, c2) as (select all 2.020551048E9, 0.16688174, 
0.3732000026221729 from t0 where t0.c0) with check option;
+#SELECT sql_min(sql_max(NULL, ''), '') FROM v0 LEFT OUTER JOIN t0 ON true;
+% .%12 # table_name
+% %12 # name
+% char # type
+% 0 # length
+#SELECT sql_min(sql_max(NULL, ''), '');
+% .%2 # table_name
+% %2 # name
+% char # type
+% 0 # length
+[ NULL ]
+#SELECT ALL length(upper(MIN(ALL CAST(((trim(CAST(r'' AS STRING(659)), 
CAST(r'o3%+i]抔DCöf▟nßOpNbybಜ7' AS STRING)))||(sql_min(sql_max(NULL, r''), 
splitpart(r'x', r',7+.', t0.c1)))) AS STRING(151))))), 0.4179268710155164 
+#FROM v0 LEFT OUTER JOIN t0 ON NOT (t0.c0) WHERE t0.c0 GROUP BY 0.3584962, 
CAST(t0.c1 AS STRING(601)), t0.c1;
+% .%24,        .%25 # table_name
+% %24, %25 # name
+% int, decimal # type
+% 1,   19 # length
+#ROLLBACK;
 
 # 17:14:16 >  
 # 17:14:16 >  "Done."
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to