Changeset: e676782377be for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e676782377be
Added Files:
        sql/test/miscellaneous/Tests/prepare.sql
        sql/test/miscellaneous/Tests/prepare.stable.err
        sql/test/miscellaneous/Tests/prepare.stable.out
        sql/test/miscellaneous/Tests/prepare.stable.out.int128
Modified Files:
        sql/backends/monet5/sql_gencode.c
        sql/common/sql_types.c
        sql/test/miscellaneous/Tests/All
        sql/test/sys-schema/Tests/systemfunctions.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
Branch: Oct2020
Log Message:

Making Aris happy. When a prepared statement fails to compile, don't free the 
symbol, because the cq will do it. Also removed sql functions on OID type, 
because they have no MAL correspondent


diffs (truncated from 500 to 300 lines):

diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -786,7 +786,7 @@ backend_dumpproc(backend *be, Client c, 
        InstrPtr curInstr = 0;
        char arg[IDLENGTH];
        node *n;
-       int argc = 0, res;
+       int argc = 0, res, added_to_cache = 0;
 
        backup = c->curprg;
        if (cq)
@@ -840,6 +840,7 @@ backend_dumpproc(backend *be, Client c, 
 
        if (cq) {
                SQLaddQueryToCache(c);
+               added_to_cache = 1;
                // optimize this code the 'old' way
                if (m->emode == m_prepare && !c->curprg->def->errors)
                        c->curprg->def->errors = 
SQLoptimizeFunction(c,c->curprg->def);
@@ -856,7 +857,8 @@ backend_dumpproc(backend *be, Client c, 
        return curPrg;
 
 cleanup:
-       freeSymbol(curPrg);
+       if (!added_to_cache)
+               freeSymbol(curPrg);
        if (backup)
                c->curprg = backup;
        return NULL;
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
@@ -1358,6 +1358,8 @@ sqltypeinit( sql_allocator *sa)
 #endif
 
        for (t = numerical; t < dates; t++) {
+               if (*t == OID)
+                       continue;
                sql_create_func(sa, "mod", "calc", "%", FALSE, FALSE, 
SCALE_FIX, 0, *t, 2, *t, *t);
        }
 
@@ -1601,6 +1603,8 @@ sqltypeinit( sql_allocator *sa)
        for (t = numerical, t++; t != floats; t++) {
                sql_type **u;
                for (u = numerical, u++; u != decimals; u++) {
+                       if (*t == OID)
+                               continue;
                        if (t != u && (*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);
@@ -1623,6 +1627,9 @@ sqltypeinit( sql_allocator *sa)
        for (t = numerical; *t != TME; t++) {
                sql_subtype *lt;
 
+               if (*t == OID)
+                       continue;
+
                lt = sql_bind_localtype((*t)->base.name);
 
                sql_create_func(sa, "sql_sub", "calc", "-", FALSE, FALSE, 
SCALE_FIX, 0, *t, 2, *t, *t);
diff --git a/sql/test/miscellaneous/Tests/All b/sql/test/miscellaneous/Tests/All
--- a/sql/test/miscellaneous/Tests/All
+++ b/sql/test/miscellaneous/Tests/All
@@ -17,3 +17,4 @@ table_udf_missing_var
 create_func_temp
 simple_plans
 vessels
+prepare
diff --git a/sql/test/miscellaneous/Tests/prepare.sql 
b/sql/test/miscellaneous/Tests/prepare.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/miscellaneous/Tests/prepare.sql
@@ -0,0 +1,3 @@
+prepare select 1=?+?;
+exec ** (1,0);
+  --true
diff --git a/sql/test/miscellaneous/Tests/prepare.stable.err 
b/sql/test/miscellaneous/Tests/prepare.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/miscellaneous/Tests/prepare.stable.err
@@ -0,0 +1,12 @@
+stderr of test 'prepare` in directory 'sql/test/miscellaneous` itself:
+
+
+# 15:48:36 >  
+# 15:48:36 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-461643" "--port=32495"
+# 15:48:36 >  
+
+
+# 15:48:36 >  
+# 15:48:36 >  "Done."
+# 15:48:36 >  
+
diff --git a/sql/test/miscellaneous/Tests/prepare.stable.out 
b/sql/test/miscellaneous/Tests/prepare.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/miscellaneous/Tests/prepare.stable.out
@@ -0,0 +1,27 @@
+stdout of test 'prepare` in directory 'sql/test/miscellaneous` itself:
+
+
+# 15:48:36 >  
+# 15:48:36 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-461643" "--port=32495"
+# 15:48:36 >  
+
+#prepare select 1=?+?;
+#prepare select 1=?+?;
+% .prepare,    .prepare,       .prepare,       .prepare,       .prepare,       
.prepare # table_name
+% type,        digits, scale,  schema, table,  column # name
+% varchar,     int,    int,    str,    str,    str # type
+% 7,   2,      1,      0,      2,      2 # length
+[ "boolean",   1,      0,      "",     "%2",   "%2"    ]
+[ "bigint",    64,     0,      NULL,   NULL,   NULL    ]
+[ "bigint",    64,     0,      NULL,   NULL,   NULL    ]
+#exec  0 (1,0);
+% .%2 # table_name
+% %2 # name
+% boolean # type
+% 5 # length
+[ true ]
+
+# 15:48:36 >  
+# 15:48:36 >  "Done."
+# 15:48:36 >  
+
diff --git a/sql/test/miscellaneous/Tests/prepare.stable.out.int128 
b/sql/test/miscellaneous/Tests/prepare.stable.out.int128
new file mode 100644
--- /dev/null
+++ b/sql/test/miscellaneous/Tests/prepare.stable.out.int128
@@ -0,0 +1,27 @@
+stdout of test 'prepare` in directory 'sql/test/miscellaneous` itself:
+
+
+# 15:48:36 >  
+# 15:48:36 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-461643" "--port=32495"
+# 15:48:36 >  
+
+#prepare select 1=?+?;
+#prepare select 1=?+?;
+% .prepare,    .prepare,       .prepare,       .prepare,       .prepare,       
.prepare # table_name
+% type,        digits, scale,  schema, table,  column # name
+% varchar,     int,    int,    str,    str,    str # type
+% 7,   3,      1,      0,      2,      2 # length
+[ "boolean",   1,      0,      "",     "%2",   "%2"    ]
+[ "hugeint",   128,    0,      NULL,   NULL,   NULL    ]
+[ "hugeint",   128,    0,      NULL,   NULL,   NULL    ]
+#exec  0 (1,0);
+% .%2 # table_name
+% %2 # name
+% boolean # type
+% 5 # length
+[ true ]
+
+# 15:48:36 >  
+# 15:48:36 >  "Done."
+# 15:48:36 >  
+
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
@@ -106,8 +106,6 @@ stdout of test 'systemfunctions` in dire
 [ "sys",       ">=",   2,      "any",  ""      ]
 [ "sys",       "abbrev",       0,      "clob", "create function \"abbrev\" (p 
inet) returns clob\nexternal name inet.\"abbrev\";"      ]
 [ "sys",       "abbrev",       1,      "inet", ""      ]
-[ "sys",       "abs",  0,      "oid",  "abs"   ]
-[ "sys",       "abs",  1,      "oid",  ""      ]
 [ "sys",       "abs",  0,      "tinyint",      "abs"   ]
 [ "sys",       "abs",  1,      "tinyint",      ""      ]
 [ "sys",       "abs",  0,      "smallint",     "abs"   ]
@@ -258,9 +256,6 @@ stdout of test 'systemfunctions` in dire
 [ "sys",       "between",      6,      "boolean",      ""      ]
 [ "sys",       "between",      7,      "boolean",      ""      ]
 [ "sys",       "between",      8,      "boolean",      ""      ]
-[ "sys",       "bit_and",      0,      "oid",  "and"   ]
-[ "sys",       "bit_and",      1,      "oid",  ""      ]
-[ "sys",       "bit_and",      2,      "oid",  ""      ]
 [ "sys",       "bit_and",      0,      "tinyint",      "and"   ]
 [ "sys",       "bit_and",      1,      "tinyint",      ""      ]
 [ "sys",       "bit_and",      2,      "tinyint",      ""      ]
@@ -285,8 +280,6 @@ stdout of test 'systemfunctions` in dire
 [ "sys",       "bit_and",      0,      "decimal",      "and"   ]
 [ "sys",       "bit_and",      1,      "decimal",      ""      ]
 [ "sys",       "bit_and",      2,      "decimal",      ""      ]
-[ "sys",       "bit_not",      0,      "oid",  "not"   ]
-[ "sys",       "bit_not",      1,      "oid",  ""      ]
 [ "sys",       "bit_not",      0,      "tinyint",      "not"   ]
 [ "sys",       "bit_not",      1,      "tinyint",      ""      ]
 [ "sys",       "bit_not",      0,      "smallint",     "not"   ]
@@ -303,9 +296,6 @@ stdout of test 'systemfunctions` in dire
 [ "sys",       "bit_not",      1,      "decimal",      ""      ]
 [ "sys",       "bit_not",      0,      "decimal",      "not"   ]
 [ "sys",       "bit_not",      1,      "decimal",      ""      ]
-[ "sys",       "bit_or",       0,      "oid",  "or"    ]
-[ "sys",       "bit_or",       1,      "oid",  ""      ]
-[ "sys",       "bit_or",       2,      "oid",  ""      ]
 [ "sys",       "bit_or",       0,      "tinyint",      "or"    ]
 [ "sys",       "bit_or",       1,      "tinyint",      ""      ]
 [ "sys",       "bit_or",       2,      "tinyint",      ""      ]
@@ -330,9 +320,6 @@ stdout of test 'systemfunctions` in dire
 [ "sys",       "bit_or",       0,      "decimal",      "or"    ]
 [ "sys",       "bit_or",       1,      "decimal",      ""      ]
 [ "sys",       "bit_or",       2,      "decimal",      ""      ]
-[ "sys",       "bit_xor",      0,      "oid",  "xor"   ]
-[ "sys",       "bit_xor",      1,      "oid",  ""      ]
-[ "sys",       "bit_xor",      2,      "oid",  ""      ]
 [ "sys",       "bit_xor",      0,      "tinyint",      "xor"   ]
 [ "sys",       "bit_xor",      1,      "tinyint",      ""      ]
 [ "sys",       "bit_xor",      2,      "tinyint",      ""      ]
@@ -1104,9 +1091,6 @@ stdout of test 'systemfunctions` in dire
 [ "sys",       "left_shift",   0,      "boolean",      "mbrLeft"       ]
 [ "sys",       "left_shift",   1,      "mbr",  ""      ]
 [ "sys",       "left_shift",   2,      "mbr",  ""      ]
-[ "sys",       "left_shift",   0,      "oid",  "<<"    ]
-[ "sys",       "left_shift",   1,      "oid",  ""      ]
-[ "sys",       "left_shift",   2,      "int",  ""      ]
 [ "sys",       "left_shift",   0,      "tinyint",      "<<"    ]
 [ "sys",       "left_shift",   1,      "tinyint",      ""      ]
 [ "sys",       "left_shift",   2,      "int",  ""      ]
@@ -1439,9 +1423,6 @@ stdout of test 'systemfunctions` in dire
 [ "sys",       "minute",       1,      "timestamptz",  ""      ]
 [ "sys",       "minute",       0,      "int",  "minutes"       ]
 [ "sys",       "minute",       1,      "sec_interval", ""      ]
-[ "sys",       "mod",  0,      "oid",  "%"     ]
-[ "sys",       "mod",  1,      "oid",  ""      ]
-[ "sys",       "mod",  2,      "oid",  ""      ]
 [ "sys",       "mod",  0,      "tinyint",      "%"     ]
 [ "sys",       "mod",  1,      "tinyint",      ""      ]
 [ "sys",       "mod",  2,      "tinyint",      ""      ]
@@ -1841,9 +1822,6 @@ stdout of test 'systemfunctions` in dire
 [ "sys",       "right_shift",  0,      "boolean",      "mbrRight"      ]
 [ "sys",       "right_shift",  1,      "mbr",  ""      ]
 [ "sys",       "right_shift",  2,      "mbr",  ""      ]
-[ "sys",       "right_shift",  0,      "oid",  ">>"    ]
-[ "sys",       "right_shift",  1,      "oid",  ""      ]
-[ "sys",       "right_shift",  2,      "int",  ""      ]
 [ "sys",       "right_shift",  0,      "tinyint",      ">>"    ]
 [ "sys",       "right_shift",  1,      "tinyint",      ""      ]
 [ "sys",       "right_shift",  2,      "int",  ""      ]
@@ -1942,9 +1920,6 @@ stdout of test 'systemfunctions` in dire
 [ "sys",       "rtrim",        0,      "clob", "rtrim" ]
 [ "sys",       "rtrim",        1,      "clob", ""      ]
 [ "sys",       "rtrim",        2,      "clob", ""      ]
-[ "sys",       "scale_down",   0,      "oid",  "dec_round"     ]
-[ "sys",       "scale_down",   1,      "oid",  ""      ]
-[ "sys",       "scale_down",   2,      "oid",  ""      ]
 [ "sys",       "scale_down",   0,      "tinyint",      "dec_round"     ]
 [ "sys",       "scale_down",   1,      "tinyint",      ""      ]
 [ "sys",       "scale_down",   2,      "tinyint",      ""      ]
@@ -1981,9 +1956,6 @@ stdout of test 'systemfunctions` in dire
 [ "sys",       "scale_down",   0,      "sec_interval", "dec_round"     ]
 [ "sys",       "scale_down",   1,      "sec_interval", ""      ]
 [ "sys",       "scale_down",   2,      "bigint",       ""      ]
-[ "sys",       "scale_up",     0,      "oid",  "*"     ]
-[ "sys",       "scale_up",     1,      "oid",  ""      ]
-[ "sys",       "scale_up",     2,      "oid",  ""      ]
 [ "sys",       "scale_up",     0,      "tinyint",      "*"     ]
 [ "sys",       "scale_up",     1,      "tinyint",      ""      ]
 [ "sys",       "scale_up",     2,      "tinyint",      ""      ]
@@ -2294,8 +2266,6 @@ stdout of test 'systemfunctions` in dire
 [ "sys",       "shutdown",     0,      "tinyint",      "create procedure 
sys.shutdown(delay tinyint, force bool)\nexternal name sql.shutdown;" ]
 [ "sys",       "shutdown",     1,      "boolean",      ""      ]
 [ "sys",       "sign", 0,      "tinyint",      "sign"  ]
-[ "sys",       "sign", 1,      "oid",  ""      ]
-[ "sys",       "sign", 0,      "tinyint",      "sign"  ]
 [ "sys",       "sign", 1,      "tinyint",      ""      ]
 [ "sys",       "sign", 0,      "tinyint",      "sign"  ]
 [ "sys",       "sign", 1,      "smallint",     ""      ]
@@ -2360,9 +2330,6 @@ stdout of test 'systemfunctions` in dire
 [ "sys",       "splitpart",    1,      "clob", ""      ]
 [ "sys",       "splitpart",    2,      "clob", ""      ]
 [ "sys",       "splitpart",    3,      "int",  ""      ]
-[ "sys",       "sql_add",      0,      "oid",  "+"     ]
-[ "sys",       "sql_add",      1,      "oid",  ""      ]
-[ "sys",       "sql_add",      2,      "oid",  ""      ]
 [ "sys",       "sql_add",      0,      "tinyint",      "+"     ]
 [ "sys",       "sql_add",      1,      "tinyint",      ""      ]
 [ "sys",       "sql_add",      2,      "tinyint",      ""      ]
@@ -2471,15 +2438,6 @@ stdout of test 'systemfunctions` in dire
 [ "sys",       "sql_div",      0,      "decimal",      "/"     ]
 [ "sys",       "sql_div",      1,      "decimal",      ""      ]
 [ "sys",       "sql_div",      2,      "decimal",      ""      ]
-[ "sys",       "sql_div",      0,      "oid",  "/"     ]
-[ "sys",       "sql_div",      1,      "oid",  ""      ]
-[ "sys",       "sql_div",      2,      "oid",  ""      ]
-[ "sys",       "sql_div",      0,      "month_interval",       "/"     ]
-[ "sys",       "sql_div",      1,      "month_interval",       ""      ]
-[ "sys",       "sql_div",      2,      "oid",  ""      ]
-[ "sys",       "sql_div",      0,      "sec_interval", "/"     ]
-[ "sys",       "sql_div",      1,      "sec_interval", ""      ]
-[ "sys",       "sql_div",      2,      "oid",  ""      ]
 [ "sys",       "sql_div",      0,      "tinyint",      "/"     ]
 [ "sys",       "sql_div",      1,      "tinyint",      ""      ]
 [ "sys",       "sql_div",      2,      "tinyint",      ""      ]
@@ -2665,15 +2623,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,      "oid",  "*"     ]
-[ "sys",       "sql_mul",      1,      "oid",  ""      ]
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to