Changeset: 316eb068aa55 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=316eb068aa55
Modified Files:
sql/common/sql_types.c
sql/test/SQLancer/Tests/sqlancer08.stable.err
sql/test/SQLancer/Tests/sqlancer08.stable.out
sql/test/sys-schema/Tests/systemfunctions.stable.out
sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
Branch: octbugs
Log Message:
Disable sql_mul function for fixed numeric types with larger digits than the
interval types
diffs (142 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
@@ -1684,11 +1684,14 @@ sqltypeinit( sql_allocator *sa)
sql_create_func(sa, "scale_up", "calc", "*", FALSE, FALSE,
SCALE_NONE, 0, *t, 2, *t, lt->type);
sql_create_func(sa, "scale_down", "sql", "dec_round", FALSE,
FALSE, SCALE_NONE, 0, *t, 2, *t, lt->type);
/* numeric functions on INTERVALS */
- sql_create_func(sa, "sql_mul", "calc", "*", FALSE, FALSE,
SCALE_MUL, 0, MONINT, 2, MONINT, *t);
+ if (t >= floats || (*t)->localtype <= MONINT->localtype)
+ sql_create_func(sa, "sql_mul", "calc", "*", FALSE,
FALSE, SCALE_MUL, 0, MONINT, 2, MONINT, *t);
+ if (t >= floats || (*t)->localtype <= DAYINT->localtype)
+ sql_create_func(sa, "sql_mul", "calc", "*", FALSE,
FALSE, SCALE_MUL, 0, DAYINT, 2, DAYINT, *t);
+ if (t >= floats || (*t)->localtype <= SECINT->localtype)
+ sql_create_func(sa, "sql_mul", "calc", "*", FALSE,
FALSE, SCALE_MUL, 0, SECINT, 2, SECINT, *t);
sql_create_func(sa, "sql_div", "calc", "/", FALSE, FALSE,
SCALE_DIV, 0, MONINT, 2, MONINT, *t);
- sql_create_func(sa, "sql_mul", "calc", "*", FALSE, FALSE,
SCALE_MUL, 0, DAYINT, 2, DAYINT, *t);
sql_create_func(sa, "sql_div", "calc", "/", FALSE, FALSE,
SCALE_DIV, 0, DAYINT, 2, DAYINT, *t);
- sql_create_func(sa, "sql_mul", "calc", "*", FALSE, FALSE,
SCALE_MUL, 0, SECINT, 2, SECINT, *t);
sql_create_func(sa, "sql_div", "calc", "/", FALSE, FALSE,
SCALE_DIV, 0, SECINT, 2, SECINT, *t);
}
@@ -1697,7 +1700,7 @@ sqltypeinit( sql_allocator *sa)
for (u = numerical; u != floats; u++) {
if (*u == OID)
continue;
- if ((*t)->localtype > (*u)->localtype) {
+ if ((*t)->localtype > (*u)->localtype) {
sql_create_func(sa, "sql_mul", "calc", "*",
FALSE, FALSE, SCALE_MUL, 0, *t, 2, *t, *u);
sql_create_func(sa, "sql_mul", "calc", "*",
FALSE, FALSE, SCALE_MUL, 0, *t, 2, *u, *t);
}
diff --git a/sql/test/SQLancer/Tests/sqlancer08.stable.err
b/sql/test/SQLancer/Tests/sqlancer08.stable.err
--- a/sql/test/SQLancer/Tests/sqlancer08.stable.err
+++ b/sql/test/SQLancer/Tests/sqlancer08.stable.err
@@ -29,6 +29,14 @@ MAPI = (monetdb) /var/tmp/mtest-340793/
QUERY = SELECT round(- (((-443710828)||(1616633099))), 789092170);
ERROR = !overflow in conversion of 789092170 to bte.
CODE = 22003
+MAPI = (monetdb) /var/tmp/mtest-25586/.s.monetdb.39158
+QUERY = PREPARE SELECT (1 + CAST(l0t0.c0 AS BIGINT)) * scale_up(?, 2) FROM
(select 1) AS l0t0(c0);
+ERROR = !SELECT: no such binary operator 'sql_mul(hugeint,month_interval)'
+CODE = 42000
+MAPI = (monetdb) /var/tmp/mtest-25586/.s.monetdb.39158
+QUERY = PREPARE SELECT DISTINCT ((((CAST(l0t0.c0 AS INT))-(CAST(? AS
BIGINT))))*(scale_up(?, ((-438139776)*(-813129345))))) FROM (select 1) AS
l0t0(c0);
+ERROR = !SELECT: no such binary operator 'sql_mul(hugeint,day_interval)'
+CODE = 42000
# 11:38:36 >
# 11:38:36 > "Done."
diff --git a/sql/test/SQLancer/Tests/sqlancer08.stable.out
b/sql/test/SQLancer/Tests/sqlancer08.stable.out
--- a/sql/test/SQLancer/Tests/sqlancer08.stable.out
+++ b/sql/test/SQLancer/Tests/sqlancer08.stable.out
@@ -311,6 +311,12 @@ stdout of test 'sqlancer08` in directory
[ "char", 0, 0, NULL, NULL, NULL ]
[ "bigint", 64, 0, NULL, NULL, NULL ]
[ "tinyint", 5, 0, NULL, NULL, NULL ]
+#select interval '1' month * cast(1 as bigint);
+% .%2 # table_name
+% %2 # name
+% month_interval # type
+% 1 # length
+[ 1 ]
# 11:38:36 >
# 11:38:36 > "Done."
diff --git a/sql/test/sys-schema/Tests/systemfunctions.stable.out
b/sql/test/sys-schema/Tests/systemfunctions.stable.out
--- a/sql/test/sys-schema/Tests/systemfunctions.stable.out
+++ b/sql/test/sys-schema/Tests/systemfunctions.stable.out
@@ -2789,9 +2789,6 @@ stdout of test 'systemfunctions` in dire
[ "sys", "sql_mul", 0, "bigint", "*" ]
[ "sys", "sql_mul", 1, "bigint", "" ]
[ "sys", "sql_mul", 2, "bigint", "" ]
-[ "sys", "sql_mul", 0, "month_interval", "*" ]
-[ "sys", "sql_mul", 1, "month_interval", "" ]
-[ "sys", "sql_mul", 2, "bigint", "" ]
[ "sys", "sql_mul", 0, "day_interval", "*" ]
[ "sys", "sql_mul", 1, "day_interval", "" ]
[ "sys", "sql_mul", 2, "bigint", "" ]
@@ -2837,9 +2834,6 @@ stdout of test 'systemfunctions` in dire
[ "sys", "sql_mul", 0, "decimal", "*" ]
[ "sys", "sql_mul", 1, "decimal", "" ]
[ "sys", "sql_mul", 2, "decimal", "" ]
-[ "sys", "sql_mul", 0, "month_interval", "*" ]
-[ "sys", "sql_mul", 1, "month_interval", "" ]
-[ "sys", "sql_mul", 2, "decimal", "" ]
[ "sys", "sql_mul", 0, "day_interval", "*" ]
[ "sys", "sql_mul", 1, "day_interval", "" ]
[ "sys", "sql_mul", 2, "decimal", "" ]
diff --git a/sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
b/sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
--- a/sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
+++ b/sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
@@ -3189,9 +3189,6 @@ stdout of test 'systemfunctions` in dire
[ "sys", "sql_mul", 0, "bigint", "*" ]
[ "sys", "sql_mul", 1, "bigint", "" ]
[ "sys", "sql_mul", 2, "bigint", "" ]
-[ "sys", "sql_mul", 0, "month_interval", "*" ]
-[ "sys", "sql_mul", 1, "month_interval", "" ]
-[ "sys", "sql_mul", 2, "bigint", "" ]
[ "sys", "sql_mul", 0, "day_interval", "*" ]
[ "sys", "sql_mul", 1, "day_interval", "" ]
[ "sys", "sql_mul", 2, "bigint", "" ]
@@ -3201,15 +3198,6 @@ stdout of test 'systemfunctions` in dire
[ "sys", "sql_mul", 0, "hugeint", "*" ]
[ "sys", "sql_mul", 1, "hugeint", "" ]
[ "sys", "sql_mul", 2, "hugeint", "" ]
-[ "sys", "sql_mul", 0, "month_interval", "*" ]
-[ "sys", "sql_mul", 1, "month_interval", "" ]
-[ "sys", "sql_mul", 2, "hugeint", "" ]
-[ "sys", "sql_mul", 0, "day_interval", "*" ]
-[ "sys", "sql_mul", 1, "day_interval", "" ]
-[ "sys", "sql_mul", 2, "hugeint", "" ]
-[ "sys", "sql_mul", 0, "sec_interval", "*" ]
-[ "sys", "sql_mul", 1, "sec_interval", "" ]
-[ "sys", "sql_mul", 2, "hugeint", "" ]
[ "sys", "sql_mul", 0, "decimal", "*" ]
[ "sys", "sql_mul", 1, "decimal", "" ]
[ "sys", "sql_mul", 2, "decimal", "" ]
@@ -3249,9 +3237,6 @@ stdout of test 'systemfunctions` in dire
[ "sys", "sql_mul", 0, "decimal", "*" ]
[ "sys", "sql_mul", 1, "decimal", "" ]
[ "sys", "sql_mul", 2, "decimal", "" ]
-[ "sys", "sql_mul", 0, "month_interval", "*" ]
-[ "sys", "sql_mul", 1, "month_interval", "" ]
-[ "sys", "sql_mul", 2, "decimal", "" ]
[ "sys", "sql_mul", 0, "day_interval", "*" ]
[ "sys", "sql_mul", 1, "day_interval", "" ]
[ "sys", "sql_mul", 2, "decimal", "" ]
@@ -3261,15 +3246,6 @@ stdout of test 'systemfunctions` in dire
[ "sys", "sql_mul", 0, "decimal", "*" ]
[ "sys", "sql_mul", 1, "decimal", "" ]
[ "sys", "sql_mul", 2, "decimal", "" ]
-[ "sys", "sql_mul", 0, "month_interval", "*" ]
-[ "sys", "sql_mul", 1, "month_interval", "" ]
-[ "sys", "sql_mul", 2, "decimal", "" ]
-[ "sys", "sql_mul", 0, "day_interval", "*" ]
-[ "sys", "sql_mul", 1, "day_interval", "" ]
-[ "sys", "sql_mul", 2, "decimal", "" ]
-[ "sys", "sql_mul", 0, "sec_interval", "*" ]
-[ "sys", "sql_mul", 1, "sec_interval", "" ]
-[ "sys", "sql_mul", 2, "decimal", "" ]
[ "sys", "sql_mul", 0, "real", "*" ]
[ "sys", "sql_mul", 1, "real", "" ]
[ "sys", "sql_mul", 2, "real", "" ]
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list