Changeset: 7c050cb2f20e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7c050cb2f20e
Removed Files:
sql/benchmarks/tpch/fileleak/Tests/All
sql/benchmarks/tpch/fileleak/Tests/check0.reqtests
sql/benchmarks/tpch/fileleak/Tests/check0.sql
sql/benchmarks/tpch/fileleak/Tests/check0.stable.err
sql/benchmarks/tpch/fileleak/Tests/check0.stable.out
sql/benchmarks/tpch/fileleak/Tests/check1.reqtests
sql/benchmarks/tpch/fileleak/Tests/check1.sql
sql/benchmarks/tpch/fileleak/Tests/check1.stable.err
sql/benchmarks/tpch/fileleak/Tests/check1.stable.out
sql/benchmarks/tpch/fileleak/Tests/create.sql.src
sql/benchmarks/tpch/fileleak/Tests/create.stable.err
sql/benchmarks/tpch/fileleak/Tests/create.stable.out
sql/benchmarks/tpch/fileleak/Tests/delete_all.SQL.py
sql/benchmarks/tpch/fileleak/Tests/delete_all.stable.err
sql/benchmarks/tpch/fileleak/Tests/delete_all.stable.out
sql/benchmarks/tpch/fileleak/Tests/leaks.SQL.py
sql/benchmarks/tpch/fileleak/Tests/leaks.stable.err
sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out
sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out.Windows
sql/benchmarks/tpch/fileleak/Tests/load.SQL.py
sql/benchmarks/tpch/fileleak/Tests/load.reqtests
sql/benchmarks/tpch/fileleak/Tests/load.stable.err
sql/benchmarks/tpch/fileleak/Tests/load.stable.out
sql/benchmarks/tpch/fileleak/Tests/test.py
sql/benchmarks/tpch/fileleak/Tests/test.sql
Modified Files:
clients/mapiclient/dump.c
monetdb5/optimizer/opt_candidates.c
sql/backends/monet5/sql_upgrades.c
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.int128
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: default
Log Message:
Merge with Jul2017 branch.
diffs (truncated from 41068 to 300 lines):
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -1214,26 +1214,27 @@ dump_table(Mapi mid, const char *schema,
}
static int
-dump_function(Mapi mid, stream *toConsole, const char *sname, const char
*fname, int hashge)
+dump_function(Mapi mid, stream *toConsole, const char *fid, int hashge)
{
MapiHdl hdl;
- size_t qlen = 200 + strlen(sname) + strlen(fname);
+ size_t qlen = 200 + strlen(fid);
char *query = malloc(qlen);
const char *sep;
- char *fid, *ffunc;
+ char *ffunc, *sname, *fname;
int flang, ftype;
- snprintf(query, qlen, "select f.id, f.func, f.language, f.type from
sys.functions f, sys.schemas s where f.schema_id = s.id and s.name = '%s' and
f.name = '%s'", sname, fname);
+ snprintf(query, qlen, "SELECT f.id, f.func, f.language, f.type, s.name,
f.name FROM sys.functions f, sys.schemas s WHERE f.schema_id = s.id AND f.id =
%s", fid);
hdl = mapi_query(mid, query);
if (mapi_fetch_row(hdl) == 0) {
free(query);
mapi_close_handle(hdl);
return 0; /* no such function, apparently */
}
- fid = mapi_fetch_field(hdl, 0);
ffunc = mapi_fetch_field(hdl, 1);
flang = atoi(mapi_fetch_field(hdl, 2));
ftype = atoi(mapi_fetch_field(hdl, 3));
+ sname = mapi_fetch_field(hdl, 4);
+ fname = mapi_fetch_field(hdl, 5);
if (flang == 1 || flang == 2) {
/* all information is stored in the func column */
mnstr_printf(toConsole, "%s\n", ffunc);
@@ -1357,22 +1358,14 @@ dump_function(Mapi mid, stream *toConsol
int
dump_functions(Mapi mid, stream *toConsole, const char *sname, const char
*fname)
{
- const char functions[] =
- "SELECT s.name, f.name "
- "FROM sys.schemas s, "
- "sys.functions f "
- "WHERE s.id = f.schema_id AND "
- "f.id NOT IN (SELECT function_id FROM
sys.systemfunctions) "
- "%s%s%s"
- "ORDER BY f.func";
MapiHdl hdl;
char *q;
size_t l;
int hashge = has_hugeint(mid);
+ const char *fid;
if (fname != NULL) {
/* dump a single function */
- int rc;
char *schema = NULL;
if (sname == NULL) {
@@ -1389,27 +1382,42 @@ dump_functions(Mapi mid, stream *toConso
}
sname = schema;
}
- rc = dump_function(mid, toConsole, sname, fname, hashge);
+ l = 200 + strlen(sname) + strlen(fname);
+ q = malloc(l);
+ snprintf(q, l,
+ "SELECT f.id "
+ "FROM sys.schemas s, sys.functions f "
+ "WHERE s.id = f.schema_id AND "
+ "s.name = '%s' AND "
+ "f.name = '%s' AND "
+ "f.language > 0 "
+ "ORDER BY f.func, f.id",
+ sname, fname);
if (schema)
free(schema);
- return rc;
+ } else {
+ l = 200 + (sname ? strlen(sname) : 0) + 100;
+ q = malloc(l);
+ snprintf(q, l,
+ "SELECT f.id "
+ "FROM sys.schemas s, "
+ "sys.functions f "
+ "WHERE s.id = f.schema_id AND "
+ "f.id NOT IN (SELECT function_id FROM
sys.systemfunctions) AND "
+ "f.language > 0 "
+ "%s%s%s"
+ "ORDER BY f.func, f.id",
+ sname ? "AND s.name = '" : "",
+ sname ? sname : "",
+ sname ? "' " : "");
}
-
- l = sizeof(functions) + (sname ? strlen(sname) : 0) + 100;
- q = malloc(l);
- snprintf(q, l, functions,
- sname ? "AND s.name = '" : "",
- sname ? sname : "",
- sname ? "' " : "");
hdl = mapi_query(mid, q);
free(q);
if (hdl == NULL || mapi_error(mid))
goto bailout;
while (!mnstr_errnr(toConsole) && mapi_fetch_row(hdl) != 0) {
- sname = mapi_fetch_field(hdl, 0);
- fname = mapi_fetch_field(hdl, 1);
-
- dump_function(mid, toConsole, sname, fname, hashge);
+ fid = mapi_fetch_field(hdl, 0);
+ dump_function(mid, toConsole, fid, hashge);
}
if (mapi_error(mid))
goto bailout;
@@ -1621,7 +1629,6 @@ dump_database(Mapi mid, stream *toConsol
MapiHdl hdl;
int create_hash_func = 0;
int rc = 0;
- int hashge;
/* start a transaction for the dump */
if (!describe)
@@ -1857,8 +1864,6 @@ dump_database(Mapi mid, stream *toConsol
mapi_close_handle(hdl);
hdl = NULL;
- hashge = has_hugeint(mid);
-
/* dump views, functions, and triggers */
if ((hdl = mapi_query(mid, views_functions_triggers)) == NULL ||
mapi_error(mid))
@@ -1888,7 +1893,7 @@ dump_database(Mapi mid, stream *toConsol
curschema);
}
if (type[0] == 'f')
- dump_function(mid, toConsole, schema, name, hashge);
+ dump_functions(mid, toConsole, schema, name);
else
mnstr_printf(toConsole, "%s\n", func);
}
diff --git a/monetdb5/optimizer/opt_candidates.c
b/monetdb5/optimizer/opt_candidates.c
--- a/monetdb5/optimizer/opt_candidates.c
+++ b/monetdb5/optimizer/opt_candidates.c
@@ -58,6 +58,8 @@ OPTcandidatesImplementation(Client cntxt
setVarCList(mb,getArg(p,0));
else if(getFunctionId(p) == intersectcandRef )
setVarCList(mb,getArg(p,0));
+ else if(getFunctionId(p) == subsliceRef )
+ setVarCList(mb,getArg(p,0));
}
else if( getModuleId(p) == generatorRef){
if(getFunctionId(p) == selectRef || getFunctionId(p) ==
thetaselectRef)
diff --git a/sql/backends/monet5/sql_upgrades.c
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -25,7 +25,6 @@
/* this function can be used to recreate the system tables (types,
* functions, args) when internal types and/or functions have changed
* (i.e. the ones in sql_types.c) */
-#ifdef HAVE_HGE /* currently only used in
sql_update_hugeint */
static str
sql_fix_system_tables(Client c, mvc *sql)
{
@@ -183,7 +182,6 @@ sql_fix_system_tables(Client c, mvc *sql
GDKfree(buf);
return err; /* usually MAL_SUCCEED */
}
-#endif
#ifdef HAVE_HGE
static str
@@ -854,6 +852,54 @@ sql_update_jul2017_sp2(Client c)
}
static str
+sql_update_jul2017_sp3(Client c, mvc *sql)
+{
+ char *err = NULL;
+ sql_schema *sys;
+ sql_table *tab;
+ sql_column *col;
+ oid rid;
+
+ /* if there is no value "sys_update_schemas" in
+ * sys.functions.name, we need to update the sys.functions
+ * table */
+ sys = find_sql_schema(sql->session->tr, "sys");
+ tab = find_sql_table(sys, "functions");
+ col = find_sql_column(tab, "name");
+ rid = table_funcs.column_find_row(sql->session->tr, col,
"sys_update_schemas", NULL);
+ if (rid == oid_nil) {
+ err = sql_fix_system_tables(c, sql);
+ if (err != NULL)
+ return err;
+ }
+ /* if there is no value "system_update_schemas" in
+ * sys.triggers.name, we need to add the triggers */
+ tab = find_sql_table(sys, "triggers");
+ col = find_sql_column(tab, "name");
+ rid = table_funcs.column_find_row(sql->session->tr, col,
"system_update_schemas", NULL);
+ if (rid == oid_nil) {
+ char *schema = stack_get_string(sql, "current_schema");
+ size_t bufsize = 1024, pos = 0;
+ char *buf = GDKmalloc(bufsize);
+ if (buf == NULL)
+ throw(SQL, "sql_update_jul2017_sp3", MAL_MALLOC_FAIL);
+ pos += snprintf(
+ buf + pos,
+ bufsize - pos,
+ "set schema \"sys\";\n"
+ "create trigger system_update_schemas after update on
sys.schemas for each statement call sys_update_schemas();\n"
+ "create trigger system_update_tables after update on
sys._tables for each statement call sys_update_tables();\n");
+ if (schema)
+ pos += snprintf(buf + pos, bufsize - pos, "set schema
\"%s\";\n", schema);
+ assert(pos < bufsize);
+ printf("Running database upgrade commands:\n%s\n", buf);
+ err = SQLstatementIntern(c, &buf, "update", 1, 0, NULL);
+ GDKfree(buf);
+ }
+ return err;
+}
+
+static str
sql_update_default(Client c, mvc *sql)
{
size_t bufsize = 10000, pos = 0;
@@ -1059,6 +1105,11 @@ SQLupgrades(Client c, mvc *m)
freeException(err);
}
+ if ((err = sql_update_jul2017_sp3(c, m)) != NULL) {
+ fprintf(stderr, "!%s\n", err);
+ freeException(err);
+ }
+
if (!sql_bind_func(m->sa, s, "master", NULL, NULL, F_PROC)) {
if ((err = sql_update_default(c, m)) != NULL) {
fprintf(stderr, "!%s\n", err);
diff --git a/sql/benchmarks/tpch/fileleak/Tests/All
b/sql/benchmarks/tpch/fileleak/Tests/All
deleted file mode 100644
--- a/sql/benchmarks/tpch/fileleak/Tests/All
+++ /dev/null
@@ -1,6 +0,0 @@
-create
-check0
-load
-check1
-HAVE_PYMONETDB?delete_all
-HAVE_PYMONETDB?leaks
diff --git a/sql/benchmarks/tpch/fileleak/Tests/check0.reqtests
b/sql/benchmarks/tpch/fileleak/Tests/check0.reqtests
deleted file mode 100644
--- a/sql/benchmarks/tpch/fileleak/Tests/check0.reqtests
+++ /dev/null
@@ -1,1 +0,0 @@
-create
diff --git a/sql/benchmarks/tpch/fileleak/Tests/check0.sql
b/sql/benchmarks/tpch/fileleak/Tests/check0.sql
deleted file mode 100644
--- a/sql/benchmarks/tpch/fileleak/Tests/check0.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-select * from customer;
-select * from nation;
-select * from orders;
-select * from partsupp;
-select * from part;
-select * from region;
-select * from supplier;
-select * from lineitem;
diff --git a/sql/benchmarks/tpch/fileleak/Tests/check0.stable.err
b/sql/benchmarks/tpch/fileleak/Tests/check0.stable.err
deleted file mode 100644
--- a/sql/benchmarks/tpch/fileleak/Tests/check0.stable.err
+++ /dev/null
@@ -1,17 +0,0 @@
-stderr of test 'check0` in directory 'sql/benchmarks/tpch/fileleak` itself:
-
-
-# 19:09:06 >
-# 19:09:06 > Mtimeout -timeout 180 Mserver
"--config=/var/tmp/_PREFIX_MONET_GNU_32_d__/etc/monet.conf" --debug=10 --set
"monet_mod_path=/var/tmp/_PREFIX_MONET_GNU_32_d__/lib/MonetDB:/var/tmp/_PREFIX_SQL_GNU_32_d__/lib/MonetDB"
--set "gdk_dbfarm=/var/tmp/_PREFIX_MONET_GNU_32_d__/var/MonetDB/dbfarm" --set
"sql_logdir=/var/tmp/_PREFIX_MONET_GNU_32_d__/var/MonetDB/log" --set
mapi_port=56086 --set sql_port=51688 --set monet_prompt= --trace
"--dbname=mTests_src_benchmarks_tpch"
"/var/tmp/_PREFIX_SQL_GNU_32_d__/lib/MonetDB/sqlserver.mil" ; echo ; echo Over..
-# 19:09:06 >
-
-
-# 19:09:06 >
-# 19:09:06 > Mtimeout -timeout 60 Msql -u monetdb -P monetdb --host=draco
--port=51688 --trace < check0.sql
-# 19:09:06 >
-
-
-# 19:09:06 >
-# 19:09:06 > Done.
-# 19:09:06 >
-
diff --git a/sql/benchmarks/tpch/fileleak/Tests/check0.stable.out
b/sql/benchmarks/tpch/fileleak/Tests/check0.stable.out
deleted file mode 100644
--- a/sql/benchmarks/tpch/fileleak/Tests/check0.stable.out
+++ /dev/null
@@ -1,63 +0,0 @@
-stdout of test 'check0` in directory 'sql/benchmarks/tpch/fileleak` itself:
-
-
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list