Changeset: 320e476e197b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=320e476e197b
Added Files:
        clients/mapilib/ChangeLog
        common/stream/ChangeLog
        monetdb5/modules/mal/Tests/pqueue2.mal
        sql/backends/monet5/datacell/Tests/datacell99.sql
        sql/backends/monet5/datacell/Tests/datacell99.stable.err
        sql/backends/monet5/datacell/Tests/datacell99.stable.out
        sql/backends/monet5/datacell/Tests/emili.sql
        sql/backends/monet5/datacell/Tests/emili.txt
        
sql/test/BugTracker-2014/Tests/crash_on_groupby_distinct_serial.Bug-3463.sql
        
sql/test/BugTracker-2014/Tests/crash_on_groupby_distinct_serial.Bug-3463.stable.err
        
sql/test/BugTracker-2014/Tests/crash_on_groupby_distinct_serial.Bug-3463.stable.out
        sql/test/BugTracker-2014/Tests/crash_on_or_with_in.Bug-3461.sql
        sql/test/BugTracker-2014/Tests/crash_on_or_with_in.Bug-3461.stable.err
        sql/test/BugTracker-2014/Tests/crash_on_or_with_in.Bug-3461.stable.out
        sql/test/BugTracker-2014/Tests/in_incorrect_multi.Bug-3462.sql
        sql/test/BugTracker-2014/Tests/in_incorrect_multi.Bug-3462.stable.err
        sql/test/BugTracker-2014/Tests/in_incorrect_multi.Bug-3462.stable.out
        sql/test/BugTracker-2014/Tests/select-having.Bug-3458.sql
        sql/test/BugTracker-2014/Tests/select-having.Bug-3458.stable.err
        sql/test/BugTracker-2014/Tests/select-having.Bug-3458.stable.out
        sql/test/BugTracker-2014/Tests/setreadonly_forgets_changes.Bug-3446.sql
        
sql/test/BugTracker-2014/Tests/setreadonly_forgets_changes.Bug-3446.stable.err
        
sql/test/BugTracker-2014/Tests/setreadonly_forgets_changes.Bug-3446.stable.out
Removed Files:
        sql/backends/monet5/datacell/Tests/emili/README
        sql/backends/monet5/datacell/Tests/emili/emili.sql
        sql/backends/monet5/datacell/Tests/emili/sensor.log.gz
        sql/backends/monet5/datacell/Tests/pair00.mal
        sql/backends/monet5/datacell/Tests/pair00.stable.err
        sql/backends/monet5/datacell/Tests/pair00.stable.out
        sql/backends/monet5/datacell/Tests/petrinet00.mal
        sql/backends/monet5/datacell/Tests/petrinet00.stable.err
        sql/backends/monet5/datacell/Tests/petrinet00.stable.out
