MonetDB: default - added upgrade code, ie for the recent changes...
Changeset: cc51132c41b0 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cc51132c41b0 Modified Files: gdk/gdk_logger.c gdk/gdk_logger.h sql/backends/monet5/sql_scenario.c sql/storage/bat/bat_logger.c sql/storage/store.c Branch: default Log Message: added upgrade code, ie for the recent changes in functions (var arg/res), schema (system column) and argument inout column added. Logger can now handle a much larger amount of changes (64 bits). added upgrade code for this aswell. updated the version number in sql, ie users of default should dump restore. diffs (285 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -108,7 +108,7 @@ static char *log_commands[] = { typedef struct logformat_t { char flag; int tid; - int nr; + lng nr; } logformat; #define LOGFILE log @@ -138,10 +138,24 @@ logbat_new(int tt, BUN size) } static int +log_read_format_old(logger *l, logformat *data) +{ + int nr = 0; + int ok = mnstr_read(l-log, data-flag, 1, 1) == 1 + mnstr_readInt(l-log, nr) == 1 + mnstr_readInt(l-log, data-tid) == 1; + data-nr = nr; + return ok; +} + +static int log_read_format(logger *l, logformat *data) { + if (l-postfuncp) /* we need to convert from the old logformat, +needs to be removed once we released Aug2014 */ + return log_read_format_old(l, data); return mnstr_read(l-log, data-flag, 1, 1) == 1 - mnstr_readInt(l-log, data-nr) == 1 + mnstr_readLng(l-log, data-nr) == 1 mnstr_readInt(l-log, data-tid) == 1; } @@ -149,7 +163,7 @@ static int log_write_format(logger *l, logformat *data) { if (mnstr_write(l-log, data-flag, 1, 1) == 1 - mnstr_writeInt(l-log, data-nr) + mnstr_writeLng(l-log, data-nr) mnstr_writeInt(l-log, data-tid)) return LOG_OK; fprintf(stderr, !ERROR: log_write_format: write failed\n); @@ -246,7 +260,7 @@ la_bat_clear(logger *lg, logaction *la) static int log_read_seq(logger *lg, logformat *l) { - int seq = l-nr; + lng seq = l-nr; lng val; BUN p; @@ -273,7 +287,7 @@ log_read_updates(logger *lg, trans *tr, int ht = -1, tt = -1, hseq = 0, tseq = 0; if (lg-debug 1) - fprintf(stderr, #logger found log_read_updates %s %s %d\n, name, l-flag == LOG_INSERT ? insert : l-flag == LOG_DELETE ? delete : update, l-nr); + fprintf(stderr, #logger found log_read_updates %s %s LLFMT \n, name, l-flag == LOG_INSERT ? insert : l-flag == LOG_DELETE ? delete : update, l-nr); if (b) { ht = b-htype; @@ -806,7 +820,7 @@ logger_readlog(logger *lg, char *filenam fprintf(stderr, %s, log_commands[(int) l.flag]); else fprintf(stderr, %d, l.flag); - fprintf(stderr, %d %d, l.tid, l.nr); + fprintf(stderr, %d LLFMT, l.tid, l.nr); if (name) fprintf(stderr, %s, name); fprintf(stderr, \n); @@ -1789,7 +1803,7 @@ log_delta(logger *lg, BAT *b, char *name } if (lg-debug 1) - fprintf(stderr, #Logged %s %d inserts\n, name, l.nr); + fprintf(stderr, #Logged %s LLFMT inserts\n, name, l.nr); } if (ok == GDK_FAIL) fprintf(stderr, !ERROR: log_delta: write failed\n); @@ -1840,7 +1854,7 @@ log_bat(logger *lg, BAT *b, char *name) } if (lg-debug 1) - fprintf(stderr, #Logged %s %d inserts\n, name, l.nr); + fprintf(stderr, #Logged %s LLFMT inserts\n, name, l.nr); } l.nr = (int) (b-batFirst - b-batDeleted); lg-changes += l.nr; @@ -1864,7 +1878,7 @@ log_bat(logger *lg, BAT *b, char *name) } if (lg-debug 1) - fprintf(stderr, #Logged %s %d deletes\n, name, l.nr); + fprintf(stderr, #Logged %s LLFMT deletes\n, name, l.nr); } if (ok == GDK_FAIL) fprintf(stderr, !ERROR: log_bat: write failed\n); diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h --- a/gdk/gdk_logger.h +++ b/gdk/gdk_logger.h @@ -25,7 +25,7 @@ typedef struct logaction { int type; /* type of change */ - int nr; + lng nr; int ht; /* vid(-1),void etc */ int tt; lng id; diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -600,11 +600,7 @@
MonetDB: default - more 64 bit logger fixes.
Changeset: 5758831bafd3 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5758831bafd3 Modified Files: gdk/gdk_logger.c Branch: default Log Message: more 64 bit logger fixes. diffs (32 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -1780,8 +1780,8 @@ log_delta(logger *lg, BAT *b, char *name l.tid = lg-tid; nr = (BUNlast(b) - BUNfirst(b)); - assert(nr = GDK_int_max); - l.nr = (int) nr; + assert(nr = GDK_lng_max); + l.nr = nr; lg-changes += l.nr; if (l.nr) { @@ -1823,7 +1823,7 @@ log_bat(logger *lg, BAT *b, char *name) } l.tid = lg-tid; - l.nr = (int) (BUNlast(b) - b-batInserted); + l.nr = (BUNlast(b) - b-batInserted); lg-changes += l.nr; if (l.nr) { @@ -1856,7 +1856,7 @@ log_bat(logger *lg, BAT *b, char *name) if (lg-debug 1) fprintf(stderr, #Logged %s LLFMT inserts\n, name, l.nr); } - l.nr = (int) (b-batFirst - b-batDeleted); + l.nr = (b-batFirst - b-batDeleted); lg-changes += l.nr; if (l.nr ok == GDK_SUCCEED) { ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - more 64/32 bit fixes for logger structures
Changeset: 6d2a1683974c for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6d2a1683974c Modified Files: gdk/gdk_logger.h Branch: default Log Message: more 64/32 bit fixes for logger structures diffs (12 lines): diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h --- a/gdk/gdk_logger.h +++ b/gdk/gdk_logger.h @@ -49,7 +49,7 @@ typedef void (*postversionfix_fptr)(void typedef struct logger { int debug; - size_t changes; + lng changes; int version; lng id; int tid; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - fix compilation on windows
Changeset: c43ef3958880 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c43ef3958880 Modified Files: gdk/gdk_logger.c Branch: default Log Message: fix compilation on windows diffs (12 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -832,7 +832,7 @@ logger_readlog(logger *lg, char *filenam case LOG_START: if (l.nr lg-tid) lg-tid = l.nr; - tr = tr_create(tr, l.nr); + tr = tr_create(tr, (int)l.nr); if (lg-debug 1) fprintf(stderr, #logger tstart %d\n, tr-tid); break; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - more 32 bit compilation fixes.
Changeset: a221f132256f for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a221f132256f Modified Files: gdk/gdk_logger.c Branch: default Log Message: more 32 bit compilation fixes. diffs (21 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -1771,7 +1771,7 @@ log_delta(logger *lg, BAT *b, char *name int ok = GDK_SUCCEED; logformat l; BUN p; - BUN nr; + lng nr; if (lg-debug 128) { /* logging is switched off */ @@ -1842,7 +1842,7 @@ log_bat(logger *lg, BAT *b, char *name) !isVIEW(b)) { const void *t = BUNtail(bi, b-batInserted); - ok = wt(t, lg-log, l.nr); + ok = wt(t, lg-log, (size_t)l.nr); } else { for (p = b-batInserted; p BUNlast(b) ok == GDK_SUCCEED; p++) { const void *h = BUNhead(bi, p); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - fixed lng vs int problem on windows
Changeset: de6dd386edca for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=de6dd386edca Modified Files: gdk/gdk_logger.c Branch: default Log Message: fixed lng vs int problem on windows diffs (12 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -831,7 +831,7 @@ logger_readlog(logger *lg, char *filenam switch (l.flag) { case LOG_START: if (l.nr lg-tid) - lg-tid = l.nr; + lg-tid = (int)l.nr; tr = tr_create(tr, (int)l.nr); if (lg-debug 1) fprintf(stderr, #logger tstart %d\n, tr-tid); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - add not true/not false parsing (solving bug 3...
Changeset: be17bc388a09 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=be17bc388a09 Modified Files: sql/server/sql_parser.y Branch: Jan2014 Log Message: add not true/not false parsing (solving bug 3505) diffs (22 lines): diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -4272,10 +4272,18 @@ literal: { sql_subtype t; sql_find_subtype(t, boolean, 0, 0 ); $$ = _newAtomNode( atom_bool(SA, t, FALSE)); } + | NOT BOOL_FALSE + { sql_subtype t; + sql_find_subtype(t, boolean, 0, 0 ); + $$ = _newAtomNode( atom_bool(SA, t, TRUE)); } | BOOL_TRUE { sql_subtype t; sql_find_subtype(t, boolean, 0, 0 ); $$ = _newAtomNode( atom_bool(SA, t, TRUE)); } + | NOT BOOL_TRUE + { sql_subtype t; + sql_find_subtype(t, boolean, 0, 0 ); + $$ = _newAtomNode( atom_bool(SA, t, FALSE)); } ; interval_expression: ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - don't assert but return error on atom_cast (f...
Changeset: 17cd8c14c3b4 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=17cd8c14c3b4 Modified Files: sql/server/sql_atom.c Branch: Jan2014 Log Message: don't assert but return error on atom_cast (fix bug 3506) diffs (83 lines): diff --git a/sql/server/sql_atom.c b/sql/server/sql_atom.c --- a/sql/server/sql_atom.c +++ b/sql/server/sql_atom.c @@ -657,21 +657,24 @@ atom_cast(atom *a, sql_subtype *tp) else a-data.val.lval *= mul; } else if (a-data.vtype == TYPE_int) { - assert(div || ((lng) GDK_int_min = (lng) a-data.val.ival * mul (lng) a-data.val.ival * mul = (lng) GDK_int_max)); + if (!div ((lng) GDK_int_min (lng) a-data.val.ival * mul || (lng) a-data.val.ival * mul (lng) GDK_int_max)) + return 0; a-data.val.ival += (int)rnd; if (div) a-data.val.ival /= (int) mul; else a-data.val.ival *= (int) mul; } else if (a-data.vtype == TYPE_sht) { - assert(div || ((lng) GDK_sht_min = (lng) a-data.val.shval * mul (lng) a-data.val.shval * mul = (lng) GDK_sht_max)); + if (!div ((lng) GDK_sht_min (lng) a-data.val.shval * mul || (lng) a-data.val.shval * mul (lng) GDK_sht_max)) + return 0; a-data.val.shval += (sht)rnd; if (div) a-data.val.shval /= (sht) mul; else a-data.val.shval *= (sht) mul; } else if (a-data.vtype == TYPE_bte) { - assert(div || ((lng) GDK_bte_min = (lng) a-data.val.btval * mul (lng) a-data.val.btval * mul = (lng) GDK_bte_max)); + if (!div ((lng) GDK_bte_min (lng) a-data.val.btval * mul || (lng) a-data.val.btval * mul (lng) GDK_bte_max)) + return 0; a-data.val.btval += (bte)rnd; if (div) a-data.val.btval /= (bte) mul; @@ -711,13 +714,16 @@ atom_cast(atom *a, sql_subtype *tp) if (a-data.vtype == TYPE_lng) { a-data.val.lval = (int) val; } else if (a-data.vtype == TYPE_int) { - assert( ((lng) GDK_int_min = val val = (lng) GDK_int_max)); + if ( ((lng) GDK_int_min val || val (lng) GDK_int_max)) + return 0; a-data.val.ival = (int) val; } else if (a-data.vtype == TYPE_sht) { - assert( ((lng) GDK_sht_min = val val = (lng) GDK_sht_max)); + if ( ((lng) GDK_sht_min val || val (lng) GDK_sht_max)) + return 0; a-data.val.shval = (int) val; } else if (a-data.vtype == TYPE_bte) { - assert( ((lng) GDK_bte_min = val val = (lng) GDK_bte_max)); + if ( ((lng) GDK_bte_min val || val (lng) GDK_bte_max)) + return 0; a-data.val.btval = (int) val; } return 1; @@ -779,15 +785,18 @@ atom_cast(atom *a, sql_subtype *tp) if (a-data.vtype == TYPE_lng) a-data.val.lval *= mul; else if (a-data.vtype == TYPE_int) { - assert((lng) GDK_int_min = (lng) a-data.val.ival * mul (lng) a-data.val.ival * mul = (lng) GDK_int_max); + if ((lng) GDK_int_min (lng) a-data.val.ival * mul || (lng) a-data.val.ival * mul (lng) GDK_int_max) + return 0; a-data.val.ival *= (int) mul; } else if (a-data.vtype == TYPE_sht) { - assert((lng) GDK_sht_min = (lng) a-data.val.shval * mul (lng) a-data.val.shval * mul = (lng) GDK_sht_max); + if ((lng) GDK_sht_min (lng) a-data.val.shval * mul || (lng) a-data.val.shval * mul (lng) GDK_sht_max) + return 0; a-data.val.shval *= (sht) mul; } else if (a-data.vtype == TYPE_bte) { -
MonetDB: Jan2014 - added limit without records in copy into. Bew...
Changeset: 08f2048691fb for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=08f2048691fb Modified Files: sql/server/sql_parser.y Branch: Jan2014 Log Message: added limit without records in copy into. Beware this can only work with file based input (not with streaming!) Fixes bug 3504 diffs (16 lines): diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -2528,7 +2528,11 @@ opt_using: opt_nr: /* empty */{ $$ = NULL; } | poslng RECORDS { $$ = append_lng(append_lng(L(), $1), 0); } - | poslng OFFSET poslng RECORDS { $$ = append_lng(append_lng(L(), $1), $3); } + | OFFSET poslng { $$ = append_lng(append_lng(L(), -1), $2); } + | poslng OFFSET poslng RECORDS + { $$ = append_lng(append_lng(L(), $1), $3); } + | poslng RECORDS OFFSET poslng + { $$ = append_lng(append_lng(L(), $1), $4); } ; opt_null_string: ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - fixed bug 3498, make sure we have a table (no...
Changeset: d3a1eddca24b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d3a1eddca24b Modified Files: sql/backends/monet5/rel_bin.c Branch: Jan2014 Log Message: fixed bug 3498, make sure we have a table (not a single row) before we do the topn. fixed bug 3489, distinct with order by, use the proper extend directly for the possible order by columns (which are not part of the output) diffs (74 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -1768,7 +1768,7 @@ rel2bin_semijoin( mvc *sql, sql_rel *rel } static stmt * -rel2bin_distinct(mvc *sql, stmt *s) +rel2bin_distinct(mvc *sql, stmt *s, stmt **distinct) { node *n; stmt *g = NULL, *grp = NULL, *ext = NULL, *cnt = NULL; @@ -1808,6 +1808,8 @@ rel2bin_distinct(mvc *sql, stmt *s) list_append(rl, stmt_project(sql-sa, ext, t)); } + if (distinct) + *distinct = ext; s = stmt_list(sql-sa, rl); return s; } @@ -1869,7 +1871,7 @@ rel2bin_union( mvc *sql, sql_rel *rel, l } if (need_distinct(rel)) - sub = rel2bin_distinct(sql, sub); + sub = rel2bin_distinct(sql, sub, NULL); return sub; } @@ -2008,7 +2010,7 @@ rel2bin_except( mvc *sql, sql_rel *rel, } if (need_distinct(rel)) - sub = rel2bin_distinct(sql, sub); + sub = rel2bin_distinct(sql, sub, NULL); return sub; } @@ -2134,7 +2136,7 @@ rel2bin_inter( mvc *sql, sql_rel *rel, l } if (need_distinct(rel)) - sub = rel2bin_distinct(sql, sub); + sub = rel2bin_distinct(sql, sub, NULL); return sub; } @@ -2232,7 +2234,10 @@ rel2bin_project( mvc *sql, sql_rel *rel, assert(0); return NULL; } - if (sub sub-nrcols = 1 s-nrcols == 0) + /* single value with limit */ + if (topn rel-r sub sub-nrcols == 0) + s = const_column(sql-sa, s); + else if (sub sub-nrcols = 1 s-nrcols == 0) s = stmt_const(sql-sa, bin_first_column(sql-sa, sub), s); s = stmt_rename(sql, rel, exp, s); @@ -2288,11 +2293,11 @@ rel2bin_project( mvc *sql, sql_rel *rel, sub = stmt_list(sql-sa, npl); } if (need_distinct(rel)) { - psub = rel2bin_distinct(sql, psub); + stmt *distinct = NULL; + psub = rel2bin_distinct(sql, psub, distinct); /* also rebuild sub as multiple orderby expressions may use the sub table (ie aren't part of the result columns) */ if (sub) { list *npl = sa_list(sql-sa); - stmt *distinct = stmt_mirror(sql-sa, psub-op4.lval-h-data); pl = sub-op4.lval; for ( n=pl-h ; n; n = n-next) ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - fixed bug 3491, ie not need for a crossproduc...
Changeset: d207b2b7ece5 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d207b2b7ece5 Modified Files: sql/server/rel_select.c Branch: Jan2014 Log Message: fixed bug 3491, ie not need for a crossproduct if both left and right are only expressions, not relations. diffs (12 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -3019,7 +3019,7 @@ rel_logical_exp(mvc *sql, sql_rel *rel, e = exp_compare(sql-sa, e, r, cmp_equal); rel = rel_select(sql-sa, rel, e); } - if (l_is_value) + if (l_is_value outer) rel = rel_crossproduct(sql-sa, outer, rel, op_join); rel = rel_project(sql-sa, rel, rel_projections(sql, outer, NULL, 1, 1)); set_processed(rel); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - on windows convert \r\n substrings in seperat...
Changeset: 1f4ed128ee53 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1f4ed128ee53 Modified Files: sql/backends/monet5/sql.c Branch: Jan2014 Log Message: on windows convert \r\n substrings in seperators into \n. diffs (37 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -2654,6 +2654,21 @@ bat2return(MalStkPtr stk, InstrPtr pci, } } +#ifdef WIN32 +static void +fix_windows_newline(unsigned char *s) +{ + char *p = NULL; + int c = '\r'; + + if (s (p=strchr((char*)s, c)) != NULL p[1] == '\n') { + for(; p[1]; p++) + p[0] = p[1]; + p[0] = 0; + } +} +#endif + /* str mvc_import_table_wrap(int *res, str *sname, str *tname, unsigned char* *T, unsigned char* *R, unsigned char* *S, unsigned char* *N, str *fname, lng *sz, lng *offset); */ str mvc_import_table_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) @@ -2710,6 +2725,11 @@ mvc_import_table_wrap(Client cntxt, MalB #else s = bstream_create(ss, 0x200); #endif +#ifdef WIN32 + fix_windows_newline(tsep); + fix_windows_newline(rsep); + fix_windows_newline(ssep); +#endif if (s != NULL) { b = mvc_import_table(cntxt, be-mvc, s, *sname, *tname, (char *) tsep, (char *) rsep, (char *) ssep, (char *) ns, *sz, *offset, *locked); bstream_destroy(s); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - merging
Changeset: 63f90cc76c10 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=63f90cc76c10 Modified Files: MonetDB.spec configure.ag Branch: Jan2014 Log Message: merging diffs (52 lines): diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -589,9 +589,9 @@ used from the MAL level. Summary: MonetDB5 SQL server modules Group: Applications/Databases Requires: MonetDB5-server = %{version}-%{release} -%if %{?rhel:0}%{!?rhel:1} -# for systemd-tmpfiles -Requires: systemd-units +%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} = 7 +# RHEL = 7, and all current Fedora +Requires: %{_bindir}/systemd-tmpfiles %endif Obsoletes: MonetDB-SQL-devel Obsoletes: %{name}-SQL @@ -605,7 +605,7 @@ accelerators. It also has an SQL fronte This package contains the SQL frontend for MonetDB. If you want to use SQL with MonetDB, you will need to install this package. -%if %{?rhel:0}%{!?rhel:1} +%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} = 7 %post SQL-server5 systemd-tmpfiles --create %{_sysconfdir}/tmpfiles.d/monetdbd.conf %endif @@ -615,11 +615,11 @@ systemd-tmpfiles --create %{_sysconfdir} %{_bindir}/monetdb %{_bindir}/monetdbd %dir %attr(775,monetdb,monetdb) %{_localstatedir}/log/monetdb -%if %{?rhel:0}%{!?rhel:1} -# Fedora 15 and newer +%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} = 7 +# RHEL = 7, and all current Fedora %{_sysconfdir}/tmpfiles.d/monetdbd.conf %else -# RedHat Enterprise Linux +# RedHat Enterprise Linux 7 %dir %attr(775,monetdb,monetdb) %{_localstatedir}/run/monetdb %exclude %{_sysconfdir}/tmpfiles.d/monetdbd.conf %endif diff --git a/configure.ag b/configure.ag --- a/configure.ag +++ b/configure.ag @@ -486,7 +486,7 @@ case $host_os in if test -s /etc/os-release; then # this is the new way of getting release information # works for Fedora = 17, Ubuntu = 12.04 (Precise Pangolin) - LINUX_DIST=`source /etc/os-release; echo ${NAME}:${VERSION_ID}` + LINUX_DIST=`source /etc/os-release; echo ${ID}:${VERSION_ID}` elif test -s /etc/fedora-release ; then LINUX_DIST=`cat /etc/fedora-release | head -n1 \ | sed 's|^.*\(Fedora\).* release \([[0-9]][[^ \n]]*\)\( .*\)*$|\1:\2|'` ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - added test for bug 3506
Changeset: d89feba26343 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d89feba26343 Added Files: sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.sql sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.err sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.out Modified Files: sql/test/BugTracker-2014/Tests/All Branch: Jan2014 Log Message: added test for bug 3506 diffs (114 lines): diff --git a/sql/test/BugTracker-2014/Tests/All b/sql/test/BugTracker-2014/Tests/All --- a/sql/test/BugTracker-2014/Tests/All +++ b/sql/test/BugTracker-2014/Tests/All @@ -18,6 +18,7 @@ in_incorrect_multi.Bug-3462 crash_on_groupby_distinct_serial.Bug-3463 local-temp-1.Bug-3468 local-temp-2.Bug-3468 +varchar_conversion_crash.Bug-3506 oid-table-assert.Bug-3514 round-properties.Bug-3515 union_with_subqueries.Bug-3518 diff --git a/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.sql b/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.sql @@ -0,0 +1,8 @@ +CREATE TABLE config (id SERIAL ,dataset INT NOT NULL ,section VARCHAR(100) ,key VARCHAR(100) ,value VARCHAR(500) ,type VARCHAR(5) ,UNIQUE (dataset, section, key)) ; + +INSERT INTO config (dataset, section, key, value, type) VALUES (6, 'quality_lofar', 'low_bound', 1.9, 'float'); +INSERT INTO config (dataset, section, key, value, type) VALUES (6, 'quality_lofar', 'high_bound', 80, 'int'); + +select * from config; + +drop table config; diff --git a/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.err b/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.err @@ -0,0 +1,38 @@ +stderr of test 'varchar_conversion_crash.Bug-3506` in directory 'sql/test/BugTracker-2014` itself: + + +# 18:58:33 +# 18:58:33 mserver5 --debug=10 --set gdk_nr_threads=0 --set mapi_open=true --set mapi_port=38663 --set mapi_usock=/var/tmp/mtest-28742/.s.monetdb.38663 --set monet_prompt= --forcemito --set mal_listing=2 --dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014 --set mal_listing=0 +# 18:58:33 + +# builtin opt gdk_dbpath = /home/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm/demo +# builtin opt gdk_debug = 0 +# builtin opt gdk_vmtrim = no +# builtin opt monet_prompt = +# builtin opt monet_daemon = no +# builtin opt mapi_port = 5 +# builtin opt mapi_open = false +# builtin opt mapi_autosense = false +# builtin opt sql_optimizer = default_pipe +# builtin opt sql_debug = 0 +# cmdline opt gdk_nr_threads = 0 +# cmdline opt mapi_open = true +# cmdline opt mapi_port = 38663 +# cmdline opt mapi_usock = /var/tmp/mtest-28742/.s.monetdb.38663 +# cmdline opt monet_prompt = +# cmdline opt mal_listing = 2 +# cmdline opt gdk_dbpath = /home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014 +# cmdline opt mal_listing = 0 + +# 18:58:33 +# 18:58:33 mclient -lsql -ftest -Eutf-8 -i -e --host=/var/tmp/mtest-28742 --port=38663 +# 18:58:33 + +MAPI = (monetdb) /var/tmp/mtest-28742/.s.monetdb.38663 +QUERY = INSERT INTO config (dataset, section, key, value, type) VALUES (6, 'quality_lofar', 'high_bound', 80, 'int'); +ERROR = !EXEC: wrong type for argument 4 of prepared statement: decimal, expected decimal + +# 18:58:33 +# 18:58:33 Done. +# 18:58:33 + diff --git a/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.out b/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.out @@ -0,0 +1,42 @@ +stdout of test 'varchar_conversion_crash.Bug-3506` in directory 'sql/test/BugTracker-2014` itself: + + +# 18:58:33 +# 18:58:33 mserver5 --debug=10 --set gdk_nr_threads=0 --set mapi_open=true --set mapi_port=38663 --set mapi_usock=/var/tmp/mtest-28742/.s.monetdb.38663 --set monet_prompt= --forcemito --set mal_listing=2 --dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014 --set mal_listing=0 +# 18:58:33 + +# MonetDB 5 server v11.17.22 +# This is an unreleased version +# Serving database 'mTests_sql_test_BugTracker-2014', using 4 threads +# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked +# Found 7.334 GiB available main-memory. +# Copyright (c) 1993-July 2008 CWI. +# Copyright (c) August 2008-2014 MonetDB B.V., all rights reserved +# Visit http://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://localhost.nes.nl:38663/ +# Listening for UNIX domain connection requests on
MonetDB: Jan2014 - removed dead code
Changeset: 956d1c0ab176 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=956d1c0ab176 Modified Files: monetdb5/optimizer/opt_mergetable.c Branch: Jan2014 Log Message: removed dead code diffs (22 lines): diff --git a/monetdb5/optimizer/opt_mergetable.c b/monetdb5/optimizer/opt_mergetable.c --- a/monetdb5/optimizer/opt_mergetable.c +++ b/monetdb5/optimizer/opt_mergetable.c @@ -709,18 +709,6 @@ mat_aggr(MalBlkPtr mb, InstrPtr p, mat_t s = pushArgument(mb, s, getArg(r,0)); pushInstruction(mb, s); r = s; - -/* DEAD CODE FOUND BY COVERITY - if (isAvg) { - s = newInstruction(mb,ASSIGNsymbol); - setModuleId(s, algebraRef); - setFunctionId(s, selectNotNilRef); - getArg(s,0) = newTmpVariable(mb, battp2); - s = pushArgument(mb, s, getArg(u,0)); - pushInstruction(mb, s); - u = s; - } -*/ } /* for avg we do sum (avg*(count/sumcount) ) */ ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - reenable the rel_push_semijoin_down optimzer
Changeset: 95fd0f2a50b8 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=95fd0f2a50b8 Modified Files: sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out sql/benchmarks/tpch/LOCKED/Tests/18.stable.out sql/benchmarks/tpch/Tests/01-22.stable.out sql/benchmarks/tpch/Tests/16-explain.stable.out sql/benchmarks/tpch/Tests/16-plan.stable.out sql/benchmarks/tpch/Tests/18-explain.stable.out sql/benchmarks/tpch/Tests/18-plan.stable.out sql/benchmarks/tpch/Tests/18.stable.out sql/benchmarks/tpch/Tests/20-explain.stable.out sql/benchmarks/tpch/Tests/20-plan.stable.out sql/server/rel_exp.c sql/server/rel_optimizer.c Branch: default Log Message: reenable the rel_push_semijoin_down optimzer diffs (truncated from 1015 to 300 lines): diff --git a/sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out b/sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out --- a/sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out +++ b/sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out @@ -1216,7 +1216,7 @@ Ready. % rewrite, count # name % clob,int # type % 7, 1 # length -[ joinidx, 2 ] +[ joinidx, 1 ] # 11:48:06 # 11:48:06 Mtimeout -timeout 60 MapiClient -lsql -umonetdb -Pmonetdb --host=localhost --port=35781 diff --git a/sql/benchmarks/tpch/LOCKED/Tests/18.stable.out b/sql/benchmarks/tpch/LOCKED/Tests/18.stable.out --- a/sql/benchmarks/tpch/LOCKED/Tests/18.stable.out +++ b/sql/benchmarks/tpch/LOCKED/Tests/18.stable.out @@ -70,7 +70,7 @@ Ready. % rewrite, count # name % clob,int # type % 7, 1 # length -[ joinidx, 2 ] +[ joinidx, 1 ] # 09:17:20 # 09:17:20 Done. diff --git a/sql/benchmarks/tpch/Tests/01-22.stable.out b/sql/benchmarks/tpch/Tests/01-22.stable.out --- a/sql/benchmarks/tpch/Tests/01-22.stable.out +++ b/sql/benchmarks/tpch/Tests/01-22.stable.out @@ -1216,7 +1216,7 @@ Ready. % rewrite, count # name % clob,int # type % 7, 1 # length -[ joinidx, 2 ] +[ joinidx, 1 ] # 11:48:06 # 11:48:06 Mtimeout -timeout 60 MapiClient -lsql -umonetdb -Pmonetdb --host=localhost --port=35781 diff --git a/sql/benchmarks/tpch/Tests/16-explain.stable.out b/sql/benchmarks/tpch/Tests/16-explain.stable.out --- a/sql/benchmarks/tpch/Tests/16-explain.stable.out +++ b/sql/benchmarks/tpch/Tests/16-explain.stable.out @@ -63,94 +63,94 @@ Ready. function user.s2_1{autoCommit=true}(A0:str,A1:str,A2:int,A3:int,A4:int,A5:int,A6:int,A7:int,A8:int,A9:int,A10:str):void; X_13 := sql.mvc(); X_14:bat[:oid,:oid] := sql.tid(X_13,sys,partsupp); -X_17 := sql.bind_idxbat(X_13,sys,partsupp,partsupp_ps_partkey_fkey,0); -(X_20,r1_20) := sql.bind_idxbat(X_13,sys,partsupp,partsupp_ps_partkey_fkey,2); -X_23 := sql.bind_idxbat(X_13,sys,partsupp,partsupp_ps_partkey_fkey,1); +X_17 := sql.bind(X_13,sys,partsupp,ps_suppkey,0); +(X_20,r1_20) := sql.bind(X_13,sys,partsupp,ps_suppkey,2); +X_23 := sql.bind(X_13,sys,partsupp,ps_suppkey,1); X_25 := sql.delta(X_17,X_20,r1_20,X_23); X_26 := algebra.leftfetchjoin(X_14,X_25); -X_27:bat[:oid,:oid] := sql.tid(X_13,sys,part); -X_29 := sql.bind(X_13,sys,part,p_size,0); -(X_31,r1_31) := sql.bind(X_13,sys,part,p_size,2); -X_33 := sql.bind(X_13,sys,part,p_size,1); -X_34 := sql.delta(X_29,X_31,r1_31,X_33); -X_35 := algebra.leftfetchjoin(X_27,X_34); -X_36 := sql.bind(X_13,sys,part,p_type,0); -(X_38,r1_39) := sql.bind(X_13,sys,part,p_type,2); -X_40 := sql.bind(X_13,sys,part,p_type,1); -X_41 := sql.delta(X_36,X_38,r1_39,X_40); -X_42 := algebra.leftfetchjoin(X_27,X_41); -X_44 := sql.bind(X_13,sys,part,p_brand,0); -(X_47,r1_50) := sql.bind(X_13,sys,part,p_brand,2); -X_49 := sql.bind(X_13,sys,part,p_brand,1); -X_50 := sql.delta(X_44,X_47,r1_50,X_49); -X_51 := algebra.leftfetchjoin(X_27,X_50); -X_52 := algebra.subselect(X_51,A0,A0,true,true,true); -X_54 := algebra.likesubselect(X_42,X_52,A1,,true); -X_55 := algebra.subselect(X_35,X_54,A2,A2,true,true,false); -X_57 := algebra.subselect(X_35,X_54,A3,A3,true,true,false); -X_58 := bat.mergecand(X_55,X_57); -X_59 := algebra.subselect(X_35,X_54,A4,A4,true,true,false); -X_60 := bat.mergecand(X_58,X_59); -X_61 := algebra.subselect(X_35,X_54,A5,A5,true,true,false); -X_62 := bat.mergecand(X_60,X_61); -X_63 := algebra.subselect(X_35,X_54,A6,A6,true,true,false); -X_64 := bat.mergecand(X_62,X_63); -X_65 := algebra.subselect(X_35,X_54,A7,A7,true,true,false); -X_66 := bat.mergecand(X_64,X_65); -X_67 := algebra.subselect(X_35,X_54,A8,A8,true,true,false); -X_68 := bat.mergecand(X_66,X_67); -X_69 := algebra.subselect(X_35,X_54,A9,A9,true,true,false); -X_70 := bat.mergecand(X_68,X_69); -X_71 := algebra.leftfetchjoin(X_70,X_27); -(X_72,r1_83) := algebra.join(X_26,X_71); -X_74 :=
MonetDB: Jan2014 - also cleanup columns of views
Changeset: 051b34d4f934 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=051b34d4f934 Modified Files: sql/storage/store.c Branch: Jan2014 Log Message: also cleanup columns of views diffs (12 lines): diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -3562,7 +3562,7 @@ sys_drop_table(sql_trans *tr, sql_table sql_trans_drop_dependencies(tr, t-base.id); - if (isKindOfTable(t)) + if (isKindOfTable(t) || isView(t)) sys_drop_columns(tr, t, drop_action); if (isGlobal(t)) ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - properly handle type equality for floating po...
Changeset: b7e69e104736 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b7e69e104736 Modified Files: sql/benchmarks/ssbm/Tests/02-explain.stable.out sql/benchmarks/ssbm/Tests/02-plan.stable.out sql/benchmarks/ssbm/Tests/03-explain.stable.out sql/benchmarks/ssbm/Tests/03-plan.stable.out sql/benchmarks/ssbm/Tests/07-explain.stable.out sql/benchmarks/ssbm/Tests/07-plan.stable.out sql/benchmarks/ssbm/Tests/08-explain.stable.out sql/benchmarks/ssbm/Tests/08-plan.stable.out sql/benchmarks/tpch/Tests/01-explain.stable.out sql/benchmarks/tpch/Tests/01-plan.stable.out sql/benchmarks/tpch/Tests/03-explain.stable.out sql/benchmarks/tpch/Tests/03-plan.stable.out sql/benchmarks/tpch/Tests/08-explain.stable.out sql/benchmarks/tpch/Tests/08-plan.stable.out sql/benchmarks/tpch/Tests/17-plan.stable.out sql/benchmarks/tpch/Tests/22-plan.stable.out sql/common/sql_types.c sql/server/rel_optimizer.c sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out sql/test/BugTracker/Tests/between_with_column.SF-1959410.stable.err Branch: Jan2014 Log Message: properly handle type equality for floating point types diffs (truncated from 782 to 300 lines): diff --git a/sql/benchmarks/ssbm/Tests/02-explain.stable.out b/sql/benchmarks/ssbm/Tests/02-explain.stable.out --- a/sql/benchmarks/ssbm/Tests/02-explain.stable.out +++ b/sql/benchmarks/ssbm/Tests/02-explain.stable.out @@ -39,20 +39,20 @@ Ready. % 269 # length function user.s2_1{autoCommit=true}(A0:int,A1:int,A2:int,A3:int,A4:int):void; X_7 := sql.mvc(); -X_11 := sql.bind(X_7,sys,lineorder,lo_discount,0); -X_19 := sql.bind(X_7,sys,lineorder,lo_quantity,0); +X_11 := sql.bind(X_7,sys,lineorder,lo_quantity,0); +X_19 := sql.bind(X_7,sys,lineorder,lo_discount,0); X_8:bat[:oid,:oid] := sql.tid(X_7,sys,lineorder); -X_90 := algebra.subselect(X_19,X_8,A3,A4,true,true,false); -(X_21,r1_25) := sql.bind(X_7,sys,lineorder,lo_quantity,2); -X_91 := algebra.subselect(r1_25,A3,A4,true,true,false); -X_23 := sql.bind(X_7,sys,lineorder,lo_quantity,1); -X_92 := algebra.subselect(X_23,X_8,A3,A4,true,true,false); +X_90 := algebra.subselect(X_19,X_8,A1,A2,true,true,false); +(X_21,r1_25) := sql.bind(X_7,sys,lineorder,lo_discount,2); +X_91 := algebra.subselect(r1_25,A1,A2,true,true,false); +X_23 := sql.bind(X_7,sys,lineorder,lo_discount,1); +X_92 := algebra.subselect(X_23,X_8,A1,A2,true,true,false); X_24 := sql.subdelta(X_90,X_8,X_21,X_91,X_92); -X_93 := algebra.subselect(X_11,X_24,A1,A2,true,true,false); -(X_14,r1_14) := sql.bind(X_7,sys,lineorder,lo_discount,2); -X_94 := algebra.subselect(r1_14,A1,A2,true,true,false); -X_17 := sql.bind(X_7,sys,lineorder,lo_discount,1); -X_95 := algebra.subselect(X_17,X_24,A1,A2,true,true,false); +X_93 := algebra.subselect(X_11,X_24,A3,A4,true,true,false); +(X_14,r1_14) := sql.bind(X_7,sys,lineorder,lo_quantity,2); +X_94 := algebra.subselect(r1_14,A3,A4,true,true,false); +X_17 := sql.bind(X_7,sys,lineorder,lo_quantity,1); +X_95 := algebra.subselect(X_17,X_24,A3,A4,true,true,false); X_26 := sql.subdelta(X_93,X_24,X_14,X_94,X_95); X_27 := sql.bind_idxbat(X_7,sys,lineorder,lineorder_lo_orderdate_fkey,0); (X_29,r1_37) := sql.bind_idxbat(X_7,sys,lineorder,lineorder_lo_orderdate_fkey,2); @@ -74,7 +74,7 @@ function user.s2_1{autoCommit=true}(A0:i X_55 := sql.projectdelta(X_26,X_49,X_52,r1_65,X_54); X_56 := algebra.leftfetchjoin(X_47,X_55); X_57 := batcalc.lng(X_56); -X_58 := sql.projectdelta(X_26,X_11,X_14,r1_14,X_17); +X_58 := sql.projectdelta(X_26,X_19,X_21,r1_25,X_23); X_59 := algebra.leftfetchjoin(X_47,X_58); X_60:bat[:oid,:lng] := batcalc.*(X_57,X_59); X_61 := algebra.selectNotNil(X_60); diff --git a/sql/benchmarks/ssbm/Tests/02-plan.stable.out b/sql/benchmarks/ssbm/Tests/02-plan.stable.out --- a/sql/benchmarks/ssbm/Tests/02-plan.stable.out +++ b/sql/benchmarks/ssbm/Tests/02-plan.stable.out @@ -41,7 +41,7 @@ project ( | | join ( | | | select ( | | | | table(sys.lineorder) [ lineorder.lo_quantity, lineorder.lo_extendedprice, lineorder.lo_discount, lineorder.%lineorder_lo_orderdate_fkey NOT NULL JOINIDX sys.lineorder.lineorder_lo_orderdate_fkey ] COUNT -| | | ) [ int[tinyint 26] = lineorder.lo_quantity = int[tinyint 35], int[tinyint 4] = lineorder.lo_discount = int[tinyint 6] ], +| | | ) [ int[tinyint 4] = lineorder.lo_discount = int[tinyint 6], int[tinyint 26] = lineorder.lo_quantity = int[tinyint 35] ], | | | select ( | | | | table(sys.dwdate) [ dwdate.d_yearmonthnum, dwdate.%TID% NOT NULL ] COUNT | | | ) [ dwdate.d_yearmonthnum = int 199401 ] diff --git a/sql/benchmarks/ssbm/Tests/03-explain.stable.out b/sql/benchmarks/ssbm/Tests/03-explain.stable.out ---
MonetDB: default - upgrade path fixes, ie make sure the new colu...
Changeset: 28d0d9808b1a for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=28d0d9808b1a Modified Files: sql/backends/monet5/sql_scenario.c sql/server/sql_mvc.c sql/storage/store.c Branch: default Log Message: upgrade path fixes, ie make sure the new columns are added to the catalog some old need a different order number and old view columns should be removed diffs (78 lines): diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -856,6 +856,18 @@ sql_update_default(Client c) pos += snprintf(buf + pos, bufsize - pos, set schema \sys\;\n); + /* cleanup columns of dropped views */ + pos += snprintf(buf + pos, bufsize - pos, delete from _columns where table_id not in (select id from _tables);\n); + + /* add new columns */ + pos += snprintf(buf + pos, bufsize - pos, insert into _columns values( (select max(id)+1 from _columns), 'system', 'boolean', 1, 0, (select id from _tables where name = 'schemas'), NULL, true, 4, NULL);\n); + pos += snprintf(buf + pos, bufsize - pos, insert into _columns values( (select max(id)+1 from _columns), 'varres', 'boolean', 1, 0, (select id from _tables where name = 'functions'), NULL, true, 7, NULL);\n); + pos += snprintf(buf + pos, bufsize - pos, insert into _columns values( (select max(id)+1 from _columns), 'vararg', 'boolean', 1, 0, (select id from _tables where name = 'functions'), NULL, true, 8, NULL);\n); + pos += snprintf(buf + pos, bufsize - pos, insert into _columns values( (select max(id)+1 from _columns), 'inout', 'tinyint', 8, 0, (select id from _tables where name = 'args'), NULL, true, 6, NULL);\n); + /* correct column numbers */ + pos += snprintf(buf + pos, bufsize - pos, update _columns set number='9' where name = 'schema_id' and table_id in (select id from _tables where name = 'functions');\n); + pos += snprintf(buf + pos, bufsize - pos, update _columns set number='7' where name = 'number' and table_id in (select id from _tables where name = 'args');\n); + /* remove table return types (#..), ie tt_generated from * _tables/_columns */ pos += snprintf(buf + pos, bufsize - pos, delete from _columns where table_id in (select id from _tables where name like '#%%');\n); diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c --- a/sql/server/sql_mvc.c +++ b/sql/server/sql_mvc.c @@ -65,7 +65,7 @@ mvc_init(int debug, store_type store, in s = m-session-schema = mvc_bind_schema(m, sys); assert(m-session-schema != NULL); - if (catalog_version) { + if (!first) { t = mvc_bind_table(m, s, tables); mvc_drop_table(m, s, t, 0); t = mvc_bind_table(m, s, columns); @@ -83,7 +83,7 @@ mvc_init(int debug, store_type store, in mvc_create_column_(m, t, readonly, boolean, 1); mvc_create_column_(m, t, temporary, smallint, 16); - if (catalog_version) { + if (!first) { int pub = ROLE_PUBLIC; int p = PRIV_SELECT; int zero = 0; @@ -103,15 +103,13 @@ mvc_init(int debug, store_type store, in mvc_create_column_(m, t, number, int, 32); mvc_create_column_(m, t, storage, varchar, 2048); - if (catalog_version) { + if (!first) { int pub = ROLE_PUBLIC; int p = PRIV_SELECT; int zero = 0; sql_table *privs = find_sql_table(s, privileges); table_funcs.table_insert(m-session-tr, privs, t-base.id, pub, p, zero, zero); - } - - if (!catalog_version) { + } else { sql_create_env(m, s); sql_create_privileges(m, s); } diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -871,11 +871,9 @@ load_schema(sql_trans *tr, sqlid id, oid s = SA_ZNEW(tr-sa, sql_schema); v = table_funcs.column_find_value(tr, find_sql_column(ss, name), rid); base_init(tr-sa, s-base, sid, TR_OLD, v); _DELETE(v); - v = table_funcs.column_find_value(tr, - find_sql_column(ss, authorization), rid); + v = table_funcs.column_find_value(tr, find_sql_column(ss, authorization), rid); s-auth_id = *(sqlid *)v; _DELETE(v); - v = table_funcs.column_find_value(tr, - find_sql_column(tables, system), rid); + v = table_funcs.column_find_value(tr, find_sql_column(ss,
MonetDB: Jan2014 - merged
Changeset: 6c0e48b27ea6 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6c0e48b27ea6 Modified Files: sql/test/BugTracker-2014/Tests/stringfloatshtcompare.Bug-3512.sql Branch: Jan2014 Log Message: merged diffs (10 lines): diff --git a/sql/test/BugTracker-2014/Tests/stringfloatshtcompare.Bug-3512.sql b/sql/test/BugTracker-2014/Tests/stringfloatshtcompare.Bug-3512.sql --- a/sql/test/BugTracker-2014/Tests/stringfloatshtcompare.Bug-3512.sql +++ b/sql/test/BugTracker-2014/Tests/stringfloatshtcompare.Bug-3512.sql @@ -15,4 +15,4 @@ INSERT INTO bug3512 (a) VALUES ('.00 -- this fails because decimal numbers cannot be cast to short SELECT * FROM bug3512 WHERE a = ; -ROLLBACK; \ No newline at end of file +ROLLBACK; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - fix for bug 3508, ie handle trailing spaces
Changeset: 9d7469c47ad8 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9d7469c47ad8 Modified Files: gdk/gdk_atoms.c Branch: Jan2014 Log Message: fix for bug 3508, ie handle trailing spaces diffs (57 lines): diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c --- a/gdk/gdk_atoms.c +++ b/gdk/gdk_atoms.c @@ -464,6 +464,8 @@ bitFromStr(const char *src, int *len, bi } else { p = src; } + while (GDKisspace(*p)) + p++; return (int) (p - src); } @@ -642,6 +644,8 @@ numFromStr(const char *src, int *len, vo break; } } + while (GDKisspace(*p)) + p++; return (int) (p - src); } @@ -727,6 +731,8 @@ ptrFromStr(const char *src, int *len, pt } **dst = (ptr) base; } + while (GDKisspace(*p)) + p++; return (int) (p - src); } @@ -769,6 +775,8 @@ dblFromStr(const char *src, int *len, db **dst = (dbl) d; } } + while (GDKisspace(*p)) + p++; return (int) (p - src); } @@ -802,6 +810,8 @@ fltFromStr(const char *src, int *len, fl errno = 0; f = strtof(src, pe); p = pe; + while (GDKisspace(*p)) + p++; n = (int) (p - src); if (n == 0 || (errno == ERANGE (f -1 || f 1)) #ifdef INFINITY @@ -1690,6 +1700,8 @@ OIDfromStr(const char *src, int *len, oi } p += pos; } + while (GDKisspace(*p)) + p++; return (int) (p - src); } ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - allow decimals without '.'
Changeset: 27d9a8384784 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=27d9a8384784 Modified Files: sql/backends/monet5/sql_round_impl.h Branch: Jan2014 Log Message: allow decimals without '.' diffs (12 lines): diff --git a/sql/backends/monet5/sql_round_impl.h b/sql/backends/monet5/sql_round_impl.h --- a/sql/backends/monet5/sql_round_impl.h +++ b/sql/backends/monet5/sql_round_impl.h @@ -300,7 +300,7 @@ str_2dec(TYPE *res, str *val, int *d, in *res = NIL(TYPE); return MAL_SUCCEED; } else { - throw(SQL, STRING(TYPE), \%s\ is no decimal value (doesn't contain a '.'), *val); + scale = 0; } } ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - fixed bug 3521, ie use exp(double) (and other...
Changeset: 8f619c2ff336 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8f619c2ff336 Modified Files: sql/common/sql_types.c sql/test/BugTracker-2009/Tests/overflow.SF-2853458.stable.err sql/test/BugTracker-2009/Tests/pow_operator.SF-2812721.stable.out sql/test/BugTracker-2013/Tests/mitosis-floor.Bug-3330.stable.out sql/test/bugs/Tests/floor-bug-sf-967066.stable.out Branch: Jan2014 Log Message: fixed bug 3521, ie use exp(double) (and other related math functions) when the input type isn't a real (ie single precision floating point). diffs (93 lines): diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c --- a/sql/common/sql_types.c +++ b/sql/common/sql_types.c @@ -1441,11 +1441,7 @@ sqltypeinit( sql_allocator *sa) sql_create_func(sa, scale_up, calc, *, *u, *t, *t, SCALE_NONE); } - /* initial assignment to t is on purpose like this, such that the -* compiler (as of gcc-4.6) sees that we never go below the -* initial pointer, and hence don't get a -* error: array subscript is below array bounds */ - for (t = floats + (dates - floats - 1); t = floats; t--) { + for (t = floats; t dates; t++) { sql_create_func(sa, power, mmath, pow, *t, *t, *t, SCALE_FIX); sql_create_func(sa, floor, mmath, floor, *t, NULL, *t, SCALE_FIX); sql_create_func(sa, ceil, mmath, ceil, *t, NULL, *t, SCALE_FIX); diff --git a/sql/test/BugTracker-2009/Tests/overflow.SF-2853458.stable.err b/sql/test/BugTracker-2009/Tests/overflow.SF-2853458.stable.err --- a/sql/test/BugTracker-2009/Tests/overflow.SF-2853458.stable.err +++ b/sql/test/BugTracker-2009/Tests/overflow.SF-2853458.stable.err @@ -67,12 +67,12 @@ stderr of test 'overflow.SF-2853458` in # 22:26:13 mclient -lsql -umonetdb -Pmonetdb --host=alf --port=35561 # 22:26:13 -MAPI = (monetdb) /var/tmp/mtest-23209/.s.monetdb.33225 +MAPI = (monetdb) /var/tmp/mtest-9389/.s.monetdb.34946 QUERY = select cast(power(2,63) as bigint); -ERROR = !overflow in conversion of 9.22337204e+18 to lng. -MAPI = (monetdb) /var/tmp/mtest-23209/.s.monetdb.33225 +ERROR = !overflow in conversion of 9.2233720368547758e+18 to lng. +MAPI = (monetdb) /var/tmp/mtest-9389/.s.monetdb.34946 QUERY = select cast(power(2,64) as bigint); -ERROR = !overflow in conversion of 1.84467441e+19 to lng. +ERROR = !overflow in conversion of 1.8446744073709552e+19 to lng. # 22:26:13 # 22:26:13 Done. diff --git a/sql/test/BugTracker-2009/Tests/pow_operator.SF-2812721.stable.out b/sql/test/BugTracker-2009/Tests/pow_operator.SF-2812721.stable.out --- a/sql/test/BugTracker-2009/Tests/pow_operator.SF-2812721.stable.out +++ b/sql/test/BugTracker-2009/Tests/pow_operator.SF-2812721.stable.out @@ -27,17 +27,17 @@ Ready. #select power(2,2); % .L # table_name % power_single_value # name -% real # type -% 15 # length +% double # type +% 24 # length [ 4] #select power(2.8,2); % .L # table_name % power_single_value # name -% real # type -% 15 # length -[ 7.8368 ] +% double # type +% 24 # length +[ 7.84 ] -# 09:09:06 -# 09:09:06 Done. -# 09:09:06 +# 19:02:22 +# 19:02:22 Done. +# 19:02:22 diff --git a/sql/test/BugTracker-2013/Tests/mitosis-floor.Bug-3330.stable.out b/sql/test/BugTracker-2013/Tests/mitosis-floor.Bug-3330.stable.out --- a/sql/test/BugTracker-2013/Tests/mitosis-floor.Bug-3330.stable.out +++ b/sql/test/BugTracker-2013/Tests/mitosis-floor.Bug-3330.stable.out @@ -51,8 +51,8 @@ Ready. #; % sys.image, sys.image, sys.image, sys.L1 # table_name % tilex, tiley, intensity, count # name -% real,real, int,wrd # type -% 15, 15, 1, 1 # length +% double, double, int,wrd # type +% 24, 24, 1, 1 # length [ 0, 0, 3, 1 ] [ 0, 0, 6, 1 ] #drop table error; diff --git a/sql/test/bugs/Tests/floor-bug-sf-967066.stable.out b/sql/test/bugs/Tests/floor-bug-sf-967066.stable.out --- a/sql/test/bugs/Tests/floor-bug-sf-967066.stable.out +++ b/sql/test/bugs/Tests/floor-bug-sf-967066.stable.out @@ -27,8 +27,8 @@ Ready. #select floor(3.5); % .L # table_name % floor_single_value # name -% real # type -% 15 # length +% double # type +% 24 # length [ 3] # 12:51:03 ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - also push crossproduct down through union's
Changeset: e3393cf00745 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e3393cf00745 Modified Files: sql/server/rel_exp.c sql/server/rel_optimizer.c sql/test/BugTracker-2009/Tests/join_topn.SF-2654133.stable.out sql/test/bugs/Tests/groupby_having_charlength-bug-sf-943566.stable.out Branch: default Log Message: also push crossproduct down through union's diffs (66 lines): diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c --- a/sql/server/rel_exp.c +++ b/sql/server/rel_exp.c @@ -1432,8 +1432,12 @@ list * exps_copy( sql_allocator *sa, list *exps) { node *n; - list *nl = new_exp_list(sa); + list *nl; + if (!exps) + return exps; + + nl = new_exp_list(sa); for(n = exps-h; n; n = n-next) { sql_exp *arg = n-data; diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -3489,10 +3489,10 @@ rel_uses_part_nr( sql_rel *rel, sql_exp static sql_rel * rel_push_join_down_union(int *changes, mvc *sql, sql_rel *rel) { - if (((is_join(rel-op) !is_outerjoin(rel-op)) || is_semi(rel-op)) !list_empty(rel-exps)) { + if ((is_join(rel-op) !is_outerjoin(rel-op)) || is_semi(rel-op)) { sql_rel *l = rel-l, *r = rel-r, *ol = l, *or = r; list *exps = rel-exps; - sql_exp *je = exps-h-data; + sql_exp *je = !list_empty(exps)?exps-h-data:NULL; if (!l || !r || need_distinct(l) || need_distinct(r)) return rel; @@ -3503,7 +3503,7 @@ rel_push_join_down_union(int *changes, m /* both sides only if we have a join index */ if (!l || !r ||(is_union(l-op) is_union(r-op) - !find_prop(je-p, PROP_JOINIDX) /* FKEY JOIN */ + je !find_prop(je-p, PROP_JOINIDX) /* FKEY JOIN */ !rel_is_join_on_pkey(rel))) /* aligned PKEY JOIN */ return rel; diff --git a/sql/test/BugTracker-2009/Tests/join_topn.SF-2654133.stable.out b/sql/test/BugTracker-2009/Tests/join_topn.SF-2654133.stable.out --- a/sql/test/BugTracker-2009/Tests/join_topn.SF-2654133.stable.out +++ b/sql/test/BugTracker-2009/Tests/join_topn.SF-2654133.stable.out @@ -28,7 +28,7 @@ Ready. [ 1] [ 1] #select * from tables, x limit 10; -% .tables, .tables,.tables,.tables,.tables, .tables,.tables,.tables,.tables,sys.x, sys.x # table_name +% .tables, .tables,.tables,.tables,.tables, .tables,.tables,.tables,.tables,.x, .x # table_name % id, name, schema_id, query, type, system, commit_action, readonly, temporary, n, s # name % int, varchar,int,varchar,smallint, boolean, smallint, boolean,tinyint,int,varchar # type % 4, 9, 4, 0, 1, 5, 1, 5, 1, 1, 5 # length diff --git a/sql/test/bugs/Tests/groupby_having_charlength-bug-sf-943566.stable.out b/sql/test/bugs/Tests/groupby_having_charlength-bug-sf-943566.stable.out --- a/sql/test/bugs/Tests/groupby_having_charlength-bug-sf-943566.stable.out +++ b/sql/test/bugs/Tests/groupby_having_charlength-bug-sf-943566.stable.out @@ -31,7 +31,7 @@ Ready. # where t.name IN ('args', 'columns', 'functions', 'idxs', # 'objects', 'keys', 'modules', 'sequences') # group by s.name having count(*) char_length(s.name); -% sys.s, sys.L1, sys.L2 # table_name +% .s, .L1,.L2 # table_name % name,L1, L2 # name % varchar, int,wrd # type % 4, 1, 2 # length ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - manifold should also work on external/varsize...
Changeset: 123fa0b0a7b0 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=123fa0b0a7b0 Modified Files: monetdb5/modules/mal/manifold.c Branch: default Log Message: manifold should also work on external/varsized types diffs (152 lines): diff --git a/monetdb5/modules/mal/manifold.c b/monetdb5/modules/mal/manifold.c --- a/monetdb5/modules/mal/manifold.c +++ b/monetdb5/modules/mal/manifold.c @@ -30,12 +30,15 @@ /* The default iterator over known scalar commands. * It can be less efficient then the vector based implementations, * but saves quite some hacking in non-essential cases or - * expensive user defined functions.. + * expensive user defined functions. * * To keep things simple and reasonably performant we limit the * implementation to those cases where a single BAT is returned. * Arguments may be of any type. The MAL signature should be a COMMAND. * + * The functionality has been extended to also perform the manifold + * over aligned BATs, provided the underlying scalar function carries + * the 'manifold' property. */ typedef struct{ @@ -69,10 +72,10 @@ typedef struct{ if (msg)\ break; \ for( i = mut-fvar; i= mut-lvar; i++) { \ - if( ATOMstorage(mut-args[i].type) != TYPE_str){ \ - args[i] += mut-args[i].size;\ - } else {\ - mut-args[i].o++; \ + if(!ATOMvarsized(mut-args[i].type)){ \ + args[i] += mut-args[i].size; \ + } else {\ + mut-args[i].o++; \ mut-args[i].s = (str *) BUNtail(mut-args[i].bi, mut-args[i].o); \ args[i] = (void*) mut-args[i].s; \ } \ @@ -92,13 +95,14 @@ case TYPE_oid: ManifoldLoop(oid,__VA_ARG case TYPE_flt: ManifoldLoop(flt,__VA_ARGS__); break;\ case TYPE_dbl: ManifoldLoop(dbl,__VA_ARGS__); break;\ case TYPE_str: \ +default:\ for( ; p q ; p += mut-args[mut-fvar].size){ \ msg = (*mut-pci-fcn)(y, __VA_ARGS__);\ if (msg)\ break; \ bunfastapp(mut-args[0].b, (void*) y); \ for( i = mut-fvar; i= mut-lvar; i++) { \ - if( ATOMstorage(mut-args[i].type) != TYPE_str){\ + if(!ATOMvarsized(mut-args[i].type)){ \ args[i] += mut-args[i].size; \ } else {\ mut-args[i].o++; \ @@ -107,9 +111,6 @@ case TYPE_str: \ } \ } \ } \ - break; \ -default: \ - msg= createException(MAL,mal.manifold,manifold call limitation (unknown type?) );\ } // single argument is preparatory step for GDK_mapreduce @@ -127,16 +128,18 @@ MANIFOLDjob(MULTItask *mut) throw(MAL,mal.manifold,MAL_MALLOC_FAIL); // the mod.fcn arguments are ignored from the call - for( i = mut-pci-retc+2; i mut-pci-argc; i++) - if ( mut-args[i].b ){ - if ( ATOMstorage(mut-args[i].type) != TYPE_str) - args[i] = (char*) mut-args[i].first; - else { - mut-args[i].s = (str*) BUNtail(mut-args[i].bi, mut-args[i].o); - args[i] = (void*) mut-args[i].s; + for( i = mut-pci-retc+2; i mut-pci-argc; i++) { + if ( mut-args[i].b ){ + if (!ATOMvarsized(mut-args[i].type)) { + args[i] = (char*) mut-args[i].first; + } else { + mut-args[i].s = (str*) BUNtail(mut-args[i].bi, mut-args[i].o); + args[i] = (void*) mut-args[i].s; + } + } else { + args[i] = (char*) getArgReference(mut-stk,mut-pci,i); } - } else - args[i] = (char*) getArgReference(mut-stk,mut-pci,i); + } #ifdef _DEBUG_MANIFOLD_ mnstr_printf(mut-cntxt-fdout,#MANIFOLDjob fvar %d lvar %d type %d\n,mut-fvar,mut-lvar, ATOMstorage(mut-args[mut-fvar].b-ttype)); @@ -168,29 +171,27 @@ MANIFOLDtypecheck(Client cntxt, MalBlkPt MalBlkPtr nmb; MALfcn
MonetDB: default - merged
Changeset: 38ca25bf505a for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=38ca25bf505a Modified Files: monetdb5/modules/mal/mal_init.mal Branch: default Log Message: merged diffs (11 lines): diff --git a/monetdb5/modules/mal/mal_init.mal b/monetdb5/modules/mal/mal_init.mal --- a/monetdb5/modules/mal/mal_init.mal +++ b/monetdb5/modules/mal/mal_init.mal @@ -47,7 +47,6 @@ include status; include groupby; include group; include aggr; -include array; include mkey; # Atom extensions ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - fixed bug 3524, ie improved error message for...
Changeset: 8e2e4bcad4bb for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8e2e4bcad4bb Added Files: sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.sql sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.stable.err sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.stable.out Modified Files: sql/server/rel_select.c sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.stable.err sql/test/BugTracker-2014/Tests/All Branch: Jan2014 Log Message: fixed bug 3524, ie improved error message for using non group by columns in group by result diffs (147 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -1771,8 +1771,12 @@ rel_column_ref(mvc *sql, sql_rel **rel, } if (!exp var) return rel_var_ref(sql, name, 0); - if (!exp !var) - return sql_error(sql, 02, SELECT: identifier '%s' unknown, name); + if (!exp !var) { + if (rel *rel (*rel)-card == CARD_AGGR f == sql_sel) + return sql_error(sql, 02, SELECT: cannot use non GROUP BY column '%s' in query results without an aggregate function, name); + else + return sql_error(sql, 02, SELECT: identifier '%s' unknown, name); + } } else if (dlist_length(l) == 2) { char *tname = l-h-data.sval; @@ -1795,8 +1799,12 @@ rel_column_ref(mvc *sql, sql_rel **rel, exp = rel_bind_column(sql, *rel, cname, f); } } - if (!exp) - return sql_error(sql, 02, 42S22!SELECT: no such column '%s.%s', tname, cname); + if (!exp) { + if (rel *rel (*rel)-card == CARD_AGGR f == sql_sel) + return sql_error(sql, 02, SELECT: cannot use non GROUP BY column '%s.%s' in query results without an aggregate function, tname, cname); + else + return sql_error(sql, 02, 42S22!SELECT: no such column '%s.%s', tname, cname); + } } else if (dlist_length(l) = 3) { return sql_error(sql, 02, TODO: column names of level = 3); } diff --git a/sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.stable.err b/sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.stable.err --- a/sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.stable.err +++ b/sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.stable.err @@ -28,9 +28,9 @@ stderr of test 'cannot_use_columns_after # 20:54:49 mclient -lsql -ftest -Eutf-8 -i -e --host=/var/tmp/mtest-27846 --port=35773 # 20:54:49 -MAPI = (monetdb) /var/tmp/mtest-27846/.s.monetdb.35773 +MAPI = (monetdb) /var/tmp/mtest-5110/.s.monetdb.34599 QUERY = select function, (sum(fv.claim_tb) - sum(fv.used_tb)) * 100 / toc.total_overcapacity from sys.filer_volumes as fv, (select sum(claim_tb) - sum(used_tb) as total_overcapacity from sys.filer_volumes) as toc group by fv.function order by fv.function; -ERROR = !SELECT: no such column 'toc.total_overcapacity' +ERROR = !SELECT: cannot use non GROUP BY column 'toc.total_overcapacity' in query results without an aggregate function # 20:54:49 # 20:54:49 Done. diff --git a/sql/test/BugTracker-2014/Tests/All b/sql/test/BugTracker-2014/Tests/All --- a/sql/test/BugTracker-2014/Tests/All +++ b/sql/test/BugTracker-2014/Tests/All @@ -23,3 +23,4 @@ stringfloatshtcompare.Bug-3512 oid-table-assert.Bug-3514 round-properties.Bug-3515 union_with_subqueries.Bug-3518 +non_groupby_column.Bug-3524 diff --git a/sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.sql b/sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.sql @@ -0,0 +1,4 @@ +start transaction; + +create table agg_error (a bool, b bool); +select max(a), b from agg_error group by a; diff --git a/sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.stable.err b/sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.stable.err @@ -0,0 +1,38 @@ +stderr of test 'non_groupby_column.Bug-3524` in directory 'sql/test/BugTracker-2014` itself: + + +# 11:15:00 +# 11:15:00 mserver5 --debug=10 --set gdk_nr_threads=0 --set mapi_open=true --set mapi_port=32287 --set mapi_usock=/var/tmp/mtest-4352/.s.monetdb.32287 --set monet_prompt= --forcemito --set mal_listing=2
MonetDB: default - fix manifold for fixed sized, external types
Changeset: dd2ab2bc72e9 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=dd2ab2bc72e9 Modified Files: gdk/gdk_cross.c monetdb5/modules/mal/manifold.c monetdb5/optimizer/opt_support.c Branch: default Log Message: fix manifold for fixed sized, external types diffs (98 lines): diff --git a/gdk/gdk_cross.c b/gdk/gdk_cross.c --- a/gdk/gdk_cross.c +++ b/gdk/gdk_cross.c @@ -63,6 +63,8 @@ BATcross1(BAT **r1p, BAT **r2p, BAT *l, bn2-tdense = bn2-tkey != 0; bn2-T-nil = 0; bn2-T-nonil = 1; + BATseqbase(BATmirror(bn1), l-hseqbase); + BATseqbase(BATmirror(bn2), r-hseqbase); *r1p = bn1; *r2p = bn2; return GDK_SUCCEED; diff --git a/monetdb5/modules/mal/manifold.c b/monetdb5/modules/mal/manifold.c --- a/monetdb5/modules/mal/manifold.c +++ b/monetdb5/modules/mal/manifold.c @@ -72,12 +72,16 @@ typedef struct{ if (msg)\ break; \ for( i = mut-fvar; i= mut-lvar; i++) { \ - if(!ATOMvarsized(mut-args[i].type)){ \ + if(ATOMstorage(mut-args[i].type) TYPE_str){ \ args[i] += mut-args[i].size; \ - } else {\ + } else if (ATOMvarsized(mut-args[i].type)) { \ mut-args[i].o++; \ mut-args[i].s = (str *) BUNtail(mut-args[i].bi, mut-args[i].o); \ args[i] = (void*) mut-args[i].s; \ + } else { \ + mut-args[i].o++; \ + mut-args[i].s = (str *) Tloc(mut-args[i].b, mut-args[i].o); \ + args[i] = (void*) mut-args[i].s; \ } \ } \ v++;\ @@ -102,11 +106,15 @@ default:\ break; \ bunfastapp(mut-args[0].b, (void*) y); \ for( i = mut-fvar; i= mut-lvar; i++) { \ - if(!ATOMvarsized(mut-args[i].type)){ \ + if(ATOMstorage(mut-args[i].type) TYPE_str){ \ args[i] += mut-args[i].size; \ + } else if(ATOMvarsized(mut-args[i].type)){ \ + mut-args[i].o++; \ + mut-args[i].s = (str*) BUNtail(mut-args[i].bi, mut-args[i].o);\ + args[i] = (void*) mut-args[i].s;\ } else {\ mut-args[i].o++; \ - mut-args[i].s = (str*) BUNtail(mut-args[i].bi, mut-args[i].o);\ + mut-args[i].s = (str*) Tloc(mut-args[i].b, mut-args[i].o);\ args[i] = (void*) mut-args[i].s;\ } \ } \ @@ -130,10 +138,13 @@ MANIFOLDjob(MULTItask *mut) // the mod.fcn arguments are ignored from the call for( i = mut-pci-retc+2; i mut-pci-argc; i++) { if ( mut-args[i].b ){ - if (!ATOMvarsized(mut-args[i].type)) { + if(ATOMstorage(mut-args[i].type) TYPE_str){ \ args[i] = (char*) mut-args[i].first; + } else if(ATOMvarsized(mut-args[i].type)){ \ + mut-args[i].s = (str*) BUNtail(mut-args[i].bi, mut-args[i].o); + args[i] = (void*) mut-args[i].s; } else { - mut-args[i].s = (str*) BUNtail(mut-args[i].bi, mut-args[i].o); + mut-args[i].s = (str*) Tloc(mut-args[i].b, mut-args[i].o); args[i] = (void*) mut-args[i].s; } } else { @@ -307,7 +318,7 @@ MANIFOLDevaluate(Client cntxt, MalBlkPtr freeInstruction(mut.pci); // consolidate the properties - if (!ATOMvarsized(mat[0].b-ttype)) + if (ATOMstorage(mat[0].b-ttype) TYPE_str) BATsetcount(mat[0].b,cnt); BATsettrivprop(mat[0].b); BATderiveProps(mat[0].b, TRUE); diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c --- a/monetdb5/optimizer/opt_support.c +++ b/monetdb5/optimizer/opt_support.c @@ -840,6 +840,7 @@ int isAllScalar(MalBlkPtr mb, InstrPtr p int isMapOp(InstrPtr p){ return getModuleId(p)
MonetDB: Jan2014 - fixed bug 3523 (which also fixed 3526). Make ...
Changeset: 39b41810dc43 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=39b41810dc43 Added Files: sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.sql sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.stable.err sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.stable.out sql/test/BugTracker-2014/Tests/unsafe_project_push_down.Bug-3523.sql sql/test/BugTracker-2014/Tests/unsafe_project_push_down.Bug-3523.stable.err sql/test/BugTracker-2014/Tests/unsafe_project_push_down.Bug-3523.stable.out Modified Files: sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_optimizer.c sql/test/BugTracker-2014/Tests/All Branch: Jan2014 Log Message: fixed bug 3523 (which also fixed 3526). Make sure we only push down a project without window functions diffs (truncated from 305 to 300 lines): diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c --- a/sql/server/rel_exp.c +++ b/sql/server/rel_exp.c @@ -1159,6 +1159,33 @@ exp_has_func( sql_exp *e ) return 0; } +int +exp_unsafe( sql_exp *e) +{ + if (!e) + return 0; + + if (e-type != e_func e-type != e_convert) + return 0; + + if (e-type == e_func e-card == CARD_AGGR) + return 1; + if (e-type == e_convert e-l) + return exp_unsafe(e-l); + if (e-type == e_func e-l) { + list *args = e-l; + node *n; + + for(n = args-h; n; n = n-next) { + sql_exp *e = n-data; + + if (exp_unsafe(e)) + return 1; + } + } + return 0; +} + static int exp_key( sql_exp *e ) { diff --git a/sql/server/rel_exp.h b/sql/server/rel_exp.h --- a/sql/server/rel_exp.h +++ b/sql/server/rel_exp.h @@ -113,6 +113,7 @@ extern int exp_is_join_exp(sql_exp *e); extern int exp_is_atom(sql_exp *e); extern int exps_are_atoms(list *exps); extern int exp_has_func(sql_exp *e); +extern int exp_unsafe(sql_exp *e); extern int rel_has_exp(sql_rel *rel, sql_exp *e); extern sql_rel *find_rel(list *rels, sql_exp *e); @@ -130,4 +131,5 @@ extern int exps_intern(list *exps); extern char *compare_func( comp_type t ); extern int is_identity( sql_exp *e, sql_rel *r); + #endif /* _REL_EXP_H_ */ diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -1292,7 +1292,7 @@ project_unsafe(sql_rel *rel) sql_exp *e = n-data; /* aggr func in project ! */ - if (e-type == e_func e-card == CARD_AGGR) + if (exp_unsafe(e)) return 1; } return 0; diff --git a/sql/test/BugTracker-2014/Tests/All b/sql/test/BugTracker-2014/Tests/All --- a/sql/test/BugTracker-2014/Tests/All +++ b/sql/test/BugTracker-2014/Tests/All @@ -23,4 +23,6 @@ stringfloatshtcompare.Bug-3512 oid-table-assert.Bug-3514 round-properties.Bug-3515 union_with_subqueries.Bug-3518 +unsafe_project_push_down.Bug-3523 non_groupby_column.Bug-3524 +orderby_count.Bug-3526 diff --git a/sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.sql b/sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.sql @@ -0,0 +1,9 @@ +start transaction; +create table a (k varchar(64),v boolean); +insert into a values ('one',true),('two',false),('one',false); +create table b (k varchar(64)); +insert into b values ('two'),('two'),('two'); +select * from a; +select * from b; +select k, v from a union all select k,NULL from b; +select k,count(*),count(v) from (select k,v from a union all select k,null from b) as t(k,v) group by k order by count(*) desc; diff --git a/sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.stable.err b/sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/orderby_count.Bug-3526.stable.err @@ -0,0 +1,35 @@ +stderr of test 'orderby_count.Bug-3526` in directory 'sql/test/BugTracker-2014` itself: + + +# 17:12:12 +# 17:12:12 mserver5 --debug=10 --set gdk_nr_threads=0 --set mapi_open=true --set mapi_port=33631 --set mapi_usock=/var/tmp/mtest-917/.s.monetdb.33631 --set monet_prompt= --forcemito --set mal_listing=2 --dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014 --set mal_listing=0 +# 17:12:12 + +# builtin opt gdk_dbpath = /home/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm/demo +# builtin opt gdk_debug = 0 +# builtin opt gdk_vmtrim = no +# builtin opt monet_prompt = +# builtin opt monet_daemon = no +# builtin opt mapi_port = 5 +# builtin opt mapi_open = false +# builtin opt mapi_autosense = false +# builtin opt sql_optimizer = default_pipe +# builtin
MonetDB: Jan2014 - fixed bugs 3505 and 3511
Changeset: 516d270cbe32 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=516d270cbe32 Added Files: sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.sql sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.stable.err sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.stable.out sql/test/BugTracker-2014/Tests/bug_in_cse.Bug-3511.sql sql/test/BugTracker-2014/Tests/bug_in_cse.Bug-3511.stable.err sql/test/BugTracker-2014/Tests/bug_in_cse.Bug-3511.stable.out Modified Files: sql/server/rel_exp.c sql/test/BugTracker-2014/Tests/All Branch: Jan2014 Log Message: fixed bugs 3505 and 3511 diffs (truncated from 308 to 300 lines): diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c --- a/sql/server/rel_exp.c +++ b/sql/server/rel_exp.c @@ -738,6 +738,24 @@ exp_match_list( list *l, list *r) return match; } +static int +exps_equal( list *l, list *r) +{ + node *n, *m; + + if (!l || !r) + return l == r; + if (list_length(l) != list_length(r)) + return 0; + for (n = l-h, m = r-h; n m; n = n-next, m = m-next) { + sql_exp *le = n-data, *re = m-data; + + if (!exp_match_exp(le,re)) + return 0; + } + return 1; +} + int exp_match_exp( sql_exp *e1, sql_exp *e2) { @@ -769,15 +787,15 @@ exp_match_exp( sql_exp *e1, sql_exp *e2) break; case e_aggr: if (!subaggr_cmp(e1-f, e2-f) /* equal aggregation*/ - exp_match_list(e1-l, e2-l) + exps_equal(e1-l, e2-l) e1-flag == e2-flag) return 1; break; case e_func: if (!subfunc_cmp(e1-f, e2-f) /* equal functions */ - exp_match_list(e1-l, e2-l) + exps_equal(e1-l, e2-l) /* optional order by expressions */ - exp_match_list(e1-r, e2-r)) + exps_equal(e1-r, e2-r)) return 1; break; case e_atom: diff --git a/sql/test/BugTracker-2014/Tests/All b/sql/test/BugTracker-2014/Tests/All --- a/sql/test/BugTracker-2014/Tests/All +++ b/sql/test/BugTracker-2014/Tests/All @@ -18,7 +18,9 @@ in_incorrect_multi.Bug-3462 crash_on_groupby_distinct_serial.Bug-3463 local-temp-1.Bug-3468 local-temp-2.Bug-3468 +boolean_not.Bug-3505 varchar_conversion_crash.Bug-3506 +bug_in_cse.Bug-3511 stringfloatshtcompare.Bug-3512 oid-table-assert.Bug-3514 round-properties.Bug-3515 diff --git a/sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.sql b/sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.sql @@ -0,0 +1,16 @@ +start transaction; +CREATE TABLE BOOLTBL1 (f1 bool); +INSERT INTO BOOLTBL1 (f1) VALUES (cast('true' AS boolean)); +INSERT INTO BOOLTBL1 (f1) VALUES ('true'); +INSERT INTO BOOLTBL1 (f1) VALUES ('false'); + +SELECT f1 FROM BOOLTBL1 WHERE f1 = NOT FALSE; +SELECT f1 FROM BOOLTBL1 WHERE f1 = NOT TRUE; + +SELECT f1 FROM BOOLTBL1 WHERE f1 = (NOT FALSE); +SELECT f1 FROM BOOLTBL1 WHERE NOT FALSE = f1; +SELECT f1 FROM BOOLTBL1 WHERE NOT f1 = FALSE; + +SELECT f1 FROM BOOLTBL1 WHERE f1 = (NOT TRUE); +SELECT f1 FROM BOOLTBL1 WHERE NOT TRUE = f1; +SELECT f1 FROM BOOLTBL1 WHERE NOT f1 = TRUE; diff --git a/sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.stable.err b/sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/boolean_not.Bug-3505.stable.err @@ -0,0 +1,35 @@ +stderr of test 'boolean_not.Bug-3505` in directory 'sql/test/BugTracker-2014` itself: + + +# 19:06:47 +# 19:06:47 mserver5 --debug=10 --set gdk_nr_threads=0 --set mapi_open=true --set mapi_port=38042 --set mapi_usock=/var/tmp/mtest-25685/.s.monetdb.38042 --set monet_prompt= --forcemito --set mal_listing=2 --dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014 --set mal_listing=0 +# 19:06:47 + +# builtin opt gdk_dbpath = /home/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm/demo +# builtin opt gdk_debug = 0 +# builtin opt gdk_vmtrim = no +# builtin opt monet_prompt = +# builtin opt monet_daemon = no +# builtin opt mapi_port = 5 +# builtin opt mapi_open = false +# builtin opt mapi_autosense = false +# builtin opt sql_optimizer = default_pipe +# builtin opt sql_debug = 0 +# cmdline opt gdk_nr_threads = 0 +# cmdline opt mapi_open = true +# cmdline opt mapi_port = 38042 +# cmdline opt mapi_usock = /var/tmp/mtest-25685/.s.monetdb.38042 +# cmdline opt monet_prompt = +# cmdline opt mal_listing = 2 +# cmdline opt gdk_dbpath =
MonetDB: default - disabled until ceptipede matures...
Changeset: 7112dfe7e934 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7112dfe7e934 Modified Files: sql/test/centipede/Tests/All Branch: default Log Message: disabled until ceptipede matures... diffs (6 lines): diff --git a/sql/test/centipede/Tests/All b/sql/test/centipede/Tests/All --- a/sql/test/centipede/Tests/All +++ b/sql/test/centipede/Tests/All @@ -1,1 +1,1 @@ -NOT_WIN32?olap +#NOT_WIN32?olap ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - fixed crash in manifold called functions with...
Changeset: 4cda54f904b1 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4cda54f904b1 Modified Files: monetdb5/modules/mal/manifold.c Branch: default Log Message: fixed crash in manifold called functions with external atoms diffs (21 lines): diff --git a/monetdb5/modules/mal/manifold.c b/monetdb5/modules/mal/manifold.c --- a/monetdb5/modules/mal/manifold.c +++ b/monetdb5/modules/mal/manifold.c @@ -129,7 +129,7 @@ MANIFOLDjob(MULTItask *mut) { int i; char *p, *q; char **args; - str y, msg= MAL_SUCCEED; + str y = NULL, msg= MAL_SUCCEED; args = (char**) GDKzalloc(sizeof(char*) * mut-pci-argc); if( args == NULL) @@ -167,6 +167,8 @@ MANIFOLDjob(MULTItask *mut) default: msg= createException(MAL,mal.manifold,manifold call limitation ); } + if (ATOMextern(mut-args[0].type) y) + GDKfree(y); bunins_failed: GDKfree(args); return msg; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - use subslice instead of slice
Changeset: de3fbece100b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=de3fbece100b Modified Files: monetdb5/optimizer/opt_pushselect.c Branch: default Log Message: use subslice instead of slice diffs (12 lines): diff --git a/monetdb5/optimizer/opt_pushselect.c b/monetdb5/optimizer/opt_pushselect.c --- a/monetdb5/optimizer/opt_pushselect.c +++ b/monetdb5/optimizer/opt_pushselect.c @@ -468,7 +468,7 @@ OPTpushselectImplementation(Client cntxt ValRecord cst; /* slice the candidates */ - setFunctionId(r, sliceRef); + setFunctionId(r, subsliceRef); getArg(r, 0) = newTmpVariable(mb, newBatType(TYPE_oid, TYPE_oid)); getArg(r, 1) = getArg(s, 1); cst.vtype = getArgType(mb, r, 2); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - fixed problem in using firstn with group result
Changeset: 978a2b87f602 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=978a2b87f602 Modified Files: sql/backends/monet5/sql_gencode.c Branch: default Log Message: fixed problem in using firstn with group result diffs (26 lines): diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -1002,10 +1002,10 @@ static int return -1; c = k; } - if (s-flag) { - int topn = 0, flag = s-flag, utopn = flag 2; + if (s-flag1) { + int topn = 0, flag = s-flag, grps = flag 2; - flag = 2; + flag = 1; q = newStmt1(mb, calcRef, +); q = pushArgument(mb, q, offset); @@ -1015,7 +1015,7 @@ static int topn = getDestVar(q); q = newStmt(mb, algebraRef, firstnRef); - if (utopn) + if (grps) /* we need the groups for the next firstn */ q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any)); q = pushArgument(mb, q, c); if (p) ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - merged
Changeset: a95ebdfb2c99 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a95ebdfb2c99 Modified Files: clients/mapiclient/Tests/stethoscope--help.stable.err monetdb5/mal/Tests/All monetdb5/optimizer/Tests/All sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit Branch: default Log Message: merged diffs (189 lines): diff --git a/clients/mapiclient/Tests/stethoscope--help.stable.err b/clients/mapiclient/Tests/stethoscope--help.stable.err --- a/clients/mapiclient/Tests/stethoscope--help.stable.err +++ b/clients/mapiclient/Tests/stethoscope--help.stable.err @@ -17,7 +17,7 @@ stethoscope [options] [dbname] +[trace o -h | --host=hostname -? | --help -The trace options (default 'ISTest'): +The trace options (default 'ISTestn'): S = monitor start of instruction profiling a = aggregate clock ticks per instruction e = event counter @@ -29,6 +29,7 @@ The trace options (default 'ISTest'): c = cpu statistics (utime,ctime,stime,cstime) m = rss memory as provided by OS (in MB) M = memory footprint of non-persistent objects + n = numa intra socket data flow r = block reads w = block writes b = bytes read/written diff --git a/monetdb5/mal/Tests/All b/monetdb5/mal/Tests/All --- a/monetdb5/mal/Tests/All +++ b/monetdb5/mal/Tests/All @@ -134,7 +134,6 @@ tst256 tst260 tst2570 # tst265 -- windowsum and slidingsum have been removed -tst267 # opens /tmp/MonetEvents, i.e. not on Windows: NOT_WIN32?tst270 tst272 diff --git a/monetdb5/optimizer/Tests/All b/monetdb5/optimizer/Tests/All --- a/monetdb5/optimizer/Tests/All +++ b/monetdb5/optimizer/Tests/All @@ -18,10 +18,7 @@ tst4630 tst4700 tst4701 # tst4730 -- uses group.refine -tst4800 -tst4801 tst4820 -tst4900 qep00 qep01 @@ -81,13 +78,11 @@ CXerror1 #the remainder are snippets used in the reference manual CMexample CRexample -AEexample ARexample DCexample DCexample2 ESexample FTexample -GCexample GCexample01 CXexample JPexample diff --git a/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit b/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit --- a/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit +++ b/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out.32bit @@ -16,12 +16,64 @@ stdout of test 'limit_in_prepare.Bug-255 # MonetDB/SQL module v2.38.0 loaded Ready. +# SQL catalog created, loading sql scripts once +# loading sql script: 09_like.sql +# loading sql script: 10_math.sql +# loading sql script: 11_times.sql +# loading sql script: 12_url.sql +# loading sql script: 13_date.sql +# loading sql script: 14_inet.sql +# loading sql script: 15_querylog.sql +# loading sql script: 16_tracelog.sql +# loading sql script: 19_cluster.sql +# loading sql script: 20_vacuum.sql +# loading sql script: 21_dependency_functions.sql +# loading sql script: 22_clients.sql +# loading sql script: 23_skyserver.sql +# loading sql script: 24_zorder.sql +# loading sql script: 25_debug.sql +# loading sql script: 26_sysmon.sql +# loading sql script: 39_analytics.sql +# loading sql script: 40_geom.sql +# loading sql script: 40_json.sql +# loading sql script: 41_jsonstore.sql +# loading sql script: 45_uuid.sql +# loading sql script: 75_storagemodel.sql +# loading sql script: 80_statistics.sql +# loading sql script: 80_udf.sql +# loading sql script: 85_bam.sql +# loading sql script: 99_system.sql +# 22:28:06 +# 22:28:06 mclient -lsql -ftest -Eutf-8 -i -e --host=/var/tmp/mtest-10173 --port=36549 +# 22:28:06 -# 08:45:11 -# 08:45:11 mclient -lsql -ftest -i -e --host=alf --port=35663 -# 08:45:11 - +#CREATE TABLE sys.tbls ( +# idINTEGER, +# name VARCHAR(1024), +# schema_id INTEGER, +# query VARCHAR(2048), +# type SMALLINT, +# systemBOOLEAN, +# commit_action SMALLINT, +# readonly BOOLEAN, +# temporary SMALLINT +#); +#COPY 40 RECORDS INTO sys.tbls FROM stdin USING DELIMITERS '\t','\n',''; +#2001 schemas 2000NULL0 true0 false 0 +#2007 types 2000NULL0 true0 false 0 +#2016 functions 2000NULL0 true0 false 0 +#2027 args 2000NULL0 true0 false 0 +#2036 sequences 2000NULL0 true0 false 0 +#2046 dependencies 2000NULL0 true0 false 0 +#2050 connections 2000NULL0 true0 false 0 +#2059 _tables 2000NULL0 true0 false 0 +#2068 _columns 2000NULL0 true0 false 0 +#2079 keys 2000NULL0 true0 false 0 +#2086 idxs 2000NULL0 true0 false 0 +[ 40 ] +#create table rr (id int); +#insert into rr values (1),(2),(3); [ 3] #prepare select * from rr limit ?; #prepare
MonetDB: default - revert firstn/topn bogus fix.
Changeset: 7fbe4711 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7fbe4711 Modified Files: sql/backends/monet5/sql_gencode.c Branch: default Log Message: revert firstn/topn bogus fix. diffs (12 lines): diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -1005,7 +1005,7 @@ static int if (s-flag1) { int topn = 0, flag = s-flag, grps = flag 2; - flag = 1; + flag = 2; q = newStmt1(mb, calcRef, +); q = pushArgument(mb, q, offset); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - revert slice - subslice change...
Changeset: ad4ca16ee973 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ad4ca16ee973 Modified Files: monetdb5/optimizer/opt_pushselect.c Branch: default Log Message: revert slice - subslice change... diffs (12 lines): diff --git a/monetdb5/optimizer/opt_pushselect.c b/monetdb5/optimizer/opt_pushselect.c --- a/monetdb5/optimizer/opt_pushselect.c +++ b/monetdb5/optimizer/opt_pushselect.c @@ -468,7 +468,7 @@ OPTpushselectImplementation(Client cntxt ValRecord cst; /* slice the candidates */ - setFunctionId(r, subsliceRef); + setFunctionId(r, sliceRef); getArg(r, 0) = newTmpVariable(mb, newBatType(TYPE_oid, TYPE_oid)); getArg(r, 1) = getArg(s, 1); cst.vtype = getArgType(mb, r, 2); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - fixed bug 3534, ie give a proper error message
Changeset: fecd6435c289 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fecd6435c289 Modified Files: sql/server/rel_select.c Branch: Jan2014 Log Message: fixed bug 3534, ie give a proper error message diffs (30 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -995,7 +995,7 @@ static char * rel_get_name( sql_rel *rel if (rel-r) return exp_name(rel-r); return NULL; - case op_basetable: + case op_basetable: return rel-r; default: if (rel-l) @@ -4850,7 +4850,7 @@ join_on_column_name(mvc *sql, sql_rel *r } } if (!found) { - sql_error(sql, 02, JOIN: no columns of tables '%s' and '%s' match, rel_get_name(t1)?rel_get_name(t1):, rel_get_name(t2)?rel_get_name(t2):); + sql_error(sql, 02, JOIN: no columns of tables '%s' and '%s' match, rel_name(t1)?rel_name(t1):, rel_name(t2)?rel_name(t2):); rel_destroy(rel); return NULL; } @@ -5378,7 +5378,7 @@ rel_joinquery_(mvc *sql, sql_rel *rel, s sql_exp *rs = rel_bind_column(sql, t2, nm, sql_where); if (!ls || !rs) { - sql_error(sql, 02, JOIN: tables '%s' and '%s' do not have a matching column '%s'\n, rel_get_name(t1)?rel_get_name(t1):, rel_get_name(t2)?rel_get_name(t2):, nm); + sql_error(sql, 02, JOIN: tables '%s' and '%s' do not have a matching column '%s'\n, rel_name(t1)?rel_name(t1):, rel_name(t2)?rel_name(t2):, nm); rel_destroy(rel); return NULL; } ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - merged
Changeset: 934f34a68244 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=934f34a68244 Modified Files: monetdb5/modules/mal/batcalc.mal monetdb5/modules/mal/batcalc.mal.sh monetdb5/modules/mal/calc.mal monetdb5/modules/mal/calc.mal.sh Branch: Jan2014 Log Message: merged diffs (104 lines): diff --git a/monetdb5/modules/mal/batcalc.mal b/monetdb5/modules/mal/batcalc.mal --- a/monetdb5/modules/mal/batcalc.mal +++ b/monetdb5/modules/mal/batcalc.mal @@ -19673,28 +19673,28 @@ comment Return -1/0/1 if V /==/ B wit pattern between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:bat[:oid,:any_1]) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive, nil border is (minus) infinity; +comment B between LO and HI inclusive; pattern between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:bat[:oid,:any_1],s:bat[:oid,:oid]) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive with candidates list, nil border is (minus) infinity; +comment B between LO and HI inclusive with candidates list; pattern between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:any_1) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive, nil border is (minus) infinity; +comment B between LO and HI inclusive; pattern between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:any_1,s:bat[:oid,:oid]) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive with candidates list, nil border is (minus) infinity; +comment B between LO and HI inclusive with candidates list; pattern between(b:bat[:oid,:any_1],lo:any_1,hi:bat[:oid,:any_1]) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive, nil border is (minus) infinity; +comment B between LO and HI inclusive; pattern between(b:bat[:oid,:any_1],lo:any_1,hi:bat[:oid,:any_1],s:bat[:oid,:oid]) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive with candidates list, nil border is (minus) infinity; +comment B between LO and HI inclusive with candidates list; pattern between(b:bat[:oid,:any_1],lo:any_1,hi:any_1) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive, nil border is (minus) infinity; +comment B between LO and HI inclusive; pattern between(b:bat[:oid,:any_1],lo:any_1,hi:any_1,s:bat[:oid,:oid]) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive with candidates list, nil border is (minus) infinity; +comment B between LO and HI inclusive with candidates list; pattern avg(b:bat[:oid,:bte]) :dbl diff --git a/monetdb5/modules/mal/batcalc.mal.sh b/monetdb5/modules/mal/batcalc.mal.sh --- a/monetdb5/modules/mal/batcalc.mal.sh +++ b/monetdb5/modules/mal/batcalc.mal.sh @@ -530,28 +530,28 @@ echo cat EOF pattern between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:bat[:oid,:any_1]) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive, nil border is (minus) infinity; +comment B between LO and HI inclusive; pattern between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:bat[:oid,:any_1],s:bat[:oid,:oid]) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive with candidates list, nil border is (minus) infinity; +comment B between LO and HI inclusive with candidates list; pattern between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:any_1) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive, nil border is (minus) infinity; +comment B between LO and HI inclusive; pattern between(b:bat[:oid,:any_1],lo:bat[:oid,:any_1],hi:any_1,s:bat[:oid,:oid]) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive with candidates list, nil border is (minus) infinity; +comment B between LO and HI inclusive with candidates list; pattern between(b:bat[:oid,:any_1],lo:any_1,hi:bat[:oid,:any_1]) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive, nil border is (minus) infinity; +comment B between LO and HI inclusive; pattern between(b:bat[:oid,:any_1],lo:any_1,hi:bat[:oid,:any_1],s:bat[:oid,:oid]) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive with candidates list, nil border is (minus) infinity; +comment B between LO and HI inclusive with candidates list; pattern between(b:bat[:oid,:any_1],lo:any_1,hi:any_1) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive, nil border is (minus) infinity; +comment B between LO and HI inclusive; pattern between(b:bat[:oid,:any_1],lo:any_1,hi:any_1,s:bat[:oid,:oid]) :bat[:oid,:bit] address CMDbatBETWEEN -comment B between LO and HI inclusive with candidates list, nil border is (minus) infinity; +comment B between LO and HI inclusive with candidates list; EOF echo diff --git a/monetdb5/modules/mal/calc.mal b/monetdb5/modules/mal/calc.mal --- a/monetdb5/modules/mal/calc.mal +++ b/monetdb5/modules/mal/calc.mal @@ -4361,7 +4361,7 @@ comment Return -1/0/1 if
MonetDB: Jan2014 - fixed bug 3536, ie handle different types in ...
Changeset: b567ef55eac7 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b567ef55eac7 Added Files: sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.sql sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.err sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.out Modified Files: sql/server/rel_select.c sql/test/BugTracker-2014/Tests/All Branch: Jan2014 Log Message: fixed bug 3536, ie handle different types in using and outer joins diffs (131 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -5383,8 +5383,12 @@ rel_joinquery_(mvc *sql, sql_rel *rel, s return NULL; } rel = rel_compare_exp(sql, rel, ls, rs, =, NULL, TRUE); - cond = rel_unop_(sql, ls, NULL, isnull, card_value); - ls = rel_nop_(sql, cond, rs, ls, NULL, NULL, ifthenelse, card_value); + if (op != op_join) { + cond = rel_unop_(sql, ls, NULL, isnull, card_value); + if (rel_convert_types(sql, ls, rs, 1, type_equal) 0) + return NULL; + ls = rel_nop_(sql, cond, rs, ls, NULL, NULL, ifthenelse, card_value); + } exp_setname(sql-sa, ls, rnme, nm); append(outexps, ls); if (!rel) diff --git a/sql/test/BugTracker-2014/Tests/All b/sql/test/BugTracker-2014/Tests/All --- a/sql/test/BugTracker-2014/Tests/All +++ b/sql/test/BugTracker-2014/Tests/All @@ -29,3 +29,4 @@ union_with_subqueries.Bug-3518 unsafe_project_push_down.Bug-3523 non_groupby_column.Bug-3524 orderby_count.Bug-3526 +outer_join_using_diff_types_using.Bug-3536 diff --git a/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.sql b/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.sql @@ -0,0 +1,9 @@ + +create table test_a (a integer); +create table test_b (a smallint); + +select * from test_a join test_b using (a); +select * from test_a left outer join test_b using (a); + +drop table test_a; +drop table test_b; diff --git a/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.err b/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.err @@ -0,0 +1,35 @@ +stderr of test 'outer_join_using_diff_types_using.Bug-3536` in directory 'sql/test/BugTracker-2014` itself: + + +# 11:45:36 +# 11:45:36 mserver5 --debug=10 --set gdk_nr_threads=0 --set mapi_open=true --set mapi_port=31021 --set mapi_usock=/var/tmp/mtest-13021/.s.monetdb.31021 --set monet_prompt= --forcemito --set mal_listing=2 --dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014 --set mal_listing=0 +# 11:45:36 + +# builtin opt gdk_dbpath = /home/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm/demo +# builtin opt gdk_debug = 0 +# builtin opt gdk_vmtrim = no +# builtin opt monet_prompt = +# builtin opt monet_daemon = no +# builtin opt mapi_port = 5 +# builtin opt mapi_open = false +# builtin opt mapi_autosense = false +# builtin opt sql_optimizer = default_pipe +# builtin opt sql_debug = 0 +# cmdline opt gdk_nr_threads = 0 +# cmdline opt mapi_open = true +# cmdline opt mapi_port = 31021 +# cmdline opt mapi_usock = /var/tmp/mtest-13021/.s.monetdb.31021 +# cmdline opt monet_prompt = +# cmdline opt mal_listing = 2 +# cmdline opt gdk_dbpath = /home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014 +# cmdline opt mal_listing = 0 + +# 11:45:36 +# 11:45:36 mclient -lsql -ftest -Eutf-8 -i -e --host=/var/tmp/mtest-13021 --port=31021 +# 11:45:36 + + +# 11:45:36 +# 11:45:36 Done. +# 11:45:36 + diff --git a/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.out b/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/outer_join_using_diff_types_using.Bug-3536.stable.out @@ -0,0 +1,46 @@ +stdout of test 'outer_join_using_diff_types_using.Bug-3536` in directory 'sql/test/BugTracker-2014` itself: + + +# 11:45:36 +# 11:45:36 mserver5 --debug=10 --set gdk_nr_threads=0 --set mapi_open=true --set mapi_port=31021 --set mapi_usock=/var/tmp/mtest-13021/.s.monetdb.31021 --set monet_prompt= --forcemito --set mal_listing=2
MonetDB: Oct2014 - properly call firstn with distinct True (only...
Changeset: 4592f95b53ff for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4592f95b53ff Modified Files: sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_statement.h sql/benchmarks/tpch/Tests/02-explain.stable.out sql/benchmarks/tpch/Tests/03-explain.stable.out sql/benchmarks/tpch/Tests/10-explain.stable.out sql/benchmarks/tpch/Tests/18-explain.stable.out sql/benchmarks/tpch/Tests/21-explain.stable.out sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out Branch: Oct2014 Log Message: properly call firstn with distinct True (only when realy needed) diffs (truncated from 341 to 300 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -2286,13 +2286,13 @@ rel2bin_project( mvc *sql, sql_rel *rel, */ if (topn rel-r) { list *oexps = rel-r, *npl = sa_list(sql-sa); - /* distinct, topn returns atleast N (unique) */ + /* distinct, topn returns atleast N (unique groups) */ int distinct = need_distinct(rel); stmt *limit = NULL, *lpiv = NULL, *lgid = NULL; for (n=oexps-h; n; n = n-next) { sql_exp *orderbycole = n-data; - int inc = distinct || n-next; + int last = (n-next == NULL); stmt *orderbycolstmt = exp_bin(sql, orderbycole, sub, psub, NULL, NULL, NULL, NULL); @@ -2300,21 +2300,20 @@ rel2bin_project( mvc *sql, sql_rel *rel, return NULL; if (!limit) { /* topn based on a single column */ - limit = stmt_limit(sql-sa, orderbycolstmt, stmt_atom_wrd(sql-sa, 0), l, LIMIT_DIRECTION(is_ascending(orderbycole), 1, inc)); + limit = stmt_limit(sql-sa, orderbycolstmt, stmt_atom_wrd(sql-sa, 0), l, LIMIT_FLAG(distinct, is_ascending(orderbycole), last, 1)); } else {/* topn based on 2 columns */ - limit = stmt_limit2(sql-sa, orderbycolstmt, lpiv, lgid, stmt_atom_wrd(sql-sa, 0), l, LIMIT_DIRECTION(is_ascending(orderbycole), 1, inc)); + limit = stmt_limit2(sql-sa, orderbycolstmt, lpiv, lgid, stmt_atom_wrd(sql-sa, 0), l, LIMIT_FLAG(distinct, is_ascending(orderbycole), last, 1)); } if (!limit) return NULL; - lpiv = stmt_result(sql-sa, limit, 0); - lgid = stmt_result(sql-sa, limit, 1); + lpiv = limit; + if (!last) { + lpiv = stmt_result(sql-sa, limit, 0); + lgid = stmt_result(sql-sa, limit, 1); + } } - if (!distinct) /* ready to project */ - limit = lpiv; - else/* TODO */ - limit = lpiv; - + limit = lpiv; for ( n=pl-h ; n; n = n-next) list_append(npl, stmt_project(sql-sa, limit, column(sql-sa, n-data))); psub = stmt_list(sql-sa, npl); @@ -2584,7 +2583,7 @@ rel2bin_topn( mvc *sql, sql_rel *rel, li o = stmt_atom_wrd(sql-sa, 0); sc = column(sql-sa, sc); - limit = stmt_limit(sql-sa, stmt_alias(sql-sa, sc, tname, cname), o, l, LIMIT_DIRECTION(0,0,0)); + limit = stmt_limit(sql-sa, stmt_alias(sql-sa, sc, tname, cname), o, l, LIMIT_FLAG(0,0,0,0)); for ( ; n; n = n-next) { stmt *sc = n-data; diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -1018,9 +1018,10 @@ static int c = k; } if (s-flag1) { - int topn = 0, flag = s-flag, grps = flag 2; - - flag = 2; + int topn = 0, flag = s-flag; + int last = (flag 2); + int dir = (flag 4); + int distinct = (flag 8); q = newStmt1(mb, calcRef, +); q = pushArgument(mb, q, offset); @@ -1030,7 +1031,7 @@ static int topn = getDestVar(q); q = newStmt(mb, algebraRef, firstnRef); - if (grps) /* we need the groups for the next firstn */
MonetDB: rdf - use lng not long.
Changeset: a6be39a12361 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a6be39a12361 Modified Files: monetdb5/extras/rdf/rdf_shredder.c monetdb5/extras/rdf/rdftypes.c monetdb5/extras/rdf/rdftypes.h Branch: rdf Log Message: use lng not long. diffs (125 lines): diff --git a/monetdb5/extras/rdf/rdf_shredder.c b/monetdb5/extras/rdf/rdf_shredder.c --- a/monetdb5/extras/rdf/rdf_shredder.c +++ b/monetdb5/extras/rdf/rdf_shredder.c @@ -198,8 +198,8 @@ getObjectType_and_Value(unsigned char* o double realDbl; int realInt; - longnTime; - longrealLng; + lng nTime; + lng realLng; len = strlen((str)objStr); if (len 100 || len = 20){ diff --git a/monetdb5/extras/rdf/rdftypes.c b/monetdb5/extras/rdf/rdftypes.c --- a/monetdb5/extras/rdf/rdftypes.c +++ b/monetdb5/extras/rdf/rdftypes.c @@ -325,7 +325,7 @@ char rdfcast(ObjectType srcT, ObjectType dstPtr-len, srcPtr-val.dval); dstPtr-vtype = TYPE_str; return 1; - case DATETIME: //Datetime in encoded long value of timestamp + case DATETIME: //Datetime in encoded lng value of timestamp { char buf[64], *s1 = buf; int len = 64; @@ -451,11 +451,11 @@ int convertDateTimeToTimeT(char *sDateTi * Using/extending monetdb mtime functions * */ -int convertDateTimeToLong(char *sDateTime, long *t){ +int convertDateTimeToLong(char *sDateTime, lng *t){ timestamp *ts = NULL; //tzone *tz; int len, pos = 0; - long encodeLng = 0; + lng encodeLng = 0; int positiveDate = 0; int sign = 0; @@ -501,7 +501,7 @@ int convertDateTimeToLong(char *sDateTim return 0; } - //Encoding timestamp to long. + //Encoding timestamp to lng. //First 4 bits are not used, 5th bits for sign of number of days value //(1, if the number of days is negative) //27 bits for days, 32 bits for msecs @@ -513,14 +513,14 @@ int convertDateTimeToLong(char *sDateTim sign = 0; } - encodeLng |= (long) positiveDate; + encodeLng |= (lng) positiveDate; encodeLng = encodeLng (sizeof(ts-msecs) * 8); //Move 32 bits - encodeLng |= (long)sign (sizeof(long) * 8 - 5); //Set the sign bit - encodeLng = encodeLng | (long) ts-msecs; //Set 32 bits for msecs + encodeLng |= (lng)sign (sizeof(lng) * 8 - 5);//Set the sign bit + encodeLng = encodeLng | (lng) ts-msecs;//Set 32 bits for msecs *t = encodeLng; - //printf(Encode string %s with days %d and msecs %d to long %ld \n,sDateTime, ts-days, ts-msecs, *t); + //printf(Encode string %s with days %d and msecs %d to lng %ld \n,sDateTime, ts-days, ts-msecs, *t); if (ts) GDKfree(ts); return 1; @@ -535,7 +535,7 @@ void encodeValueInOid(ValPtr vrPtrRealValue, ObjectType objType, BUN* bun){ int positiveInt = 0; - long positiveLng = 0; + lng positiveLng = 0; *bun = 0; @@ -564,8 +564,8 @@ encodeValueInOid(ValPtr vrPtrRealValue, } break; case DATETIME: - //Consider it is as long value - //No sign bit needed for this encoded long + //Consider it is as lng value + //No sign bit needed for this encoded lng assert (vrPtrRealValue-val.lval = 0); positiveLng = vrPtrRealValue-val.lval; @@ -584,7 +584,7 @@ decodeValueFromOid(BUN bun, ObjectType o BUN realval = 0; int sign = 0; int ival = 0; - long lval = 0; + lng lval = 0; double *realdbl = NULL; //printf(Decode value from oid: BUNFMT \n,bun); @@ -656,7 +656,7 @@ void convertTMtimeToMTime(time_t t, time * Convert value from tm format to timestamp of monet mtime * Only convert when storing in monetdb BAT for datetime * */ -void convert_encodedLng_toTimestamp(long t, timestamp *ts){ +void convert_encodedLng_toTimestamp(lng t, timestamp *ts){ int sign = 0; int daypart = 0; int msecpart = 0; diff --git a/monetdb5/extras/rdf/rdftypes.h b/monetdb5/extras/rdf/rdftypes.h --- a/monetdb5/extras/rdf/rdftypes.h +++ b/monetdb5/extras/rdf/rdftypes.h @@ -81,13 +81,13 @@ rdf_export int convertDateTimeToTimeT(char *sDateTime, int len, time_t *t); rdf_export int -convertDateTimeToLong(char *sDateTime, long *t); +convertDateTimeToLong(char *sDateTime, lng *t); rdf_export void
MonetDB: Oct2014 - use batcalc.between were possible
Changeset: a75afbec2a01 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a75afbec2a01 Modified Files: sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_gencode.c sql/include/sql_catalog.h sql/server/rel_dump.c sql/server/rel_select.c Branch: Oct2014 Log Message: use batcalc.between were possible diffs (133 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -690,7 +690,7 @@ exp_bin(mvc *sql, sql_exp *e, stmt *left s = stmt_binop(sql-sa, stmt_binop(sql-sa, l, r, lf), stmt_binop(sql-sa, l, r2, rf), a); - } else if (l-nrcols 0 r-nrcols 0 r2-nrcols 0) { + } else if (((e-flag3) != 3) /* both sides closed use between implementation */ l-nrcols 0 r-nrcols 0 r2-nrcols 0) { s = stmt_uselect(sql-sa, l, r, range2lcompare(e-flag), stmt_uselect(sql-sa, l, r2, range2rcompare(e-flag), sel)); } else { diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -1371,7 +1371,7 @@ static int return -1; if ((s-op2-nrcols 0 || s-op3-nrcols) (s-type == st_uselect2)) { - int k; + int k, symmetric = s-flagCMP_SYMMETRIC; char *mod = calcRef; char *op1 = , *op2 = ; @@ -1385,17 +1385,28 @@ static int if (s-flag 2) op2 = =; - if ((q = multiplex2(mb, mod, convertOperator(op1), l, r1, TYPE_bit)) == NULL) - return -1; + if (s-flag1 s-flag2) { + if (symmetric) + p = newStmt1(mb, batcalcRef, between_symmetric); + else + p = newStmt1(mb, batcalcRef, between); + p = pushArgument(mb, p, l); + p = pushArgument(mb, p, r1); + p = pushArgument(mb, p, r2); + k = getDestVar(p); + } else { + if ((q = multiplex2(mb, mod, convertOperator(op1), l, r1, TYPE_bit)) == NULL) + return -1; - if ((r = multiplex2(mb, mod, convertOperator(op2), l, r2, TYPE_bit)) == NULL) - return -1; - p = newStmt1(mb, batcalcRef, and); - p = pushArgument(mb, p, getDestVar(q)); - p = pushArgument(mb, p, getDestVar(r)); - if (p == NULL) - return -1; - k = getDestVar(p); + if ((r = multiplex2(mb, mod, convertOperator(op2), l, r2, TYPE_bit)) == NULL) + return -1; + p = newStmt1(mb, batcalcRef, and); + p = pushArgument(mb, p, getDestVar(q)); + p = pushArgument(mb, p, getDestVar(r)); + if (p == NULL) + return -1; + k = getDestVar(p); + } q = newStmt1(mb, algebraRef, subselect); q = pushArgument(mb, q, k); diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h --- a/sql/include/sql_catalog.h +++ b/sql/include/sql_catalog.h @@ -147,6 +147,9 @@ typedef enum comp_type { cmp_equal_nil = 14 /* special case equi join, with nil = nil */ } comp_type; +/* for ranges we keep the requirment for symmetric */ +#define CMP_SYMMETRIC 8 + #define is_theta_exp(e) ((e) == cmp_gt || (e) == cmp_gte || (e) == cmp_lte ||\ (e) == cmp_lt || (e) == cmp_equal || (e) == cmp_notequal) diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -177,6 +177,8 @@ exp_print(mvc *sql, stream *fout, sql_ex
MonetDB: Oct2014 - added an other push groupby down rewrite step.
Changeset: a4374e43f2d4 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a4374e43f2d4 Modified Files: sql/backends/monet5/rel_bin.c sql/benchmarks/tpch/Tests/02-explain.stable.out sql/benchmarks/tpch/Tests/02-plan.stable.out sql/benchmarks/tpch/Tests/10-plan.stable.out sql/benchmarks/tpch/Tests/17-explain.stable.out sql/benchmarks/tpch/Tests/17-plan.stable.out sql/benchmarks/tpch/Tests/18-plan.stable.out sql/benchmarks/tpch/Tests/20-explain.stable.out sql/benchmarks/tpch/Tests/20-plan.stable.out sql/benchmarks/tpch/Tests/21-plan.stable.out sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_optimizer.c Branch: Oct2014 Log Message: added an other push groupby down rewrite step. When a groupby follows a join, and the group by is grouped over a unique column of one of the joined tables (and all aggregates are done on this table), it can be pushed down. This pattern happens a lot after apply rewrites (ie of correlated subqueries). One thing to remember is when pushed down 'outer' joins we should mark 'count' aggregates as the outer join should after the rewrite fill in '0' and not 'null' when rows are missing. diffs (truncated from 1342 to 300 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -28,6 +28,8 @@ #include rel_optimizer.h #include sql_env.h +#define OUTER_ZERO 64 + static stmt * subrel_bin(mvc *sql, sql_rel *rel, list *refs); static stmt * @@ -526,6 +528,8 @@ exp_bin(mvc *sql, sql_exp *e, stmt *left } } s = stmt_aggr(sql-sa, as, grp, ext, a, 1, need_no_nil(e) /* ignore nil*/ ); + if (find_prop(e-p, PROP_COUNT)) /* propagate count == 0 ipv NULL in outer joins */ + s-flag |= OUTER_ZERO; /* HACK: correct cardinality for window functions */ if (e-card CARD_AGGR) s-nrcols = 2; @@ -1083,6 +1087,7 @@ stmt_rename(mvc *sql, sql_rel *rel, sql_ { char *name = exp-name; char *rname = exp-rname; + stmt *o = s; (void)rel; if (!name exp-type == e_column exp-r) @@ -1094,6 +1099,8 @@ stmt_rename(mvc *sql, sql_rel *rel, sql_ if (!rname) rname = table_name(sql-sa, s); s = stmt_alias(sql-sa, s, rname, name); + if (o-flag OUTER_ZERO) + s-flag |= OUTER_ZERO; return s; } @@ -1645,7 +1652,7 @@ rel2bin_join( mvc *sql, sql_rel *rel, li if (rel-op == op_left || rel-op == op_full) s = stmt_append(sql-sa, s, stmt_project(sql-sa, ld, c)); if (rel-op == op_right || rel-op == op_full) - s = stmt_append(sql-sa, s, stmt_const(sql-sa, rd, stmt_atom(sql-sa, atom_general(sql-sa, tail_type(c), NULL; + s = stmt_append(sql-sa, s, stmt_const(sql-sa, rd, (c-flagOUTER_ZERO)?stmt_atom_wrd(sql-sa, 0):stmt_atom(sql-sa, atom_general(sql-sa, tail_type(c), NULL; s = stmt_alias(sql-sa, s, rnme, nme); list_append(l, s); @@ -1660,7 +1667,7 @@ rel2bin_join( mvc *sql, sql_rel *rel, li if (rel-op == op_left || rel-op == op_full || rel-op == op_right) s = Column(sql-sa, s); if (rel-op == op_left || rel-op == op_full) - s = stmt_append(sql-sa, s, stmt_const(sql-sa, ld, stmt_atom(sql-sa, atom_general(sql-sa, tail_type(c), NULL; + s = stmt_append(sql-sa, s, stmt_const(sql-sa, ld, (c-flagOUTER_ZERO)?stmt_atom_wrd(sql-sa, 0):stmt_atom(sql-sa, atom_general(sql-sa, tail_type(c), NULL; if (rel-op == op_right || rel-op == op_full) s = stmt_append(sql-sa, s, stmt_project(sql-sa, rd, c)); diff --git a/sql/benchmarks/tpch/Tests/02-explain.stable.out b/sql/benchmarks/tpch/Tests/02-explain.stable.out --- a/sql/benchmarks/tpch/Tests/02-explain.stable.out +++ b/sql/benchmarks/tpch/Tests/02-explain.stable.out @@ -67,168 +67,167 @@ Ready. % 823 # length function user.s2_1{autoCommit=true}(A0:int,A1:str,A2:str,A3:str):void; X_6 := sql.mvc(); -X_7:bat[:oid,:oid] := sql.tid(X_6,sys,nation); -X_10 := sql.bind_idxbat(X_6,sys,nation,nation_n_regionkey_fkey,0); -(X_13,r1_13) := sql.bind_idxbat(X_6,sys,nation,nation_n_regionkey_fkey,2); -X_16 := sql.bind_idxbat(X_6,sys,nation,nation_n_regionkey_fkey,1); -X_18 := sql.projectdelta(X_7,X_10,X_13,r1_13,X_16); -X_21 := sql.bind(X_6,sys,region,r_name,0); -X_19:bat[:oid,:oid] := sql.tid(X_6,sys,region); -X_337 := algebra.subselect(X_21,X_19,A3,A3,true,true,false); -(X_23,r1_24) := sql.bind(X_6,sys,region,r_name,2); -X_338 := algebra.subselect(r1_24,A3,A3,true,true,false); -X_25 :=
MonetDB: Oct2014 - remove unused variable p
Changeset: 9d615402e7c6 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9d615402e7c6 Modified Files: sql/server/rel_optimizer.c Branch: Oct2014 Log Message: remove unused variable p diffs (25 lines): diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -3122,19 +3122,18 @@ rel_push_groupby_down(int *changes, mvc if (rel-op == op_groupby list_length(gbe) == 1 is_join(j-op)) { sql_rel *jl = j-l, *jr = j-r, *cr; sql_exp *gb = gbe-h-data, *e; - prop *p; node *n; int left = 1; list *aggrs, *gbe; if (jl-op == op_project (e = list_find_exp( jl-exps, gb)) != NULL - (p = find_prop(e-p, PROP_HASHCOL)) != NULL) { +find_prop(e-p, PROP_HASHCOL) != NULL) { left = 0; cr = jr; } else if (jr-op == op_project (e = list_find_exp( jr-exps, gb)) != NULL - (p = find_prop(e-p, PROP_HASHCOL)) != NULL) { +find_prop(e-p, PROP_HASHCOL) != NULL) { left = 1; cr = jl; } else { ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - upgrade code fixes.
Changeset: 027be675347f for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=027be675347f Modified Files: sql/backends/monet5/sql.c sql/backends/monet5/sql.h sql/backends/monet5/sql.mal sql/backends/monet5/sql_scenario.c sql/include/sql_catalog.h sql/server/rel_select.c sql/server/sql_parser.y sql/storage/bat/bat_logger.c sql/storage/sql_catalog.c Branch: Oct2014 Log Message: upgrade code fixes. the union functions are now dropped and recreated, this is needed to solve the storage of multiple return types. diffs (truncated from 720 to 300 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -899,6 +899,49 @@ create_func(mvc *sql, char *sname, sql_f return MAL_SUCCEED; } +str +UPGdrop_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + mvc *sql = NULL; + str msg = MAL_SUCCEED; + int id = *(int *) getArgReference(stk, pci, 1); + sql_func *func; + + if ((msg = getSQLContext(cntxt, mb, sql, NULL)) != NULL) + return msg; + if ((msg = checkSQLContext(cntxt)) != NULL) + return msg; + + func = sql_trans_find_func(sql-session-tr, id); + if (func) + mvc_drop_func(sql, func-s, func, 0); + return msg; +} + +str +UPGcreate_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + mvc *sql = NULL; + str msg = MAL_SUCCEED; + str func = *(str *) getArgReference(stk, pci, 1); + stmt *s; + + if ((msg = getSQLContext(cntxt, mb, sql, NULL)) != NULL) + return msg; + if ((msg = checkSQLContext(cntxt)) != NULL) + return msg; + s = sql_parse(sql, sa_create(), func, 0); + if (s s-type == st_catalog) { + char *schema = ((stmt*)s-op1-op4.lval-h-data)-op4.aval-data.val.sval; + sql_func *func = (sql_func*)((stmt*)s-op1-op4.lval-t-data)-op4.aval-data.val.pval; + + msg = create_func(sql, schema, func); + } else { + throw(SQL, sql.catalog, function creation failed '%s', func); + } + return msg; +} + static char * create_trigger(mvc *sql, char *sname, char *tname, char *triggername, int time, int orientation, int event, char *old_name, char *new_name, char *condition, char *query) { diff --git a/sql/backends/monet5/sql.h b/sql/backends/monet5/sql.h --- a/sql/backends/monet5/sql.h +++ b/sql/backends/monet5/sql.h @@ -109,6 +109,9 @@ sql5_export str mvc_declared_table_colum sql5_export str mvc_drop_declared_table_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); sql5_export str mvc_drop_declared_tables_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +sql5_export str UPGdrop_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +sql5_export str UPGcreate_func(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); + sql5_export str mvc_affected_rows_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); sql5_export str mvc_export_result_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); sql5_export str mvc_export_head_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); @@ -322,4 +325,5 @@ sql5_export str STRindex_bte(bte *res, s sql5_export str BATSTRindex_bte(bat *res, bat *src, bit *u); sql5_export str STRstrings(str *res, str src); sql5_export str BATSTRstrings(bat *res, bat *src); + #endif /* _SQL_H */ diff --git a/sql/backends/monet5/sql.mal b/sql/backends/monet5/sql.mal --- a/sql/backends/monet5/sql.mal +++ b/sql/backends/monet5/sql.mal @@ -305,6 +305,14 @@ pattern dropDeclaredTables{unsafe}( nr:i address mvc_drop_declared_tables_wrap comment drop top n declared tables; +pattern drop_func_upgrade_oct2014(id:int) :int +address UPGdrop_func +comment Drop the function identified by id, needed for the Oct2014 upgrade; + +pattern create_func_upgrade_oct2014(f:str) :int +address UPGcreate_func +comment Create the function described by f, needed for the Oct2014 upgrade; + pattern exportHead{unsafe}(s:streams, res_id:int) :void address mvc_export_head_wrap comment Export a result (in order) to stream s; diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -598,10 +598,6 @@ sql_update_feb2013_sp3(Client c) return err; /* usually MAL_SUCCEED */ } -/* - * TODO - * update all table functions, ie make them type F_UNION - */ static str sql_update_jan2014(Client c) { @@ -877,6 +873,21 @@ sql_update_oct2014(Client c) pos += snprintf(buf + pos, bufsize - pos, delete from _columns where table_id in (select id from _tables where name like '#%%');\n); pos += snprintf(buf + pos, bufsize - pos, delete from _tables where name like
MonetDB: Oct2014 - approved output
Changeset: 93ad4be3fdda for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=93ad4be3fdda Modified Files: sql/benchmarks/tpch/Tests/20-explain.stable.out sql/benchmarks/tpch/Tests/20-plan.stable.out Branch: Oct2014 Log Message: approved output diffs (174 lines): diff --git a/sql/benchmarks/tpch/Tests/20-explain.stable.out b/sql/benchmarks/tpch/Tests/20-explain.stable.out --- a/sql/benchmarks/tpch/Tests/20-explain.stable.out +++ b/sql/benchmarks/tpch/Tests/20-explain.stable.out @@ -94,12 +94,12 @@ function user.s2_1{autoCommit=true}(A0:s X_55:bat[:oid,:int] := algebra.leftfetchjoinPath(X_43,X_33,X_54); (X_56,r1_59) := algebra.join(X_31,X_55); X_58 := algebra.tinter(X_32,X_56); -X_282 := algebra.leftfetchjoin(X_58,X_23); +X_278 := algebra.leftfetchjoin(X_58,X_23); X_59 := sql.bind_idxbat(X_8,sys,partsupp,partsupp_ps_partkey_ps_suppkey_pkey,0); (X_62,r1_65) := sql.bind_idxbat(X_8,sys,partsupp,partsupp_ps_partkey_ps_suppkey_pkey,2); X_64 := sql.bind_idxbat(X_8,sys,partsupp,partsupp_ps_partkey_ps_suppkey_pkey,1); X_65 := sql.delta(X_59,X_62,r1_65,X_64); -X_66:bat[:oid,:wrd] := algebra.leftfetchjoin(X_282,X_65); +X_66:bat[:oid,:wrd] := algebra.leftfetchjoin(X_278,X_65); X_67:bat[:oid,:oid] := sql.tid(X_8,sys,lineitem); X_69 := sql.bind(X_8,sys,lineitem,l_shipdate,0); (X_71,r1_75) := sql.bind(X_8,sys,lineitem,l_shipdate,2); @@ -108,17 +108,17 @@ function user.s2_1{autoCommit=true}(A0:s X_75 := algebra.leftfetchjoin(X_67,X_74); X_76 := mtime.addmonths(A3,A4); X_77 := algebra.subselect(X_75,A2,X_76,true,false,false); -X_283 := algebra.leftfetchjoin(X_77,X_67); +X_279 := algebra.leftfetchjoin(X_77,X_67); X_80 := sql.bind(X_8,sys,lineitem,l_suppkey,0); (X_84,r1_91) := sql.bind(X_8,sys,lineitem,l_suppkey,2); X_87 := sql.bind(X_8,sys,lineitem,l_suppkey,1); X_89 := sql.delta(X_80,X_84,r1_91,X_87); -X_90:bat[:oid,:int] := algebra.leftfetchjoin(X_283,X_89); +X_90:bat[:oid,:int] := algebra.leftfetchjoin(X_279,X_89); X_91 := sql.bind(X_8,sys,lineitem,l_partkey,0); (X_93,r1_101) := sql.bind(X_8,sys,lineitem,l_partkey,2); X_95 := sql.bind(X_8,sys,lineitem,l_partkey,1); X_96 := sql.delta(X_91,X_93,r1_101,X_95); -X_97:bat[:oid,:int] := algebra.leftfetchjoin(X_283,X_96); +X_97:bat[:oid,:int] := algebra.leftfetchjoin(X_279,X_96); (X_98,r1_107,r2_107) := group.subgroup(X_97); (X_101,r1_110,r2_110) := group.subgroupdone(X_90,X_98); X_104 := algebra.leftfetchjoin(r1_110,X_97); @@ -127,7 +127,7 @@ function user.s2_1{autoCommit=true}(A0:s (X_154,r1_176) := sql.bind(X_8,sys,lineitem,l_quantity,2); X_157 := sql.bind(X_8,sys,lineitem,l_quantity,1); X_159 := sql.delta(X_149,X_154,r1_176,X_157); -X_160:bat[:oid,:int] := algebra.leftfetchjoin(X_283,X_159); +X_160:bat[:oid,:int] := algebra.leftfetchjoin(X_279,X_159); X_161:bat[:oid,:lng] := aggr.subsum(X_160,X_101,r1_110,true,true); X_105:bat[:oid,:wrd] := mal.manifold(mkey,hash,X_104); X_110:bat[:oid,:wrd] := mkey.bulk_rotate_xor_hash(X_105,22,X_109); @@ -141,7 +141,7 @@ function user.s2_1{autoCommit=true}(A0:s (X_125,r1_139) := sql.bind(X_8,sys,partsupp,ps_suppkey,2); X_128 := sql.bind(X_8,sys,partsupp,ps_suppkey,1); X_130 := sql.delta(X_120,X_125,r1_139,X_128); -X_131:bat[:oid,:int] := algebra.leftfetchjoin(X_282,X_130); +X_131:bat[:oid,:int] := algebra.leftfetchjoin(X_278,X_130); X_132 := algebra.leftfetchjoin(X_119,X_131); X_133 := algebra.leftfetchjoin(X_117,r1_121); X_134 := algebra.leftfetchjoin(X_133,X_109); @@ -152,7 +152,7 @@ function user.s2_1{autoCommit=true}(A0:s (X_140,r1_156) := sql.bind(X_8,sys,partsupp,ps_availqty,2); X_142 := sql.bind(X_8,sys,partsupp,ps_availqty,1); X_143 := sql.delta(X_138,X_140,r1_156,X_142); -X_144:bat[:oid,:int] := algebra.leftfetchjoinPath(X_137,X_282,X_143); +X_144:bat[:oid,:int] := algebra.leftfetchjoinPath(X_137,X_278,X_143); X_145:bat[:oid,:lng] := batcalc.lng(X_144,19,2); X_147 := calc.lng(1,A1,11,1); X_163:bat[:oid,:lng] := algebra.leftfetchjoinPath(X_136,X_133,X_161); @@ -161,47 +161,45 @@ function user.s2_1{autoCommit=true}(A0:s X_166:bat[:oid,:bit] := batcalc.(X_145,X_165); X_167 := algebra.subselect(X_166,true,true,true,true,false); X_169:bat[:oid,:int] := algebra.leftfetchjoinPath(X_167,X_137,X_131); -(X_170,r1_196,r2_196) := group.subgroupdone(X_169); -X_173 := algebra.leftfetchjoin(r1_196,X_169); -(X_174,r1_200) := algebra.join(X_21,X_173); -X_176 := algebra.tinter(X_22,X_174); -X_284 := algebra.leftfetchjoin(X_176,X_9); -X_177 := sql.bind(X_8,sys,supplier,s_nationkey,0); -(X_180,r1_206) := sql.bind(X_8,sys,supplier,s_nationkey,2); -X_183 := sql.bind(X_8,sys,supplier,s_nationkey,1); -X_184 := sql.delta(X_177,X_180,r1_206,X_183); -X_185:bat[:oid,:int]
MonetDB: Oct2014 - fixed crash in in handling
Changeset: f34a80054a36 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f34a80054a36 Modified Files: sql/server/rel_select.c Branch: Oct2014 Log Message: fixed crash in in handling diffs (12 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -3010,7 +3010,7 @@ rel_logical_exp(mvc *sql, sql_rel *rel, l-card != CARD_ATOM has_nil(l)) { e = rel_unop_(sql, l, NULL, isnull, card_value); e = exp_compare(sql-sa, e, exp_atom_bool(sql-sa, 0), cmp_equal); - if (!is_select(rel-op) !rel_is_ref(rel)) + if (!is_select(rel-op) || rel_is_ref(rel)) left = rel = rel_select(sql-sa, rel, e); else rel_select_add_exp(sql-sa, rel, e); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - restore error message for single column in st...
Changeset: 235399f6dab0 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=235399f6dab0 Modified Files: sql/server/rel_select.c Branch: Oct2014 Log Message: restore error message for single column in statements diffs (16 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -3133,8 +3133,11 @@ rel_logical_exp(mvc *sql, sql_rel *rel, /* list through all left/right expressions */ rexps = right-exps; - if (!is_project(right-op) || list_length(ll) != list_length(rexps)) + if (!is_project(right-op) || list_length(ll) != list_length(rexps)) { + if (list_length(ll) == 1) + return sql_error(sql, 02, IN: iinner query should return a single column); return NULL; + } for (n=ll-h, m=rexps-h; n m; n = n-next, m = m-next) { sql_exp *l = n-data; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - generalized div detection/rewrites which fixe...
Changeset: 9698a5f83bf6 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9698a5f83bf6 Added Files: sql/test/BugTracker-2014/Tests/ifthenelse.Bug-3546.stable.err sql/test/BugTracker-2014/Tests/ifthenelse.Bug-3546.stable.out Modified Files: sql/backends/monet5/sql_gencode.c sql/server/rel_optimizer.c sql/storage/bat/bat_storage.c sql/test/BugTracker-2014/Tests/All Branch: Oct2014 Log Message: generalized div detection/rewrites which fixes bug 3546 diffs (299 lines): diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -1869,6 +1869,8 @@ static int return -1; mod = sql_func_mod(f-func); fimp = sql_func_imp(f-func); + if (s-op1 list_length(s-op1-op4.lval) != 3 strcmp(f-func-base.name, ifthenelse) == 0) + assert(0); if (s-nrcols) { sql_subtype *res = f-res-h-data; fimp = convertMultiplexFcn(fimp); diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -2216,6 +2216,43 @@ sql_div_fixup( mvc *sql, sql_exp *e, sql return exp_binop(sql-sa, le, re, e-f); } +static int +exp_find_func( sql_exp *e, char *name) +{ + if (!e) + return 0; + switch(e-type) { + case e_aggr: + case e_func: + { + list *l = e-l; + node *n; + sql_subfunc *f = e-f; + + if (!f-func-s !strcmp(f-func-base.name, name)) + return 1; + if (!l) + return 0; + for (n = l-h; n; n = n-next) { + sql_exp *ne = n-data; + + if (exp_find_func( ne, name)) + return 1; + } + } + case e_convert: + return exp_find_func( e-l, name); + case e_column: + case e_cmp: + case e_psm: + case e_atom: + default: + return 0; + } +} + +static sql_exp * exp_div_fixup( mvc *sql, sql_exp *e, sql_exp *cond, int lr ); + static list * exps_case_fixup( mvc *sql, list *exps, sql_exp *cond, int lr ) { @@ -2236,6 +2273,10 @@ exps_case_fixup( mvc *sql, list *exps, s exp_setname(sql-sa, ne, e-rname, e-name ); e = ne; } + } else if (e-type == e_convert) { + sql_exp *l = exp_div_fixup(sql, e-l, cond, lr); + sql_exp *ne = exp_convert(sql-sa, l, exp_fromtype(e), exp_totype(e)); + e = ne; } append(nexps, e); } @@ -2245,6 +2286,24 @@ exps_case_fixup( mvc *sql, list *exps, s } static sql_exp * +exp_div_fixup( mvc *sql, sql_exp *e, sql_exp *cond, int lr ) +{ + if (is_func(e-type) e-l !is_rank_op(e) ) { + sql_subfunc *f = e-f; + + if (!f-func-s !strcmp(f-func-base.name, sql_div)) { + e = sql_div_fixup(sql, e, cond, lr); + } else { + list *l = exps_case_fixup(sql, e-l, cond, lr); + sql_exp *ne = exp_op(sql-sa, l, f); + exp_setname(sql-sa, ne, e-rname, e-name ); + e = ne; + } + } + return e; +} + +static sql_exp * exp_case_fixup( mvc *sql, sql_exp *e ) { /* only functions need fix up */ @@ -2264,38 +2323,23 @@ exp_case_fixup( mvc *sql, sql_exp *e ) /* ifthenelse with one of the sides an 'sql_div' */ args = ne-l; - if (!f-func-s !strcmp(f-func-base.name,ifthenelse)) { + if (!f-func-s !strcmp(f-func-base.name, ifthenelse)) { sql_exp *cond = args-h-data, *nne; sql_exp *a1 = args-h-next-data; sql_exp *a2 = args-h-next-next-data; - sql_subfunc *a1f = a1-f; - sql_subfunc *a2f = a2-f; /* rewrite right hands of div */ - if (a1-type == e_func !a1f-func-s -!strcmp(a1f-func-base.name, sql_div)) { - a1 = sql_div_fixup(sql, a1, cond, 0); + if ((a1-type == e_func || a1-type == e_convert) exp_find_func(a1, sql_div)) { + a1 = exp_div_fixup(sql, a1, cond,
MonetDB: Oct2014 - added test for bug 3542
Changeset: b3e90980dc9b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b3e90980dc9b Added Files: sql/test/BugTracker-2014/Tests/round.Bug-3542.sql sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.out Modified Files: sql/test/BugTracker-2014/Tests/All Branch: Oct2014 Log Message: added test for bug 3542 diffs (119 lines): diff --git a/sql/test/BugTracker-2014/Tests/All b/sql/test/BugTracker-2014/Tests/All --- a/sql/test/BugTracker-2014/Tests/All +++ b/sql/test/BugTracker-2014/Tests/All @@ -32,4 +32,5 @@ non_groupby_column.Bug-3524 orderby_count.Bug-3526 outer_join_using_diff_types_using.Bug-3536 select-distinct-order-limit.Bug-3527 +round.Bug-3542 ifthenelse.Bug-3546 diff --git a/sql/test/BugTracker-2014/Tests/round.Bug-3542.sql b/sql/test/BugTracker-2014/Tests/round.Bug-3542.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/round.Bug-3542.sql @@ -0,0 +1,7 @@ +CREATE TABLE test_num_data (id integer, val numeric(18,10)); +INSERT INTO test_num_data VALUES (1, '-0.0'); +INSERT INTO test_num_data VALUES (2, '-34338492.215397047'); +SELECT * FROM test_num_data; +SELECT t1.id, t2.id, t1.val * t2.val FROM test_num_data t1, test_num_data t2; +SELECT t1.id, t2.id, round(t1.val * t2.val, 30) FROM test_num_data t1, test_num_data t2; +drop table test_num_data; diff --git a/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err b/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err @@ -0,0 +1,43 @@ +stderr of test 'round.Bug-3542` in directory 'sql/test/BugTracker-2014` itself: + + +# 11:02:07 +# 11:02:07 mserver5 --debug=10 --set gdk_nr_threads=0 --set mapi_open=true --set mapi_port=32577 --set mapi_usock=/var/tmp/mtest-6484/.s.monetdb.32577 --set monet_prompt= --forcemito --set mal_listing=2 --dbpath=/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014 --set mal_listing=0 --set embedded_r=yes +# 11:02:07 + +# builtin opt gdk_dbpath = /home/niels/scratch/rc-monetdb/Linux-x86_64/var/monetdb5/dbfarm/demo +# builtin opt gdk_debug = 0 +# builtin opt gdk_vmtrim = no +# builtin opt monet_prompt = +# builtin opt monet_daemon = no +# builtin opt mapi_port = 5 +# builtin opt mapi_open = false +# builtin opt mapi_autosense = false +# builtin opt sql_optimizer = default_pipe +# builtin opt sql_debug = 0 +# cmdline opt gdk_nr_threads = 0 +# cmdline opt mapi_open = true +# cmdline opt mapi_port = 32577 +# cmdline opt mapi_usock = /var/tmp/mtest-6484/.s.monetdb.32577 +# cmdline opt monet_prompt = +# cmdline opt mal_listing = 2 +# cmdline opt gdk_dbpath = /home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014 +# cmdline opt mal_listing = 0 +# cmdline opt embedded_r = yes +# cmdline opt gdk_debug = 536870922 + +# 11:02:08 +# 11:02:08 mclient -lsql -ftest -Eutf-8 -i -e --host=/var/tmp/mtest-6484 --port=32577 +# 11:02:08 + +MAPI = (monetdb) /var/tmp/mtest-6484/.s.monetdb.32577 +QUERY = SELECT t1.id, t2.id, t1.val * t2.val FROM test_num_data t1, test_num_data t2; + +MAPI = (monetdb) /var/tmp/mtest-6484/.s.monetdb.32577 +QUERY = SELECT t1.id, t2.id, round(t1.val * t2.val, 30) FROM test_num_data t1, test_num_data t2; + + +# 11:02:08 +# 11:02:08 Done. +# 11:02:08 + diff --git a/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.out b/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.out @@ -0,0 +1,45 @@ +stdout of test 'round.Bug-3542` in directory 'sql/test/BugTracker-2014` itself: + + +# 11:02:07 +# 11:02:07 mserver5 --debug=10 --set gdk_nr_threads=0 --set mapi_open=true --set mapi_port=32577 --set mapi_usock=/var/tmp/mtest-6484/.s.monetdb.32577 --set monet_prompt= --forcemito --set mal_listing=2 --dbpath=/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2014 --set mal_listing=0 --set embedded_r=yes +# 11:02:07 + +# MonetDB 5 server v11.19.0 +# This is an unreleased version +# Serving database 'mTests_sql_test_BugTracker-2014', using 4 threads +# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked +# Found 7.334 GiB available main-memory. +# Copyright (c) 1993-July 2008 CWI. +# Copyright (c) August 2008-2014 MonetDB B.V., all rights reserved +# Visit http://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://localhost.nes.nl:32577/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-6484/.s.monetdb.32577 +# MonetDB/GIS module loaded +# MonetDB/SQL module loaded +# MonetDB/R module loaded + +Ready. + +# 11:02:08 +# 11:02:08 mclient -lsql -ftest -Eutf-8 -i -e --host=/var/tmp/mtest-6484 --port=32577 +#
MonetDB: Oct2014 - merged
Changeset: 5ec7c028f095 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5ec7c028f095 Modified Files: configure.ag Branch: Oct2014 Log Message: merged diffs (41 lines): diff --git a/configure.ag b/configure.ag --- a/configure.ag +++ b/configure.ag @@ -2442,17 +2442,28 @@ if test x$have_samtools != xno; then save_LDFLAGS=$LDFLAGS CPPFLAGS=$CPPFLAGS $SAMTOOLS_CFLAGS LDFLAGS=$LDFLAGS $SAMTOOLS_LIBS + AC_CHECK_HEADER(samtools/bam.h, + [ why_have_samtools= ], + [ why_have_samtools=samtools/bam.h header not found ]) + if test -z $why_have_samtools; then AC_CHECK_HEADER(samtools/bgzf.h, - AC_CHECK_LIB(bam, bam_header_read, - AC_DEFINE(HAVE_SAMTOOLS, 1, [Define if you have the samtools (providing the bam library)]), - [ if test x$have_samtools != xauto; then AC_MSG_ERROR([-lbam library not found]); fi - have_samtools=no; why_have_samtools=(bam library not found) ], - [-lm -lpthread -lz]), - [ if test x$have_samtools != xauto; then AC_MSG_ERROR([samtools/bgzf.h header not found]); fi - have_samtools=no; why_have_samtools=(samtools/bgzf.h header not found) ]), - [ if test x$have_samtools != xauto; then AC_MSG_ERROR([samtools/bam.h header not found]); fi - have_samtools=no; why_have_samtools=(samtools/bam.h header not found) ]) + [ why_have_samtools= ], + [ why_have_samtools=samtools/bgzf.h header not found ]) + fi + if test -z $why_have_samtools; then + AC_CHECK_LIB(bam, bam_header_read, + AC_DEFINE(HAVE_SAMTOOLS, 1, [Define if you have the samtools (providing the bam library)]), + [ why_have_samtools=bam library not found ], + [-lm -lpthread -lz]) + fi + if test -n $why_have_samtools; then + if test x$have_samtools != xauto; then + AC_MSG_ERROR([$why_have_samtools]) + fi + have_samtools=no + why_have_samtools=($why_have_samtools) + fi LDFLAGS=$save_LDFLAGS CPPFLAGS=$save_CPPFLAGS if test x$have_samtools = xyes -o x$have_samtools = xauto; then ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - fixed push topn down, also include the order ...
Changeset: 36a9402c22b5 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=36a9402c22b5 Modified Files: sql/server/rel_optimizer.c Branch: Oct2014 Log Message: fixed push topn down, also include the order by columns, solves bug 3547. diffs (54 lines): diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -204,7 +204,8 @@ list_find_exp( list *exps, sql_exp *e) { sql_exp *ne = NULL; - assert(e-type == e_column); + if (e-type != e_column) + return NULL; if ((e-l (ne=exps_bind_column2(exps, e-l, e-r)) != NULL) || ((ne=exps_bind_column(exps, e-r, NULL)) != NULL)) return ne; @@ -1733,6 +1734,7 @@ rel_push_topn_down(int *changes, mvc *sq sql_rel *u = rp, *ou = u, *x; sql_rel *ul = u-l; sql_rel *ur = u-r; + int add_r = 0; /* only push topn once */ x = ul; @@ -1746,6 +1748,8 @@ rel_push_topn_down(int *changes, mvc *sq if (x x-op == op_topn) return rel; + if (list_length(ul-exps) list_length(r-exps)) + add_r = 1; ul = rel_dup(ul); ur = rel_dup(ur); if (!is_project(ul-op)) @@ -1760,14 +1764,23 @@ rel_push_topn_down(int *changes, mvc *sq /* introduce projects under the set */ ul = rel_project(sql-sa, ul, NULL); ul-exps = exps_copy(sql-sa, r-exps); + /* possibly add order by column */ + if (add_r) + ul-exps = list_merge(ul-exps, exps_copy(sql-sa, r-r), NULL); ul-r = exps_copy(sql-sa, r-r); ul = rel_topn(sql-sa, ul, sum_limit_offset(sql, rel-exps)); ur = rel_project(sql-sa, ur, NULL); ur-exps = exps_copy(sql-sa, r-exps); + /* possibly add order by column */ + if (add_r) + ur-exps = list_merge(ur-exps, exps_copy(sql-sa, r-r), NULL); ur-r = exps_copy(sql-sa, r-r); ur = rel_topn(sql-sa, ur, sum_limit_offset(sql, rel-exps)); u = rel_setop(sql-sa, ul, ur, op_union); u-exps = exps_copy(sql-sa, r-exps); + /* possibly add order by column */ + if (add_r) + u-exps = list_merge(u-exps, exps_copy(sql-sa, r-r), NULL); /* zap names */ rel_no_rename_exps(u-exps); rel_destroy(ou); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - approve error message
Changeset: 7432e7c35cff for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7432e7c35cff Modified Files: sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err Branch: Oct2014 Log Message: approve error message diffs (19 lines): diff --git a/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err b/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err --- a/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err +++ b/sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err @@ -30,11 +30,12 @@ stderr of test 'round.Bug-3542` in direc # 11:02:08 mclient -lsql -ftest -Eutf-8 -i -e --host=/var/tmp/mtest-6484 --port=32577 # 11:02:08 -MAPI = (monetdb) /var/tmp/mtest-6484/.s.monetdb.32577 +MAPI = (monetdb) /var/tmp/mtest-12641/.s.monetdb.34069 QUERY = SELECT t1.id, t2.id, t1.val * t2.val FROM test_num_data t1, test_num_data t2; - -MAPI = (monetdb) /var/tmp/mtest-6484/.s.monetdb.32577 +ERROR = !overflow in calculation -343384922153970470*-343384922153970470. +MAPI = (monetdb) /var/tmp/mtest-12641/.s.monetdb.34069 QUERY = SELECT t1.id, t2.id, round(t1.val * t2.val, 30) FROM test_num_data t1, test_num_data t2; +ERROR = !overflow in calculation -343384922153970470*-343384922153970470. # 11:02:08 ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - removed debug statement
Changeset: c9a28c08776b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c9a28c08776b Modified Files: sql/backends/monet5/sql_gencode.c Branch: Oct2014 Log Message: removed debug statement diffs (12 lines): diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -1869,8 +1869,6 @@ static int return -1; mod = sql_func_mod(f-func); fimp = sql_func_imp(f-func); - if (s-op1 list_length(s-op1-op4.lval) != 3 strcmp(f-func-base.name, ifthenelse) == 0) - assert(0); if (s-nrcols) { sql_subtype *res = f-res-h-data; fimp = convertMultiplexFcn(fimp); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - added test for bug 3543
Changeset: 09da452b2f51 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=09da452b2f51 Added Files: sql/test/BugTracker-2014/Tests/number_4_4.Bug-3543.sql Modified Files: sql/test/BugTracker-2014/Tests/All Branch: Oct2014 Log Message: added test for bug 3543 diffs (43 lines): diff --git a/sql/test/BugTracker-2014/Tests/All b/sql/test/BugTracker-2014/Tests/All --- a/sql/test/BugTracker-2014/Tests/All +++ b/sql/test/BugTracker-2014/Tests/All @@ -33,4 +33,5 @@ orderby_count.Bug-3526 outer_join_using_diff_types_using.Bug-3536 select-distinct-order-limit.Bug-3527 round.Bug-3542 +number_4_4.Bug-3543 ifthenelse.Bug-3546 diff --git a/sql/test/BugTracker-2014/Tests/number_4_4.Bug-3543.sql b/sql/test/BugTracker-2014/Tests/number_4_4.Bug-3543.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/number_4_4.Bug-3543.sql @@ -0,0 +1,29 @@ +CREATE TABLE fract_only (id int, val numeric(4,4)); +--Note that the precision is equal to the scale, so the allowed number of significant digits before the decimal dot should not exceed 0 (4 - 4 = 0). + +--the following SQL are NOT accepted but should be accepted: +INSERT INTO fract_only VALUES (1, '-0.'); +INSERT INTO fract_only VALUES (2, '+0.'); + +--the following SQL are accepted but incorrect data is stored: +INSERT INTO fract_only VALUES (3, '+.'); +SELECT * FROM fract_only; +-- returns value 2.5535 !! + +--the following SQL are accepted but should error: +INSERT INTO fract_only VALUES (4, '0.5'); -- should fail but is invalidly accepted +INSERT INTO fract_only VALUES (5, '0.9'); -- should fail but is invalidly accepted +SELECT * FROM fract_only; +-- both show 1. which out of the allowed value range of numeric(4,4) + +INSERT INTO fract_only VALUES (6, '+0.5'); -- correctly fails +INSERT INTO fract_only VALUES (6, '+.5'); -- should fail but is invalidly accepted +SELECT * FROM fract_only; +-- returns value 2.5536 for id 6 !! + +INSERT INTO fract_only VALUES (7, '-0.5'); -- correctly fails +INSERT INTO fract_only VALUES (7, '-.98'); -- should fail but is invalidly accepted +SELECT * FROM fract_only; +-- returns value -0. for id 7 !! + +drop table fract_only; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - more decimal fixes
Changeset: 882e12ddac9d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=882e12ddac9d Modified Files: sql/server/sql_parser.y sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out sql/test/BugTracker-2013/Tests/median.Bug-3352.stable.out sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.sql sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.out sql/test/Dump/Tests/dump.stable.out sql/test/quantiles/Tests/quantiles.stable.out sql/test/testdb/Tests/testdb-dump.stable.out Branch: Oct2014 Log Message: more decimal fixes diffs (150 lines): diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -4618,7 +4618,7 @@ data_type: | sqlINTEGER { sql_find_subtype($$, int, 0, 0); } | BIGINT { sql_find_subtype($$, bigint, 0, 0); } - | sqlDECIMAL { sql_find_subtype($$, decimal, 1, 0); } + | sqlDECIMAL { sql_find_subtype($$, decimal, 18, 3); } | sqlDECIMAL '(' nonzero ')' { int d = $3; diff --git a/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out b/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out --- a/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out +++ b/sql/test/BugTracker-2013/Tests/bogus_aggregation_casts.Bug-3342.stable.out @@ -42,9 +42,9 @@ Ready. #select sys.median(p_retailprice) from part; % sys.L1 # table_name % L1 # name -% double # type -% 24 # length -[ 903 ] +% decimal # type +% 14 # length +[ 903.00 ] #drop table part; # 21:17:25 diff --git a/sql/test/BugTracker-2013/Tests/median.Bug-3352.stable.out b/sql/test/BugTracker-2013/Tests/median.Bug-3352.stable.out --- a/sql/test/BugTracker-2013/Tests/median.Bug-3352.stable.out +++ b/sql/test/BugTracker-2013/Tests/median.Bug-3352.stable.out @@ -67,8 +67,8 @@ Ready. #select median(a) from t3352; % sys.L1 # table_name % L1 # name -% double # type -% 24 # length +% decimal # type +% 12 # length [ 41.18] #select median(b) from t3352; % sys.L1 # table_name diff --git a/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.sql b/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.sql --- a/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.sql +++ b/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.sql @@ -1,6 +1,7 @@ START TRANSACTION; CREATE TABLE ceil_floor_round (a numeric); INSERT INTO ceil_floor_round VALUES ('-5.49'); +INSERT INTO ceil_floor_round VALUES ('-5.499'); INSERT INTO ceil_floor_round VALUES ('0.0'); SELECT a, round(a, 0) FROM ceil_floor_round; ROLLBACK; diff --git a/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.out b/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.out --- a/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.out +++ b/sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.out @@ -55,15 +55,18 @@ Ready. #CREATE TABLE ceil_floor_round (a numeric); #INSERT INTO ceil_floor_round VALUES ('-5.49'); [ 1] +#INSERT INTO ceil_floor_round VALUES ('-5.499'); +[ 1] #INSERT INTO ceil_floor_round VALUES ('0.0'); [ 1] #SELECT a, round(a, 0) FROM ceil_floor_round; % sys.ceil_floor_round,sys.L # table_name % a, round_a # name % decimal, decimal # type -% 2, 3 # length -[ -4, -4 ] -[ 0, 0 ] +% 20, 10 # length +[ -5.500, -6.000 ] +[ -5.499, -5.000 ] +[ 0.000, 0.000 ] #ROLLBACK; # 16:17:57 diff --git a/sql/test/Dump/Tests/dump.stable.out b/sql/test/Dump/Tests/dump.stable.out --- a/sql/test/Dump/Tests/dump.stable.out +++ b/sql/test/Dump/Tests/dump.stable.out @@ -46,7 +46,7 @@ CREATE TABLE sys.typestest ( bigint BIGINT, double DOUBLE, real REAL, - decimalDECIMAL, + decimalDECIMAL(18,3), decimal9 DECIMAL(9), decimal83 DECIMAL(8,3), float DOUBLE, @@ -83,7 +83,7 @@ CREATE TABLE sys.typestest ( character10CHAR(10) ); COPY 1 RECORDS INTO sys.typestest FROM stdin USING DELIMITERS '\t','\n',''; -true 10 1 100 100 100 1e+30 1.0002e+20 1 123456789 12345.678 3.14150002 3.1415 3.1415 2009-04-15 24 18 3 1728000.000 108000.000 12.000 10.000 36000.000 6000.0002000.000 600.000 100.000 10.000 1995-07-15 07:30:00.00 1995-07-15 07:30:00.0 1995-07-15 07:30:00.00+00:001995-07-15 07:30:00.0+00:00 07:30:0007:30:00.0 07:30:00+00:00 07:30:00.0+00:00123456 123456 123456123456x varchar 0123456789 +true 10 1 100 100
MonetDB: mosaic - added parsing of INSERT ONLY
Changeset: e9bdcf3cf60c for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e9bdcf3cf60c Modified Files: sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/include/sql_catalog.h sql/scripts/75_storagemodel.sql sql/server/rel_schema.c sql/server/rel_trans.h sql/server/rel_updates.c sql/server/sql_mvc.c sql/server/sql_mvc.h sql/server/sql_parser.h sql/server/sql_parser.y sql/server/sql_scan.c sql/storage/bat/bat_storage.c sql/storage/sql_storage.h sql/storage/store.c Branch: mosaic Log Message: added parsing of INSERT ONLY added parsing and initial handling (ie storing only) of alter table table_NAME alter column column_Name set storage 'storage string'; Sofar only the storage string is saved. Next step is to call the proper compression algo's. diffs (truncated from 576 to 300 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -731,7 +731,7 @@ stmt_col( mvc *sql, sql_column *c, stmt { stmt *sc = stmt_bat(sql-sa, c, RDONLY); - if (isTable(c-t) !c-t-readonly + if (isTable(c-t) c-t-access != TABLE_READONLY (c-base.flag != TR_NEW || c-t-base.flag != TR_NEW /* alter */) (c-t-persistence == SQL_PERSIST || c-t-persistence == SQL_DECLARED_TABLE) !c-t-commit_action) { stmt *i = stmt_bat(sql-sa, c, RD_INS); @@ -749,7 +749,7 @@ stmt_idx( mvc *sql, sql_idx *i, stmt *de { stmt *sc = stmt_idxbat(sql-sa, i, RDONLY); - if (isTable(i-t) !i-t-readonly + if (isTable(i-t) i-t-access != TABLE_READONLY (i-base.flag != TR_NEW || i-t-base.flag != TR_NEW /* alter */) (i-t-persistence == SQL_PERSIST || i-t-persistence == SQL_DECLARED_TABLE) !i-t-commit_action) { stmt *ic = stmt_idxbat(sql-sa, i, RD_INS); diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -534,10 +534,10 @@ alter_table(mvc *sql, char *sname, sql_t } } - if (t-readonly != nt-readonly) { - if (t-readonly table_has_updates(sql-session-tr, nt)) - return sql_message(4!ALTER TABLE: set READONLY not possible with outstanding updates (wait until updates are flushed)\n); - mvc_readonly(sql, nt, t-readonly); + if (t-access != nt-access) { + if (t-access table_has_updates(sql-session-tr, nt)) + return sql_message(4!ALTER TABLE: set READ or INSERT ONLY not possible with outstanding updates (wait until updates are flushed)\n); + mvc_access(sql, nt, t-access); } /* check for changes */ @@ -583,6 +583,10 @@ alter_table(mvc *sql, char *sname, sql_t } if (c-def != nc-def) mvc_default(sql, nc, c-def); + if (c-storage_type != nc-storage_type) { + /* TODO here we should call the storage related functions */ + mvc_storage(sql, nc, c-storage_type); + } } for (; n; n = n-next) { /* propagate alter table .. add column */ @@ -2205,7 +2209,7 @@ SQLtid(Client cntxt, MalBlkPtr mb, MalSt nr = store_funcs.count_col(tr, c, 1); - if (isTable(t) !t-readonly (t-base.flag != TR_NEW /* alter */ ) + if (isTable(t) t-access == TABLE_WRITABLE (t-base.flag != TR_NEW /* alter */ ) t-persistence == SQL_PERSIST !t-commit_action) inr = store_funcs.count_col(tr, c, 0); nr -= inr; @@ -3967,7 +3971,7 @@ SQLcompress(Client cntxt, MalBlkPtr mb, t = mvc_bind_table(m, s, *tbl); if (t == NULL) throw(SQL, sql.compress, 42S02!Table missing); - if ( !t-readonly) + if (t-access != TABLE_READONLY) throw(SQL, sql.compress, !Table must be read only); tr = m-session-tr; t-base.wtime = s-base.wtime = tr-wtime = tr-wstime; @@ -3991,11 +3995,11 @@ SQLcompress(Client cntxt, MalBlkPtr mb, d = c-data; if (d-bid) BBPdecref(d-bid, TRUE); - if (d-ibid) - BBPdecref(d-ibid, TRUE); - d-bid = 0; + //if (d-ibid) + //BBPdecref(d-ibid, TRUE); + d-bid = bid; d-ibase = 0; - d-ibid = bid; /* use the insert bat */ + //d-ibid = 0; /* use the insert bat */ c-base.wtime = tr-wstime; c-base.rtime = tr-stime; } @@ -4029,7 +4033,7 @@ SQLdecompress(Client cntxt, MalBlkPtr mb t = mvc_bind_table(m, s, *tbl); if (t == NULL)
MonetDB: mosaic - call MOScompressInternal
Changeset: 1e94fe1a63af for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1e94fe1a63af Modified Files: sql/backends/monet5/sql.c Branch: mosaic Log Message: call MOScompressInternal diffs (47 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -48,6 +48,7 @@ # include rdf.h #endif #include mal_instruction.h +#include mosaic.h static int rel_is_table(sql_rel *rel) @@ -506,7 +507,7 @@ table_has_updates(sql_trans *tr, sql_tab } static str -alter_table(mvc *sql, char *sname, sql_table *t) +alter_table(Client cntxt, mvc *sql, char *sname, sql_table *t) { sql_schema *s = mvc_bind_schema(sql, sname); sql_table *nt = NULL; @@ -583,8 +584,16 @@ alter_table(mvc *sql, char *sname, sql_t } if (c-def != nc-def) mvc_default(sql, nc, c-def); + if (c-storage_type != nc-storage_type) { - /* TODO here we should call the storage related functions */ + bat bid = 0; + BAT *b = store_funcs.bind_col(sql-session-tr, nc, 0); + sql_delta *d; + char *msg = MOScompressInternal(cntxt, bid, b-batCacheid, c-storage_type); + if (msg) + return msg; + d = nc-data; + d-bid = bid; mvc_storage(sql, nc, c-storage_type); } } @@ -1093,7 +1102,7 @@ SQLcatalog(Client cntxt, MalBlkPtr mb, M } case DDL_ALTER_TABLE:{ sql_table *t = *(sql_table **) getArgReference(stk, pci, 3); - msg = alter_table(sql, sname, t); + msg = alter_table(cntxt, sql, sname, t); break; } case DDL_CREATE_TYPE:{ ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - Handle 'compressed' columns/idxs in storage co...
Changeset: 09d73ee0caa1 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=09d73ee0caa1 Modified Files: sql/backends/monet5/sql.c sql/include/sql_catalog.h sql/storage/bat/bat_storage.c sql/storage/bat/bat_storage.h Branch: mosaic Log Message: Handle 'compressed' columns/idxs in storage code (todo handle logging) diffs (114 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -589,10 +589,17 @@ alter_table(Client cntxt, mvc *sql, char bat bid = 0; BAT *b = store_funcs.bind_col(sql-session-tr, nc, 0); sql_delta *d; - char *msg = MOScompressInternal(cntxt, bid, b-batCacheid, c-storage_type); + char *msg; + if (c-t-access == TABLE_WRITABLE) + return sql_message(40002!ALTER TABLE: SET STORAGE for column %s.%s only allowed on READ or INSERT ONLY tables, c-t-base.name, c-base.name); + + msg = MOScompressInternal(cntxt, bid, b-batCacheid, c-storage_type); if (msg) return msg; + allocate_delta(sql-session-tr, nc); d = nc-data; + assert(nc-base.allocated == 1); + nc-base.rtime = nc-base.wtime = sql-session-tr-wtime; d-bid = bid; mvc_storage(sql, nc, c-storage_type); } diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h --- a/sql/include/sql_catalog.h +++ b/sql/include/sql_catalog.h @@ -371,6 +371,7 @@ typedef struct sql_idx { struct list *columns; /* list of sql_kc */ struct sql_table *t; struct sql_key *key;/* key */ + char *storage_type; void *data; } sql_idx; diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c --- a/sql/storage/bat/bat_storage.c +++ b/sql/storage/bat/bat_storage.c @@ -544,6 +544,18 @@ dup_del(sql_trans *tr, sql_table *ot, sq return ok; } +void +allocate_delta(sql_trans *tr, sql_column *c) +{ + if (!c-data || !c-base.allocated) { + int type = c-type.type-localtype; + sql_column *oc = tr_find_column(tr-parent, c); + sql_delta *bat = c-data = ZNEW(sql_delta), *obat = timestamp_delta(oc-data, tr-stime); + (void)dup_bat(tr, c-t, obat, bat, type, isNew(oc), c-base.flag == TR_NEW); + c-base.allocated = 1; + } +} + static void append_col(sql_trans *tr, sql_column *c, void *i, int tpe) { @@ -1606,6 +1618,23 @@ gtr_minmax( sql_trans *tr ) } static int +tr_update_storage( sql_trans *tr, sql_delta *obat, sql_delta *cbat) +{ + int ok = LOG_OK; + + (void)tr; + assert(store_nr_active==1); + + assert (obat-bid != 0 cbat-bid != 0); + assert (obat-cached == NULL cbat-cached == NULL); + temp_destroy(obat-bid); + obat-bid = cbat-bid; + temp_dup(cbat-bid); + assert(obat-ibid == cbat-ibid); + return ok; +} + +static int tr_update_delta( sql_trans *tr, sql_delta *obat, sql_delta *cbat, int unique) { int ok = LOG_OK; @@ -1801,7 +1830,10 @@ update_table(sql_trans *tr, sql_table *f } } else { assert(oc-base.allocated); - tr_update_delta(tr, oc-data, cc-data, cc-unique == 1); + if (cc-storage_type (!cc-storage_type || strcmp(cc-storage_type, oc-storage_type) != 0)) + tr_update_storage(tr, oc-data, cc-data); + else + tr_update_delta(tr, oc-data, cc-data, cc-unique == 1); } oc-null = cc-null; @@ -1846,7 +1878,10 @@ update_table(sql_trans *tr, sql_table *f } } else { assert(oi-base.allocated); - tr_update_delta(tr, oi-data, ci-data, 0); + if (ci-storage_type (!ci-storage_type || strcmp(ci-storage_type, oi-storage_type) != 0)) + tr_update_storage(tr, oi-data, ci-data); + else + tr_update_delta(tr, oi-data, ci-data, 0); } if (oi-base.rtime ci-base.rtime) diff --git a/sql/storage/bat/bat_storage.h b/sql/storage/bat/bat_storage.h --- a/sql/storage/bat/bat_storage.h +++ b/sql/storage/bat/bat_storage.h @@ -50,5 +50,7 @@ extern int bat_storage_init( store_funct extern int dup_bat(sql_trans *tr, sql_table *t, sql_delta *obat, sql_delta *bat, int type, int oc_isnew, int c_isnew); extern sql_delta *
MonetDB: Oct2014 - fixed reuse
Changeset: 6c4080d30b3e for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6c4080d30b3e Added Files: sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.sql sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.err sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.out Modified Files: monetdb5/modules/kernel/bat5.c sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql_statement.c sql/test/BugTracker-2014/Tests/All Branch: Oct2014 Log Message: fixed reuse fixed bug 3554, ie make sure single value order by /limit work diffs (254 lines): diff --git a/monetdb5/modules/kernel/bat5.c b/monetdb5/modules/kernel/bat5.c --- a/monetdb5/modules/kernel/bat5.c +++ b/monetdb5/modules/kernel/bat5.c @@ -2198,9 +2198,9 @@ BKCshrinkBATmap(int *ret, int *bid, int Type *r = (Type*)Tloc(bn, BUNfirst(bn));\ for (;pq; oidx++, p++) { \ if ( *o == oidx ){ \ - while ( *ol == bidx olo) { \ + while ( olo *--ol == bidx) { \ bidx--; \ - ol--;q--; \ + q--; \ } \ *r++ = *(--q); \ o += (o ol); \ @@ -2241,9 +2241,10 @@ BKCreuseBAT(int *ret, int *bid, int *did throw(MAL, bat.reuse, MAL_MALLOC_FAIL ); } - bidx= BUNlast(b)-1; + oidx = b-hseqbase; + bidx = oidx + BUNlast(b)-1; o = (oid*)Tloc(bs, BUNfirst(bs)); - ol= (oid*)Tloc(bs, BUNlast(bs))-1; + ol= (oid*)Tloc(bs, BUNlast(bs)); switch(ATOMstorage(b-ttype) ){ case TYPE_bte: reuseloop(bte); break; @@ -2262,15 +2263,16 @@ BKCreuseBAT(int *ret, int *bid, int *did for (;pq; oidx++, p++) { if ( *o == oidx ){ - while ( *ol == bidx olo) { + while ( ol o *--ol == bidx) { bidx--; - ol--;q--; + q--; } BUNappend(bn, BUNtail(bi, --q), FALSE); o += (o ol); bidx--; - } else + } else { BUNappend(bn, BUNtail(bi, p), FALSE); + } } } else { switch( b-T-width){ @@ -2298,6 +2300,7 @@ BKCreuseBAT(int *ret, int *bid, int *did BBPkeepref(*ret= bn-batCacheid); return MAL_SUCCEED; } + str BKCreuseBATmap(int *ret, int *bid, int *did) { @@ -2330,10 +2333,11 @@ BKCreuseBATmap(int *ret, int *bid, int * throw(MAL, bat.shrinkMap, MAL_MALLOC_FAIL ); } - bidx= BUNlast(b)-1; -o = (oid*)Tloc(bs, BUNfirst(bs)); -ol= (oid*)Tloc(bs, BUNlast(bs)); -r = (oid*)Tloc(bn, BUNfirst(bn)); + oidx = b-hseqbase; + bidx = oidx + BUNlast(b)-1; + o = (oid*)Tloc(bs, BUNfirst(bs)); + ol = (oid*)Tloc(bs, BUNlast(bs)); + r = (oid*)Tloc(bn, BUNfirst(bn)); for (;oidxbidx; oidx++) { if ( *o == oidx ){ @@ -2343,8 +2347,9 @@ BKCreuseBATmap(int *ret, int *bid, int * *r++ = bidx; o += (o ol); bidx--; - } else + } else { *r++ = oidx; + } } BATsetcount(bn, BATcount(b)-BATcount(bs)); diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -2306,6 +2306,8 @@ rel2bin_project( mvc *sql, sql_rel *rel, if (!orderbycolstmt) return NULL; + /* handle constants */ + orderbycolstmt = column(sql-sa, orderbycolstmt); if (!limit) { /* topn based on a single column */ limit = stmt_limit(sql-sa, orderbycolstmt, stmt_atom_wrd(sql-sa, 0), l,
MonetDB: Oct2014 - fixed second part of bug 3554, ie handle topn...
Changeset: a07ae318c930 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a07ae318c930 Modified Files: sql/server/rel_optimizer.c sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.sql sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.out Branch: Oct2014 Log Message: fixed second part of bug 3554, ie handle topn push down properly diffs (50 lines): diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -1777,7 +1777,7 @@ rel_push_topn_down(int *changes, mvc *sq ur-r = exps_copy(sql-sa, r-r); ur = rel_topn(sql-sa, ur, sum_limit_offset(sql, rel-exps)); u = rel_setop(sql-sa, ul, ur, op_union); - u-exps = exps_copy(sql-sa, r-exps); + u-exps = exps_alias(sql-sa, r-exps); /* possibly add order by column */ if (add_r) u-exps = list_merge(u-exps, exps_copy(sql-sa, r-r), NULL); @@ -1785,7 +1785,11 @@ rel_push_topn_down(int *changes, mvc *sq rel_no_rename_exps(u-exps); rel_destroy(ou); - r-l = u; + ur = rel_project(sql-sa, u, exps_alias(sql-sa, r-exps)); + ur-r = r-r; + r-l = NULL; + rel_destroy(r); + rel-l = ur; (*changes)++; return rel; } diff --git a/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.sql b/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.sql --- a/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.sql +++ b/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.sql @@ -1,1 +1,4 @@ select a+b from (select 1 as a,1 as b) as q order by a limit 1; +select a+b from (select 1 as a,1 as b union select 1,1) as q order by a limit +1; + diff --git a/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.out b/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.out --- a/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.out +++ b/sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.out @@ -31,6 +31,13 @@ Ready. % smallint # type % 1 # length [ 2] +#select a+b from (select 1 as a,1 as b union select 1,1) as q order by a limit +#1; +% .L3 # table_name +% L3 # name +% smallint # type +% 1 # length +[ 2] # 19:40:07 # 19:40:07 Done. ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - handle psm expressions in exp_print and exp_c...
Changeset: f900af1e70a0 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f900af1e70a0 Added Files: sql/test/BugTracker-2014/Tests/div_by_zero_in_return.Bug-3555.sql sql/test/BugTracker-2014/Tests/div_by_zero_in_return.Bug-3555.stable.err sql/test/BugTracker-2014/Tests/div_by_zero_in_return.Bug-3555.stable.out Modified Files: sql/server/rel_dump.c sql/server/rel_optimizer.c sql/server/rel_psm.c Branch: Oct2014 Log Message: handle psm expressions in exp_print and exp_case_fixup (solving the div_by_zero bug 3555) diffs (238 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -26,6 +26,7 @@ #include rel_prop.h #include rel_select.h #include rel_semantic.h +#include rel_psm.h static void print_indent(mvc *sql, stream *fout, int depth) @@ -80,6 +81,28 @@ exp_print(mvc *sql, stream *fout, sql_ex if (!e) return; switch(e-type) { + case e_psm: { + if (e-flag PSM_SET) { + /* todo */ + } else if (e-flag PSM_VAR) { + /* todo */ + } else if (e-flag PSM_RETURN) { + mnstr_printf(fout, return ); + exp_print(sql, fout, e-l, depth, 0, 0); + } else if (e-flag PSM_WHILE) { + mnstr_printf(fout, while ); + exp_print(sql, fout, e-l, depth, 0, 0); + exps_print(sql, fout, e-r, depth, alias, 0); + } else if (e-flag PSM_IF) { + mnstr_printf(fout, if ); + exp_print(sql, fout, e-l, depth, 0, 0); + exps_print(sql, fout, e-r, depth, alias, 0); + if (e-f) + exps_print(sql, fout, e-f, depth, alias, 0); + } else if (e-flag PSM_REL) { + } + break; + } case e_convert: { char *to_type = sql_subtype_string(e-tpe); mnstr_printf(fout, %s[, to_type); @@ -340,7 +363,7 @@ rel_print_(mvc *sql, stream *fout, sql_ rel_print_(sql, fout, rel-l, depth+1, refs); if (rel-r) rel_print_(sql, fout, rel-r, depth+1, refs); - if (rel-exps) + if (rel-exps rel-flag == DDL_PSM) exps_print(sql, fout, rel-exps, depth, 1, 0); break; case op_join: diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -27,6 +27,7 @@ #include rel_select.h #include rel_updates.h #include rel_planner.h +#include rel_psm.h #include sql_env.h #define new_func_list(sa) sa_list(sa) @@ -2324,6 +2325,25 @@ static sql_exp * exp_case_fixup( mvc *sql, sql_exp *e ) { /* only functions need fix up */ + if (e-type == e_psm) { + if (e-flag PSM_SET) { + /* todo */ + } else if (e-flag PSM_VAR) { + /* todo */ + } else if (e-flag PSM_RETURN) { + e-l = exp_case_fixup(sql, e-l); + } else if (e-flag PSM_WHILE) { + e-l = exp_case_fixup(sql, e-l); + e-r = exps_case_fixup(sql, e-r, NULL, 0); + } else if (e-flag PSM_IF) { + e-l = exp_case_fixup(sql, e-l); + e-r = exps_case_fixup(sql, e-r, NULL, 0); + if (e-f) + e-f = exps_case_fixup(sql, e-f, NULL, 0); + } else if (e-flag PSM_REL) { + } + return e; + } if (e-type == e_func e-l !is_rank_op(e) ) { list *l = new_exp_list(sql-sa), *args = e-l; node *n; @@ -2395,7 +2415,7 @@ rel_case_fixup(int *changes, mvc *sql, s { (void)changes; /* only go through it once, ie don't mark for changes */ - if (is_project(rel-op) rel-exps) { + if ((is_project(rel-op) || (rel-op == op_ddl rel-flag == DDL_PSM)) rel-exps) { list *exps = rel-exps; node *n; int needed = 0; @@ -2404,7 +2424,7 @@ rel_case_fixup(int *changes, mvc *sql, s sql_exp *e = n-data; if (e-type == e_func || e-type == e_convert || - e-type == e_aggr) + e-type == e_aggr || e-type == e_psm) needed = 1; } if (!needed) @@ -7038,7 +7058,7 @@ static sql_rel * #endif /* simple merging of projects */ - if (gp.cnt[op_project]) { + if (gp.cnt[op_project] || gp.cnt[op_ddl]) { rel = rewrite(sql, rel, rel_merge_projects,
MonetDB: Oct2014 - removed use of tunique
Changeset: f415598131c3 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f415598131c3 Modified Files: sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_statement.c sql/backends/monet5/sql_statement.h Branch: Oct2014 Log Message: removed use of tunique diffs (172 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -501,15 +501,13 @@ exp_bin(mvc *sql, sql_exp *e, stmt *left if (!as) return NULL; if (need_distinct(e)){ - if (grp) { - stmt *g = stmt_group(sql-sa, as, grp, ext, cnt); - stmt *next = stmt_result(sql-sa, g, 1); + stmt *g = stmt_group(sql-sa, as, grp, ext, cnt); + stmt *next = stmt_result(sql-sa, g, 1); - as = stmt_project(sql-sa, next, as); + as = stmt_project(sql-sa, next, as); + if (grp) grp = stmt_project(sql-sa, next, grp); - stmt_group_done(g); - } else - as = stmt_unique(sql-sa, as); + stmt_group_done(g); } append(l, as); } diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -1742,43 +1742,6 @@ static int } } break; - case st_unique:{ - int l; - - if ((l = _dumpstmt(sql, mb, s-op1)) 0) - return -1; - - if (s-op2) { - int grp, ext; - - if ((grp = _dumpstmt(sql, mb, s-op2)) 0) - return -1; - if ((ext = _dumpstmt(sql, mb, s-op3)) 0) - return -1; - - q = newStmt2(mb, groupRef, subgroupRef); - /* push second result */ - q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any)); - q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any)); - q = pushArgument(mb, q, l); - q = pushArgument(mb, q, grp); - if (q == NULL) - return -1; - grp = getDestVar(q); - ext = getArg(q, 1); - - q = newStmt2(mb, algebraRef, leftfetchjoinRef); - q = pushArgument(mb, q, ext); - q = pushArgument(mb, q, l); - } else { - q = newStmt2(mb, algebraRef, tuniqueRef); - q = pushArgument(mb, q, l); - } - if (q == NULL) - return -1; - s-nr = getDestVar(q); - break; - } case st_convert:{ list *types = s-op4.lval; sql_subtype *f = types-h-data; diff --git a/sql/backends/monet5/sql_statement.c b/sql/backends/monet5/sql_statement.c --- a/sql/backends/monet5/sql_statement.c +++ b/sql/backends/monet5/sql_statement.c @@ -122,7 +122,6 @@ st_type2string(st_type type) ST(group); - ST(unique); ST(convert); ST(Nop); ST(func); @@ -325,7 +324,6 @@ stmt_deps(list *dep_list, stmt *s, int d case st_join: case st_join2: case st_joinN: - case st_unique: case st_append: case st_rs_column: @@ -826,21 +824,6 @@ stmt_reorder(sql_allocator *sa, stmt *s, } stmt * -stmt_unique(sql_allocator *sa, stmt *s) -{ - stmt *ns = stmt_create(sa, st_unique); - - ns-op1 = s; - ns-op2 = NULL; - ns-op3 = NULL; - ns-op4.stval = NULL; - ns-nrcols = s-nrcols; - ns-key = 1; - ns-aggr = s-aggr; - return ns; -}
MonetDB: Oct2014 - no need for SelectNoNil ie aggr operations in...
Changeset: 63d2f103279a for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=63d2f103279a Modified Files: gdk/gdk_aggr.c monetdb5/modules/atoms/json.c monetdb5/modules/kernel/aggr.mal sql/backends/monet5/sql.c sql/backends/monet5/sql_gencode.c sql/benchmarks/ssbm/Tests/01-explain.stable.out sql/benchmarks/ssbm/Tests/02-explain.stable.out sql/benchmarks/ssbm/Tests/03-explain.stable.out sql/benchmarks/tpch/Tests/06-explain.stable.out sql/benchmarks/tpch/Tests/11-explain.stable.out sql/benchmarks/tpch/Tests/14-explain.stable.out sql/benchmarks/tpch/Tests/15-explain.stable.out sql/benchmarks/tpch/Tests/17-explain.stable.out sql/benchmarks/tpch/Tests/19-explain.stable.out sql/benchmarks/tpch/Tests/22-explain.stable.out sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out Branch: Oct2014 Log Message: no need for SelectNoNil ie aggr operations include the skip nil functionality. diffs (truncated from 832 to 300 lines): diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c --- a/gdk/gdk_aggr.c +++ b/gdk/gdk_aggr.c @@ -2324,7 +2324,13 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e, BATseqbase(bn, min); } else { /* quantiles for entire BAT b, EZ */ - BUN index = BUNfirst(b) + (BUN) ((BATcount(b) - 1) * quantile); + BUN index, r = 0, p = BUNlast(b); + + if (skip_nils) { + while (r p (*atomcmp)(BUNtail(bi, BUNfirst(b) + r), nil) == 0) + r++; + } + index = BUNfirst(b) + (BUN) (r + (p-r-1) * quantile); v = BUNtail(bi, index); BUNappend(bn, v, FALSE); BATseqbase(bn, 0); diff --git a/monetdb5/modules/atoms/json.c b/monetdb5/modules/atoms/json.c --- a/monetdb5/modules/atoms/json.c +++ b/monetdb5/modules/atoms/json.c @@ -1706,7 +1706,7 @@ JSONgroupStr(str *ret, const bat *bid) BAT *b; BUN p, q; const char *t = NULL; - size_t len, size = BUFSIZ, offset; + size_t len, size = BUFSIZ, offset, cnt = 0; str buf = GDKmalloc(size); BATiter bi; const char *err = NULL; @@ -1724,24 +1724,27 @@ JSONgroupStr(str *ret, const bat *bid) offset = 0; bi = bat_iterator(b); BATloop(b, p, q) { - int n = 0; + int n = 0, nil = 0; switch (b-ttype) { case TYPE_str: t = (const char *) BUNtail(bi, p); + nil = (strNil(t)); break; case TYPE_dbl: val = (const double *) BUNtail(bi, p); - snprintf(temp, sizeof(temp), %f, *val); + nil = (*val == dbl_nil); + if (!nil) + snprintf(temp, sizeof(temp), %f, *val); t = (const char *) temp; break; } - //t = (const char *) BUNtail(bi, p); - - if (strNil(t)) + if (nil) continue; - len = strlen(t) + 1; + if (!cnt) + offset = snprintf(buf, size, [ ); + len = strlen(t) + 1 + 4; /* closing bracket and optional ',' */ if (len = size - offset) { str nbuf; size += len + 128; @@ -1752,40 +1755,21 @@ JSONgroupStr(str *ret, const bat *bid) } buf = nbuf; } + if (cnt) + offset += snprintf(buf + offset, size - offset, , ); switch (b-ttype) { case TYPE_str: - if (offset == 0) { - if (BATcount(b) == 1) { - n = snprintf(buf, size, [ \%s\ ], t); - } else { - n = snprintf(buf, size, [ \%s\, t); - } - } else { - if (p == BUNlast(b) - 1) { - n = snprintf(buf + offset, size - offset, , \%s\ ], t); - } else { - n = snprintf(buf + offset, size - offset, , \%s\, t); - } - } + n = snprintf(buf + offset, size - offset, \%s\, t); break; case TYPE_dbl: - if (offset == 0) { - if (BATcount(b) == 1) { - n = snprintf(buf, size, [ %s ], t); - } else { - n = snprintf(buf,
MonetDB: mosaic - fixes for persistent compressed bats.
Changeset: 9bed3972fc5b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9bed3972fc5b Modified Files: monetdb5/modules/mal/mosaic.c sql/backends/monet5/sql.c sql/storage/bat/bat_storage.c Branch: mosaic Log Message: fixes for persistent compressed bats. assumptions/limitations for compress/decompress alter statements 1) auto commit mode 2) read only columns 3) single transaction (active) 4) directly create persistent compressed bats Decompress now fails as it creates a transient bat, where we expect an persistent. diffs (105 lines): diff --git a/monetdb5/modules/mal/mosaic.c b/monetdb5/modules/mal/mosaic.c --- a/monetdb5/modules/mal/mosaic.c +++ b/monetdb5/modules/mal/mosaic.c @@ -233,7 +233,7 @@ MOScompressInternal(Client cntxt, int *r // It should always take less space then the orginal column. // But be prepared that a last block header may be stored // use a size overshoot. Also be aware of possible dictionary headers - bn = BATnew( TYPE_void, b-ttype, cnt + 3 * MosaicBlkSize + MosaicHdrSize, b-batPersistence); + bn = BATnew( TYPE_void, b-ttype, cnt + 3 * MosaicBlkSize + MosaicHdrSize, PERSISTENT /*current logger doesn't handle compression calls, ie make persistent before entering log b-batPersistence*/); if (bn == NULL) { BBPreleaseref(b-batCacheid); throw(MAL,mosaic.compress, MAL_MALLOC_FAIL); diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -585,10 +585,10 @@ alter_table(Client cntxt, mvc *sql, char if (c-t-access == TABLE_WRITABLE) return sql_message(40002!ALTER TABLE: SET STORAGE for column %s.%s only allowed on READ or INSERT ONLY tables, c-t-base.name, c-base.name); - if( c-storage_type) - msg = MOScompressInternal(cntxt, bid, b-batCacheid, c-storage_type); - else - msg = MOSdecompressInternal(cntxt, bid, b-batCacheid); + if( c-storage_type) + msg = MOScompressInternal(cntxt, bid, b-batCacheid, c-storage_type); + else + msg = MOSdecompressInternal(cntxt, bid, b-batCacheid); if (msg) return msg; allocate_delta(sql-session-tr, nc); diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c --- a/sql/storage/bat/bat_storage.c +++ b/sql/storage/bat/bat_storage.c @@ -1910,6 +1910,24 @@ update_table(sql_trans *tr, sql_table *f return ok; } +static int +tr_log_storage( sql_trans *tr, sql_delta *cbat ) +{ + int ok = LOG_OK; + BAT *b; + + (void)tr; + assert(tr-parent == gtrans); + assert(store_nr_active == 1); + + /* log new snapshot */ + b = temp_descriptor(cbat-bid); + logger_add_bat(bat_logger, b, cbat-name); + ok = log_bat_persists(bat_logger, b, cbat-name); + bat_destroy(b); + return ok; +} + static int tr_log_delta( sql_trans *tr, sql_delta *cbat, int cleared) { @@ -1984,7 +2002,10 @@ log_table(sql_trans *tr, sql_table *ft) if (!cc-base.wtime || !cc-base.allocated) continue; - ok = tr_log_delta(tr, cc-data, ft-cleared); + if (ft-access TABLE_WRITABLE) /* TODO we need a proper way to check for changes off the storage */ + ok = tr_log_storage(tr, cc-data); + else + ok = tr_log_delta(tr, cc-data, ft-cleared); } if (ok == LOG_OK ft-idxs.set) { for (n = ft-idxs.set-h; ok == LOG_OK n; n = n-next) { @@ -2001,6 +2022,22 @@ log_table(sql_trans *tr, sql_table *ft) } static int +tr_snapshot_storage( sql_trans *tr, sql_delta *cbat) +{ + int ok = LOG_OK; + BAT *b = temp_descriptor(cbat-bid); + + assert(tr-parent == gtrans); + assert(store_nr_active == 1); + + (void)tr; + bat_set_access(b, BAT_READ); + BATmode(b, PERSISTENT); + bat_destroy(b); + return ok; +} + +static int tr_snapshot_bat( sql_trans *tr, sql_delta *cbat) { int ok = LOG_OK; @@ -2035,7 +2072,10 @@ snapshot_table(sql_trans *tr, sql_table if (!cc-base.wtime || !cc-base.allocated) continue; - tr_snapshot_bat(tr, cc-data); + if (ft-access TABLE_WRITABLE) /* TODO we need a proper way to check for changes off the storage */ + tr_snapshot_storage(tr, cc-data); + else + tr_snapshot_bat(tr, cc-data); } if (ok == LOG_OK ft-idxs.set) { for (n =
MonetDB: Oct2014 - small optimizations (reduce amount of nil/sor...
Changeset: 34e4b974ad06 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=34e4b974ad06 Modified Files: gdk/gdk_join.c Branch: Oct2014 Log Message: small optimizations (reduce amount of nil/sort checks for once we know it has nils or isn't sorted) diffs (28 lines): diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -2770,17 +2770,22 @@ project_##TYPE(BAT *bn, BAT *l, BAT *r, if (nilcheck v == TYPE##_nil bn-T-nonil) { \ bn-T-nonil = 0; \ bn-T-nil = 1; \ + nilcheck = 0; \ } \ if (sortcheck lo \ (bn-trevsorted | bn-tsorted | bn-tkey)) { \ if (v prev) { \ bn-trevsorted = 0; \ - if (!bn-tsorted) \ + if (!bn-tsorted) { \ bn-tkey = 0; /* can't be sure */ \ + sortcheck = 0; \ + } \ } else if (v prev) { \ bn-tsorted = 0;\ - if (!bn-trevsorted)\ + if (!bn-trevsorted) { \ bn-tkey = 0; /* can't be sure */ \ + sortcheck = 0; \ + } \ } else {\ bn-tkey = 0; /* definitely */ \ } \ ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - only push down group by's down outer-joins (n...
Changeset: 40d2e5b14efe for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=40d2e5b14efe Modified Files: sql/benchmarks/tpch/Tests/02-explain.stable.out sql/benchmarks/tpch/Tests/02-plan.stable.out sql/benchmarks/tpch/Tests/17-explain.stable.out sql/benchmarks/tpch/Tests/17-plan.stable.out sql/benchmarks/tpch/Tests/20-explain.stable.out sql/benchmarks/tpch/Tests/20-plan.stable.out sql/server/rel_optimizer.c Branch: Oct2014 Log Message: only push down group by's down outer-joins (not usualy size reducing joins) diffs (truncated from 843 to 300 lines): diff --git a/sql/benchmarks/tpch/Tests/02-explain.stable.out b/sql/benchmarks/tpch/Tests/02-explain.stable.out --- a/sql/benchmarks/tpch/Tests/02-explain.stable.out +++ b/sql/benchmarks/tpch/Tests/02-explain.stable.out @@ -67,167 +67,168 @@ Ready. % 823 # length function user.s2_1{autoCommit=true}(A0:int,A1:str,A2:str,A3:str):void; X_6 := sql.mvc(); -X_10 := sql.bind(X_6,sys,part,p_type,0); -X_19 := sql.bind(X_6,sys,part,p_size,0); -X_7:bat[:oid,:oid] := sql.tid(X_6,sys,part); -X_334 := algebra.subselect(X_19,X_7,A0,A0,true,true,false); -(X_21,r1_25) := sql.bind(X_6,sys,part,p_size,2); -X_335 := algebra.subselect(r1_25,A0,A0,true,true,false); -X_23 := sql.bind(X_6,sys,part,p_size,1); -X_336 := algebra.subselect(X_23,X_7,A0,A0,true,true,false); -X_24 := sql.subdelta(X_334,X_7,X_21,X_335,X_336); -X_337 := algebra.likesubselect(X_10,X_24,A1,,false); -(X_13,r1_13) := sql.bind(X_6,sys,part,p_type,2); -X_338 := algebra.likesubselect(r1_13,A1,,false); -X_16 := sql.bind(X_6,sys,part,p_type,1); -X_339 := algebra.likesubselect(X_16,X_24,A1,,false); -X_26 := sql.subdelta(X_337,X_24,X_13,X_338,X_339); -X_27 := sql.bind(X_6,sys,part,p_partkey,0); -(X_29,r1_36) := sql.bind(X_6,sys,part,p_partkey,2); -X_31 := sql.bind(X_6,sys,part,p_partkey,1); -X_32 := sql.projectdelta(X_26,X_27,X_29,r1_36,X_31); -X_33:bat[:oid,:oid] := sql.tid(X_6,sys,nation); -X_36 := sql.bind_idxbat(X_6,sys,nation,nation_n_regionkey_fkey,0); -(X_39,r1_48) := sql.bind_idxbat(X_6,sys,nation,nation_n_regionkey_fkey,2); -X_42 := sql.bind_idxbat(X_6,sys,nation,nation_n_regionkey_fkey,1); -X_44 := sql.projectdelta(X_33,X_36,X_39,r1_48,X_42); -X_47 := sql.bind(X_6,sys,region,r_name,0); -X_45:bat[:oid,:oid] := sql.tid(X_6,sys,region); -X_340 := algebra.subselect(X_47,X_45,A3,A3,true,true,false); -(X_49,r1_59) := sql.bind(X_6,sys,region,r_name,2); -X_341 := algebra.subselect(r1_59,A3,A3,true,true,false); -X_51 := sql.bind(X_6,sys,region,r_name,1); -X_342 := algebra.subselect(X_51,X_45,A3,A3,true,true,false); -X_52 := sql.subdelta(X_340,X_45,X_49,X_341,X_342); -X_55 := X_52; -(X_56,r1_69) := algebra.join(X_44,X_55); -X_58 := algebra.leftfetchjoin(X_56,X_33); -X_59:bat[:oid,:oid] := sql.tid(X_6,sys,supplier); -X_61 := sql.bind_idxbat(X_6,sys,supplier,supplier_s_nationkey_fkey,0); -(X_63,r1_76) := sql.bind_idxbat(X_6,sys,supplier,supplier_s_nationkey_fkey,2); -X_66 := sql.bind_idxbat(X_6,sys,supplier,supplier_s_nationkey_fkey,1); -X_67 := sql.projectdelta(X_59,X_61,X_63,r1_76,X_66); -(X_68,r1_82) := algebra.join(X_58,X_67); -X_70 := algebra.leftfetchjoin(r1_82,X_59); -X_71:bat[:oid,:oid] := sql.tid(X_6,sys,partsupp); -X_73 := sql.bind_idxbat(X_6,sys,partsupp,partsupp_ps_suppkey_fkey,0); -(X_76,r1_90) := sql.bind_idxbat(X_6,sys,partsupp,partsupp_ps_suppkey_fkey,2); -X_79 := sql.bind_idxbat(X_6,sys,partsupp,partsupp_ps_suppkey_fkey,1); -X_81 := sql.projectdelta(X_71,X_73,X_76,r1_90,X_79); -(X_82,r1_97) := algebra.join(X_70,X_81); -X_84 := sql.bind(X_6,sys,partsupp,ps_partkey,0); -(X_86,r1_101) := sql.bind(X_6,sys,partsupp,ps_partkey,2); -X_88 := sql.bind(X_6,sys,partsupp,ps_partkey,1); -X_89 := sql.projectdelta(X_71,X_84,X_86,r1_101,X_88); -X_90 := algebra.leftfetchjoin(r1_97,X_89); -(X_91,r1_107,r2_107) := group.subgroupdone(X_90); -X_94 := algebra.leftfetchjoin(r1_107,X_90); -X_109 := sql.bind(X_6,sys,partsupp,ps_supplycost,0); -(X_112,r1_130) := sql.bind(X_6,sys,partsupp,ps_supplycost,2); -X_115 := sql.bind(X_6,sys,partsupp,ps_supplycost,1); -X_117 := sql.projectdelta(X_71,X_109,X_112,r1_130,X_115); -X_119 := algebra.leftfetchjoin(r1_97,X_117); -X_120:bat[:oid,:lng] := aggr.submin(X_119,X_91,r1_107,true); -(X_95,r1_111) := algebra.join(X_32,X_94); -X_97 := X_26; -X_98 := algebra.leftfetchjoin(X_95,X_97); -X_100 := sql.bind_idxbat(X_6,sys,partsupp,partsupp_ps_partkey_fkey,0); -(X_102,r1_119) := sql.bind_idxbat(X_6,sys,partsupp,partsupp_ps_partkey_fkey,2); -X_105 := sql.bind_idxbat(X_6,sys,partsupp,partsupp_ps_partkey_fkey,1); -X_106 := sql.projectdelta(X_71,X_100,X_102,r1_119,X_105); -(X_107,r1_125) := algebra.join(X_98,X_106); -X_118 :=
MonetDB: Oct2014 - merged
Changeset: 38bae7f3938b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=38bae7f3938b Modified Files: sql/backends/monet5/bam/bam_loader.c Branch: Oct2014 Log Message: merged diffs (12 lines): diff --git a/sql/backends/monet5/bam/bam_loader.c b/sql/backends/monet5/bam/bam_loader.c --- a/sql/backends/monet5/bam/bam_loader.c +++ b/sql/backends/monet5/bam/bam_loader.c @@ -543,7 +543,7 @@ bam_loader_files(Client cntxt, MalBlkPtr FILE *f = NULL; - char cur; + int cur; int line_size; str line = NULL; size_t line_buf_size = 0; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - merged
Changeset: df60a79c660a for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=df60a79c660a Modified Files: sql/server/sql_mvc.c Branch: Oct2014 Log Message: merged diffs (12 lines): diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c --- a/sql/server/sql_mvc.c +++ b/sql/server/sql_mvc.c @@ -223,7 +223,7 @@ build up the hash (not copyied in the tr qc_clean(m-qc); m-session-schema = find_sql_schema(m-session-tr, m-session-schema_name); if (mvc_debug) - fprintf(stderr, #mvc_commit %s done\n, (name) ? name : ); + fprintf(stderr, #mvc_commit %s done\n, name); return 0; } ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - compute type once outside loop
Changeset: b33a229823f9 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b33a229823f9 Modified Files: gdk/gdk_join.c Branch: Oct2014 Log Message: compute type once outside loop diffs (31 lines): diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -1437,6 +1437,13 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT * r1-trevsorted = 0; } } else { + int t = r-htype; + if (t != ATOMstorage(t) + ATOMnilptr(ATOMstorage(t)) == ATOMnilptr(t) + BATatoms[ATOMstorage(t)].atomCmp == BATatoms[t].atomCmp + BATatoms[ATOMstorage(t)].atomHash == BATatoms[t].atomHash) + t = ATOMstorage(t); + for (lo = lstart - BUNfirst(l) + l-hseqbase; lstart lend; lo++) { if (l-ttype == TYPE_void) { if (l-tseqbase != oid_nil) @@ -1460,13 +1467,6 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT * break; } } else { - int t = r-htype; - if (t != ATOMstorage(t) - ATOMnilptr(ATOMstorage(t)) == ATOMnilptr(t) - BATatoms[ATOMstorage(t)].atomCmp == BATatoms[t].atomCmp - BATatoms[ATOMstorage(t)].atomHash == BATatoms[t].atomHash) - t = ATOMstorage(t); - switch (t) { case TYPE_int: if (!nil_matches *(const int*)v == int_nil) { ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - remove use of BATselect from bat_table code
Changeset: ec21c0d4c501 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ec21c0d4c501 Modified Files: sql/storage/bat/bat_table.c sql/storage/store.c sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err Branch: Oct2014 Log Message: remove use of BATselect from bat_table code diffs (truncated from 440 to 300 lines): diff --git a/sql/storage/bat/bat_table.c b/sql/storage/bat/bat_table.c --- a/sql/storage/bat/bat_table.c +++ b/sql/storage/bat/bat_table.c @@ -23,79 +23,95 @@ #include bat_storage.h static BAT * -delta_full_bat_( sql_column *c, sql_delta *bat, int temp, BAT *d, BAT *s) +delta_cands(sql_trans *tr, sql_table *t) +{ + sql_column *c = t-columns.set-h-data; + /* create void,void bat with length and oid's set */ + BAT *tids = BATnew(TYPE_void, TYPE_void, 0, TRANSIENT); + size_t nr = store_funcs.count_col(tr, c, 1); + + tids-H-seq = 0; + tids-T-seq = 0; + BATsetcount(tids, (BUN) nr); + tids-H-revsorted = 0; + tids-T-revsorted = 0; + + tids-T-key = 1; + tids-T-dense = 1; + tids-H-key = 1; + tids-H-dense = 1; + + if (store_funcs.count_del(tr, t)) { + BAT *d = store_funcs.bind_del(tr, t, RD_INS); + BAT *diff = BATkdiff(tids, BATmirror(d)); + + bat_destroy(tids); + tids = BATmirror(BATmark(diff, 0)); + bat_destroy(diff); + bat_destroy(d); + } + return tids; +} + +static BAT * +delta_full_bat_( sql_column *c, sql_delta *bat, int temp) { /* return full normalized column bat - - if (s) { - b := b.semijoin(s); - i := i.semijoin(s); - u := u.semijoin(s); - } - b := b.kunion(i); - b := b.kdiff(u); - b := b.kunion(u); - b := b.kdiff(reverse(d)); +* b := b.copy() + b := b.append(i); + b := b.replace(u); */ BAT *r, *b, *u, *i = temp_descriptor(bat-ibid); + int needcopy = 1; + r = i; - if (temp) { - if (s) { - r = BATsemijoin(i,s); - bat_destroy(i); - } + if (temp) return r; - } b = temp_descriptor(bat-bid); u = temp_descriptor(bat-ubid); - if (s) { - BAT *t; - - t = BATsemijoin(b,s); bat_destroy(b); b = t; - t = BATsemijoin(i,s); bat_destroy(i); i = t; - t = BATsemijoin(u,s); bat_destroy(u); u = t; - } if (!b) { b = i; } else { if (BATcount(i)) { - r = BATkunion(b,i); bat_destroy(b); b = r; + r = BATcopy(b, b-htype, b-ttype, 1, TRANSIENT); + bat_destroy(b); + b = r; + BATappend(b, i, TRUE); + needcopy = 0; } bat_destroy(i); } if (BATcount(u)) { - r = BATkdiff(b,u); bat_destroy(b); b = r; - assert(b-ttype == u-ttype); - r = BATkunion(b,u); bat_destroy(b); b = r; + if (needcopy) { + r = BATcopy(b, b-htype, b-ttype, 1, TRANSIENT); + bat_destroy(b); + b = r; + } + BATreplace(b, u, TRUE); } bat_destroy(u); - if (d BATcount(d)) { - r = BATkdiff(b,BATmirror(d)); bat_destroy(b); b = r; - } (void)c; - if (!bat-cached !s) + if (!bat-cached) bat-cached = temp_descriptor(b-batCacheid); return b; } static BAT * -delta_full_bat( sql_column *c, sql_delta *bat, int temp, BAT *d, BAT *s) +delta_full_bat( sql_column *c, sql_delta *bat, int temp) { - if (bat-cached s) - return BATsemijoin(bat-cached, s); if (bat-cached) return temp_descriptor(bat-cached-batCacheid); - return delta_full_bat_( c, bat, temp, d, s); + return delta_full_bat_( c, bat, temp); } static BAT * -full_column(sql_trans *tr, sql_column *c, BAT *d, BAT *s ) +full_column(sql_trans *tr, sql_column *c) { if (!c-data) { sql_column *oc = tr_find_column(tr-parent, c); c-data = oc-data; } - return delta_full_bat(c, c-data, isTemp(c), d, s); + return delta_full_bat(c, c-data, isTemp(c)); } static oid column_find_row(sql_trans *tr, sql_column *c, void *value, ...); @@ -103,39 +119,31 @@ static oid column_find_row(sql_trans *tr, sql_column *c, void *value, ...) { va_list va; - BUN q; - BAT *b = NULL, *s = NULL, *r = NULL, *d = NULL; + BAT *b = NULL, *s = NULL, *r = NULL; oid rid =
MonetDB: default - merged changes from Oct2014
Changeset: eaca160265ed for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=eaca160265ed Modified Files: gdk/gdk.h gdk/gdk_aggr.c gdk/gdk_atoms.c gdk/gdk_bat.c gdk/gdk_batop.c gdk/gdk_group.c gdk/gdk_select.c gdk/gdk_setop.c gdk/gdk_value.c monetdb5/mal/mal_instruction.c sql/storage/bat/bat_table.c sql/storage/store.c sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err Branch: default Log Message: merged changes from Oct2014 diffs (truncated from 872 to 300 lines): diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -1359,6 +1359,12 @@ gdk_export bte ATOMelmshift(int sz); (b)-batCount++;\ } while (0) +#define bunfastapp_nocheck_inc(b, p, t)\ + do {\ + bunfastapp_nocheck(b, p, t, Tsize(b)); \ + p++;\ + } while (0) + #define bunfastapp(b, t) \ do {\ register BUN _p = BUNlast(b); \ @@ -2594,7 +2600,8 @@ gdk_export BAT *BATattach(int tt, const #define putenv _putenv #endif -/* also see VALget */ +/* Return a pointer to the value contained in V. Also see VALget + * which returns a void *. */ static inline const void * VALptr(const ValRecord *v) { @@ -3346,7 +3353,6 @@ gdk_export BAT *BATsample(BAT *b, BUN n) /* * */ -#define ILLEGALVALUE ((ptr)-1L) #define MAXPARAMS 32 #ifndef NDEBUG diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c --- a/gdk/gdk_aggr.c +++ b/gdk/gdk_aggr.c @@ -1497,6 +1497,8 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT (*cntsp)-tkey = BATcount(*cntsp) = 1; (*cntsp)-tsorted = BATcount(*cntsp) = 1; (*cntsp)-trevsorted = BATcount(*cntsp) = 1; + (*cntsp)-T-nil = 0; + (*cntsp)-T-nonil = 1; } BATsetcount(bn, ngrp); BATseqbase(bn, min); diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c --- a/gdk/gdk_atoms.c +++ b/gdk/gdk_atoms.c @@ -348,11 +348,9 @@ ATOMformat(int t, const void *p, char ** { int (*tostr) (str *, int *, const void *); - if (p 0 = t t GDKatomcnt - (tostr = BATatoms[t].atomToStr)) { - int sz = 0, l = (*tostr) (buf, sz, p); - - return l; + if (p 0 = t t GDKatomcnt (tostr = BATatoms[t].atomToStr)) { + int sz = 0; + return (*tostr) (buf, sz, p); } *buf = GDKmalloc(4); if (*buf == NULL) diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c --- a/gdk/gdk_bat.c +++ b/gdk/gdk_bat.c @@ -967,35 +967,35 @@ BATcopy(BAT *b, int ht, int tt, int writ if (ATOMtype(ht) == ATOMtype(b-htype)) { ALIGNsetH(bn, b); } else if (ATOMtype(ATOMstorage(ht)) == ATOMtype(ATOMstorage(b-htype))) { - bn-hsorted = b-hsorted || (cnt = 1 BATatoms[b-htype].linear); - bn-hrevsorted = b-hrevsorted || (cnt = 1 BATatoms[b-htype].linear); + bn-hsorted = b-hsorted; + bn-hrevsorted = b-hrevsorted; bn-hdense = b-hdense ATOMtype(bn-htype) == TYPE_oid; if (b-hkey) BATkey(bn, TRUE); bn-H-nonil = b-H-nonil; } else { - bn-hsorted = bn-hrevsorted = (cnt = 1 BATatoms[b-htype].linear); + bn-hsorted = bn-hrevsorted = 0; /* set based on count later */ bn-hdense = bn-H-nonil = 0; } if (ATOMtype(tt) == ATOMtype(b-ttype)) { ALIGNsetT(bn, b); } else if (ATOMtype(ATOMstorage(tt)) == ATOMtype(ATOMstorage(b-ttype))) { - bn-tsorted = b-tsorted || (cnt = 1 BATatoms[b-ttype].linear); - bn-trevsorted = b-trevsorted || (cnt = 1 BATatoms[b-ttype].linear); + bn-tsorted = b-tsorted; + bn-trevsorted = b-trevsorted; bn-tdense = b-tdense ATOMtype(bn-ttype) == TYPE_oid; if (b-tkey) BATkey(BATmirror(bn), TRUE); bn-T-nonil = b-T-nonil; } else { - bn-tsorted = bn-trevsorted = (cnt = 1 BATatoms[b-ttype].linear); + bn-tsorted = bn-trevsorted = 0; /* set based on count later */ bn-tdense = bn-T-nonil = 0; } if (BATcount(bn) = 1) { - bn-hsorted = 1; - bn-hrevsorted = 1; + bn-hsorted = BATatoms[b-htype].linear; + bn-hrevsorted = BATatoms[b-htype].linear; bn-hkey = 1; - bn-tsorted = 1; - bn-trevsorted = 1; + bn-tsorted = BATatoms[b-ttype].linear; + bn-trevsorted =
MonetDB: default - generalized filter functions (old version was...
Changeset: b132e9477d66 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b132e9477d66 Modified Files: monetdb5/modules/mal/pcre.mal sql/backends/monet5/LSST/Tests/lsst_htmxmatch.sql sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_statement.c sql/backends/monet5/sql_statement.h sql/benchmarks/tpch/Tests/02-plan.stable.out sql/benchmarks/tpch/Tests/09-plan.stable.out.int128 sql/benchmarks/tpch/Tests/13-plan.stable.out sql/benchmarks/tpch/Tests/16-plan.stable.out sql/benchmarks/tpch/Tests/17-explain.stable.out.int128 sql/benchmarks/tpch/Tests/17-plan.stable.out.int128 sql/benchmarks/tpch/Tests/20-explain.stable.out.int128 sql/benchmarks/tpch/Tests/20-plan.stable.out.int128 sql/server/rel_dump.c sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_optimizer.c sql/server/rel_select.c sql/server/sql_parser.y sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err sql/test/leaks/Tests/check1.stable.out.int128 sql/test/leaks/Tests/check2.stable.out.int128 sql/test/leaks/Tests/check3.stable.out.int128 sql/test/leaks/Tests/check4.stable.out.int128 sql/test/leaks/Tests/check5.stable.out.int128 sql/test/leaks/Tests/select1.stable.out.int128 sql/test/leaks/Tests/select2.stable.out.int128 Branch: default Log Message: generalized filter functions (old version was limited to l filter (r, option), ie for like filters). New syntax is [ l0, l1 .., ln ] Filter_Op [ r0, r1, .., rn ] where l0 and r0 are the columns to join/select over. Extra columns/options can be passed using the l1 to ln and r1 to rn. Currently the filter functions could be added to the system using create filter function name( scalar types) external name mod.name; In mal we assume (require) mod.name functions to exist for the subselect and subjoin variations. See subjoin/select and likesubselect variants. Also bit returning map operators are needed (if select/join isn't the first operator on a relation). These have the form (l0, ..ln, r0, ..rn):= bit. For now the name should be 'mod'.sqlname. Where the sqlname is the name given to the function within sql. Probably we cleanup this requirement and add some documentation ;-). diffs (truncated from 1839 to 300 lines): diff --git a/monetdb5/modules/mal/pcre.mal b/monetdb5/modules/mal/pcre.mal --- a/monetdb5/modules/mal/pcre.mal +++ b/monetdb5/modules/mal/pcre.mal @@ -118,6 +118,25 @@ address BATPCREnotilike; command batstr.not_ilike(s:bat[:oid,:str], pat:str):bat[:oid,:bit] address BATPCREnotilike2; +command algebra.like(s:str, pat:str, esc:str):bit address PCRElike3; +command algebra.like(s:str, pat:str):bit address PCRElike2; +command algebra.not_like(s:str, pat:str, esc:str):bit address PCREnotlike3; +command algebra.not_like(s:str, pat:str):bit address PCREnotlike2; +command algebra.ilike(s:str, pat:str, esc:str):bit address PCREilike3; +command algebra.ilike(s:str, pat:str):bit address PCREilike2; +command algebra.not_ilike(s:str, pat:str, esc:str):bit address PCREnotilike3; +command algebra.not_ilike(s:str, pat:str):bit address PCREnotilike2; + +module batalgebra; +command batalgebra.like(s:bat[:oid,:str], pat:str, esc:str):bat[:oid,:bit] address BATPCRElike; +command batalgebra.like(s:bat[:oid,:str], pat:str):bat[:oid,:bit] address BATPCRElike2; +command batalgebra.not_like(s:bat[:oid,:str], pat:str, esc:str):bat[:oid,:bit] address BATPCREnotlike; +command batalgebra.not_like(s:bat[:oid,:str], pat:str):bat[:oid,:bit] address BATPCREnotlike2; +command batalgebra.ilike(s:bat[:oid,:str], pat:str, esc:str):bat[:oid,:bit] address BATPCREilike; +command batalgebra.ilike(s:bat[:oid,:str], pat:str):bat[:oid,:bit] address BATPCREilike2; +command batalgebra.not_ilike(s:bat[:oid,:str], pat:str, esc:str):bat[:oid,:bit] address BATPCREnotilike; +command batalgebra.not_ilike(s:bat[:oid,:str], pat:str):bat[:oid,:bit] address BATPCREnotliike2; + command algebra.likesubselect(b:bat[:oid,:str], pat:str, esc:str, caseignore:bit, anti:bit) :bat[:oid,:oid] address PCRElikesubselect1 comment Select all head values for which the tail value is \like\ diff --git a/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.sql b/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.sql --- a/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.sql +++ b/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.sql @@ -5,9 +5,9 @@ insert into htm values (120), (121), (12 insert into htm values (130), (131), (132), (133); -- select identical pairs -select * from htm a, htm b where a.id xmatch(0) b.id; +select * from htm a, htm b where [a.id] xmatch [b.id,0]; -- select pairs at distance one -select * from htm a, htm b where a.id xmatch(1) b.id; +select * from htm a, htm b where [a.id] xmatch [b.id,1]; drop table htm; diff --git
MonetDB: Oct2014 - split update bat within the catalog interface...
Changeset: 1c3d356ffdc2 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1c3d356ffdc2 Modified Files: sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_optimizer.c sql/backends/monet5/sql_statistics.c sql/include/sql_catalog.h sql/storage/bat/bat_storage.c Branch: Oct2014 Log Message: split update bat within the catalog interface to remove dependency on BATselect. diffs (truncated from 395 to 300 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -733,7 +733,7 @@ stmt_col( mvc *sql, sql_column *c, stmt (c-base.flag != TR_NEW || c-t-base.flag != TR_NEW /* alter */) (c-t-persistence == SQL_PERSIST || c-t-persistence == SQL_DECLARED_TABLE) !c-t-commit_action) { stmt *i = stmt_bat(sql-sa, c, RD_INS); - stmt *u = stmt_bat(sql-sa, c, RD_UPD); + stmt *u = stmt_bat(sql-sa, c, RD_UPD_ID); sc = stmt_project_delta(sql-sa, sc, u, i); sc = stmt_project(sql-sa, del, sc); } else if (del) { /* always handle the deletes */ @@ -751,7 +751,7 @@ stmt_idx( mvc *sql, sql_idx *i, stmt *de (i-base.flag != TR_NEW || i-t-base.flag != TR_NEW /* alter */) (i-t-persistence == SQL_PERSIST || i-t-persistence == SQL_DECLARED_TABLE) !i-t-commit_action) { stmt *ic = stmt_idxbat(sql-sa, i, RD_INS); - stmt *u = stmt_idxbat(sql-sa, i, RD_UPD); + stmt *u = stmt_idxbat(sql-sa, i, RD_UPD_ID); sc = stmt_project_delta(sql-sa, sc, u, ic); sc = stmt_project(sql-sa, del, sc); } else if (del) { /* always handle the deletes */ diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -489,7 +489,7 @@ table_has_updates(sql_trans *tr, sql_tab for ( n = t-columns.set-h; !cnt n; n = n-next) { sql_column *c = n-data; - BAT *b = store_funcs.bind_col(tr, c, RD_UPD); + BAT *b = store_funcs.bind_col(tr, c, RD_UPD_ID); cnt |= BATcount(b) 0; BBPunfix(b-batCacheid); } @@ -1644,6 +1644,7 @@ mvc_bind_wrap(Client cntxt, MalBlkPtr mb bn = BATslice(b, part_nr * psz, (part_nr + 1 == nr_parts) ? cnt : ((part_nr + 1) * psz)); BATseqbase(bn, part_nr * psz); } else { + /* BAT b holds the UPD_ID bat */ oid l, h; BAT *c = mvc_bind(m, *sname, *tname, *cname, 0); cnt = BATcount(c); @@ -1651,23 +1652,39 @@ mvc_bind_wrap(Client cntxt, MalBlkPtr mb l = part_nr * psz; h = (part_nr + 1 == nr_parts) ? cnt : ((part_nr + 1) * psz); h--; - bn = BATmirror(BATselect(BATmirror(b), l, h)); + bn = BATsubselect(b, NULL, l, h, 1, 0, 0); BBPreleaseref(c-batCacheid); } BBPreleaseref(b-batCacheid); b = bn; + } else if (upd) { + BAT *uv = mvc_bind(m, *sname, *tname, *cname, RD_UPD_VAL); + int *uvl = (int *) getArgReference(stk, pci, 1); + + BBPkeepref(*bid = b-batCacheid); + BBPkeepref(*uvl = uv-batCacheid); + return MAL_SUCCEED; } if (upd) { int *uvl = (int *) getArgReference(stk, pci, 1); if (BATcount(b)) { - BAT *id = BATmirror(BATmark(b, 0)); - BAT *vl = BATmirror(BATmark(BATmirror(b), 0)); + BAT *uv = mvc_bind(m, *sname, *tname, *cname, RD_UPD_VAL); + BAT *ui = mvc_bind(m, *sname, *tname, *cname, RD_UPD_ID); + BAT *id = BATproject(b, ui); + BAT *vl = BATproject(b, uv); + bat_destroy(b); + bat_destroy(ui); + bat_destroy(uv); BBPkeepref(*bid = id-batCacheid); BBPkeepref(*uvl = vl-batCacheid); } else { + sql_schema *s = mvc_bind_schema(m, *sname); + sql_table *t = mvc_bind_table(m, s, *tname); + sql_column *c = mvc_bind_column(m, t, *cname); +
MonetDB: Oct2014 - fixed bug with double bat unfix.
Changeset: 9b25271d202e for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9b25271d202e Modified Files: sql/backends/monet5/sql.c Branch: Oct2014 Log Message: fixed bug with double bat unfix. diffs (37 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -1652,7 +1652,7 @@ mvc_bind_wrap(Client cntxt, MalBlkPtr mb l = part_nr * psz; h = (part_nr + 1 == nr_parts) ? cnt : ((part_nr + 1) * psz); h--; - bn = BATsubselect(b, NULL, l, h, 1, 0, 0); + bn = BATsubselect(b, NULL, l, h, 1, 1, 0); BBPreleaseref(c-batCacheid); } BBPreleaseref(b-batCacheid); @@ -1673,7 +1673,6 @@ mvc_bind_wrap(Client cntxt, MalBlkPtr mb BAT *ui = mvc_bind(m, *sname, *tname, *cname, RD_UPD_ID); BAT *id = BATproject(b, ui); BAT *vl = BATproject(b, uv); - bat_destroy(b); bat_destroy(ui); bat_destroy(uv); BBPkeepref(*bid = id-batCacheid); @@ -1736,7 +1735,7 @@ mvc_bind_idxbat_wrap(Client cntxt, MalBl l = part_nr * psz; h = (part_nr + 1 == nr_parts) ? cnt : ((part_nr + 1) * psz); h--; - bn = BATsubselect(b, NULL, l, h, 1, 0, 0); + bn = BATsubselect(b, NULL, l, h, 1, 1, 0); BBPreleaseref(c-batCacheid); } BBPreleaseref(b-batCacheid); @@ -1756,7 +1755,6 @@ mvc_bind_idxbat_wrap(Client cntxt, MalBl BAT *ui = mvc_bind_idxbat(m, *sname, *tname, *iname, RD_UPD_ID); BAT *id = BATproject(b, ui); BAT *vl = BATproject(b, uv); - bat_destroy(b); bat_destroy(ui); bat_destroy(uv); BBPkeepref(*bid = id-batCacheid); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - make sure we only remove the arguments of the...
Changeset: 580357e42f8c for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=580357e42f8c Modified Files: sql/storage/store.c Branch: Oct2014 Log Message: make sure we only remove the arguments of the function we are dropping diffs (12 lines): diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -3597,7 +3597,7 @@ sys_drop_func(sql_trans *tr, sql_func *f if (IS_AGGR(func) || 1) { sql_table *sys_tab_args = find_sql_table(syss, args); sql_column *sys_args_col = find_sql_column(sys_tab_args, func_id); - rids *args = table_funcs.rids_select(tr, sys_args_col, func-base.id, NULL, NULL); + rids *args = table_funcs.rids_select(tr, sys_args_col, func-base.id, func-base.id, NULL); oid r = oid_nil; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - make sure we don't mark the epression func = ...
Changeset: 010d1ad2adcd for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=010d1ad2adcd Modified Files: sql/backends/monet5/sql.c Branch: Oct2014 Log Message: make sure we don't mark the epression func = const as a point query diffs (15 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -63,8 +63,9 @@ exp_is_point_select(sql_exp *e) return 1; if (e-type == e_cmp !e-f e-flag == (int) cmp_equal) { sql_exp *r = e-r; - - if (r-card = CARD_AGGR) + sql_exp *l = e-l; + + if (!is_func(l-type) r-card = CARD_AGGR) return 1; } return 0; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: mosaic - removed special storage functions (not needed ...
Changeset: c237ca2bf7f4 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c237ca2bf7f4 Modified Files: sql/storage/bat/bat_storage.c Branch: mosaic Log Message: removed special storage functions (not needed as compression is done inplace now) diffs (123 lines): diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c --- a/sql/storage/bat/bat_storage.c +++ b/sql/storage/bat/bat_storage.c @@ -1620,23 +1620,6 @@ gtr_minmax( sql_trans *tr ) } static int -tr_update_storage( sql_trans *tr, sql_delta *obat, sql_delta *cbat) -{ - int ok = LOG_OK; - - (void)tr; - assert(store_nr_active==1); - - assert (obat-bid != 0 cbat-bid != 0); - assert (obat-cached == NULL cbat-cached == NULL); - temp_destroy(obat-bid); - obat-bid = cbat-bid; - temp_dup(cbat-bid); - assert(obat-ibid == cbat-ibid); - return ok; -} - -static int tr_update_delta( sql_trans *tr, sql_delta *obat, sql_delta *cbat, int unique) { int ok = LOG_OK; @@ -1832,10 +1815,7 @@ update_table(sql_trans *tr, sql_table *f } } else { assert(oc-base.allocated); - if ((cc-storage_type (!oc-storage_type || (strcmp(cc-storage_type, oc-storage_type) != 0))) || (!cc-storage_type oc-storage_type)) - tr_update_storage(tr, oc-data, cc-data); - else - tr_update_delta(tr, oc-data, cc-data, cc-unique == 1); + tr_update_delta(tr, oc-data, cc-data, cc-unique == 1); } oc-null = cc-null; @@ -1880,10 +1860,7 @@ update_table(sql_trans *tr, sql_table *f } } else { assert(oi-base.allocated); - if (ci-storage_type (!ci-storage_type || strcmp(ci-storage_type, oi-storage_type) != 0)) - tr_update_storage(tr, oi-data, ci-data); - else - tr_update_delta(tr, oi-data, ci-data, 0); + tr_update_delta(tr, oi-data, ci-data, 0); } if (oi-base.rtime ci-base.rtime) @@ -1905,24 +1882,6 @@ update_table(sql_trans *tr, sql_table *f return ok; } -static int -tr_log_storage( sql_trans *tr, sql_delta *cbat ) -{ - int ok = LOG_OK; - BAT *b; - - (void)tr; - assert(tr-parent == gtrans); - assert(store_nr_active == 1); - - /* log new snapshot */ - b = temp_descriptor(cbat-bid); - logger_add_bat(bat_logger, b, cbat-name); - ok = log_bat_persists(bat_logger, b, cbat-name); - bat_destroy(b); - return ok; -} - static int tr_log_delta( sql_trans *tr, sql_delta *cbat, int cleared) { @@ -1997,10 +1956,7 @@ log_table(sql_trans *tr, sql_table *ft) if (!cc-base.wtime || !cc-base.allocated) continue; - if (ft-access TABLE_WRITABLE) /* TODO we need a proper way to check for changes off the storage */ - ok = tr_log_storage(tr, cc-data); - else - ok = tr_log_delta(tr, cc-data, ft-cleared); + ok = tr_log_delta(tr, cc-data, ft-cleared); } if (ok == LOG_OK ft-idxs.set) { for (n = ft-idxs.set-h; ok == LOG_OK n; n = n-next) { @@ -2017,22 +1973,6 @@ log_table(sql_trans *tr, sql_table *ft) } static int -tr_snapshot_storage( sql_trans *tr, sql_delta *cbat) -{ - int ok = LOG_OK; - BAT *b = temp_descriptor(cbat-bid); - - assert(tr-parent == gtrans); - assert(store_nr_active == 1); - - (void)tr; - bat_set_access(b, BAT_READ); - BATmode(b, PERSISTENT); - bat_destroy(b); - return ok; -} - -static int tr_snapshot_bat( sql_trans *tr, sql_delta *cbat) { int ok = LOG_OK; @@ -2067,10 +2007,7 @@ snapshot_table(sql_trans *tr, sql_table if (!cc-base.wtime || !cc-base.allocated) continue; - if (ft-access TABLE_WRITABLE) /* TODO we need a proper way to check for changes off the storage */ - tr_snapshot_storage(tr, cc-data); - else - tr_snapshot_bat(tr, cc-data); + tr_snapshot_bat(tr, cc-data); } if (ok == LOG_OK ft-idxs.set) { for (n = ft-idxs.set-h; ok == LOG_OK n; n = n-next) { ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - merged with Oct2014
Changeset: c56b9b975224 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c56b9b975224 Added Files: sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.sql sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.err sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.out Modified Files: sql/backends/monet5/sql.c sql/test/BugTracker-2014/Tests/All Branch: default Log Message: merged with Oct2014 diffs (168 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -63,8 +63,9 @@ exp_is_point_select(sql_exp *e) return 1; if (e-type == e_cmp !e-f e-flag == (int) cmp_equal) { sql_exp *r = e-r; - - if (r-card = CARD_AGGR) + sql_exp *l = e-l; + + if (!is_func(l-type) r-card = CARD_AGGR) return 1; } return 0; diff --git a/sql/test/BugTracker-2014/Tests/All b/sql/test/BugTracker-2014/Tests/All --- a/sql/test/BugTracker-2014/Tests/All +++ b/sql/test/BugTracker-2014/Tests/All @@ -40,3 +40,4 @@ orderby_on_constant.Bug-3554 div_by_zero_in_return.Bug-3555 round-sorted.Bug-3562 locate-offset.Bug-3563 +aggr-with-limit.Bug-3498 diff --git a/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.sql b/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.sql @@ -0,0 +1,9 @@ +START TRANSACTION; + +CREATE TABLE simple_table(id INTEGER); +INSERT INTO simple_table VALUES (1),(2),(3),(4),(5); +SELECT COUNT(*) AS val FROM simple_table ORDER BY val DESC; +SELECT COUNT(*) AS val FROM simple_table ORDER BY val DESC LIMIT 5; +SELECT COUNT(*) AS val FROM simple_table HAVING 1 0 ORDER BY val DESC LIMIT 5; + +ROLLBACK; diff --git a/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.err b/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.err @@ -0,0 +1,37 @@ +stderr of test 'aggr-with-limit.Bug-3498` in directory 'sql/test/BugTracker-2014` itself: + + +# 16:07:42 +# 16:07:42 mserver5 --debug=10 --set gdk_nr_threads=0 --set mapi_open=true --set mapi_port=36743 --set mapi_usock=/var/tmp/mtest-7574/.s.monetdb.36743 --set monet_prompt= --forcemito --set mal_listing=2 --dbpath=/ufs/sjoerd/Monet-candidate/var/MonetDB/mTests_sql_test_BugTracker-2014 --set mal_listing=0 --set embedded_r=yes +# 16:07:42 + +# builtin opt gdk_dbpath = /ufs/sjoerd/Monet-candidate/var/monetdb5/dbfarm/demo +# builtin opt gdk_debug = 0 +# builtin opt gdk_vmtrim = no +# builtin opt monet_prompt = +# builtin opt monet_daemon = no +# builtin opt mapi_port = 5 +# builtin opt mapi_open = false +# builtin opt mapi_autosense = false +# builtin opt sql_optimizer = default_pipe +# builtin opt sql_debug = 0 +# cmdline opt gdk_nr_threads = 0 +# cmdline opt mapi_open = true +# cmdline opt mapi_port = 36743 +# cmdline opt mapi_usock = /var/tmp/mtest-7574/.s.monetdb.36743 +# cmdline opt monet_prompt = +# cmdline opt mal_listing = 2 +# cmdline opt gdk_dbpath = /ufs/sjoerd/Monet-candidate/var/MonetDB/mTests_sql_test_BugTracker-2014 +# cmdline opt mal_listing = 0 +# cmdline opt embedded_r = yes +# cmdline opt gdk_debug = 536870922 + +# 16:07:43 +# 16:07:43 mclient -lsql -ftest -Eutf-8 -i -e --host=/var/tmp/mtest-7574 --port=36743 +# 16:07:43 + + +# 16:07:43 +# 16:07:43 Done. +# 16:07:43 + diff --git a/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.out b/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2014/Tests/aggr-with-limit.Bug-3498.stable.out @@ -0,0 +1,84 @@ +stdout of test 'aggr-with-limit.Bug-3498` in directory 'sql/test/BugTracker-2014` itself: + + +# 16:07:42 +# 16:07:42 mserver5 --debug=10 --set gdk_nr_threads=0 --set mapi_open=true --set mapi_port=36743 --set mapi_usock=/var/tmp/mtest-7574/.s.monetdb.36743 --set monet_prompt= --forcemito --set mal_listing=2 --dbpath=/ufs/sjoerd/Monet-candidate/var/MonetDB/mTests_sql_test_BugTracker-2014 --set mal_listing=0 --set embedded_r=yes +# 16:07:42 + +# MonetDB 5 server v11.19.0 (hg id: ecb2e8102eee) +# This is an unreleased version +# Serving database 'mTests_sql_test_BugTracker-2014', using 8 threads +# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked +# Found 15.590 GiB available main-memory. +# Copyright (c) 1993-July 2008 CWI. +# Copyright (c) August 2008-2014 MonetDB B.V., all rights reserved +# Visit http://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://madrid.ins.cwi.nl:36743/ +# Listening for UNIX domain connection requests on
MonetDB: default - Change filter functions
Changeset: 1f39770b506a for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1f39770b506a Modified Files: monetdb5/modules/mal/pcre.c monetdb5/modules/mal/pcre.mal monetdb5/optimizer/opt_prelude.c monetdb5/optimizer/opt_prelude.h monetdb5/optimizer/opt_pushselect.c monetdb5/optimizer/opt_strengthReduction.c monetdb5/optimizer/opt_support.c monetdb5/optimizer/opt_support.h sql/backends/monet5/LSST/lsst.c sql/backends/monet5/LSST/lsst.h sql/backends/monet5/LSST/lsst.mal sql/backends/monet5/generator/Tests/joins00.stable.out sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_scenario.c sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/04-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/05-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/06-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/07-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/08-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/09-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/10-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/11-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/12-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/13-explain.stable.out.int128 sql/benchmarks/tpch/Tests/01-explain.stable.out.int128 sql/benchmarks/tpch/Tests/02-explain.stable.out sql/benchmarks/tpch/Tests/03-explain.stable.out.int128 sql/benchmarks/tpch/Tests/04-explain.stable.out sql/benchmarks/tpch/Tests/05-explain.stable.out.int128 sql/benchmarks/tpch/Tests/06-explain.stable.out.int128 sql/benchmarks/tpch/Tests/07-explain.stable.out.int128 sql/benchmarks/tpch/Tests/08-explain.stable.out.int128 sql/benchmarks/tpch/Tests/09-explain.stable.out.int128 sql/benchmarks/tpch/Tests/10-explain.stable.out.int128 sql/benchmarks/tpch/Tests/11-explain.stable.out.int128 sql/benchmarks/tpch/Tests/12-explain.stable.out.int128 sql/benchmarks/tpch/Tests/13-explain.stable.out sql/benchmarks/tpch/Tests/14-explain.stable.out.int128 sql/benchmarks/tpch/Tests/15-explain.stable.out.int128 sql/benchmarks/tpch/Tests/16-explain.stable.out sql/benchmarks/tpch/Tests/17-explain.stable.out.int128 sql/benchmarks/tpch/Tests/18-explain.stable.out.int128 sql/benchmarks/tpch/Tests/19-explain.stable.out.int128 sql/benchmarks/tpch/Tests/20-explain.stable.out.int128 sql/benchmarks/tpch/Tests/21-explain.stable.out sql/benchmarks/tpch/Tests/22-explain.stable.out.int128 sql/common/sql_types.c sql/scripts/09_like.sql sql/server/rel_optimizer.c sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out sql/test/BugTracker/Tests/explain.SF-1739353.stable.out sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out Branch: default Log Message: Change filter functions Filter functions require 3 different mal functions 1) returning bit (while at it create the bat'modulename'.filter version as well) 2) a bat[:oid,:oid] returning 'subselect' like function 3) a (l:bat[:oid,:oid]),r:bat[:oid,:oid]) returning 'subjoin' like function The name of 1 should be given in the create filter function statement. This name is extended with 'subselect' and 'subjoin' for the 2 and 3 cases. Example create filter function like(val string, pat string, esc string) external name algebra.like; expected mal functions: command algebra.like(s:str, pat:str, esc:str):bit address PCRElike3; function algebra.likesubselect(b:bat[:oid,:str], cand:bat[:oid,:oid], pat:str, esc:str, anti:bit) :bat[:oid,:oid]; command algebra.likesubjoin(l:bat[:oid,:str],r:bat[:oid,:str],esc:str,sl:bat[:oid,:oid],sr:bat[:oid,:oid],nil_matches:bit,estimate:lng) (:bat[:oid,:oid],:bat[:oid,:oid]) optional mal function: command batalgebra.like(s:bat[:oid,:str], pat:str, esc:str):bat[:oid,:bit] address BATPCRElike; diffs (truncated from 6128 to 300 lines): diff --git a/monetdb5/modules/mal/pcre.c b/monetdb5/modules/mal/pcre.c --- a/monetdb5/modules/mal/pcre.c +++ b/monetdb5/modules/mal/pcre.c @@ -1358,7 +1358,7 @@ PCRElikesubselect2(bat *ret, bat *bid, b if ((b = BATdescriptor(*bid)) == NULL) { throw(MAL, algebra.likeselect, RUNTIME_OBJECT_MISSING); } - if (sid (s = BATdescriptor(*sid)) == NULL) { + if (sid (*sid) != bat_nil *sid (s = BATdescriptor(*sid)) == NULL) { BBPreleaseref(b-batCacheid); throw(MAL,
MonetDB: default - fix compilation on windows
Changeset: 78e690b10401 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=78e690b10401 Modified Files: monetdb5/optimizer/opt_support.c Branch: default Log Message: fix compilation on windows diffs (21 lines): diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c --- a/monetdb5/optimizer/opt_support.c +++ b/monetdb5/optimizer/opt_support.c @@ -917,7 +917,7 @@ int isFragmentGroup2(InstrPtr p){ int isSubSelect(InstrPtr p) { char *func = getFunctionId(p); - int l = func?strlen(func):0; + size_t l = func?strlen(func):0; return (l = 9 getModuleId(p)== algebraRef strcmp(func+l-9,subselect) == 0); @@ -926,7 +926,7 @@ int isSubSelect(InstrPtr p) int isSubJoin(InstrPtr p) { char *func = getFunctionId(p); - int l = func?strlen(func):0; + size_t l = func?strlen(func):0; return (l = 7 getModuleId(p)== algebraRef strcmp(func+l-7,subjoin) == 0); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - make sure we only apply the stringtrick in BA...
Changeset: 39ea2e9fe4a8 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=39ea2e9fe4a8 Modified Files: gdk/gdk_join.c Branch: Oct2014 Log Message: make sure we only apply the stringtrick in BATproject when there are no nil's oids (in l). Fixes bug 3583 diffs (12 lines): diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -2976,7 +2976,7 @@ BATproject(BAT *l, BAT *r) } assert(l-ttype == TYPE_oid); - if (ATOMstorage(tpe) == TYPE_str + if (ATOMstorage(tpe) == TYPE_str l-T-nonil (rcount == 0 || lcount (rcount 3))) { /* insert strings as ints, we need to copy the string * heap whole sale */ ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - fixes for bug 3579 and bug 3575
Changeset: 3c7675b36829 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3c7675b36829 Modified Files: gdk/gdk_calc_compare.h sql/server/rel_schema.c Branch: Jan2014 Log Message: fixes for bug 3579 and bug 3575 diffs (37 lines): diff --git a/gdk/gdk_calc_compare.h b/gdk/gdk_calc_compare.h --- a/gdk/gdk_calc_compare.h +++ b/gdk/gdk_calc_compare.h @@ -36,7 +36,8 @@ op_typeswitchloop(const void *lft, int t assert(incr1 == 1); assert(tp2 == TYPE_oid || incr2 == 1); /* if void, incr2==1 */ - v = * (const oid *) lft; + if (lft) + v = * (const oid *) lft; CANDLOOP(dst, k, TPE_nil, 0, start); if (v == oid_nil || tp2 == TYPE_void) { TPE res = v == oid_nil || * (const oid *) rgt == oid_nil ? diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -1007,6 +1007,9 @@ rel_create_schema(mvc *sql, dlist *auth_ sql_error(sql, 02, 42000!CREATE SCHEMA: insufficient privileges for user '%s', stack_get_string(sql, current_user)); return NULL; } + if (!name) + name = auth; + assert(name); if (mvc_bind_schema(sql, name)) { sql_error(sql, 02, 3F000!CREATE SCHEMA: name '%s' already in use, name); return NULL; @@ -1016,9 +1019,7 @@ rel_create_schema(mvc *sql, dlist *auth_ sql_schema *ss = SA_ZNEW(sql-sa, sql_schema); sql_rel *ret; - ret = rel_schema(sql-sa, DDL_CREATE_SCHEMA, - dlist_get_schema_name(auth_name), - schema_auth(auth_name), 0); + ret = rel_schema(sql-sa, DDL_CREATE_SCHEMA, name, auth, 0); ss-base.name = name; ss-auth_id = auth_id; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - fixed bug 3582
Changeset: 229116aeddb0 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=229116aeddb0 Modified Files: sql/server/rel_select.c Branch: Jan2014 Log Message: fixed bug 3582 diffs (15 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -3676,10 +3676,8 @@ static sql_exp * if (groupby-op != op_groupby) /* implicit groupby */ *rel = rel_project2groupby(sql, groupby); - if (!*rel) { - rel_destroy(groupby); + if (!*rel) return NULL; - } if (f == sql_where) { char *uaname = malloc(strlen(aname) + 1); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - fixed compilation in gdk_calc_compare.h
Changeset: 9e857531d690 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9e857531d690 Modified Files: gdk/gdk_calc_compare.h sql/server/sql_parser.y sql/server/sql_scan.c sql/storage/bat/bat_storage.c sql/test/Tests/identifiers.stable.err sql/test/Tests/identifiers.stable.out Branch: Jan2014 Log Message: fixed compilation in gdk_calc_compare.h more valid_idents (ab) fixed bug (default value) diffs (208 lines): diff --git a/gdk/gdk_calc_compare.h b/gdk/gdk_calc_compare.h --- a/gdk/gdk_calc_compare.h +++ b/gdk/gdk_calc_compare.h @@ -32,7 +32,7 @@ op_typeswitchloop(const void *lft, int t switch (tp1) { case TYPE_void: { - oid v; + oid v = oid_nil; assert(incr1 == 1); assert(tp2 == TYPE_oid || incr2 == 1); /* if void, incr2==1 */ diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -1061,9 +1061,9 @@ opt_column: ; create_statement: - role_def + create role_def { $$ = $2; } | create table_def{ $$ = $2; } - | view_def + | create view_def { $$ = $2; } | type_def | func_def | index_def @@ -1279,18 +1279,18 @@ CREATE [ UNIQUE ] INDEX index_name */ role_def: -create ROLE ident opt_grantor +ROLE ident opt_grantor { dlist *l = L(); - append_string(l, $3); + append_string(l, $2); + append_int(l, $3); + $$ = _symbol_create_list( SQL_CREATE_ROLE, l ); } + | USER ident WITH opt_encrypted PASSWORD string sqlNAME string SCHEMA ident + { dlist *l = L(); + append_string(l, $2); + append_string(l, $6); + append_string(l, $8); + append_string(l, $10); append_int(l, $4); - $$ = _symbol_create_list( SQL_CREATE_ROLE, l ); } - | create USER ident WITH opt_encrypted PASSWORD string sqlNAME string SCHEMA ident - { dlist *l = L(); - append_string(l, $3); - append_string(l, $7); - append_string(l, $9); - append_string(l, $11); - append_int(l, $5); $$ = _symbol_create_list( SQL_CREATE_USER, l ); } ; @@ -1725,12 +1725,12 @@ like_table: ; view_def: -create VIEW qname opt_column_list AS query_expression opt_with_check_option +VIEW qname opt_column_list AS query_expression opt_with_check_option { dlist *l = L(); + append_list(l, $2); append_list(l, $3); - append_list(l, $4); - append_symbol(l, $6); - append_int(l, $7); + append_symbol(l, $5); + append_int(l, $6); append_int(l, TRUE); /* persistent view */ $$ = _symbol_create_list( SQL_CREATE_VIEW, l ); } diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c --- a/sql/server/sql_scan.c +++ b/sql/server/sql_scan.c @@ -928,11 +928,11 @@ valid_ident(char *s, char *dst) if (*s == '%') return 0; - /* do unescaping in the loop */ + while (*s (*s != '' || escaped)) { - if (*s == '' s[1] == '') { + if (*s == '\\' s[1] == '') { escaped = !escaped; - if (!escaped) + if (escaped) dst[p++] = *s; } else if (*s == '' escaped) { escaped = 0; @@ -941,8 +941,6 @@ valid_ident(char *s, char *dst) escaped = 0; dst[p++] = *s; } - //if (*s == '\\') - //dst[p++] = *s; s++; if (p = 1024) return 0; diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c --- a/sql/storage/bat/bat_storage.c +++ b/sql/storage/bat/bat_storage.c @@ -1752,38 +1752,38 @@ update_table(sql_trans *tr, sql_table *f sql_column *cc = n-data; sql_column *oc = m-data; - if (!cc-base.wtime || !cc-base.allocated) { - cc-data = NULL; - cc-base.allocated = cc-base.rtime = cc-base.wtime = 0; - continue; - } + if (cc-base.wtime cc-base.allocated) { + assert(oc-base.wtime cc-base.wtime); + if (store_nr_active 1) { /* move delta */ + sql_delta *b = cc-data, *p = NULL; - assert(oc-base.wtime cc-base.wtime); - if (store_nr_active 1) { /* move delta */ - sql_delta *b = cc-data, *p = NULL; - - cc-data = NULL; - b-next = oc-data; - oc-data = b; - while (b b-wtime oldest-stime) { - p = b; - b = b-next; +
MonetDB: Oct2014 - fix for bug 3565
Changeset: b8bc6d228e06 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b8bc6d228e06 Modified Files: sql/server/rel_schema.c Branch: Oct2014 Log Message: fix for bug 3565 diffs (14 lines): diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -1069,7 +1069,9 @@ rel_alter_table(mvc *sql, dlist *qname, s = cur_schema(sql); if ((t = mvc_bind_table(sql, s, tname)) == NULL) { - return sql_error(sql, 02, 42S02!ALTER TABLE: no such table '%s', tname); + if (mvc_bind_table(sql, mvc_bind_schema(sql, tmp), tname) != NULL) + return sql_error(sql, 02, 42S02!ALTER TABLE: not supported on TEMPORARY table '%s', tname); + return sql_error(sql, 02, 42S02!ALTER TABLE: no such table '%s' in schema '%s', tname, s-base.name); } else { node *n; sql_rel *res = NULL, *r; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - fixes for alter table set null
Changeset: fadce444aea7 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fadce444aea7 Modified Files: sql/backends/monet5/sql.c sql/storage/bat/bat_table.c sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err Branch: default Log Message: fixes for alter table set null and approved output diffs (43 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -569,7 +569,11 @@ alter_table(mvc *sql, char *sname, sql_t /* for non empty check for nulls */ if (c-null == 0) { void *nilptr = ATOMnilptr(c-type.type-localtype); - if (table_funcs.column_find_row(sql-session-tr, nc, nilptr, NULL) != oid_nil) + rids *nils = table_funcs.rids_select(sql-session-tr, nc, nilptr, NULL, NULL); + int has_nils = (table_funcs.rids_next(nils) != oid_nil); + + table_funcs.rids_destroy(nils); + if (has_nils) return sql_message(40002!ALTER TABLE: NOT NULL constraint violated for column %s.%s, c-t-base.name, c-base.name); } } diff --git a/sql/storage/bat/bat_table.c b/sql/storage/bat/bat_table.c --- a/sql/storage/bat/bat_table.c +++ b/sql/storage/bat/bat_table.c @@ -274,7 +274,7 @@ rids_select( sql_trans *tr, sql_column * b = full_column(tr, key); if (!kvl) kvl = ATOMnilptr(b-ttype); - if (!kvh) + if (!kvh key_value_low != ATOMnilptr(b-ttype)) kvh = ATOMnilptr(b-ttype); hi = (kvl == kvh); r = BATsubselect(b, s, kvl, kvh, 1, hi, 0); diff --git a/sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err b/sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err --- a/sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err +++ b/sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err @@ -69,9 +69,9 @@ stderr of test 'primekeyconstraint.SF-27 # 08:02:34 mclient -lsql -umonetdb -Pmonetdb --host=eir --port=30582 # 08:02:34 -MAPI = (monetdb) /var/tmp/mtest-23599/.s.monetdb.33852 +MAPI = (monetdb) /var/tmp/mtest-11898/.s.monetdb.35572 QUERY = ALTER TABLE way_nds ADD CONSTRAINT pk_way_nds PRIMARY KEY (way, idx); -ERROR = !UPDATE: PRIMARY KEY constraint 'way_nds.pk_way_nds' violated +ERROR = !ALTER TABLE: NOT NULL constraint violated for column way_nds.way # 08:02:34 # 08:02:34 Done. ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - more string 2 decimal fixes. fixes bug 3558
Changeset: a14d4678c148 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a14d4678c148 Modified Files: sql/backends/monet5/sql_round_impl.h sql/server/sql_decimal.c sql/server/sql_decimal.h sql/server/sql_parser.y Branch: Oct2014 Log Message: more string 2 decimal fixes. fixes bug 3558 diffs (93 lines): diff --git a/sql/backends/monet5/sql_round_impl.h b/sql/backends/monet5/sql_round_impl.h --- a/sql/backends/monet5/sql_round_impl.h +++ b/sql/backends/monet5/sql_round_impl.h @@ -290,7 +290,7 @@ str str_2dec(TYPE *res, str *val, int *d, int *sc) { char *s = strip_extra_zeros(*val); - char *dot = strchr(s, '.'); + char *dot = strchr(s, '.'), *end = NULL; int digits = _strlen(s) - 1; int scale = digits - (int) (dot - s); lng value = 0; @@ -305,8 +305,10 @@ str_2dec(TYPE *res, str *val, int *d, in } else { /* we have a dot in the string */ digits--; } + if (digits = 0) + throw(SQL, STRING(TYPE), decimal (%s) doesn't have format (%d.%d), *val, *d, *sc); - value = decimal_from_str(s); + value = decimal_from_str(s, end); if (*s == '+' || *s == '-') digits--; if (scale *sc) { @@ -333,7 +335,7 @@ str_2dec(TYPE *res, str *val, int *d, in throw(SQL, STRING(TYPE), rounding of decimal (%s) doesn't fit format (%d.%d), *val, *d, *sc); } } - if (digits *d) { + if (digits = 0 || digits *d || *end) { throw(SQL, STRING(TYPE), decimal (%s) doesn't have format (%d.%d), *val, *d, *sc); } *res = (TYPE) value; diff --git a/sql/server/sql_decimal.c b/sql/server/sql_decimal.c --- a/sql/server/sql_decimal.c +++ b/sql/server/sql_decimal.c @@ -22,11 +22,13 @@ #include sql_decimal.h lng -decimal_from_str(char *dec) +decimal_from_str(char *dec, char **end) { lng res = 0; int neg = 0; + while(isspace(*dec)) + dec++; if (*dec == '-') { neg = 1; dec++; @@ -35,12 +37,16 @@ decimal_from_str(char *dec) neg = 0; dec++; } - for (; *dec; dec++) { + for (; *dec ((*dec = '0' *dec = '9') || *dec == '.'); dec++) { if (*dec != '.') { res *= 10; res += *dec - '0'; } } + while(isspace(*dec)) + dec++; + if (end) + *end = dec; if (neg) return -res; else diff --git a/sql/server/sql_decimal.h b/sql/server/sql_decimal.h --- a/sql/server/sql_decimal.h +++ b/sql/server/sql_decimal.h @@ -24,7 +24,7 @@ #include sql_types.h #include gdk.h -extern lng decimal_from_str(char *dec); +extern lng decimal_from_str(char *dec, char **end); extern char * decimal_to_str(lng v, sql_subtype *t); #endif /* _SQL_DECIMAL_H */ diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -4160,7 +4160,7 @@ literal: digits = 1; if (digits = 18) { double val = strtod($1,NULL); - lng value = decimal_from_str(s); + lng value = decimal_from_str(s, NULL); if (*s == '+' || *s == '-') digits --; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - fixed problem with rel_distinct_project2groupby
Changeset: 9e7c6d4e336d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9e7c6d4e336d Modified Files: sql/server/rel_optimizer.c sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out Branch: Jan2014 Log Message: fixed problem with rel_distinct_project2groupby diffs (240 lines): diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -1994,14 +1994,16 @@ rel_distinct_project2groupby(int *change node *n; list *exps = new_exp_list(sql-sa), *gbe = new_exp_list(sql-sa); + rel-l = rel_project(sql-sa, rel-l, rel-exps); + for (n = rel-exps-h; n; n = n-next) { sql_exp *e = n-data; if (e-card CARD_ATOM) { /* no need to group by on constants */ - append(gbe, e); if (!exp_name(e)) exp_label(sql-sa, e, ++sql-label); e = exp_column(sql-sa, exp_relname(e), exp_name(e), exp_subtype(e), exp_card(e), has_nil(e), 0); + append(gbe, e); } append(exps, e); } diff --git a/sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out b/sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out --- a/sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out +++ b/sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out @@ -61,14 +61,18 @@ Ready. % .plan # table_name % rel # name % clob # type -% 43 # length +% 45 # length project ( | distinct union ( | | group by ( -| | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | project ( +| | | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | ) [ t2606a.a ] | | ) [ t2606a.a ] [ t2606a.a ], | | group by ( -| | | table(sys.t2606b) [ t2606b.a ] COUNT +| | | project ( +| | | | table(sys.t2606b) [ t2606b.a ] COUNT +| | | ) [ t2606b.a ] | | ) [ t2606b.a ] [ t2606b.a ] | ) [ t2606a.a as L.a ] ) [ L.a ] [ L.a ASC ] @@ -90,14 +94,18 @@ project ( % .plan # table_name % rel # name % clob # type -% 43 # length +% 45 # length project ( | distinct union ( | | group by ( -| | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | project ( +| | | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | ) [ t2606a.a ] | | ) [ t2606a.a ] [ t2606a.a ], | | group by ( -| | | table(sys.t2606b) [ t2606b.a ] COUNT +| | | project ( +| | | | table(sys.t2606b) [ t2606b.a ] COUNT +| | | ) [ t2606b.a ] | | ) [ t2606b.a ] [ t2606b.a ] | ) [ t2606a.a as L.a ] ) [ L.a ] [ L.a ASC ] @@ -119,14 +127,18 @@ project ( % .plan # table_name % rel # name % clob # type -% 43 # length +% 45 # length project ( | distinct union ( | | group by ( -| | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | project ( +| | | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | ) [ t2606a.a ] | | ) [ t2606a.a ] [ t2606a.a ], | | group by ( -| | | table(sys.t2606b) [ t2606b.a ] COUNT +| | | project ( +| | | | table(sys.t2606b) [ t2606b.a ] COUNT +| | | ) [ t2606b.a ] | | ) [ t2606b.a ] [ t2606b.a ] | ) [ t2606a.a as L.a ] ) [ L.a ] [ L.a ASC ] @@ -148,11 +160,13 @@ project ( % .plan # table_name % rel # name % clob # type -% 43 # length +% 45 # length project ( | except ( | | group by ( -| | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | project ( +| | | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | ) [ t2606a.a ] | | ) [ t2606a.a ] [ t2606a.a ], | | project ( | | | table(sys.t2606b) [ t2606b.a ] COUNT @@ -171,11 +185,13 @@ project ( % .plan # table_name % rel # name % clob # type -% 43 # length +% 45 # length project ( | except ( | | group by ( -| | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | project ( +| | | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | ) [ t2606a.a ] | | ) [ t2606a.a ] [ t2606a.a ], | | project ( | | | table(sys.t2606b) [ t2606b.a ] COUNT @@ -194,11 +210,13 @@ project ( % .plan # table_name % rel # name % clob # type -% 43 # length +% 45 # length project ( | except ( | | group by ( -| | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | project ( +| | | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | ) [ t2606a.a ] | | ) [ t2606a.a ] [ t2606a.a ], | | project ( | | | table(sys.t2606b) [ t2606b.a ] COUNT @@ -217,11 +235,13 @@ project ( % .plan # table_name % rel # name % clob # type -% 43 # length +% 45 # length project ( | intersect ( | | group by ( -| | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | project ( +| | | | table(sys.t2606a) [ t2606a.a ] COUNT +| | | ) [ t2606a.a ] | | ) [ t2606a.a ] [ t2606a.a ], | | project ( | | | table(sys.t2606b) [ t2606b.a ] COUNT @@ -240,11 +260,13 @@ project ( % .plan # table_name % rel # name % clob # type -% 43 # length
MonetDB: Oct2014 - merged with Jan2014
Changeset: 54202575eb20 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=54202575eb20 Modified Files: gdk/gdk_calc_compare.h sql/server/rel_optimizer.c sql/server/rel_schema.c sql/server/rel_select.c sql/server/sql_parser.y sql/server/sql_scan.c sql/storage/bat/bat_storage.c sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out sql/test/Tests/identifiers.stable.err sql/test/Tests/identifiers.stable.out Branch: Oct2014 Log Message: merged with Jan2014 diffs (truncated from 493 to 300 lines): diff --git a/gdk/gdk_calc_compare.h b/gdk/gdk_calc_compare.h --- a/gdk/gdk_calc_compare.h +++ b/gdk/gdk_calc_compare.h @@ -32,11 +32,12 @@ op_typeswitchloop(const void *lft, int t switch (tp1) { case TYPE_void: { - oid v; + oid v = oid_nil; assert(incr1 == 1); assert(tp2 == TYPE_oid || incr2 == 1); /* if void, incr2==1 */ - v = * (const oid *) lft; + if (lft) + v = * (const oid *) lft; CANDLOOP(dst, k, TPE_nil, 0, start); if (v == oid_nil || tp2 == TYPE_void) { TPE res = v == oid_nil || * (const oid *) rgt == oid_nil ? diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -2044,14 +2044,16 @@ rel_distinct_project2groupby(int *change node *n; list *exps = new_exp_list(sql-sa), *gbe = new_exp_list(sql-sa); + rel-l = rel_project(sql-sa, rel-l, rel-exps); + for (n = rel-exps-h; n; n = n-next) { sql_exp *e = n-data; if (e-card CARD_ATOM) { /* no need to group by on constants */ - append(gbe, e); if (!exp_name(e)) exp_label(sql-sa, e, ++sql-label); e = exp_column(sql-sa, exp_relname(e), exp_name(e), exp_subtype(e), exp_card(e), has_nil(e), 0); + append(gbe, e); } append(exps, e); } diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -1007,6 +1007,9 @@ rel_create_schema(mvc *sql, dlist *auth_ sql_error(sql, 02, 42000!CREATE SCHEMA: insufficient privileges for user '%s', stack_get_string(sql, current_user)); return NULL; } + if (!name) + name = auth; + assert(name); if (mvc_bind_schema(sql, name)) { sql_error(sql, 02, 3F000!CREATE SCHEMA: name '%s' already in use, name); return NULL; @@ -1016,9 +1019,7 @@ rel_create_schema(mvc *sql, dlist *auth_ sql_schema *ss = SA_ZNEW(sql-sa, sql_schema); sql_rel *ret; - ret = rel_schema(sql-sa, DDL_CREATE_SCHEMA, - dlist_get_schema_name(auth_name), - schema_auth(auth_name), 0); + ret = rel_schema(sql-sa, DDL_CREATE_SCHEMA, name, auth, 0); ss-base.name = name; ss-auth_id = auth_id; diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -3845,10 +3845,8 @@ static sql_exp * if (groupby-op != op_groupby) /* implicit groupby */ *rel = rel_project2groupby(sql, groupby); - if (!*rel) { - rel_destroy(groupby); + if (!*rel) return NULL; - } if (f == sql_where) { char *uaname = malloc(strlen(aname) + 1); diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -1061,9 +1061,9 @@ opt_column: ; create_statement: - role_def + create role_def { $$ = $2; } | create table_def{ $$ = $2; } - | view_def + | create view_def { $$ = $2; } | type_def | func_def | index_def @@ -1279,18 +1279,18 @@ CREATE [ UNIQUE ] INDEX index_name */ role_def: -create ROLE ident opt_grantor +ROLE ident opt_grantor { dlist *l = L(); - append_string(l, $3); + append_string(l, $2); + append_int(l, $3); + $$ = _symbol_create_list( SQL_CREATE_ROLE, l ); } + | USER ident WITH opt_encrypted PASSWORD string sqlNAME string SCHEMA ident + { dlist *l = L(); + append_string(l, $2); + append_string(l, $6); + append_string(l, $8); + append_string(l, $10); append_int(l, $4); - $$ = _symbol_create_list( SQL_CREATE_ROLE, l ); } - | create USER ident WITH opt_encrypted PASSWORD string sqlNAME
MonetDB: Oct2014 - merged with Jan2014
Changeset: 9ebc12a6aaa3 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9ebc12a6aaa3 Modified Files: sql/server/rel_dump.c Branch: Oct2014 Log Message: merged with Jan2014 diffs (12 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -772,6 +772,8 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re old = *e; *e = 0; + tname = sa_strdup(sql-sa, tname); + cname = sa_strdup(sql-sa, cname); if (lrel) { exp = rel_bind_column2(sql, lrel, tname, cname, 0); if (!exp rrel) ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - fixed problem with rel_read
Changeset: b269679b2f63 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b269679b2f63 Modified Files: sql/server/rel_dump.c Branch: Jan2014 Log Message: fixed problem with rel_read diffs (12 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -744,6 +744,8 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re old = *e; *e = 0; + tname = sa_strdup(sql-sa, tname); + cname = sa_strdup(sql-sa, cname); if (lrel) { exp = rel_bind_column2(sql, lrel, tname, cname, 0); if (!exp rrel) ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - merged with Oct2014
Changeset: 69eac417e424 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=69eac417e424 Added Files: clients/R/MonetDB.R/R/dbi.R clients/R/MonetDB.R/R/dplyr.R clients/R/MonetDB.R/R/mapi.R Removed Files: clients/R/MonetDB.R/R/monetdb.R Modified Files: clients/R/MonetDB.R/DESCRIPTION clients/R/MonetDB.R/NAMESPACE clients/R/MonetDB.R/NEWS clients/R/Tests/dplyr.R configure.ag gdk/gdk_calc_compare.h gdk/gdk_join.c sql/backends/monet5/sql_round_impl.h sql/server/rel_dump.c sql/server/rel_optimizer.c sql/server/rel_schema.c sql/server/rel_select.c sql/server/sql_decimal.c sql/server/sql_decimal.h sql/server/sql_parser.y sql/server/sql_scan.c sql/storage/bat/bat_storage.c sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out sql/test/Tests/identifiers.stable.err sql/test/Tests/identifiers.stable.out Branch: default Log Message: merged with Oct2014 diffs (truncated from 2917 to 300 lines): diff --git a/clients/R/MonetDB.R/DESCRIPTION b/clients/R/MonetDB.R/DESCRIPTION --- a/clients/R/MonetDB.R/DESCRIPTION +++ b/clients/R/MonetDB.R/DESCRIPTION @@ -5,6 +5,7 @@ Authors@R: c(person(Hannes Muehleisen, person(Thomas Lumley, role = ctb), person(Anthony Damico, role = ctb)) Depends: DBI (= 0.3), digest (= 0.6.4), bitops (= 1.0), methods +Suggests: dplyr(= 0.2.0.9000) Description: Allows to pull data from MonetDB into R License: MPL (== 1.1) URL: http://monetr.r-forge.r-project.org diff --git a/clients/R/MonetDB.R/NAMESPACE b/clients/R/MonetDB.R/NAMESPACE --- a/clients/R/MonetDB.R/NAMESPACE +++ b/clients/R/MonetDB.R/NAMESPACE @@ -4,16 +4,9 @@ import(DBI,digest,methods,bitops) export(MonetDB,MonetR,MonetDBR,MonetDB.R) export(monet.read.csv,monetdb.read.csv) # this one is not in the DBI -exportMethods(dbSendUpdate,dbSendUpdateAsync,dbTransaction) -export(monetdbGetTransferredBytes) -export(monetdbRtype) -export(monetdb_queryinfo) - -# shorthand for db connections -export(mc) - -# shorthand for db queries -export(mq) +exportMethods(dbSendUpdate,dbSendUpdateAsync,dbTransaction,dbIsValid) +# shorthands +export(mc,mq) # control.R export(monetdb.server.setup) @@ -22,3 +15,17 @@ export(monetdb.server.stop) export(monetdbd.liststatus) export(monetdb.liststatus) useDynLib(MonetDB.R) + +# dplyr.R +export(src_monetdb) +export(translate_env.src_monetdb) +export(brief_desc.src_monetdb) +export(tbl.src_monetdb) +export(db_query_fields.MonetDBConnection) +export(db_query_rows.MonetDBConnection) +export(db_save_query.MonetDBConnection) +export(db_insert_into.MonetDBConnection) +export(db_create_index.MonetDBConnection) +export(db_analyze.MonetDBConnection) +export(db_begin.MonetDBConnection) +export(sql_subquery.MonetDBConnection) diff --git a/clients/R/MonetDB.R/NEWS b/clients/R/MonetDB.R/NEWS --- a/clients/R/MonetDB.R/NEWS +++ b/clients/R/MonetDB.R/NEWS @@ -5,6 +5,8 @@ 0.9.5 - DBI 0.3 compatibility (isValid etc.) - deprecated dbTransaction() (DBI has standardized dbBegin()) - Back to R socket code for peace of mind +- Code cleanup +- dplyr integration moved to MonetDB.R 0.9.4 - dbWriteTable overhaul (thanks, Anthony) diff --git a/clients/R/MonetDB.R/R/dbi.R b/clients/R/MonetDB.R/R/dbi.R new file mode 100644 --- /dev/null +++ b/clients/R/MonetDB.R/R/dbi.R @@ -0,0 +1,657 @@ +C_LIBRARY - MonetDB.R + +.onLoad - function(lib, pkg) { + if (getOption(monetdb.clib, FALSE)) { +library.dynam( C_LIBRARY, pkg, lib ) +.Call(mapiInit, PACKAGE=C_LIBRARY) + } +} + +# Make S4 aware of S3 classes +setOldClass(c(sockconn, connection, monetdb_mapi_conn)) + +### MonetDBDriver +setClass(MonetDBDriver, representation(DBIDriver)) + +# allow instantiation of this driver with MonetDB to allow existing programs to work +MonetR - MonetDB - MonetDBR - MonetDB.R - function() { + new(MonetDBDriver) +} + +# dbIsValid is missing from the DBI 0.3, so redefine +setGeneric(dbIsValid, + def = function(dbObj, ...) standardGeneric(dbIsValid), + valueClass = logical) + +setMethod(dbIsValid, MonetDBDriver, def=function(dbObj, ...) { + return(TRUE) # driver object cannot be invalid +}) + +setMethod(dbUnloadDriver, MonetDBDriver, def=function(drv, ...) { + return(TRUE) # there is nothing to really unload here... +}) + +setMethod(dbGetInfo, MonetDBDriver, def=function(dbObj, ...) + list(name=MonetDBDriver, + driver.version=packageVersion(MonetDB.R), + DBI.version=packageVersion(DBI), + client.version=NA, + max.connections=125) # R can only handle 128 connections, three of which are pre-allocated +) + +# shorthand for connecting to the DB, very handy, e.g. dbListTables(mc(acs)) +mc - function(dbname=demo, user=monetdb, password=monetdb, host=localhost, port=5L, + timeout=86400L, wait=FALSE, language=sql, ...) { + +
MonetDB: Oct2014 - fixed bug string 2 decimal conversion
Changeset: 7d00b5e5604d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7d00b5e5604d Modified Files: sql/backends/monet5/sql_round_impl.h sql/test/bugs/Tests/alter_add_column-bug.stable.err Branch: Oct2014 Log Message: fixed bug string 2 decimal conversion diffs (47 lines): diff --git a/sql/backends/monet5/sql_round_impl.h b/sql/backends/monet5/sql_round_impl.h --- a/sql/backends/monet5/sql_round_impl.h +++ b/sql/backends/monet5/sql_round_impl.h @@ -291,8 +291,8 @@ str_2dec(TYPE *res, str *val, int *d, in { char *s = strip_extra_zeros(*val); char *dot = strchr(s, '.'), *end = NULL; - int digits = _strlen(s) - 1; - int scale = digits - (int) (dot - s); + int digits = _strlen(s); + int scale = digits - (int) (dot - s) - 1; lng value = 0; if (!dot) { @@ -305,7 +305,7 @@ str_2dec(TYPE *res, str *val, int *d, in } else { /* we have a dot in the string */ digits--; } - if (digits = 0) + if (digits 0) throw(SQL, STRING(TYPE), decimal (%s) doesn't have format (%d.%d), *val, *d, *sc); value = decimal_from_str(s, end); @@ -335,7 +335,7 @@ str_2dec(TYPE *res, str *val, int *d, in throw(SQL, STRING(TYPE), rounding of decimal (%s) doesn't fit format (%d.%d), *val, *d, *sc); } } - if (digits = 0 || digits *d || *end) { + if (value = -scales[*d] || value = scales[*d] || *end) { throw(SQL, STRING(TYPE), decimal (%s) doesn't have format (%d.%d), *val, *d, *sc); } *res = (TYPE) value; diff --git a/sql/test/bugs/Tests/alter_add_column-bug.stable.err b/sql/test/bugs/Tests/alter_add_column-bug.stable.err --- a/sql/test/bugs/Tests/alter_add_column-bug.stable.err +++ b/sql/test/bugs/Tests/alter_add_column-bug.stable.err @@ -12,9 +12,9 @@ stderr of test 'alter_add_column-bug` in # 23:04:06 mclient -lsql -umonetdb -Pmonetdb --host=koala --port=36740 # 23:04:06 -MAPI = (monetdb) /var/tmp/mtest-23209/.s.monetdb.33225 +MAPI = (monetdb) /var/tmp/mtest-28252/.s.monetdb.32257 QUERY = ALTER TABLE myschema.COLLECTION_INFO ADD COLUMN test_col1 varchar(256); -ERROR = !ALTER TABLE: no such table 'COLLECTION_INFO' +ERROR = !ALTER TABLE: no such table 'COLLECTION_INFO' in schema 'myschema' # 23:04:06 # 23:04:06 Done. ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - merged with Oct2014
Changeset: 8f10a8b13e77 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8f10a8b13e77 Modified Files: sql/backends/monet5/sql_round_impl.h sql/test/bugs/Tests/alter_add_column-bug.stable.err Branch: default Log Message: merged with Oct2014 diffs (47 lines): diff --git a/sql/backends/monet5/sql_round_impl.h b/sql/backends/monet5/sql_round_impl.h --- a/sql/backends/monet5/sql_round_impl.h +++ b/sql/backends/monet5/sql_round_impl.h @@ -291,8 +291,8 @@ str_2dec(TYPE *res, str *val, int *d, in { char *s = strip_extra_zeros(*val); char *dot = strchr(s, '.'), *end = NULL; - int digits = _strlen(s) - 1; - int scale = digits - (int) (dot - s); + int digits = _strlen(s); + int scale = digits - (int) (dot - s) - 1; lng value = 0; if (!dot) { @@ -305,7 +305,7 @@ str_2dec(TYPE *res, str *val, int *d, in } else { /* we have a dot in the string */ digits--; } - if (digits = 0) + if (digits 0) throw(SQL, STRING(TYPE), decimal (%s) doesn't have format (%d.%d), *val, *d, *sc); value = decimal_from_str(s, end); @@ -335,7 +335,7 @@ str_2dec(TYPE *res, str *val, int *d, in throw(SQL, STRING(TYPE), rounding of decimal (%s) doesn't fit format (%d.%d), *val, *d, *sc); } } - if (digits = 0 || digits *d || *end) { + if (value = -scales[*d] || value = scales[*d] || *end) { throw(SQL, STRING(TYPE), decimal (%s) doesn't have format (%d.%d), *val, *d, *sc); } *res = (TYPE) value; diff --git a/sql/test/bugs/Tests/alter_add_column-bug.stable.err b/sql/test/bugs/Tests/alter_add_column-bug.stable.err --- a/sql/test/bugs/Tests/alter_add_column-bug.stable.err +++ b/sql/test/bugs/Tests/alter_add_column-bug.stable.err @@ -12,9 +12,9 @@ stderr of test 'alter_add_column-bug` in # 23:04:06 mclient -lsql -umonetdb -Pmonetdb --host=koala --port=36740 # 23:04:06 -MAPI = (monetdb) /var/tmp/mtest-23209/.s.monetdb.33225 +MAPI = (monetdb) /var/tmp/mtest-28252/.s.monetdb.32257 QUERY = ALTER TABLE myschema.COLLECTION_INFO ADD COLUMN test_col1 varchar(256); -ERROR = !ALTER TABLE: no such table 'COLLECTION_INFO' +ERROR = !ALTER TABLE: no such table 'COLLECTION_INFO' in schema 'myschema' # 23:04:06 # 23:04:06 Done. ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - fixed handling of * and x.* in group by queries
Changeset: cee6feb62c92 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cee6feb62c92 Modified Files: sql/server/rel_select.c Branch: Oct2014 Log Message: fixed handling of * and x.* in group by queries diffs (51 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -194,7 +194,7 @@ exp_alias_or_copy( mvc *sql, char *tname /* return all expressions, with table name == tname */ static list * -rel_table_projections( mvc *sql, sql_rel *rel, char *tname ) +rel_table_projections( mvc *sql, sql_rel *rel, char *tname, int level ) { list *exps; @@ -214,15 +214,15 @@ rel_table_projections( mvc *sql, sql_rel case op_left: case op_right: case op_full: - exps = rel_table_projections( sql, rel-l, tname); + exps = rel_table_projections( sql, rel-l, tname, level+1); if (exps) return exps; - return rel_table_projections( sql, rel-r, tname); + return rel_table_projections( sql, rel-r, tname, level+1); case op_apply: case op_semi: case op_anti: case op_select: - return rel_table_projections( sql, rel-l, tname); + return rel_table_projections( sql, rel-l, tname, level+1); case op_topn: case op_sample: @@ -231,8 +231,8 @@ rel_table_projections( mvc *sql, sql_rel case op_except: case op_inter: case op_project: - if (!is_processed(rel)) - return rel_table_projections( sql, rel-l, tname); + if (!is_processed(rel) level == 0) + return rel_table_projections( sql, rel-l, tname, level+1); /* fall through */ case op_table: case op_basetable: @@ -4902,7 +4902,7 @@ rel_table_exp(mvc *sql, sql_rel **rel, s char *tname = column_e-data.lval-h-data.sval; list *exps; - if ((exps = rel_table_projections(sql, *rel, tname)) != NULL) + if ((exps = rel_table_projections(sql, *rel, tname, 0)) != NULL) return exps; if (!tname) return sql_error(sql, 02, ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - merged with Jan2014
Changeset: 307281054d25 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=307281054d25 Modified Files: sql/storage/store.c Branch: Oct2014 Log Message: merged with Jan2014 diffs (12 lines): diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -2304,7 +2304,7 @@ rollforward_changeset_updates(sql_trans if (fs-dset) { for (n = fs-dset-h; ok == LOG_OK n; n = n-next) { sql_base *fb = n-data; - node *tbn = cs_find_name(ts, fb-name); + node *tbn = cs_find_id(ts, fb-id); if (tbn) { sql_base *tb = tbn-data; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Jan2014 - added missing subuniform_dbl code
Changeset: c1d63c67c6bb for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c1d63c67c6bb Modified Files: monetdb5/modules/mal/sample.c monetdb5/modules/mal/sample.h monetdb5/modules/mal/sample.mal Branch: Jan2014 Log Message: added missing subuniform_dbl code diffs (50 lines): diff --git a/monetdb5/modules/mal/sample.c b/monetdb5/modules/mal/sample.c --- a/monetdb5/modules/mal/sample.c +++ b/monetdb5/modules/mal/sample.c @@ -132,3 +132,24 @@ SAMPLEuniform_dbl(bat *r, bat *b, dbl *p BBPunfix(bb-batCacheid); return SAMPLEuniform(r, b, s); } + +str +SAMPLEsubuniform_dbl(bat *r, bat *b, dbl *p) { + BAT *bb; + double pr = *p; + wrd s; + + if ( pr 0.0 || pr 1.0 ) { + throw(MAL, sample.subuniform, ILLEGAL_ARGUMENT +p should be between 0 and 1.0 ); + } else if (pr == 0) {/* special case */ + s = 0; + return SAMPLEsubuniform(r, b, s); + } + if ((bb = BATdescriptor(*b)) == NULL) { + throw(MAL, sample.uniform, INTERNAL_BAT_ACCESS); + } + s = (wrd) (pr*(double)BATcount(bb)); + BBPunfix(bb-batCacheid); + return SAMPLEsubuniform(r, b, s); +} diff --git a/monetdb5/modules/mal/sample.h b/monetdb5/modules/mal/sample.h --- a/monetdb5/modules/mal/sample.h +++ b/monetdb5/modules/mal/sample.h @@ -47,4 +47,7 @@ SAMPLEsubuniform(bat *r, bat *b, wrd *s) sample_export str SAMPLEuniform_dbl(bat *r, bat *b, dbl *p); +sample_export str +SAMPLEsubuniform_dbl(bat *r, bat *b, dbl *p); + #endif diff --git a/monetdb5/modules/mal/sample.mal b/monetdb5/modules/mal/sample.mal --- a/monetdb5/modules/mal/sample.mal +++ b/monetdb5/modules/mal/sample.mal @@ -34,3 +34,7 @@ comment Returns the oids of a uniform s command uniform(b:bat[:oid,:any],p:dbl):bat[:oid,:any] address SAMPLEuniform_dbl comment Returns a uniform sample of size = (p x count(b)), where 0 = p = 1.0 + +command subuniform(b:bat[:oid,:any],p:dbl):bat[:oid,:oid] +address SAMPLEsubuniform_dbl +comment Returns the oids of a uniform sample of size = (p x count(b)), where 0 = p = 1.0; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Oct2014 - Once we logged enough 'updates', we try to fl...
Changeset: a5743f049052 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a5743f049052 Modified Files: sql/storage/store.c Branch: Oct2014 Log Message: Once we logged enough 'updates', we try to flush the log as quickly as possible (ie check for silent moment (no active transactions) every 50 msec). In the old scheme we tried to flush only every 30seconds, but the change for 'no active transactions' is then to small. diffs (21 lines): diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -1581,11 +1581,15 @@ store_manager(void) return; } MT_lock_set(bs_lock, store_manager); - if (store_nr_active || GDKexiting() || - logger_funcs.changes() 1000) { + if (GDKexiting() || logger_funcs.changes() 1000) { MT_lock_unset(bs_lock, store_manager); continue; } + while (store_nr_active) { /* find a moment to flush */ + MT_lock_unset(bs_lock, store_manager); + MT_sleep_ms(50); + MT_lock_set(bs_lock, store_manager); + } logging = 1; /* make sure we reset all transactions on re-activation */ gtrans-wstime = timestamp(); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list