Changeset: 720c0bbce165 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=720c0bbce165
Added Files:
        gdk/gdk_aggr.c
        gdk/gdk_calc_private.h
        monetdb5/modules/kernel/aggr.c
        monetdb5/modules/kernel/aggr.mal
Removed Files:
        monetdb5/modules/kernel/aggr.mx
        monetdb5/modules/kernel/aggr_be_minmax.mx
        monetdb5/modules/kernel/aggr_bge_minmax.mx
        monetdb5/modules/kernel/aggr_ri.mx
Modified Files:
        clients/ChangeLog.Oct2012
        clients/Tests/exports.stable.out
        clients/mapiclient/Tests/mclient--help.stable.err
        clients/mapiclient/Tests/mclient--help.stable.err.Windows
        clients/mapiclient/dump.c
        clients/mapiclient/mclient.1
        clients/mapiclient/mclient.c
        clients/mapiclient/tomograph.c
        clients/mapilib/mapi.c
        clients/odbc/driver/ODBCConvert.c
        clients/odbc/driver/SQLExecute.c
        clients/python/test/control.py
        common/utils/msabaoth.c
        gdk/Makefile.ag
        gdk/gdk_atoms.c
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_bbp.c
        gdk/gdk_calc.c
        gdk/gdk_calc.h
        gdk/gdk_heap.c
        gdk/gdk_logger.c
        gdk/gdk_relop.mx
        gdk/gdk_storage.c
        gdk/gdk_utils.c
        java/src/nl/cwi/monetdb/merovingian/SabaothDB.java
        monetdb5/ChangeLog.Jul2012
        monetdb5/extras/jaql/jaql.mal
        monetdb5/extras/jaql/jaqlgencode.c
        monetdb5/extras/jaql/jaqltree.h
        monetdb5/extras/jaql/json.c
        monetdb5/mal/Tests/tst034.stable.out
        monetdb5/mal/Tests/tst274.stable.out.oid64
        monetdb5/mal/mal_atom.c
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_function.c
        monetdb5/mal/mal_linker.c
        monetdb5/mal/mal_parser.c
        monetdb5/mal/mal_profiler.c
        monetdb5/mal/mal_readline.c
        monetdb5/modules/kernel/Makefile.ag
        monetdb5/modules/kernel/status.c
        monetdb5/modules/mal/bbp.c
        monetdb5/modules/mal/clients.c
        monetdb5/modules/mal/cluster.c
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/modules/mal/tablet.c
        monetdb5/optimizer/opt_macro.c
        monetdb5/optimizer/opt_origin.c
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_wrapper.c
        sql/backends/monet5/sql.mx
        sql/backends/monet5/sql_result.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_user.c
        sql/backends/monet5/vaults/fits.c
        sql/server/rel_bin.c
        sql/server/rel_optimizer.c
        sql/server/rel_select.c
        sql/server/sql_atom.c
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        tools/merovingian/utils/control.c
        tools/merovingian/utils/database.c
        tools/merovingian/utils/utils.c
Branch: DVframework
Log Message:

merge with default.


diffs (truncated from 9199 to 300 lines):

diff --git a/clients/ChangeLog.Oct2012 b/clients/ChangeLog.Oct2012
--- a/clients/ChangeLog.Oct2012
+++ b/clients/ChangeLog.Oct2012
@@ -1,6 +1,9 @@
 # ChangeLog file for clients
 # This file is updated with Maddlog
 