Modified Files:
        clients/ChangeLog.Jan2014
        clients/Tests/exports.stable.out
        clients/mapiclient/dump.c
        clients/mapilib/mapi.c
        clients/odbc/driver/ODBCUtil.c
        clients/odbc/driver/SQLColumnPrivileges.c
        clients/odbc/driver/SQLColumns.c
        clients/odbc/driver/SQLConnect.c
        clients/odbc/driver/SQLExecDirect.c
        clients/odbc/driver/SQLForeignKeys.c
        clients/odbc/driver/SQLPrimaryKeys.c
        clients/odbc/driver/SQLProcedures.c
        clients/odbc/driver/SQLSetConnectAttr.c
        clients/odbc/driver/SQLSpecialColumns.c
        clients/odbc/driver/SQLStatistics.c
        clients/odbc/driver/SQLTablePrivileges.c
        clients/odbc/driver/SQLTables.c
        common/stream/stream.c
        common/stream/stream.h
        gdk/gdk.h
        gdk/gdk_atoms.c
        gdk/gdk_imprints.c
        gdk/gdk_logger.c
        gdk/gdk_sample.c
        gdk/gdk_system.h
        gdk/gdk_system_private.h
        gdk/gdk_utils.c
        geom/monetdb5/geom.c
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_session.c
        monetdb5/modules/atoms/blob.c
        monetdb5/modules/atoms/streams.c
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/kernel/algebra.h
        monetdb5/modules/kernel/algebra.mal
        monetdb5/modules/mal/Tests/All
        monetdb5/modules/mal/Tests/pqueue.mal
        monetdb5/modules/mal/Tests/pqueue.stable.out
        monetdb5/modules/mal/Tests/remote12.mal
        monetdb5/modules/mal/groupby.c
        monetdb5/modules/mal/joinpath.c
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/modules/mal/mal_mapi.h
        monetdb5/modules/mal/pqueue.c
        monetdb5/modules/mal/pqueue.h
        monetdb5/modules/mal/pqueue.mal
        monetdb5/modules/mal/remote.c
        monetdb5/modules/mal/sample.c
        monetdb5/modules/mal/sample.h
        monetdb5/modules/mal/sample.mal
        monetdb5/optimizer/opt_support.c
        sql/backends/monet5/datacell/Tests/All
        sql/backends/monet5/datacell/Tests/basket00.stable.err
        sql/backends/monet5/datacell/Tests/basket00.stable.out
        sql/backends/monet5/datacell/Tests/datacell00.sql
        sql/backends/monet5/datacell/Tests/dcload.sql
        sql/backends/monet5/datacell/Tests/dcload.stable.err
        sql/backends/monet5/datacell/Tests/emitter00.stable.err
        sql/backends/monet5/datacell/Tests/emitter00.stable.out
        sql/backends/monet5/datacell/Tests/receptor00.stable.err
        sql/backends/monet5/datacell/Tests/receptor00.stable.out
        sql/backends/monet5/datacell/Tests/scenario04.stable.out
        sql/backends/monet5/datacell/basket.c
        sql/backends/monet5/datacell/datacell.c
        sql/backends/monet5/datacell/petrinet.c
        sql/backends/monet5/datacell/receptor.mal
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_gencode.h
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_statistics.c
        sql/rel.txt
        sql/server/rel_optimizer.c
        sql/server/rel_select.c
        sql/test/BugTracker-2014/Tests/All
        testing/Mfilter.py.in
Branch: newstorage
Log Message:

merged with default


diffs (truncated from 5926 to 300 lines):

diff --git a/clients/ChangeLog.Jan2014 b/clients/ChangeLog.Jan2014
--- a/clients/ChangeLog.Jan2014
+++ b/clients/ChangeLog.Jan2014
@@ -1,3 +1,7 @@
 # ChangeLog file for clients
 # This file is updated with Maddlog
 
+* Tue Apr  1 2014 Sjoerd Mullender <sjo...@acm.org>
+- ODBC: Implemented {call procedure-name(...)} escape.  The version
+  {?=call ...} is not implemented.
+
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -177,7 +177,6 @@ BAT *BATreplace(BAT *b, BAT *n, bit forc
 BAT *BATrevert(BAT *b);
 BAT *BATroles(BAT *b, const char *hnme, const char *tnme);
 BAT *BATsample(BAT *b, BUN n);
-BAT *BATsample_(BAT *b, BUN n);
 BAT *BATsave(BAT *b);
 BAT *BATselect(BAT *b, const void *tl, const void *th);
 BAT *BATselect_(BAT *b, const void *tl, const void *th, bit li, bit hi);
@@ -310,7 +309,6 @@ size_t MT_getrss(void);
 void MT_global_exit(int status) __attribute__((__noreturn__));
 void MT_init(void);
 int MT_join_thread(MT_Id t);
-int MT_kill_thread(MT_Id t);
 int MT_lockf(char *filename, int mode, off_t off, off_t len);
 MT_Id MT_locktrace;
 unsigned long long MT_locktrace_cnt[65536];
@@ -800,7 +798,6 @@ str ALGstdevp(dbl *res, int *bid);
 str ALGsubjoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, bit 
*nil_matches, lng *estimate);
 str ALGsubleftjoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, bit 
*nil_matches, lng *estimate);
 str ALGsubouterjoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, bit 
