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

Reply via email to