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