+* Tue Sep  4 2012 Fabian Groffen <fab...@cwi.nl>
+- mclient now accepts URIs as database to connect to.
+
 * Thu Jul 19 2012 Gijs Molenaar <g.j.molen...@uva.nl>
 - all strings returned by python2 are unicode, removed use_unicode option
 - python2 and 3 type convertion speed improvements
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
@@ -118,6 +118,9 @@ PROPrec *BATgetprop(BAT *b, int idx);
 gdk_return BATgroup(BAT **groups, BAT **extents, BAT **histo, BAT *b, BAT *g, 
BAT *e, BAT *h);
 BAT *BATgroupavg(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int skip_nils, int 
abort_on_error);
 BAT *BATgroupcount(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int skip_nils, int 
abort_on_error);
+BAT *BATgroupmax(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int skip_nils, int 
abort_on_error);
+BAT *BATgroupmedian(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int skip_nils, int 
abort_on_error);
+BAT *BATgroupmin(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int skip_nils, int 
abort_on_error);
 BAT *BATgroupprod(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int skip_nils, int 
abort_on_error);
 BAT *BATgroupsize(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int skip_nils, int 
abort_on_error);
 BAT *BATgroupsum(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int skip_nils, int 
abort_on_error);
@@ -591,6 +594,11 @@ str AGGRcount2nonils(bat *retval, bat *b
 str AGGRcount3(bat *retval, bat *bid, bat *gid, bat *eid, bit *ignorenils);
 str AGGRcount3nils(bat *retval, bat *bid, bat *gid, bat *eid);
 str AGGRcount3nonils(bat *retval, bat *bid, bat *gid, bat *eid);
+str AGGRmax2(bat *retval, bat *bid, bat *eid);
+str AGGRmax3(bat *retval, bat *bid, bat *gid, bat *eid);
+str AGGRmedian(bat *retval, bat *bid, int *skip_nils);
+str AGGRmin2(bat *retval, bat *bid, bat *eid);
+str AGGRmin3(bat *retval, bat *bid, bat *gid, bat *eid);
 str AGGRprod2_bte(bat *retval, bat *bid, bat *eid);
 str AGGRprod2_dbl(bat *retval, bat *bid, bat *eid);
 str AGGRprod2_flt(bat *retval, bat *bid, bat *eid);
@@ -608,8 +616,14 @@ str AGGRprod3_wrd(bat *retval, bat *bid,
 str AGGRsize2(bat *retval, bat *bid, bat *eid);
 str AGGRsubavg_dbl(bat *retval, bat *bid, bat *gid, bat *eid, int *skip_nils, 
int *abort_on_error);
 str AGGRsubavgcand_dbl(bat *retval, bat *bid, bat *gid, bat *eid, bat *sid, 
int *skip_nils, int *abort_on_error);
-str AGGRsubcount(bat *retval, bat *bid, bat *gid, bat *eid, int *skip_nils, 
int *abort_on_error);
-str AGGRsubcountcand(bat *retval, bat *bid, bat *gid, bat *eid, bat *sid, int 
*skip_nils, int *abort_on_error);
+str AGGRsubcount(bat *retval, bat *bid, bat *gid, bat *eid, int *skip_nils);
+str AGGRsubcountcand(bat *retval, bat *bid, bat *gid, bat *eid, bat *sid, int 
*skip_nils);
+str AGGRsubmax(bat *retval, bat *bid, bat *gid, bat *eid, int *skip_nils);
+str AGGRsubmaxcand(bat *retval, bat *bid, bat *gid, bat *eid, bat *sid, int 
*skip_nils);
+str AGGRsubmedian(bat *retval, bat *bid, bat *gid, bat *eid, int *skip_nils);
+str AGGRsubmediancand(bat *retval, bat *bid, bat *gid, bat *eid, bat *sid, int 
*skip_nils);
+str AGGRsubmin(bat *retval, bat *bid, bat *gid, bat *eid, int *skip_nils);
+str AGGRsubmincand(bat *retval, bat *bid, bat *gid, bat *eid, bat *sid, int 
*skip_nils);
 str AGGRsubprod_bte(bat *retval, bat *bid, bat *gid, bat *eid, int *skip_nils, 
int *abort_on_error);
 str AGGRsubprod_dbl(bat *retval, bat *bid, bat *gid, bat *eid, int *skip_nils, 
int *abort_on_error);
 str AGGRsubprod_flt(bat *retval, bat *bid, bat *gid, bat *eid, int *skip_nils, 
int *abort_on_error);
@@ -878,10 +892,6 @@ str AUTHrequireAdminOrUser(Client *c, st
 str AUTHresolveUser(str *ret, oid *uid);
 str AUTHsetPassword(Client *c, str *username, str *passwd);
 str AUTHunlockVault(str *password);
-str AX3aggrX3_max(int *ret, int *bid, int *eid);
-str AX3aggrX3_max3(int *ret, int *bid, int *gid, int *eid);
-str AX3aggrX3_min(int *ret, int *bid, int *eid);
-str AX3aggrX3_min3(int *ret, int *bid, int *gid, int *eid);
 str BATPCREilike(int *ret, int *b, str *pat, str *esc);
 str BATPCREilike2(int *ret, int *b, str *pat);
 str BATPCRElike(int *ret, int *b, str *pat, str *esc);
diff --git a/clients/mapiclient/Tests/mclient--help.stable.err 
b/clients/mapiclient/Tests/mclient--help.stable.err
--- a/clients/mapiclient/Tests/mclient--help.stable.err
+++ b/clients/mapiclient/Tests/mclient--help.stable.err
@@ -16,7 +16,7 @@ Options are:
  -h hostname | --host=hostname    host or UNIX domain socket to connect to
  -p portnr   | --port=portnr      port to connect to
  -u user     | --user=user        user id
- -d database | --database=database  database to connect to
+ -d database | --database=database  database to connect to (may be URI)
  -e          | --echo            echo the query
  -E charset  | --encoding=charset specify encoding (character set) of the 
terminal
  -f kind     | --format=kind      specify output format {csv,tab,raw,sql,xml}
diff --git a/clients/mapiclient/Tests/mclient--help.stable.err.Windows 
b/clients/mapiclient/Tests/mclient--help.stable.err.Windows
--- a/clients/mapiclient/Tests/mclient--help.stable.err.Windows
+++ b/clients/mapiclient/Tests/mclient--help.stable.err.Windows
@@ -16,7 +16,7 @@ Options are:
  -h hostname | --host=hostname    host to connect to
  -p portnr   | --port=portnr      port to connect to
  -u user     | --user=user        user id
- -d database | --database=database  database to connect to
+ -d database | --database=database  database to connect to (may be URI)
  -e          | --echo            echo the query
  -E charset  | --encoding=charset specify encoding (character set) of the 
terminal
  -f kind     | --format=kind      specify output format {csv,tab,raw,sql,xml}
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -244,8 +244,13 @@ dump_foreign_keys(Mapi mid, const char *
                        "ORDER BY \"fs\".\"name\",\"fkt\".\"name\","
                              "\"fkk\".\"name\", \"nr\"";
        }
-       if ((hdl = mapi_query(mid, query)) == NULL || mapi_error(mid))
+       hdl = mapi_query(mid, query);
+       if (query != NULL && maxquerylen != 0)
+               free(query);
+       maxquerylen = 0;
+       if (hdl == NULL || mapi_error(mid))
                goto bailout;
+
        cnt = mapi_fetch_row(hdl);
        while (cnt != 0) {
                char *c_psname = mapi_fetch_field(hdl, 0);
@@ -313,7 +318,7 @@ dump_foreign_keys(Mapi mid, const char *
                                             actions[on_delete]);
                        if (0 < on_update &&
                            on_update < NR_ACTIONS &&
-                           on_delete != 2         /* RESTRICT -- default */)
+                           on_update != 2         /* RESTRICT -- default */)
                                mnstr_printf(toConsole, " ON UPDATE %s",
                                             actions[on_update]);
                }
@@ -947,6 +952,10 @@ describe_sequence(Mapi mid, char *schema
        }
        if (mapi_error(mid))
                goto bailout;
+       if (sname != NULL)
+               free(sname);
+       if (query != NULL)
+               free(query);
        mapi_close_handle(hdl);
        hdl = NULL;
        return 0;
@@ -1018,7 +1027,7 @@ dump_table_data(Mapi mid, char *schema, 
        MapiHdl hdl = NULL;
        char *query;
        size_t maxquerylen;
-       int *string;
+       int *string = NULL;
        char *sname = NULL;
 
        if (schema == NULL) {
@@ -1136,9 +1145,9 @@ dump_table_data(Mapi mid, char *schema, 
                if (mnstr_errnr(toConsole))
                        goto bailout;
        }
-       free(string);
        if (mapi_error(mid))
                goto bailout;
+       free(string);
 
   doreturn:
        if (hdl)
@@ -1162,6 +1171,8 @@ dump_table_data(Mapi mid, char *schema, 
                free(sname);
        if (query != NULL)
                free(query);
+       if (string != NULL)
+               free(string);
        return 1;
 }
 
@@ -1283,13 +1294,19 @@ dump_external_functions(Mapi mid, const 
                             " 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;
@@ -1322,9 +1339,9 @@ dump_functions(Mapi mid, stream *toConso
        char *q;
        size_t l;
        char dumpSystem;
+       char *schema = NULL;
 
        if (sname == NULL) {
-               char *schema;
                if (fname == NULL) {
                        schema = NULL;
                } else if ((schema = strchr(fname, '.')) != NULL) {
@@ -1342,8 +1359,11 @@ dump_functions(Mapi mid, stream *toConso
 
        dumpSystem = sname && fname;
 
-       if (dump_external_functions(mid, sname, fname, toConsole, dumpSystem))
+       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,
@@ -1370,10 +1390,14 @@ dump_functions(Mapi mid, stream *toConso
        }
        if (mapi_error(mid))
                goto bailout;
+       if (schema)
+               free(schema);
        mapi_close_handle(hdl);
        return mnstr_errnr(toConsole) ? 1 : 0;
 
   bailout:
+       if (schema)
+               free(schema);
        if (hdl) {
                if (mapi_result_error(hdl))
                        mapi_explain_result(hdl, stderr);
@@ -1728,6 +1752,10 @@ dump_database(Mapi mid, stream *toConsol
 
                if (mapi_error(mid))
                        goto bailout;
+               if (schema == NULL) {
+                       /* cannot happen, but make analysis tools happy */
+                       continue;
+               }
                if (sname != NULL && strcmp(schema, sname) != 0)
                        continue;
                if (curschema == NULL || strcmp(schema, curschema) != 0) {
@@ -1738,12 +1766,10 @@ dump_database(Mapi mid, stream *toConsol
                                     curschema);
                }
                if (func == NULL) {
-                       if (schema)
-                               schema = strdup(schema);
+                       schema = strdup(schema);
                        tname = strdup(tname);
                        rc = dump_table(mid, schema, tname, toConsole, 
describe, describe, useInserts);
-                       if (schema)
-                               free(schema);
+                       free(schema);
                        free(tname);
                } else
                        mnstr_printf(toConsole, "%s\n", func);
@@ -1925,14 +1951,19 @@ dump_version(Mapi mid, stream *toConsole
                        goto cleanup;
 
                if (name != NULL && val != NULL) {
-                       if (strcmp(name, "gdk_dbname") == 0)
+                       if (strcmp(name, "gdk_dbname") == 0) {
+                               assert(dbname == NULL);
                                dbname = *val == '\0' ? NULL : strdup(val);
-                       else if (strcmp(name, "monet_version") == 0)
+                       } else if (strcmp(name, "monet_version") == 0) {
+                               assert(dbver == NULL);
                                dbver = *val == '\0' ? NULL : strdup(val);
-                       else if (strcmp(name, "monet_release") == 0)
+                       } else if (strcmp(name, "monet_release") == 0) {
+                               assert(dbrel == NULL);
                                dbrel = *val == '\0' ? NULL : strdup(val);
-                       else if (strcmp(name, "merovingian_uri") == 0)
+                       } else if (strcmp(name, "merovingian_uri") == 0) {
+                               assert(uri == NULL);
                                uri = strdup(val);
+                       }
                }
        }
        if (uri != NULL) {
diff --git a/clients/mapiclient/mclient.1 b/clients/mapiclient/mclient.1
--- a/clients/mapiclient/mclient.1
+++ b/clients/mapiclient/mclient.1
@@ -114,10 +114,12 @@ option is omitted, the default of
 is assumed.
 .TP
 \fB\-\-database=\fP\fIdatabase\fP (\fB\-d\fP \fIdatabase\fP)
-Specify the name of the database to connect to.  The \fB-d\fP can be
+Specify the name or URI of the database to connect to.  The \fB-d\fP can be
 omitted if an equally named file does not exist in the current
 directory.  As such, the first non-option argument will be interpreted
 as database to connect to if the argument does not exist as file.
+Valid URIs are as returned by
+.RB "`monetdb discover`, see " monetdb "(1), and look like " 
"mapi:monetdb://hostname:port/database" .
 .TP
 \fB\-\-host=\fP\fIhostname\fP (\fB\-h\fP \fIhostname\fP)
 Specify the name of the host on which the server runs (default:
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -2595,7 +2595,7 @@ usage(const char *prog, int xit)
 #endif
        fprintf(stderr, " -p portnr   | --port=portnr      port to connect 
to\n");
        fprintf(stderr, " -u user     | --user=user        user id\n");
-       fprintf(stderr, " -d database | --database=database  database to 
connect to\n");
+       fprintf(stderr, " -d database | --database=database  database to 
connect to (may be URI)\n");
 
        fprintf(stderr, " -e          | --echo             echo the query\n");
 #ifdef HAVE_ICONV
@@ -3003,7 +3003,13 @@ main(int argc, char **argv)
                has_fileargs = optind != argc;
        }
 
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to