Changeset: 2ae0e44bf9bd for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2ae0e44bf9bd Added Files: sql/test/miscellaneous/Tests/select_groupby.sql sql/test/miscellaneous/Tests/select_groupby.stable.err sql/test/miscellaneous/Tests/select_groupby.stable.out Modified Files: clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/exports.stable.out clients/mapiclient/dump.c clients/mapiclient/msqldump.c gdk/gdk_analytic_bounds.c geom/monetdb5/geom.c geom/monetdb5/geom_upgrade.c monetdb5/mal/mal_builder.c monetdb5/mal/mal_builder.h monetdb5/mal/mal_instruction.c monetdb5/mal/mal_instruction.h monetdb5/mal/mal_runtime.c monetdb5/modules/mal/Tests/inspect05.stable.out.int128 monetdb5/modules/mal/Tests/mat.malC monetdb5/modules/mal/Tests/mat.stable.out monetdb5/modules/mal/manual.c monetdb5/modules/mal/mat.c monetdb5/modules/mal/mat.mal monetdb5/modules/mal/tokenizer.c sql/backends/monet5/UDF/udf/Tests/udf-fuse.stable.out sql/backends/monet5/UDF/udf/Tests/udf-reverse.stable.out sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_statement.c sql/backends/monet5/sql_upgrades.c sql/backends/monet5/sql_upgrades.h sql/backends/monet5/vaults/fits/fits.c sql/backends/monet5/vaults/shp/shp.c sql/scripts/26_sysmon.sql sql/scripts/99_system.sql sql/server/rel_exp.c sql/server/rel_optimizer.c sql/server/rel_psm.c sql/server/rel_rel.c sql/server/rel_updates.c sql/test/BugConstraints/Tests/check_constraint.SF-1714829.stable.err sql/test/BugDay_2005-12-19_2.9.3/Tests/default_next_value_for_non_ex_seq.SF.1246631.stable.err sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out sql/test/BugTracker-2014/Tests/current_timestamp.Bug-3427.stable.err sql/test/BugTracker-2014/Tests/current_timestamp.Bug-3427.stable.out sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out sql/test/BugTracker-2017/Tests/side-effect.Bug-6397.stable.out sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-query.stable.out sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-view.stable.out sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-query.stable.out sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-view.stable.out sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out sql/test/Tests/comment-dump.stable.out sql/test/Triggers/Tests/trigger_owner.stable.err sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.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.32bit sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128 sql/test/miscellaneous/Tests/All sql/test/pg_regress/Tests/alter_table.stable.err sql/test/pg_regress/Tests/alter_table.stable.out sql/test/remote/Tests/partition_elim.stable.out sql/test/sys-schema/Tests/systemfunctions.stable.out sql/test/sys-schema/Tests/systemfunctions.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.32bit 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.32bit sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 Branch: grouping-analytics Log Message:
Merge with default diffs (truncated from 5061 to 300 lines): diff --git a/clients/Tests/MAL-signatures.stable.out b/clients/Tests/MAL-signatures.stable.out --- a/clients/Tests/MAL-signatures.stable.out +++ b/clients/Tests/MAL-signatures.stable.out @@ -660,6 +660,7 @@ stdout of test 'MAL-signatures` in direc [ "bat", "orderidx", "pattern bat.orderidx(bv:bat[:any_1]):void ", "OIDXcreate;", "Introduces the OID index arrangement of ordered values" ] [ "bat", "orderidx", "pattern bat.orderidx(bv:bat[:any_1], pieces:int):void ", "OIDXcreate;", "Introduces the OID index arrangement of ordered values" ] [ "bat", "orderidx", "pattern bat.orderidx(bv:bat[:any_1], l:bat[:any_1]...):void ", "OIDXmerge;", "Consolidates the OID index arrangement" ] +[ "bat", "pack", "pattern bat.pack(X_0:any_2...):bat[:any_2] ", "MATpackValues;", "Materialize the values into a BAT. Avoiding a clash with mat.pack() in mergetable" ] [ "bat", "partition", "pattern bat.partition(b:bat[:any_1], pieces:int, n:int):bat[:any_1] ", "CMDBATpartition2;", "Create the n-th slice over the BAT broken into several pieces." ] [ "bat", "partition", "pattern bat.partition(b:bat[:any_1]):bat[:any_1]... ", "CMDBATpartition;", "Create a serie of slices over the BAT argument. The BUNs are distributed evenly." ] [ "bat", "replace", "command bat.replace(b:bat[:any_1], rid:bat[:oid], val:bat[:any_1]):bat[:any_1] ", "BKCbat_inplace;", "Perform replace for all BUNs of the second BAT into the first." ] diff --git a/clients/Tests/MAL-signatures.stable.out.int128 b/clients/Tests/MAL-signatures.stable.out.int128 --- a/clients/Tests/MAL-signatures.stable.out.int128 +++ b/clients/Tests/MAL-signatures.stable.out.int128 @@ -766,6 +766,7 @@ stdout of test 'MAL-signatures` in direc [ "bat", "orderidx", "pattern bat.orderidx(bv:bat[:any_1]):void ", "OIDXcreate;", "Introduces the OID index arrangement of ordered values" ] [ "bat", "orderidx", "pattern bat.orderidx(bv:bat[:any_1], pieces:int):void ", "OIDXcreate;", "Introduces the OID index arrangement of ordered values" ] [ "bat", "orderidx", "pattern bat.orderidx(bv:bat[:any_1], l:bat[:any_1]...):void ", "OIDXmerge;", "Consolidates the OID index arrangement" ] +[ "bat", "pack", "pattern bat.pack(X_0:any_2...):bat[:any_2] ", "MATpackValues;", "Materialize the values into a BAT. Avoiding a clash with mat.pack() in mergetable" ] [ "bat", "partition", "pattern bat.partition(b:bat[:any_1], pieces:int, n:int):bat[:any_1] ", "CMDBATpartition2;", "Create the n-th slice over the BAT broken into several pieces." ] [ "bat", "partition", "pattern bat.partition(b:bat[:any_1]):bat[:any_1]... ", "CMDBATpartition;", "Create a serie of slices over the BAT argument. The BUNs are distributed evenly." ] [ "bat", "replace", "command bat.replace(b:bat[:any_1], rid:bat[:oid], val:bat[:any_1]):bat[:any_1] ", "BKCbat_inplace;", "Perform replace for all BUNs of the second BAT into the first." ] 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 @@ -2418,6 +2418,7 @@ InstrPtr newFcnCall(MalBlkPtr mb, char * Symbol newFunction(str mod, str nme, int kind); MalStkPtr newGlobalStack(int size); InstrPtr newInstruction(MalBlkPtr mb, str modnme, str fcnnme); +InstrPtr newInstructionArgs(MalBlkPtr mb, str modnme, str fcnnme, int args); MalBlkPtr newMalBlk(int elements); int newMalBlkStmt(MalBlkPtr mb, int elements); Plant newPlant(MalBlkPtr mb); @@ -2425,6 +2426,7 @@ InstrPtr newRaiseStmt(MalBlkPtr mb, str str newRef; InstrPtr newReturnStmt(MalBlkPtr mb); InstrPtr newStmt(MalBlkPtr mb, const char *module, const char *name); +InstrPtr newStmtArgs(MalBlkPtr mb, const char *module, const char *name, int args); Symbol newSymbol(str nme, int kind); int newTmpVariable(MalBlkPtr mb, malType type); int newTypeVariable(MalBlkPtr mb, malType type); diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -2575,8 +2575,7 @@ dump_database(Mapi mid, stream *toConsol goto bailout; /* start a transaction for the dump */ - if (!describe) - mnstr_printf(toConsole, "%s;\n", start_trx); + mnstr_printf(toConsole, "%s;\n", start_trx); if ((hdl = mapi_query(mid, start_trx)) == NULL || mapi_error(mid)) goto bailout; @@ -3095,8 +3094,7 @@ dump_database(Mapi mid, stream *toConsol mapi_close_handle(hdl); /* finally commit the whole transaction */ - if (!describe) - mnstr_printf(toConsole, "COMMIT;\n"); + mnstr_printf(toConsole, "COMMIT;\n"); if (sname) free(sname); if (query) diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c --- a/clients/mapiclient/msqldump.c +++ b/clients/mapiclient/msqldump.c @@ -226,11 +226,15 @@ main(int argc, char **argv) dump_version(mid, out, "-- server:"); mnstr_printf(out, "-- %s\n", buf); } - if (functions) + if (functions) { + mnstr_printf(out, "START TRANSACTION;\n"); c = dump_functions(mid, out, true, NULL, NULL, NULL); - else if (table) + mnstr_printf(out, "COMMIT;\n"); + } else if (table) { + mnstr_printf(out, "START TRANSACTION;\n"); c = dump_table(mid, NULL, table, out, describe, true, useinserts, false); - else + mnstr_printf(out, "COMMIT;\n"); + } else c = dump_database(mid, out, describe, useinserts); mnstr_flush(out); diff --git a/gdk/gdk_analytic_bounds.c b/gdk/gdk_analytic_bounds.c --- a/gdk/gdk_analytic_bounds.c +++ b/gdk/gdk_analytic_bounds.c @@ -94,7 +94,7 @@ do { \ lng m = k - 1; \ for (; k < i; k++, rb++) { \ - TPE2 rlimit = (TPE2) LIMIT; \ + TPE2 rlimit = LIMIT; \ TPE1 v = bp[k]; \ if (is_##TPE1##_nil(v)) { \ for (j = k; ; j--) { \ @@ -125,7 +125,7 @@ #define ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS_FOLLOWING(TPE1, LIMIT, TPE2) \ do { \ for (; k < i; k++, rb++) { \ - TPE2 rlimit = (TPE2) LIMIT; \ + TPE2 rlimit = LIMIT; \ TPE1 v = bp[k]; \ if (is_##TPE1##_nil(v)) { \ for (j = k + 1; j < i; j++) { \ @@ -168,7 +168,7 @@ } \ } while (0) -#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_PRECEDING(LIMIT) \ +#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_PRECEDING(LIMIT, TPE) \ do { \ lng m = k - 1; \ for (; k < i; k++, rb++) { \ @@ -188,7 +188,7 @@ next = BUNtail(bpi, (BUN) j); \ if (atomcmp(next, nil) == 0) \ break; \ - if (ABSOLUTE(atomcmp(v, next)) > (int) LIMIT) \ + if (ABSOLUTE((TPE) atomcmp(v, next)) > (TPE) LIMIT) \ break; \ } \ } \ @@ -197,7 +197,7 @@ } \ } while (0) -#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_FOLLOWING(LIMIT) \ +#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_FOLLOWING(LIMIT, TPE) \ do { \ for (; k < i; k++, rb++) { \ void *v = BUNtail(bpi, (BUN) k); \ @@ -211,7 +211,7 @@ void *next = BUNtail(bpi, (BUN) j); \ if (atomcmp(next, nil) == 0) \ break; \ - if (ABSOLUTE(atomcmp(v, next)) > (int) LIMIT) \ + if (ABSOLUTE((TPE) atomcmp(v, next)) > (TPE) LIMIT) \ break; \ } \ } \ @@ -219,11 +219,11 @@ } \ } while (0) -#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS_PRECEDING(LIMIT) \ +#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS_PRECEDING(LIMIT, TPE) \ do { \ lng m = k - 1; \ for (; k < i; k++, rb++) { \ - lng rlimit = (lng) LIMIT; \ + TPE rlimit = LIMIT; \ void *v = BUNtail(bpi, (BUN) k); \ if (atomcmp(v, nil) == 0) { \ for (j = k; ; j--) { \ @@ -253,10 +253,10 @@ } \ } while (0) -#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS_FOLLOWING(LIMIT) \ +#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS_FOLLOWING(LIMIT, TPE) \ do { \ for (; k < i; k++, rb++) { \ - lng rlimit = (lng) LIMIT; \ + TPE rlimit = LIMIT; \ void *v = BUNtail(bpi, (BUN) k); \ if (atomcmp(v, nil) == 0) { \ for (j = k + 1; j < i; j++) { \ @@ -300,10 +300,12 @@ } \ } while (0) -#define ANALYTICAL_WINDOW_BOUNDS_BRANCHES_RANGE_NUM(IMP, LIMIT) \ +#define ANALYTICAL_WINDOW_BOUNDS_BRANCHES_RANGE_NUM(IMP, LIMIT, CAST) \ do { \ switch (tp1) { \ case TYPE_bit: \ + case TYPE_flt: \ + case TYPE_dbl: \ goto type_not_supported; \ case TYPE_bte: \ ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bte, ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, lng); \ @@ -324,15 +326,15 @@ for (; np < nend; np++) { \ if (*np) { \ i += (np - pnp); \ - ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT); \ + ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT, CAST); \ pnp = np; \ } \ } \ i += (np - pnp); \ - ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT); \ + ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT, CAST); \ } else { \ i += (lng) cnt; \ - ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT); \ + ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT, CAST); \ } \ } \ } \ @@ -364,43 +366,25 @@ #define ANALYTICAL_WINDOW_BOUNDS_BRANCHES_RANGE_HGE(IMP, LIMIT) \ do { \ switch (tp1) { \ - case TYPE_hge: \ - ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(hge, ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, hge); \ - break; \ - default: \ - goto type_not_supported; \ - } \ - } while (0) -#endif - -#ifdef HAVE_HGE -#define ANALYTICAL_WINDOW_BOUNDS_GROUPS_HGE(IMP, LIMIT) \ - case TYPE_hge: \ - ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(hge, ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, hge); \ - break; -#else -#define ANALYTICAL_WINDOW_BOUNDS_GROUPS_HGE(IMP, LIMIT) -#endif - -#define ANALYTICAL_WINDOW_BOUNDS_BRANCHES_GROUPS(IMP, LIMIT) \ - do { \ - switch (tp1) { \ case TYPE_bit: \ - ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bit, ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, bit); \ - break; \ + case TYPE_flt: \ + case TYPE_dbl: \ + goto type_not_supported; \ case TYPE_bte: \ - ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bte, ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, bte); \ + ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bte, ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, hge); \ break; \ case TYPE_sht: \ - ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(sht, ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, sht); \ + ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(sht, ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, hge); \ break; \ case TYPE_int: \ - ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(int, ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, int); \ + ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(int, ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, hge); \ break; \ case TYPE_lng: \ - ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(lng, ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, lng); \ + ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(lng, ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, hge); \ break; \ - ANALYTICAL_WINDOW_BOUNDS_GROUPS_HGE(IMP, LIMIT); \ + case TYPE_hge: \ + ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(hge, ANALYTICAL_WINDOW_BOUNDS_FIXED_RANGE##IMP, LIMIT, hge); \ + break; \ default: { \ if (p) { \ pnp = np = (bit*)Tloc(p, 0); \ @@ -408,15 +392,65 @@ for (; np < nend; np++) { \ if (*np) { \ i += (np - pnp); \ - ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS##IMP(LIMIT); \ + ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT, hge); \ pnp = np; \ } \ } \ i += (np - pnp); \ - ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS##IMP(LIMIT); \ + ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT, hge); \ } else { \ i += (lng) cnt; \ - ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS##IMP(LIMIT); \ + ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE##IMP(LIMIT, hge); \ + } \ + } \ + } \ + } while (0) +#endif + +#ifdef HAVE_HGE +#define ANALYTICAL_WINDOW_BOUNDS_GROUPS_HGE(IMP, LIMIT, TPE) \ + case TYPE_hge: \ + ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(hge, ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, TPE); \ + break; +#else +#define ANALYTICAL_WINDOW_BOUNDS_GROUPS_HGE(IMP, LIMIT, TPE) +#endif + +#define ANALYTICAL_WINDOW_BOUNDS_BRANCHES_GROUPS(IMP, LIMIT, TPE) \ + do { \ + switch (tp1) { \ + case TYPE_bit: \ + ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bit, ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, TPE); \ + break; \ + case TYPE_bte: \ + ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(bte, ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, TPE); \ + break; \ + case TYPE_sht: \ + ANALYTICAL_WINDOW_BOUNDS_CALC_FIXED(sht, ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS##IMP, LIMIT, TPE); \ + break; \ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list