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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to