Changeset: baa508cbea10 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=baa508cbea10
Modified Files:
        clients/mapiclient/mclient.c
        clients/mapiclient/tomograph.c
        clients/odbc/driver/SQLTables.c
        common/stream/stream.c
        gdk/gdk_imprints.c
        gdk/gdk_storage.c
        gdk/gdk_system.c
        monetdb5/extras/sphinx/sphinx.c
        monetdb5/mal/mal_builder.c
        monetdb5/mal/mal_debugger.c
        monetdb5/mal/mal_function.c
        monetdb5/mal/mal_profiler.c
        monetdb5/mal/mal_profiler.h
        monetdb5/mal/mal_readline.c
        monetdb5/mal/mal_recycle.c
        monetdb5/mal/mal_resolve.c
        monetdb5/modules/atoms/inet.c
        monetdb5/modules/atoms/url.c
        monetdb5/modules/kernel/aggr.c
        monetdb5/modules/mal/bbp.c
        monetdb5/modules/mal/mal_io.c
        monetdb5/modules/mal/profiler.c
        monetdb5/modules/mal/remote.c
        monetdb5/modules/mal/sysmon.c
        monetdb5/optimizer/opt_cluster.c
        monetdb5/optimizer/opt_dataflow.c
        monetdb5/optimizer/opt_macro.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_multiplex.c
        monetdb5/optimizer/opt_remap.c
        monetdb5/optimizer/opt_remoteQueries.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_cast.c
        sql/backends/monet5/sql_optimizer.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_statistics.c
        sql/backends/monet5/vaults/fits.c
        sql/server/rel_planner.c
        sql/server/rel_select.c
        tools/merovingian/client/monetdb.c
        tools/merovingian/daemon/argvcmds.c
        tools/merovingian/daemon/peering.c
Branch: default
Log Message:

Merge with Jan2014 branch.


diffs (truncated from 2165 to 300 lines):

diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -1467,7 +1467,7 @@ format_result(Mapi mid, MapiHdl hdl, cha
 
        do {
                /* handle errors first */
-               if ((reply = mapi_result_error(hdl)) != NULL) {
+               if (mapi_result_error(hdl) != NULL) {
                        mnstr_flush(toConsole);
                        if (formatter == TABLEformatter || formatter == 
CLEANformatter) {
                                mapi_noexplain(mid, "");
@@ -1836,7 +1836,7 @@ doFile(Mapi mid, const char *file, int u
        char *oldbuf = NULL, *buf = NULL;
        size_t length;
        size_t bufsiz = 0;
-       MapiHdl hdl = mapi_get_active(mid);
+       MapiHdl hdl;
        MapiMsg rc = MOK;
        int lineno = 1;
        enum hmyesno hassysfuncs = UNKNOWN;
diff --git a/clients/mapiclient/tomograph.c b/clients/mapiclient/tomograph.c
--- a/clients/mapiclient/tomograph.c
+++ b/clients/mapiclient/tomograph.c
@@ -852,7 +852,7 @@ dumpboxes(void)
                                                s++;
                                        fprintf(fcpu, "0 ");
                                        while (s) {
-                                               s = strchr(s + 1, (int) ' ');
+                                               s = strchr(s + 1, ' ');
                                                while (s && isspace((int) *s))
                                                        s++;
                                                if (s)
@@ -1241,9 +1241,9 @@ updmap(int idx)
        char *mod, *fcn, buf[BUFSIZ], *call = buf;
        int i, fnd = 0;
 
-       strcpy(buf, box[idx].fcn);
+       snprintf(buf, sizeof(buf), "%s", box[idx].fcn);
        mod = call;
-       fcn = strchr(call, (int) '.');
+       fcn = strchr(call, '.');
        if (fcn) {
                *fcn = 0;
                fcn++;
@@ -1341,6 +1341,11 @@ scandata(char *filename)
                }
                if (box[i].thread < 0 || box[i].clkstart < 0 || box[i].clkend < 
0 || box[i].ticks < 0 || box[i].memstart < 0 || box[i].memend < 0 || 
box[i].state < 0 || box[i].reads < 0 || box[i].writes < 0) {
                        fprintf(stderr, "scandata: sscanf() read negative 
value(s) from\n'%s'\n", line);
+                       continue; /* don't trust values */
+               }
+               if (box[i].thread >= MAXTHREADS) {
+                       fprintf(stderr, "scandata: sscanf() read too large 
value(s) from\n'%s'\n", line);
+                       continue; /* don't trust values */
                }
                box[i].fcn = strdup(buf);
                box[i].stmt = strdup(buf);
@@ -1379,8 +1384,8 @@ gnuplotheader(char *filename)
        fprintf(gnudata, "set tics front\n");
        tm = time(0);
        date = ctime(&tm);
-       if (strchr(date, (int) '\n'))
-               *strchr(date, (int) '\n') = 0;
+       if (strchr(date, '\n'))
+               *strchr(date, '\n') = 0;
        for (c = title; c && *c; c++)
                if (*c == '_')
                        *c = '-';
@@ -1409,7 +1414,7 @@ static void createTomogram(void)
                printf("ERROR in creation of %s\n", buf);
                exit(-1);
        }
-       *strchr(buf, (int) '.') = 0;
+       *strchr(buf, '.') = 0;
        gnuplotheader(buf);
        dumpboxes();
        showio();
@@ -1663,7 +1668,7 @@ update(int state, int thread, lng clktic
                box[idx].footstart = box[idx].footend = footprint;
                box[idx].reads = reads;
                box[idx].writes = writes;
-               s = strchr(stmt, (int) ']');
+               s = strchr(stmt, ']');
                if (s)
                        *s = 0;
                box[idx].stmt = stmt;
@@ -1751,7 +1756,7 @@ parser(char *row)
        if ((cc= strrchr(row,']')) == 0 || *(cc+1) !=0)
                return -1;
 
-       c = strchr(row, (int) '"');
+       c = strchr(row, '"');
        if (c == 0)
                return -2;
        if (strncmp(c + 1, "start", 5) == 0) {
@@ -1771,12 +1776,12 @@ parser(char *row)
                c += 9;
        } else {
                state = 0;
-               c = strchr(c + 1, (int) '"');
+               c = strchr(c + 1, '"');
                if (c == 0)
                        return -2;
        }
 
-       c = strchr(c + 1, (int) '"');
+       c = strchr(c + 1, '"');
        if (c) {
                /* convert time to epoch in seconds*/
                memset(&stm, 0, sizeof(struct tm));
@@ -1791,26 +1796,26 @@ parser(char *row)
                        assert(usec >= 0 && usec < 1000000);
                        clkticks += usec;
                }
-               c = strchr(c + 1, (int) '"');
+               c = strchr(c + 1, '"');
                if (clkticks < 0) {
                        fprintf(stderr, "parser: read negative value "LLFMT" 
from\n'%s'\n", clkticks, row);
                }
        } else
                return -3;
 
-       c = strchr(c + 1, (int) ',');
+       c = strchr(c + 1, ',');
        if (c == 0)
                return -4;
        thread = atoi(c + 1);
-       c = strchr(c + 1, (int) ',');
+       c = strchr(c + 1, ',');
        if (c == 0)
                return -5;
        ticks = strtoll(c + 1, NULL, 10);
-       c = strchr(c + 1, (int) ',');
+       c = strchr(c + 1, ',');
        if (c == 0)
                return -6;
        memory = strtoll(c + 1, NULL, 10);
-       c = strchr(c + 1, (int) ',');
+       c = strchr(c + 1, ',');
        if (c == 0)
                return -8;
 
@@ -1818,13 +1823,13 @@ parser(char *row)
        footprint = strtoll(c + 1, NULL, 10);
        if (debug && state < PING)
                fprintf(stderr, "%s\n", row);
-       c = strchr(c + 1, (int) ',');
+       c = strchr(c + 1, ',');
        if (c == 0 && state >= PING)
                goto wrapup;
 #endif
 
        reads = strtoll(c + 1, NULL, 10);
-       c = strchr(c + 1, (int) ',');
+       c = strchr(c + 1, ',');
        if (c == 0)
                return -8;
        writes = strtoll(c + 1, NULL, 10);
@@ -1832,7 +1837,7 @@ parser(char *row)
        /* check basic validity */
        if ((cc= strrchr(row,']')) == 0 || *(cc+1) !=0)
                return -1;
-       c = strchr(c + 1, (int) ',');
+       c = strchr(c + 1, ',');
        if (c == 0)
                return -9;
        c++;
@@ -1845,18 +1850,18 @@ parser(char *row)
                /* find genuine function calls */
                while (isspace((int) *fcn) && *fcn)
                        fcn++;
-               if (strchr(fcn, (int) '.') == 0)
+               if (strchr(fcn, '.') == 0)
                        return -10;
        } else {
-               fcn = strchr(fcn, (int) '"');
+               fcn = strchr(fcn, '"');
                if (fcn) {
                        fcn++;
-                       *strchr(fcn, (int) '"') = 0;
+                       *strchr(fcn, '"') = 0;
                }
        }
 
-       if (fcn && strchr(fcn, (int) '('))
-               *strchr(fcn, (int) '(') = 0;
+       if (fcn && strchr(fcn, '('))
+               *strchr(fcn, '(') = 0;
 
 #ifdef FOOTPRINT
 wrapup:
@@ -2263,19 +2268,20 @@ main(int argc, char **argv)
                        char *s;
                        if (optarg == 0)
                                break;
-                       startrange = strtoll(optarg, NULL, 10);
-                       if (strchr(optarg, (int) '-'))
-                               endrange = strtoll(strchr(optarg, (int) '-') + 
1, NULL, 10);
+                       startrange = strtoll(optarg, &s, 10);
+                       if (*s == '-')
+                               endrange = strtoll(s + 1, &s, 10);
                        else
                                endrange = startrange + 1000;
-                       s = strchr(optarg, (int) 'm');
-                       if (s && *(s + 1) == 's') {
+                       if (s[0] == 'm' && s[1] == 's') {
                                startrange *= 1000;
                                endrange *= 1000;
-                       } else { /* seconds */
-                               s = strchr(optarg, (int) 's');
+                       } else if (s[0] == 's') {
                                startrange *= 1000000;
                                endrange *= 1000000;
+                       } else {
+                               usage();
+                               exit(-1);
                        }
                        break;
                }
diff --git a/clients/odbc/driver/SQLTables.c b/clients/odbc/driver/SQLTables.c
--- a/clients/odbc/driver/SQLTables.c
+++ b/clients/odbc/driver/SQLTables.c
@@ -41,6 +41,52 @@
 #include "ODBCUtil.h"
 
 
+#define NCOLUMNS       5
+#define NROWS          5
+static const char *columnnames[NCOLUMNS] = {
+       "table_cat",
+       "table_schem",
+       "table_name",
+       "table_type",
+       "remarks"
+};
+static const char *columntypes[NCOLUMNS] = {
+       "varchar",
+       "varchar",
+       "varchar",
+       "varchar",
+       "varchar"
+};
+static const int columnlengths[NCOLUMNS] = {
+       1,
+       1,
+       1,
+       20,
+       1
+};
+static const char *tuples0[NCOLUMNS] = {
+       NULL, NULL, NULL, "GLOBAL TEMPORARY", NULL
+};
+static const char *tuples1[NCOLUMNS] = {
+       NULL, NULL, NULL, "LOCAL TEMPORARY", NULL
+};
+static const char *tuples2[NCOLUMNS] = {
+       NULL, NULL, NULL, "SYSTEM TABLE", NULL
+};
+static const char *tuples3[NCOLUMNS] = {
+       NULL, NULL, NULL, "TABLE", NULL
+};
+static const char *tuples4[NCOLUMNS] = {
+       NULL, NULL, NULL, "VIEW", NULL
+};
+static const char **tuples[NROWS] = {
+       tuples0,
+       tuples1,
+       tuples2,
+       tuples3,
+       tuples4
+};
+
 static SQLRETURN
 SQLTables_(ODBCStmt *stmt,
           SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
@@ -114,18 +160,9 @@ SQLTables_(ODBCStmt *stmt,
                   TableType &&
                   strcmp((char *) TableType, SQL_ALL_TABLE_TYPES) == 0) {
                /* Special case query to fetch all Table type names. */
-               query = strdup("select distinct "
-                                     "cast(null as varchar(1)) as table_cat, "
-                                     "cast(null as varchar(1)) as table_schem, 
"
-                                     "cast(null as varchar(1)) as table_name, "
-                                     "case when t.type = 0 and t.system = 
false and t.temporary = 0 then cast('TABLE' as varchar(20)) "
-                                     "when t.type = 0 and t.system = true and 
t.temporary = 0 then cast('SYSTEM TABLE' as varchar(20)) "
-                                     "when t.type = 1 then cast('VIEW' as 
varchar(20)) "
-                                     "when t.type = 0 and t.system = false and 
t.temporary = 1 then cast('LOCAL TEMPORARY' as varchar(20)) "
-                                     "else cast('INTERNAL TABLE TYPE' as 
varchar(20)) end as table_type, "
-                                     "cast(null as varchar(1)) as remarks "
-                              "from sys.tables t "
-                              "order by table_type");
+               mapi_virtual_result(stmt->hdl, NCOLUMNS, columnnames,
+                                   columntypes, columnlengths, NROWS, tuples);
+               return ODBCInitResult(stmt);
        } else {
                /* no special case argument values */
                char *query_end;
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to