Changeset: 1fa3c50e6852 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1fa3c50e6852 Added Files: sql/backends/monet5/mal_backend.c sql/backends/monet5/mal_backend.h sql/backends/monet5/sql_statistics.c sql/backends/monet5/sql_statistics.h sql/scripts/41_jsonstore.sql sql/scripts/80_statistics.sql sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.sql sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.stable.err sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.stable.out sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.sql sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.stable.err sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.stable.out sql/test/BugTracker-2013/Tests/constraint_checking.Bug_3335.sql sql/test/BugTracker-2013/Tests/incorrect_subquery_delete.Bug-3315.sql sql/test/BugTracker-2013/Tests/incorrect_subquery_delete.Bug-3315.stable.err sql/test/BugTracker-2013/Tests/incorrect_subquery_delete.Bug-3315.stable.out sql/test/BugTracker-2013/Tests/mitosis-floor.Bug-3330.sql sql/test/BugTracker-2013/Tests/mitosis-floor.Bug-3330.stable.err sql/test/BugTracker-2013/Tests/mitosis-floor.Bug-3330.stable.out sql/test/BugTracker-2013/Tests/pivot.Bug-3339.sql sql/test/BugTracker-2013/Tests/qualified_aggrname.Bug-3332.sql sql/test/BugTracker-2013/Tests/qualified_aggrname.Bug-3332.stable.err sql/test/BugTracker-2013/Tests/qualified_aggrname.Bug-3332.stable.out sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.sql sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.stable.err sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.stable.out sql/test/BugTracker-2013/Tests/update_on_declared_table.Bug-3318.sql sql/test/BugTracker-2013/Tests/update_on_declared_table.Bug-3318.stable.err sql/test/BugTracker-2013/Tests/update_on_declared_table.Bug-3318.stable.out Removed Files: monetdb5/optimizer/Tests/LICENSE monetdb5/optimizer/Tests/Mexample.mx Modified Files: NT/monetdb_config.h.in clients/Tests/exports.stable.out configure.ag gdk/gdk_group.c gdk/gdk_heap.c gdk/gdk_posix.c gdk/gdk_posix.h gdk/gdk_storage.c gdk/gdk_system.c gdk/gdk_system.h geom/sql/Tests/basic.stable.out geom/sql/Tests/relation.stable.out geom/sql/Tests/spatial.stable.out monetdb5/mal/mal_dataflow.c monetdb5/mal/mal_recycle.c monetdb5/mal/mal_recycle.h monetdb5/mal/mal_resource.c monetdb5/mal/mal_resource.h monetdb5/modules/atoms/Tests/xml00.mal monetdb5/modules/atoms/Tests/xml00.stable.out monetdb5/modules/atoms/Tests/xml01.mal monetdb5/modules/atoms/Tests/xml01.stable.out monetdb5/modules/atoms/Tests/xml02.mal monetdb5/modules/atoms/Tests/xml02.stable.out monetdb5/modules/atoms/Tests/xml03.mal monetdb5/modules/atoms/Tests/xml03.stable.out monetdb5/modules/atoms/Tests/xml04.mal monetdb5/modules/atoms/Tests/xml04.stable.out monetdb5/modules/atoms/Tests/xml05.mal monetdb5/modules/atoms/Tests/xml05.stable.out monetdb5/modules/atoms/Tests/xml10.mal monetdb5/modules/atoms/Tests/xml10.stable.out monetdb5/modules/atoms/batxml.c monetdb5/modules/atoms/batxml.mal monetdb5/modules/atoms/uuid.c monetdb5/modules/atoms/uuid.h monetdb5/modules/atoms/uuid.mal monetdb5/modules/atoms/xml.c monetdb5/modules/kernel/algebra.c monetdb5/modules/kernel/algebra.h monetdb5/modules/kernel/algebra.mal monetdb5/modules/kernel/microbenchmark.c monetdb5/modules/kernel/microbenchmark.h monetdb5/modules/kernel/microbenchmark.mal monetdb5/modules/mal/tablet.c monetdb5/optimizer/opt_mergetable.c monetdb5/optimizer/opt_prelude.c monetdb5/optimizer/opt_prelude.h monetdb5/optimizer/opt_recycler.c monetdb5/optimizer/opt_support.c sql/backends/monet5/Makefile.ag sql/backends/monet5/Tests/optimizers.stable.err sql/backends/monet5/Tests/optimizers.stable.out sql/backends/monet5/UDF/udf.c sql/backends/monet5/UDF/udf_impl.h sql/backends/monet5/datacell/basket.c sql/backends/monet5/datacell/datacell.c sql/backends/monet5/rel_bin.c sql/backends/monet5/rest/rest_jsonstore.c sql/backends/monet5/rest/rest_jsonstore_handle_get.c sql/backends/monet5/rest/rest_jsonstore_handle_get.h sql/backends/monet5/sql.mx sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_gencode.h sql/backends/monet5/sql_result.c sql/backends/monet5/sql_result.h sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_user.c sql/backends/monet5/vaults/fits.c sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out sql/benchmarks/tpch/LOCKED/Tests/02.stable.out sql/benchmarks/tpch/LOCKED/Tests/04.stable.out sql/benchmarks/tpch/Tests/01-22.stable.out sql/benchmarks/tpch/Tests/02.stable.out sql/benchmarks/tpch/Tests/04.stable.out sql/common/sql_types.c sql/include/sql_catalog.h sql/include/sql_relation.h sql/rel.txt sql/scripts/Makefile.ag sql/server/rel_distribute.c sql/server/rel_dump.c sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_optimizer.c sql/server/rel_psm.c sql/server/rel_schema.c sql/server/rel_select.c sql/server/rel_select.h sql/server/rel_updates.c sql/server/sql_parser.y sql/server/sql_semantic.h sql/test/BugDay_2005-10-06_2.8/Tests/MapiClient-dump.SF-905851.stable.out sql/test/BugDay_2005-10-06_2.9.3/Tests/var_char_cast_truncate.SF-1150907.stable.out sql/test/BugDay_2005-12-19_2.9.3/Tests/timestamp_fraction.SF-1357342.stable.out sql/test/BugTracker-2008/Tests/OOM_query.SF-2457195.stable.out sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.stable.out sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.stable.err sql/test/BugTracker-2009/Tests/correlated-selection-bug.stable.out sql/test/BugTracker-2009/Tests/count_bug.SF-2604583.stable.out sql/test/BugTracker-2009/Tests/double_count_limit_bug.SF-2862146.stable.out sql/test/BugTracker-2009/Tests/mclient-lsql-D.stable.out sql/test/BugTracker-2009/Tests/name_clash_with_dump.SF-2780395.stable.out sql/test/BugTracker-2010/Tests/join_problem.Bug-2694.stable.out sql/test/BugTracker-2011/Tests/aggregate-in-subquery.Bug-2739.stable.out sql/test/BugTracker-2011/Tests/case-overflow.Bug-2239.stable.out sql/test/BugTracker-2011/Tests/count-count-distinct.Bug-2808.stable.out sql/test/BugTracker-2011/Tests/exists-select.Bug-2933.stable.out sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out sql/test/BugTracker-2011/Tests/interrupted-initialization.Bug-2875.stable.out sql/test/BugTracker-2011/Tests/rand-with-seed.Bug-2900.stable.out sql/test/BugTracker-2012/Tests/aggregate_vs_positional_column_crash.Bug-3085.stable.out sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out sql/test/BugTracker-2012/Tests/scalar_subquery_with_alias.Bug-3093.stable.out sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.stable.out sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.stable.err sql/test/BugTracker-2013/Tests/All sql/test/BugTracker-2013/Tests/correlated_select.Bug-3250.stable.out sql/test/BugTracker-2013/Tests/php-size-limit-bug.SQL.bat sql/test/BugTracker-2013/Tests/php-size-limit-bug.SQL.sh sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out.32bit sql/test/BugTracker/Tests/multi-column-constraint.SF-1964587.stable.out sql/test/BugTracker/Tests/rank_over.SF-1691098.stable.out sql/test/BugTracker/Tests/set_sql_debug_64__breaking_the_DB.SF-1906287.stable.out sql/test/BugTracker/Tests/with_only_once.SF-1720293.stable.out sql/test/Dependencies/Tests/Dependencies.stable.out sql/test/Dump/Tests/dump-empty.stable.out sql/test/Dump/Tests/dump.stable.out sql/test/Tests/marcin3.stable.err sql/test/Tests/order_by_complex_exp.stable.out sql/test/Tests/round.stable.out sql/test/Tests/string.stable.out sql/test/Tests/systemfunctions.stable.out sql/test/Tests/systemfunctions_nogeom.stable.out sql/test/UserDump/Tests/create.stable.out sql/test/VOC/Tests/VOC.stable.out sql/test/bugs/Tests/case_substring.stable.out sql/test/bugs/Tests/crash_order_by.stable.err sql/test/bugs/Tests/create_insert_select_aggr-bug-00001.stable.out sql/test/bugs/Tests/groupby_having_charlength-bug-sf-943566.stable.out sql/test/bugs/Tests/polymorphism.stable.out sql/test/bugs/Tests/selectlist_subquery-sf-1208599.stable.out sql/test/bugs/Tests/simple_view.stable.out sql/test/bugs/Tests/subselect_multiple_unionall_where_1=1-bug-sf-1005596.stable.out sql/test/bugs/Tests/subselect_single_value-bug-sf-962099.stable.out sql/test/bugs/Tests/zero_or_one_bug.stable.out sql/test/leaks/Tests/check1.stable.out sql/test/leaks/Tests/check1_nogeom.stable.out sql/test/leaks/Tests/check2.stable.out sql/test/leaks/Tests/check2_nogeom.stable.out sql/test/leaks/Tests/check3.stable.out sql/test/leaks/Tests/check3_nogeom.stable.out sql/test/leaks/Tests/check4.stable.out sql/test/leaks/Tests/check4_nogeom.stable.out sql/test/leaks/Tests/check5.stable.out sql/test/leaks/Tests/check5_nogeom.stable.out sql/test/mapi/Tests/php_monetdb.SQL.bat sql/test/mapi/Tests/php_monetdb.SQL.sh sql/test/mapi/Tests/php_monetdb.stable.out sql/test/mapi/Tests/php_monetdb_nogeom.SQL.bat sql/test/mapi/Tests/php_monetdb_nogeom.SQL.sh sql/test/sql_xml/Tests/xml.stable.out sql/test/sql_xml/Tests/xmlelement_segfault.SF-2812767.stable.out sql/test/testdb/Tests/testdb-dump.stable.out tools/merovingian/ChangeLog.Feb2013 tools/merovingian/client/monetdb.c Branch: mutation Log Message:
merge with default diffs (truncated from 12337 to 300 lines): diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in --- a/NT/monetdb_config.h.in +++ b/NT/monetdb_config.h.in @@ -148,7 +148,8 @@ #define HAVE_FTIME 1 /* Define to 1 if you have the `ftruncate' function. */ -/* #undef HAVE_FTRUNCATE */ +#define HAVE_FTRUNCATE 1 +#define ftruncate(fd, sz) (_chsize_s((fd), (__int64) (sz)) == 0 ? 0 : -1) /* Does your compiler support function attributes (__attribute__)? */ /* #undef HAVE_FUNCTION_ATTRIBUTES */ @@ -979,43 +980,6 @@ typedef unsigned __int64 uint64_t; #endif #endif -/* if nothing defined, ALGEBRA is default. - if ALGEBRA_IS_DEFAULT is defined to 0, SQL is default. - if both ALGEBRA_IS_DEFAULT and SQL_IS_DEFAULT are defined to 0, we - fallback to MPS */ -/* Use algebra back-end by default? */ -#ifndef ALGEBRA_IS_DEFAULT -#if defined(MILPRINT_SUMMER_IS_DEFAULT) && MILPRINT_SUMMER_IS_DEFAULT -#define ALGEBRA_IS_DEFAULT 0 -#elif defined(SQL_IS_DEFAULT) && SQL_IS_DEFAULT -#define ALGEBRA_IS_DEFAULT 0 -#else -#define ALGEBRA_IS_DEFAULT 1 -#endif -#endif - -/* Use milprint_summer back-end by default? */ -#ifndef MILPRINT_SUMMER_IS_DEFAULT -#if defined(SQL_IS_DEFAULT) && !SQL_IS_DEFAULT && !ALGEBRA_IS_DEFAULT -#define MILPRINT_SUMMER_IS_DEFAULT 1 -#else -#define MILPRINT_SUMMER_IS_DEFAULT 0 -#endif -#endif - -/* Use sql back-end by default? */ -#ifndef SQL_IS_DEFAULT -#if ALGEBRA_IS_DEFAULT || MILPRINT_SUMMER_IS_DEFAULT -#define SQL_IS_DEFAULT 0 -#else -#define SQL_IS_DEFAULT 1 -#endif -#endif - -#if (ALGEBRA_IS_DEFAULT + MILPRINT_SUMMER_IS_DEFAULT + SQL_IS_DEFAULT) != 1 -#error "Only one of ALGEBRA_IS_DEFAULT, MILPRINT_SUMMER_IS_DEFAULT, SQL_IS_DEFAULT can be set to 1" -#endif - #ifndef _SEEN_MONETDB_CONFIG_H #define _SEEN_MONETDB_CONFIG_H 1 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 @@ -421,7 +421,6 @@ int escapedStrlen(const char *src); int fltFromStr(const char *src, int *len, flt **dst); int fltToStr(str *dst, int *len, const flt *src); const flt flt_nil; -int ftruncate(int fd, off_t size); char *get_bin_path(void); int gettimeofday(struct timeval *tv, int *ignore_zone); int gprof_pthread_create(pthread_t *__restrict, __const pthread_attr_t *__restrict, void *( *fcn)(void *), void *__restrict); @@ -1558,6 +1557,7 @@ str MATsortTail(Client cntxt, MalBlkPtr str MBMmix(int *ret, int *batid); str MBMnormal(int *ret, oid *base, int *size, int *domain, int *stddev, int *mean); str MBMrandom(int *ret, oid *base, int *size, int *domain); +str MBMrandom_seed(int *ret, oid *base, int *size, int *domain, const int *seed); str MBMskewed(int *ret, oid *base, int *size, int *domain, int *skew); str MBMuniform(int *ret, oid *base, int *size, int *domain); str MCawakeClient(int id); @@ -2323,6 +2323,7 @@ str UUIDequal(bit *retval, str *l, str * str UUIDgenerateUuid(str *retval); str UUIDisaUUID(bit *retval, str *s); str UUIDstr2uuid(str *retval, str *s); +int UUIDtoString(str *retval, int *len, str handle); str UUIDuuid2str(str *retval, str *s); str XMLattribute(xml *ret, str *name, str *val); str XMLcomment(xml *x, str *s); @@ -2382,6 +2383,7 @@ str batcalcRef; str batmmathRef; str batmtimeRef; str batstrRef; +str batxmlRef; str bbpRef; int bindBAT(Box box, str name, str location); str bindRef; @@ -2458,6 +2460,7 @@ str datacellRef; str datacyclotronRef; int dataflowConflict(InstrPtr p); str dataflowRef; +str dateRef; int date_fromstr(str buf, int *len, date **d); int date_tostr(str *buf, int *len, date *val); int daytime_fromstr(str buf, int *len, daytime **ret); @@ -2569,7 +2572,7 @@ char **getHelp(Module m, str pat, int fl char **getHelpMatch(char *pat); MalBlkPtr getMalBlkHistory(MalBlkPtr mb, int idx); MalBlkPtr getMalBlkMarker(MalBlkPtr mb, str marker); -lng getMemoryClaim(MalBlkPtr mb, MalStkPtr stk, int pc, int i, int flag); +lng getMemoryClaim(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, int i, int flag); str getName(str nme, size_t len); int getPC(MalBlkPtr mb, InstrPtr p); str getPipeCatalog(int *nme, int *def, int *stat); @@ -3114,6 +3117,7 @@ str thetaselectRef; str thetasubselectRef; str thetauselectRef; str tidRef; +str timestampRef; int timestamp_fromstr(str buf, int *len, timestamp **ret); timestamp *timestamp_nil; int timestamp_tostr(str *buf, int *len, timestamp *val); diff --git a/configure.ag b/configure.ag --- a/configure.ag +++ b/configure.ag @@ -2710,7 +2710,6 @@ AC_CHECK_FUNCS([\ fpclassify \ fsync \ ftime \ - ftruncate \ getexecname \ getlogin \ getopt \ diff --git a/gdk/gdk_group.c b/gdk/gdk_group.c --- a/gdk/gdk_group.c +++ b/gdk/gdk_group.c @@ -70,6 +70,7 @@ * At the MAL level, the multigroup function would perform the dynamic * optimization. */ + #define GRPnotfound() \ do { \ /* no equal found: start new group */ \ @@ -96,11 +97,184 @@ ngrp++; \ } while (0) -#define GRPhashloop(TYPE) \ + +#define GRP_compare_consecutive_values(INIT_0,INIT_1,COMP,KEEP) \ do { \ - TYPE *w = (TYPE *) Tloc(b, 0); \ - for (r = BUNfirst(b), p = r, q = r + BATcount(b); p < q; p++) { \ - prb = hash_##TYPE(hs, &w[p]); \ + INIT_0; \ + for (r = BUNfirst(b), p = r + 1, q = r + BATcount(b); \ + p < q; \ + p++) { \ + INIT_1; \ + if ((grps && *grps != prev) || COMP) { \ + GRPnotfound(); \ + } else { \ + ngrps[p - r] = ngrp - 1; \ + if (histo) \ + cnts[ngrp - 1]++; \ + } \ + KEEP; \ + if (grps) \ + prev = *grps++; \ + } \ + } while(0) + +#define GRP_compare_consecutive_values_tpe(TYPE) \ + GRP_compare_consecutive_values( \ + /* INIT_0 */ TYPE *w = (TYPE *) Tloc(b, 0); \ + TYPE pw = w[BUNfirst(b)] , \ + /* INIT_1 */ , \ + /* COMP */ w[p] != pw , \ + /* KEEP */ pw = w[p] \ + ) + +#define GRP_compare_consecutive_values_any() \ + GRP_compare_consecutive_values( \ + /* INIT_0 */ pv = BUNtail(bi, BUNfirst(b)) , \ + /* INIT_1 */ v = BUNtail(bi, p) , \ + /* COMP */ cmp(v, pv) != 0 , \ + /* KEEP */ pv = v \ + ) + + +#define GRP_subscan_old_groups(INIT_0,INIT_1,COMP,KEEP) \ + do { \ + INIT_0; \ + pgrp[grps[0]] = BUNfirst(b); \ + for (j = r = BUNfirst(b), p = r + 1, q = r + BATcount(b); \ + p < q; \ + p++) { \ + INIT_1; \ + if (COMP) { \ + /* range [j, p) is all same value */ \ + /* i is position where we saw p's old \ + * group last */ \ + i = pgrp[grps[p - r]]; \ + /* p is new position where we saw this \ + * group */ \ + pgrp[grps[p - r]] = p; \ + if (j <= i && i < p) { \ + /* i is position of equal \ + * value in same old group as \ + * p, so p gets same new group \ + * as i */ \ + oid grp = ngrps[i - r]; \ + ngrps[p - r] = grp; \ + if (histo) \ + cnts[grp]++; \ + if (gn->tsorted && \ + grp != ngrp - 1) \ + gn->tsorted = 0; \ + /* we found the value/group \ + * combination, go to next \ + * value */ \ + continue; \ + } \ + } else { \ + /* value differs from previous value */ \ + j = p; \ + KEEP; \ + pgrp[grps[p - r]] = p; \ + } \ + /* start a new group */ \ + GRPnotfound(); \ + } \ + } while(0) + +#define GRP_subscan_old_groups_tpe(TYPE) \ + GRP_subscan_old_groups( \ + /* INIT_0 */ TYPE *w = (TYPE *) Tloc(b, 0); \ + TYPE pw = w[BUNfirst(b)] , \ + /* INIT_1 */ , \ + /* COMP */ w[p] == pw , \ + /* KEEP */ pw = w[p] \ + ) + +#define GRP_subscan_old_groups_any() \ + GRP_subscan_old_groups( \ + /* INIT_0 */ pv = BUNtail(bi, BUNfirst(b)) , \ + /* INIT_1 */ v = BUNtail(bi, p) , \ + /* COMP */ cmp(v, pv) == 0 , \ + /* KEEP */ pv = v \ + ) + + +#define GRP_use_existing_hash_table(INIT_0,INIT_1,HASH,COMP) \ + do { \ + INIT_0; \ + for (r = BUNfirst(b), p = r, q = r + BATcount(b); \ + p < q; \ + p++) { \ + INIT_1; \ + /* this loop is similar, but not equal, to \ + * HASHloop: the difference is that we only \ + * consider BUNs smaller than the one we're \ + * looking up (p), and that we also consider \ + * the input groups */ \ + if (grps) { \ + for (hb = HASHget(hs, HASH); \ + hb != HASHnil(hs); \ + hb = HASHgetlink(hs, hb)) { \ + if (hb < p && \ + grps[hb - r] == grps[p - r] && \ + COMP) { \ + oid grp = ngrps[hb - r]; \ + ngrps[p - r] = grp; \ + if (histo) \ + cnts[grp]++; \ + if (gn->tsorted && \ + grp != ngrp - 1) \ + gn->tsorted = 0; \ + break; \ + } \ + } \ + } else { \ + for (hb = HASHget(hs, HASH); \ + hb != HASHnil(hs); \ + hb = HASHgetlink(hs, hb)) { \ + if (hb < p && \ + COMP) { \ + oid grp = ngrps[hb - r]; \ + ngrps[p - r] = grp; \ + if (histo) \ + cnts[grp]++; \ + if (gn->tsorted && \ + grp != ngrp - 1) \ + gn->tsorted = 0; \ + break; \ + } \ + } \ + } \ + if (hb == HASHnil(hs)) { \ + GRPnotfound(); \ + } \ + } \ + } while(0) + _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list