*nil_matches, lng *estimate);
-str ALGsubsample(int *result, int *bid, int *param);
 str ALGsubselect1(bat *result, bat *bid, const void *low, const void *high, 
const bit *li, const bit *hi, const bit *anti);
 str ALGsubselect2(bat *result, bat *bid, bat *sid, const void *low, const void 
*high, const bit *li, const bit *hi, const bit *anti);
 str ALGsubslice_wrd(int *ret, bat *bid, wrd *start, wrd *end);
@@ -1995,7 +1992,6 @@ str SERVERdisconnectALL(int *ret);
 str SERVERdisconnectWithAlias(int *ret, str *db_alias);
 str SERVERerror(int *ret, int *idx);
 str SERVERexecute(int *ret, int *idx);
-void SERVERexit(void);
 str SERVERexplain(str *ret, int *idx);
 str SERVERfetch_all_rows(lng *ret, int *idx);
 str SERVERfetch_field_bat(int *bid, int *idx);
@@ -2986,7 +2982,7 @@ ssize_t mnstr_read_block(stream *s, void
 ssize_t mnstr_readline(stream *s, void *buf, size_t maxcnt);
 stream *mnstr_rstream(stream *s);
 void mnstr_set_byteorder(stream *s, char bigendian);
-void mnstr_settimeout(stream *s, unsigned int secs);
+void mnstr_settimeout(stream *s, unsigned int ms, int( *func)(void));
 int mnstr_type(stream *s);
 ssize_t mnstr_write(stream *s, const void *buf, size_t elmsize, size_t cnt);
 int mnstr_writeBte(stream *s, signed char val);
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -1185,153 +1185,17 @@ dump_table(Mapi mid, char *schema, char 
        return rc;
 }
 
-static int
-dump_external_functions(Mapi mid, const char *schema, const char *fname, 
stream *toConsole, const char dumpSystem)
-{
-       const char functions[] =
-               "SELECT \"f\".\"id\","
-                      "\"f\".\"name\","
-                      "\"f\".\"mod\","
-                      "\"f\".\"func\","
-                      "\"a\".\"name\","
-                      "\"a\".\"type\","
-                      "\"a\".\"type_digits\","
-                      "\"a\".\"type_scale\","
-                      "\"a\".\"number\", "
-                          "\"s\".\"name\" "
-               "FROM \"sys\".\"args\" \"a\","
-                    "\"sys\".\"functions\" \"f\", "
-                        "\"sys\".\"schemas\" \"s\" "
-               "WHERE \"f\".\"sql\" = FALSE AND "
-                     "\"a\".\"func_id\" = \"f\".\"id\" AND "
-                         "\"f\".\"schema_id\" = \"s\".\"id\" "
-                     "%s %s "
-               "ORDER BY \"f\".\"id\", \"a\".\"number\"";
-       char query[512];
-       MapiHdl hdl;
-       char *prev_f_id = NULL;
-       char *prev_f_mod = NULL;
-       char *prev_f_func = NULL;
-       char *prev_a_name = NULL;
-       char *prev_a_type = NULL;
-       char *prev_a_type_digits = NULL;
-       char *prev_a_type_scale = NULL;
-       char *sep = NULL;
-
-       snprintf(query, sizeof(query), functions,
-                       dumpSystem ? "" : "AND \"f\".\"id\"",
-                       dumpSystem ? "" : has_systemfunctions(mid) ? "NOT IN 
(SELECT \"function_id\" FROM \"sys\".\"systemfunctions\")" : "> 2000");
-       if ((hdl = mapi_query(mid, query)) == NULL || mapi_error(mid))
-               goto bailout;
-       while (!mnstr_errnr(toConsole) && mapi_fetch_row(hdl) != 0) {
-               char *f_id = mapi_fetch_field(hdl, 0);
-               char *f_name = mapi_fetch_field(hdl, 1);
-               char *f_mod = mapi_fetch_field(hdl, 2);
-               char *f_func = mapi_fetch_field(hdl, 3);
-               char *a_name = mapi_fetch_field(hdl, 4);
-               char *a_type = mapi_fetch_field(hdl, 5);
-               char *a_type_digits = mapi_fetch_field(hdl, 6);
-               char *a_type_scale = mapi_fetch_field(hdl, 7);
-               char *a_number = mapi_fetch_field(hdl, 8);
-               char *s_name = mapi_fetch_field(hdl, 9);
-
-               if (schema != NULL && strcmp(s_name, schema) != 0)
-                       continue;
-               if (fname != NULL && strcmp(f_name, fname) != 0)
-                       continue;
-
-               if (prev_f_id == NULL || strcmp(prev_f_id, f_id) != 0) {
-                       if (prev_f_id) {
-                               mnstr_printf(toConsole, ")");
-                               if (strcmp(prev_a_name, "result") == 0) {
-                                       mnstr_printf(toConsole, " RETURNS ");
-                                       dump_type(mid, toConsole, prev_a_type, 
prev_a_type_digits, prev_a_type_scale);
-                               }
-                               mnstr_printf(toConsole,
-                                            " EXTERNAL NAME \"%s\".\"%s\";\n",
-                                            prev_f_mod, prev_f_func);
-                               free(prev_f_id);
-                               free(prev_f_mod);
-                               free(prev_f_func);
-                               free(prev_a_name);
-                               free(prev_a_type);
-                               free(prev_a_type_digits);
-                               free(prev_a_type_scale);
-                       }
-                       if (strcmp(a_name, "result") == 0) {
-                               mnstr_printf(toConsole,
-                                            "CREATE FUNCTION \"%s\"(",
-                                            f_name);
-                       } else
-                               mnstr_printf(toConsole,
-                                            "CREATE PROCEDURE \"%s\"(",
-                                            f_name);
-                       prev_f_id = strdup(f_id);
-                       prev_f_mod = strdup(f_mod);
-                       prev_f_func = strdup(f_func);
-                       prev_a_name = strdup(a_name);
-                       prev_a_type = strdup(a_type);
-                       prev_a_type_digits = strdup(a_type_digits);
-                       prev_a_type_scale = strdup(a_type_scale);
-                       sep = "";
-               }
-               if (strcmp(a_name, "result") != 0 ||
-                   strcmp(a_number, "0") != 0) {
-                       mnstr_printf(toConsole, "%s\"%s\" ", sep, a_name);
-                       dump_type(mid, toConsole, a_type, a_type_digits, 
a_type_scale);
-                       sep = ", ";
-               }
-       }
-       if (prev_f_id) {
-               mnstr_printf(toConsole, ")");
-               if (strcmp(prev_a_name, "result") == 0) {
-                       mnstr_printf(toConsole, " RETURNS ");
-                       dump_type(mid, toConsole, prev_a_type, 
prev_a_type_digits, prev_a_type_scale);
-               }
-               mnstr_printf(toConsole,
-                            " EXTERNAL NAME \"%s\".\"%s\";\n",
-                            prev_f_mod, prev_f_func);
-               free(prev_f_id);
-       }
-       if (prev_f_mod)
-               free(prev_f_mod);
-       if (prev_f_func)
-               free(prev_f_func);
-       if (prev_a_name)
-               free(prev_a_name);
-       if (prev_a_type)
-               free(prev_a_type);
-       if (prev_a_type_digits)
-               free(prev_a_type_digits);
-       if (prev_a_type_scale)
-               free(prev_a_type_scale);
-
-       mapi_close_handle(hdl);
-       return mnstr_errnr(toConsole) ? 1 : 0;
-
-  bailout:
-       if (hdl) {
-               if (mapi_result_error(hdl))
-                       mapi_explain_result(hdl, stderr);
-               else
-                       mapi_explain_query(hdl, stderr);
-               mapi_close_handle(hdl);
-       } else
-               mapi_explain(mid, stderr);
-       return 1;
-}
-
 int
 dump_functions(Mapi mid, stream *toConsole, const char *sname, const char 
*fname)
 {
        const char functions[] =
-               "SELECT \"f\".\"func\", \"f\".\"name\", \"s\".\"name\" "
+               "SELECT \"f\".\"func\" "
                "FROM \"sys\".\"schemas\" \"s\","
                     "\"sys\".\"functions\" \"f\" "
                "WHERE \"f\".\"sql\" = TRUE AND "
                      "\"s\".\"id\" = \"f\".\"schema_id\""
                          "%s %s "
-                     "%s%s%s "
+                     "%s%s%s%s%s%s "
                "ORDER BY \"f\".\"id\"";
        MapiHdl hdl;
        char *q;
@@ -1357,11 +1221,6 @@ dump_functions(Mapi mid, stream *toConso
 
        dumpSystem = sname && fname;
 
-       if (dump_external_functions(mid, sname, fname, toConsole, dumpSystem)) {
-               if (schema)
-                       free(schema);
-               return 1;
-       }
        l = sizeof(functions) + (sname ? strlen(sname) : 0) + 100;
        q = malloc(l);
        snprintf(q, l, functions,
@@ -1369,20 +1228,16 @@ dump_functions(Mapi mid, stream *toConso
                 dumpSystem ? "" : has_systemfunctions(mid) ? "NOT IN (SELECT 
\"function_id\" FROM \"sys\".\"systemfunctions\")" : "> 2000",
                 sname ? " AND \"s\".\"name\" = '" : "",
                 sname ? sname : "",
-                sname ? "'" : "");
+                sname ? "'" : "",
+                fname ? " AND \"f\".\"name\" = '" : "",
+                fname ? fname : "",
+                fname ? "'" : "");
        hdl = mapi_query(mid, q);
        free(q);
        if (hdl == NULL || mapi_error(mid))
                goto bailout;
        while (!mnstr_errnr(toConsole) && mapi_fetch_row(hdl) != 0) {
                char *query = mapi_fetch_field(hdl, 0);
-               char *f_name = mapi_fetch_field(hdl, 1);
-               char *s_name = mapi_fetch_field(hdl, 2);
-
-               if (sname != NULL && strcmp(sname, s_name) != 0)
-                       continue;
-               if (fname != NULL && strcmp(fname, f_name) != 0)
-                       continue;
 
                mnstr_printf(toConsole, "%s\n", query);
        }
@@ -1733,8 +1588,6 @@ dump_database(Mapi mid, stream *toConsol
        hdl = NULL;
 
        /* dump tables and functions */
-       if (dump_external_functions(mid, NULL, NULL, toConsole, 0))
-               goto bailout;
        snprintf(query, sizeof(query), tables_and_functions,
                 has_systemfunctions(mid) ? "AND \"f\".\"id\" NOT IN (SELECT 
\"function_id\" FROM \"sys\".\"systemfunctions\") " : "");
        if ((hdl = mapi_query(mid, query)) == NULL ||
diff --git a/clients/mapilib/ChangeLog b/clients/mapilib/ChangeLog
new file mode 100644
--- /dev/null
+++ b/clients/mapilib/ChangeLog
@@ -0,0 +1,6 @@
+# ChangeLog file for mapilib
+# This file is updated with Maddlog
+
+* Fri Mar 28 2014 Sjoerd Mullender <sjo...@acm.org>
+- Changed mapi_timeout argument from seconds to milliseconds.
+
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -2988,8 +2988,8 @@ mapi_timeout(Mapi mid, unsigned int time
        mapi_check(mid, "mapi_timeout");
        if (mid->trace == MAPI_TRACE)
                printf("Set timeout to %u\n", timeout);
-       mnstr_settimeout(mid->to, timeout);
-       mnstr_settimeout(mid->from, timeout);
+       mnstr_settimeout(mid->to, timeout, NULL);
+       mnstr_settimeout(mid->from, timeout, NULL);
        return MOK;
 }
 
diff --git a/clients/odbc/driver/ODBCUtil.c b/clients/odbc/driver/ODBCUtil.c
--- a/clients/odbc/driver/ODBCUtil.c
+++ b/clients/odbc/driver/ODBCUtil.c
@@ -539,6 +539,49 @@ ODBCTranslateSQL(ODBCDbc *dbc, const SQL
                        free(nquery);
                        nquery = q;
                        q += n;
+               } else if (strncasecmp(p, "call ", 5) == 0) {
+                       const char *proc, *procend;
+
+                       p += 5;
+                       while (*p == ' ')
+                               p++;
+                       proc = p;
+                       while (*p && isascii(*p) && isalnum(*p))
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to