Changeset: b59ef9c0443e for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b59ef9c0443e Added Files: monetdb5/extras/jaql/Tests/group02.mal monetdb5/extras/jaql/Tests/group02.stable.err monetdb5/extras/jaql/Tests/group02.stable.out monetdb5/extras/jaql/Tests/join03.mal monetdb5/extras/jaql/Tests/join03.stable.err monetdb5/extras/jaql/Tests/join03.stable.out monetdb5/mal/Tests/tst1506.mal monetdb5/mal/Tests/tst1506.stable.err monetdb5/mal/Tests/tst1506.stable.out monetdb5/modules/kernel/batifthen.c monetdb5/modules/kernel/batifthen.h monetdb5/modules/kernel/batifthen.mal Removed Files: monetdb5/modules/kernel/algebra2.mx monetdb5/modules/kernel/batifthen.mx monetdb5/modules/kernel/kprelude.mx Modified Files: clients/ChangeLog.Jul2012 clients/examples/C/sample2.c clients/mapiclient/mclient.c gdk/ChangeLog gdk/gdk.h gdk/gdk_bat.c gdk/gdk_batop.mx gdk/gdk_calc.c gdk/gdk_logger.c gdk/gdk_logger.h gdk/gdk_relop.mx gdk/gdk_scanselect.mx gdk/gdk_system.c gdk/gdk_system.h gdk/gdk_utils.c monetdb5/extras/compiler/Tests/mal01.mal monetdb5/extras/jaql/Tests/All monetdb5/extras/jaql/Tests/json02.stable.out monetdb5/extras/jaql/Tests/json05.stable.out monetdb5/extras/jaql/jaqlfunc.mal monetdb5/extras/jaql/jaqlgencode.c monetdb5/extras/jaql/json.c monetdb5/extras/jaql/json.mal monetdb5/extras/rdf/rdf_shredder.mx monetdb5/mal/Tests/All monetdb5/mal/mal_dataflow.c monetdb5/modules/kernel/Makefile.ag monetdb5/modules/kernel/aggr_be_minmax.mx monetdb5/modules/kernel/aggr_bge_minmax.mx monetdb5/modules/kernel/algebra.mx monetdb5/modules/kernel/bat5.c monetdb5/modules/kernel/bat5.h monetdb5/modules/kernel/batcolor.c monetdb5/modules/kernel/batcolor.h monetdb5/modules/kernel/batmmath.c monetdb5/modules/kernel/batmmath.h monetdb5/modules/kernel/batmtime.mx monetdb5/modules/kernel/batstr.c monetdb5/modules/kernel/batstr.h monetdb5/modules/kernel/group.mx monetdb5/modules/kernel/mmath.c monetdb5/modules/kernel/mmath.h monetdb5/modules/mal/batExtensions.c monetdb5/optimizer/opt_mergetable.c sql/backends/monet5/sql_gencode.c sql/backends/monet5/vaults/mseed.c sql/server/bin_optimizer.c sql/server/rel_bin.c sql/server/rel_optimizer.c sql/server/rel_select.c sql/server/sql_rel2bin.c sql/server/sql_statement.c sql/server/sql_statement.h sql/storage/bat/bat_logger.c sql/storage/bat/bat_utils.c sql/storage/bat/bat_utils.h sql/storage/restrict/restrict_logger.c sql/storage/store.c sql/test/BugTracker/Tests/cardinality_violation.SF-1240701.stable.err sql/test/Tests/median_stdev.sql sql/test/Tests/median_stdev.stable.out sql/test/Tests/trace.stable.out sql/test/leaks/Tests/check0.stable.out sql/test/leaks/Tests/check1.stable.out sql/test/leaks/Tests/check2.stable.out sql/test/leaks/Tests/check3.stable.out sql/test/leaks/Tests/check4.stable.out sql/test/leaks/Tests/check5.stable.out sql/test/leaks/Tests/drop3.stable.out sql/test/leaks/Tests/select1.stable.out sql/test/leaks/Tests/select2.stable.out sql/test/leaks/Tests/temp1.stable.out sql/test/leaks/Tests/temp2.stable.out sql/test/leaks/Tests/temp3.stable.out tools/merovingian/ChangeLog.Jul2012 tools/merovingian/daemon/forkmserver.c tools/merovingian/daemon/merovingian.c tools/mserver/mserver5.c Branch: default Log Message:
merged with default diffs (truncated from 9731 to 300 lines): diff --git a/clients/ChangeLog.Jul2012 b/clients/ChangeLog.Jul2012 --- a/clients/ChangeLog.Jul2012 +++ b/clients/ChangeLog.Jul2012 @@ -1,3 +1,7 @@ # ChangeLog file for clients # This file is updated with Maddlog +* Tue Jul 17 2012 Fabian Groffen <[email protected]> +- mclient no longer prints the SQLSTATE at the start of each error + returned by the SQL-server. + diff --git a/clients/examples/C/sample2.c b/clients/examples/C/sample2.c --- a/clients/examples/C/sample2.c +++ b/clients/examples/C/sample2.c @@ -40,6 +40,7 @@ main(int argc, char **argv) int age = 0; char *parm[] = { "peter", 0 }; char *parm2[] = { "25", 0 }; + char *parm3[] = { "peter", "25", 0 }; Mapi dbh= NULL; MapiHdl hdl = NULL; @@ -61,7 +62,7 @@ main(int argc, char **argv) die(dbh, hdl); if (mapi_close_handle(hdl) != MOK) die(dbh, hdl); - if ((hdl = mapi_query_array(dbh, "insert into emp values('?', ?)", parm)) == NULL || mapi_error(dbh)) + if ((hdl = mapi_query_array(dbh, "insert into emp values('?', ?)", parm3)) == NULL || mapi_error(dbh)) die(dbh, hdl); if (mapi_close_handle(hdl) != MOK) die(dbh, hdl); diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -1448,10 +1448,11 @@ format_result(Mapi mid, MapiHdl hdl, cha if ((reply = mapi_result_error(hdl)) != NULL) { mnstr_flush(toConsole); if (formatter == TABLEformatter || formatter == CLEANformatter) { - fprintf(stderr, "%s", reply); + mapi_noexplain(mid, ""); } else { - mapi_explain_result(hdl, stderr); + mapi_noexplain(mid, NULL); } + mapi_explain_result(hdl, stderr); errseen = 1; /* don't need to print something like '0 * tuples' if we got an error */ @@ -1600,6 +1601,11 @@ doRequest(Mapi mid, const char *buf) SQLsetSpecial(buf); if ((hdl = mapi_query(mid, buf)) == NULL) { + if (formatter == TABLEformatter || formatter == CLEANformatter) { + mapi_noexplain(mid, ""); + } else { + mapi_noexplain(mid, NULL); + } mapi_explain(mid, stderr); errseen = 1; return 1; @@ -1619,6 +1625,11 @@ doRequest(Mapi mid, const char *buf) break; \ case MERROR: \ /* some error, but try to continue */ \ + if (formatter == TABLEformatter || formatter == CLEANformatter) { \ + mapi_noexplain(mid, ""); \ + } else { \ + mapi_noexplain(mid, NULL); \ + } \ if (hdl) { \ mapi_explain_query(hdl, stderr); \ mapi_close_handle(hdl); \ @@ -1629,6 +1640,11 @@ doRequest(Mapi mid, const char *buf) break_or_continue; \ case MTIMEOUT: \ /* lost contact with the server */ \ + if (formatter == TABLEformatter || formatter == CLEANformatter) { \ + mapi_noexplain(mid, ""); \ + } else { \ + mapi_noexplain(mid, NULL); \ + } \ if (hdl) { \ mapi_explain_query(hdl, stderr); \ mapi_close_handle(hdl); \ @@ -2552,6 +2568,11 @@ set_timezone(Mapi mid) "SET TIME ZONE INTERVAL '-%02ld:%02ld' HOUR TO MINUTE", tzone / 3600, (tzone % 3600) / 60); if ((hdl = mapi_query(mid, buf)) == NULL) { + if (formatter == TABLEformatter || formatter == CLEANformatter) { + mapi_noexplain(mid, ""); + } else { + mapi_noexplain(mid, NULL); + } mapi_explain(mid, stderr); errseen = 1; return; diff --git a/gdk/ChangeLog b/gdk/ChangeLog --- a/gdk/ChangeLog +++ b/gdk/ChangeLog @@ -1,3 +1,8 @@ # ChangeLog file for MonetDB # This file is updated with Maddlog +* Tue Jul 17 2012 Sjoerd Mullender <[email protected]> +- BAT-of-BATs is no longer allowed. It was already not allowed to + make these types of BATs persistent, but now they can't be created at + all anymore. + diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -2133,12 +2133,6 @@ gdk_export oid OIDnew(oid inc); * @item BAT* * @tab * BAThash (BAT *b, BUN masksize) - * @item BAT * - * @tab - * BAThashsplit (BAT *b, BUN n, int unary) - * @item BAT * - * @tab - * BATrangesplit (BAT *b, int n) * @end multitable * * The current BAT implementation supports one search accelerator: @@ -2147,14 +2141,8 @@ gdk_export oid OIDnew(oid inc); * failure to create the supportive structures. * * The hash data structures are currently maintained during update operations. - * - * A BAT can be redistributed over n buckets using a hash - * function with BAThashsplit. The return value is a list of BAT - * pointers. Similarly, a range partitioning based is supported. */ gdk_export BAT *BAThash(BAT *b, BUN masksize); -gdk_export BAT *BAThashsplit(BAT *b, BUN n, int unary); -gdk_export BAT *BATrangesplit(BAT *b, BUN n, int unary); gdk_export BAT *BAThashjoin(BAT *l, BAT *r, BUN estimate); /* low level functions */ diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c --- a/gdk/gdk_bat.c +++ b/gdk/gdk_bat.c @@ -299,6 +299,8 @@ BATnew(int ht, int tt, BUN cap) BATstore *bs; assert(cap <= BUN_MAX); + assert(ht != TYPE_bat); + assert(tt != TYPE_bat); ERRORcheck((ht < 0) || (ht > GDKatomcnt), "BATnew:ht error\n"); ERRORcheck((tt < 0) || (tt > GDKatomcnt), "BATnew:tt error\n"); @@ -763,6 +765,8 @@ BATcopy(BAT *b, int ht, int tt, int writ BAT *bn = NULL; BATcheck(b, "BATcopy"); + assert(ht != TYPE_bat); + assert(tt != TYPE_bat); cnt = b->batCount; /* maybe a bit ugly to change the requested bat types?? */ @@ -2730,7 +2734,6 @@ BATgetaccess(BAT *b) #define check_type(tp) \ do { \ if (ATOMisdescendant((tp), TYPE_ptr) || \ - ATOMisdescendant((tp), TYPE_bat) || \ BATatoms[tp].atomUnfix || \ BATatoms[tp].atomFix) { \ GDKerror("BATmode: %s type implies that %s[%s,%s] " \ @@ -2817,6 +2820,7 @@ BATassertHeadProps(BAT *b) assert(b != NULL); assert(b->htype >= TYPE_void); assert(b->htype < GDKatomcnt); + assert(b->htype != TYPE_bat); cmpf = BATatoms[b->htype].atomCmp; nilp = ATOMnilptr(b->htype); diff --git a/gdk/gdk_batop.mx b/gdk/gdk_batop.mx --- a/gdk/gdk_batop.mx +++ b/gdk/gdk_batop.mx @@ -763,9 +763,8 @@ BATreplace(BAT *b, BAT *n, bit force) * void-columns (in this case, the seqbase has to be recomputed in the result). * * Note that the BATslice() is used indirectly as well as a special - * case for BATselect (range selection on sorted column), BATrangesplit - * (fragmentation on sorted column) and BATsemijoin (when two dense columns - * are semijoined). + * case for BATselect (range selection on sorted column) and + * BATsemijoin (when two dense columns are semijoined). * * NOTE new semantics, the selected range is excluding the high value. */ @@ -935,64 +934,64 @@ BATslice2(BAT *b, BUN l1, BUN h1, BUN l2 * need an implementation for selecting nil (in MIL, this is done * through is the "isnil" predicate). So we implement it here. */ -@= valselect - HASHloop@2(bi, b->H->hash, i, tl) { - if (q < r) - bunfastins_nocheck(bn, q, BUNt@1(bi, i), tl, Hsize(bn), Tsize(bn)); - q++; - } -@= stringselect - if (strElimDoubles(b->H->vheap)) { - BUN p; - size_t j; +#define hashselectloop(EXT, BUNtail) \ + do { \ + HASHloop##EXT(bi, b->H->hash, i, tl) { \ + if (q < r) { \ + bunfastins_nocheck(bn, q, BUNtail(bi, i), \ + tl, Hsize(bn), Tsize(bn)); \ + } \ + q++; \ + } \ + } while (0) +#define hashselect(BUNtail) \ + do { \ + switch (ATOMstorage(b->htype)) { \ + case TYPE_bte: \ + hashselectloop(_bte, BUNtail); \ + break; \ + case TYPE_sht: \ + hashselectloop(_sht, BUNtail); \ + break; \ + case TYPE_int: \ + hashselectloop(_int, BUNtail); \ + break; \ + case TYPE_flt: \ + hashselectloop(_flt, BUNtail); \ + break; \ + case TYPE_dbl: \ + hashselectloop(_dbl, BUNtail); \ + break; \ + case TYPE_lng: \ + hashselectloop(_lng, BUNtail); \ + break; \ + case TYPE_str: \ + if (strElimDoubles(b->H->vheap)) { \ + size_t j; \ + \ + HASHloop_fstr(bi, b->H->hash, i, j, tl) { \ + if (q < r) \ + bunfastins_nocheck(bn, q, \ + BUNtail(bi, i), \ + tl, \ + Hsize(bn), \ + Tsize(bn)); \ + q++; \ + } \ + } else { \ + hashselectloop(_str, BUNtail); \ + } \ + break; \ + default: \ + if (b->hvarsized) { \ + hashselectloop(var, BUNtail); \ + } else { \ + hashselectloop(loc, BUNtail); \ + } \ + break; \ + } \ + } while (0) - HASHloop_fstr(bi, b->H->hash, p, j, tl) { - if (q < r) - bunfastins_nocheck(bn, q, BUNt@1(bi, p), tl, Hsize(bn), Tsize(bn)); - q++; - } - } else { - BUN p; - - HASHloop_str(bi, b->H->hash, p, tl) { - if (q < r) - bunfastins_nocheck(bn, q, BUNt@1(bi, p), tl, Hsize(bn), Tsize(bn)); - q++; - } - } -@= hashselect - switch(ATOMstorage(b->htype)) { - case TYPE_bte: - @:valselect(@1,_bte)@ - break; - case TYPE_sht: - @:valselect(@1,_sht)@ - break; - case TYPE_int: - @:valselect(@1,_int)@ - break; - case TYPE_flt: - @:valselect(@1,_flt)@ - break; - case TYPE_dbl: - @:valselect(@1,_dbl)@ - break; - case TYPE_lng: - @:valselect(@1,_lng)@ - break; - case TYPE_str: - @:stringselect(@1)@ - break; _______________________________________________ Checkin-list mailing list [email protected] http://mail.monetdb.org/mailman/listinfo/checkin-list
