Changeset: 4f09cc113461 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4f09cc113461 Modified Files: cmake/monetdb-versions.cmake gdk/gdk_align.c gdk/gdk_batop.c gdk/gdk_project.c sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_statement.c sql/server/rel_exp.c sql/server/rel_optimizer.c sql/server/rel_rel.c sql/server/rel_rewriter.c sql/server/rel_unnest.c sql/server/rel_updates.c sql/test/SQLancer/Tests/sqlancer03.sql sql/test/SQLancer/Tests/sqlancer03.stable.out Branch: default Log Message:
Merged with oscar diffs (truncated from 905 to 300 lines): diff --git a/cmake/monetdb-versions.cmake b/cmake/monetdb-versions.cmake --- a/cmake/monetdb-versions.cmake +++ b/cmake/monetdb-versions.cmake @@ -6,26 +6,6 @@ # Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V. #]] -set(GDK_VERSION_MAJOR "20") -set(GDK_VERSION_MINOR "3") -set(GDK_VERSION_PATCH "0") -set(GDK_VERSION "${GDK_VERSION_MAJOR}.${GDK_VERSION_MINOR}.${GDK_VERSION_PATCH}") - -set(MAPI_VERSION_MAJOR "12") -set(MAPI_VERSION_MINOR "4") -set(MAPI_VERSION_PATCH "0") -set(MAPI_VERSION "${MAPI_VERSION_MAJOR}.${MAPI_VERSION_MINOR}.${MAPI_VERSION_PATCH}") - -set(MONETDB5_VERSION_MAJOR "29") -set(MONETDB5_VERSION_MINOR "3") -set(MONETDB5_VERSION_PATCH "0") -set(MONETDB5_VERSION "${MONETDB5_VERSION_MAJOR}.${MONETDB5_VERSION_MINOR}.${MONETDB5_VERSION_PATCH}") - -set(STREAM_VERSION_MAJOR "13") -set(STREAM_VERSION_MINOR "5") -set(STREAM_VERSION_PATCH "0") -set(STREAM_VERSION "${STREAM_VERSION_MAJOR}.${STREAM_VERSION_MINOR}.${STREAM_VERSION_PATCH}") - set(MONETDB_VERSION_MAJOR "11") set(MONETDB_VERSION_MINOR "38") set(MONETDB_VERSION_PATCH "0") @@ -42,3 +22,64 @@ if(RELEASE_VERSION) # set(MONETDB_RELEASE "unreleased") endif() set(MONETDB_VERSION "${MONETDB_VERSION_MAJOR}.${MONETDB_VERSION_MINOR}.${MONETDB_VERSION_PATCH}") + +# Version numbers for the shared libraries that we provide +# the numbers are: <CURRENT>:<REVISION>:<AGE> +# The scheme used here comes from libtool but is also usable in the +# current context. +# These numbers must be changed according to the following rules +# (follow them all in order): + +# 1. Update the version information only immediately before a public +# release. +# 2. If the library source code has changed at all since the last +# update, then increment REVISION (`C:R:A' becomes `C:r+1:A'). +# 3. If any interfaces have been added, removed, or changed since the +# last update, increment CURRENT, and set REVISION to 0. +# 4. If any interfaces have been added since the last public release, +# then increment AGE. +# 5. If any interfaces have been removed or changed since the last +# public release, then set AGE to 0. + +# In other words +# X if there are no code changes, don't change version numbers; +# FIX if there are changes to the code (bug fixes) but no API changes, +# just increment REVISION; +# NEW if there are only backward compatible API changes (new +# interfaces), increment both CURRENT and AGE, and set REVISION to +# 0; +# BRK if there are also incompatible API changes (interfaces removed or +# changed), increment CURRENT, and set AGE and REVISION to 0. +# IMPORTANT: also change debian package names for the relevant +# library. This involves renaming the file in debian/ and +# updating references to the package in debian/control. The version +# number should match the ELF SONAME + +# version of the GDK library (subdirectory gdk; also includes +# common/options and common/utils) +set(GDK_VERSION_CURRENT "20") +set(GDK_VERSION_REVISION "3") +set(GDK_VERSION_AGE "0") +math(EXPR GDK_VERSION_MAJOR "${GDK_VERSION_CURRENT} - ${GDK_VERSION_AGE}") +set(GDK_VERSION "${GDK_VERSION_MAJOR}.${GDK_VERSION_AGE}.${GDK_VERSION_REVISION}") + +# version of the MAPI library (subdirectory clients/mapilib) +set(MAPI_VERSION_CURRENT "12") +set(MAPI_VERSION_REVISION "4") +set(MAPI_VERSION_AGE "0") +math(EXPR MAPI_VERSION_MAJOR "${MAPI_VERSION_CURRENT} - ${MAPI_VERSION_AGE}") +set(MAPI_VERSION "${MAPI_VERSION_MAJOR}.${MAPI_VERSION_AGE}.${MAPI_VERSION_REVISION}") + +# version of the MONETDB5 library (subdirectory monetdb5, not including extras or sql) +set(MONETDB5_VERSION_CURRENT "29") +set(MONETDB5_VERSION_REVISION "3") +set(MONETDB5_VERSION_AGE "0") +math(EXPR MONETDB5_VERSION_MAJOR "${MONETDB5_VERSION_CURRENT} - ${MONETDB5_VERSION_AGE}") +set(MONETDB5_VERSION "${MONETDB5_VERSION_MAJOR}.${MONETDB5_VERSION_AGE}.${MONETDB5_VERSION_REVISION}") + +# version of the STREAM library (subdirectory common/stream) +set(STREAM_VERSION_CURRENT "13") +set(STREAM_VERSION_REVISION "5") +set(STREAM_VERSION_AGE "0") +math(EXPR STREAM_VERSION_MAJOR "${STREAM_VERSION_CURRENT} - ${STREAM_VERSION_AGE}") +set(STREAM_VERSION "${STREAM_VERSION_MAJOR}.${STREAM_VERSION_AGE}.${STREAM_VERSION_REVISION}") diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c --- a/gdk/gdk_align.c +++ b/gdk/gdk_align.c @@ -129,10 +129,14 @@ VIEWcreate(oid seq, BAT *b) /* Order OID index */ bn->torderidx = NULL; if (BBPcacheit(bn, true) != GDK_SUCCEED) { /* enter in BBP */ - if (tp) + if (tp) { BBPunshare(tp); - if (bn->tvheap) + BBPunfix(tp); + } + if (bn->tvheap) { BBPunshare(bn->tvheap->parentid); + BBPunfix(bn->tvheap->parentid); + } MT_lock_destroy(&bn->batIdxLock); GDKfree(bn); return NULL; diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c --- a/gdk/gdk_batop.c +++ b/gdk/gdk_batop.c @@ -37,6 +37,7 @@ unshare_string_heap(BAT *b) return GDK_FAIL; } BBPunshare(b->tvheap->parentid); + BBPunfix(b->tvheap->parentid); b->tvheap = h; } return GDK_SUCCEED; @@ -106,6 +107,7 @@ insert_string_bat(BAT *b, BAT *n, struct ci->tpe == cand_dense) { if (b->tvheap->parentid != bid) { BBPunshare(b->tvheap->parentid); + BBPunfix(b->tvheap->parentid); } else { HEAPfree(b->tvheap, true); GDKfree(b->tvheap); @@ -417,6 +419,7 @@ append_varsized_bat(BAT *b, BAT *n, stru * to n's */ if (b->tvheap->parentid != b->batCacheid) { BBPunshare(b->tvheap->parentid); + BBPunfix(b->tvheap->parentid); } else { HEAPfree(b->tvheap, true); GDKfree(b->tvheap); @@ -468,6 +471,7 @@ append_varsized_bat(BAT *b, BAT *n, stru return GDK_FAIL; } BBPunshare(b->tvheap->parentid); + BBPunfix(b->tvheap->parentid); b->tvheap = h; } /* copy data from n to b */ diff --git a/gdk/gdk_project.c b/gdk/gdk_project.c --- a/gdk/gdk_project.c +++ b/gdk/gdk_project.c @@ -542,7 +542,8 @@ BATprojectchain(BAT **bats) }; allnil |= b->ttype == TYPE_void && is_oid_nil(b->tseqbase); issorted &= b->tsorted; - nonil &= b->tnonil; + if (bats[n + 1]) + nonil &= b->tnonil; if (b->tnonil && b->tkey && b->tsorted && ATOMtype(b->ttype) == TYPE_oid) { canditer_init(&ba[n].ci, NULL, b); @@ -634,7 +635,7 @@ BATprojectchain(BAT **bats) } if (stringtrick) { bn->tnil = false; - bn->tnonil = nonil; + bn->tnonil = b->tnonil; bn->tkey = false; BBPshare(b->tvheap->parentid); bn->tvheap = b->tvheap; @@ -683,7 +684,7 @@ BATprojectchain(BAT **bats) BATsetcount(bn, ba[0].cnt); bn->tsorted = (ba[0].cnt <= 1) | issorted; bn->trevsorted = ba[0].cnt <= 1; - bn->tnonil = nonil; + bn->tnonil = nonil & b->tnonil; bn->tseqbase = oid_nil; GDKfree(ba); TRC_DEBUG(ALGO, "with %d bats: " ALGOOPTBATFMT " " LLFMT " usec\n", 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 @@ -2027,7 +2027,7 @@ join_hash_key( backend *be, list *l ) } static stmt * -releqjoin( backend *be, list *l1, list *l2, list *exps, int used_hash, comp_type cmp_op, int need_left, int is_semantics ) +releqjoin( backend *be, list *l1, list *l2, list *exps, int used_hash, int need_left, int is_semantics ) { mvc *sql = be->mvc; node *n1 = l1->h, *n2 = l2->h, *n3 = NULL; @@ -2043,7 +2043,7 @@ releqjoin( backend *be, list *l1, list * e = n3->data; is_semantics = is_semantics(e); } - r = stmt_join(be, l, r, 0, cmp_op, need_left, is_semantics, false); + r = stmt_join(be, l, r, 0, cmp_equal, need_left, is_semantics, false); return r; } if (used_hash) { @@ -2052,11 +2052,11 @@ releqjoin( backend *be, list *l1, list * n1 = n1->next; n2 = n2->next; n3 = n3?n3->next:NULL; - res = stmt_join(be, l, r, 0, cmp_op, need_left, 1, false); + res = stmt_join(be, l, r, 0, cmp_equal, need_left, 1, false); } else { /* need hash */ l = join_hash_key(be, l1); r = join_hash_key(be, l2); - res = stmt_join(be, l, r, 0, cmp_op, need_left, 1, false); + res = stmt_join(be, l, r, 0, cmp_equal, need_left, 1, false); } l = stmt_result(be, res, 0); r = stmt_result(be, res, 1); @@ -2228,7 +2228,7 @@ rel2bin_join(backend *be, sql_rel *rel, } if (join) { - en = rel->exps->h; + en = jexps->h; } else { list *lje = sa_list(sql->sa), *rje = sa_list(sql->sa), *exps = sa_list(sql->sa); int used_hash = 0, idx = 0, equality_only = 1; @@ -2279,7 +2279,7 @@ rel2bin_join(backend *be, sql_rel *rel, list_append(exps, e); } if (list_length(lje) > 1) { - join = releqjoin(be, lje, rje, exps, used_hash, cmp_equal, need_left, 0); + join = releqjoin(be, lje, rje, exps, used_hash, need_left, 0); } else if (!join || need_left) { sql_exp *e = exps->h->data; join = stmt_join(be, lje->h->data, rje->h->data, 0, cmp_equal, need_left, is_semantics(e), false); @@ -2522,7 +2522,7 @@ rel2bin_semijoin(backend *be, sql_rel *r } if (join) { - en = rel->exps->h; + en = jexps->h; } else { list *lje = sa_list(sql->sa), *rje = sa_list(sql->sa), *exps = sa_list(sql->sa); int idx = 0, equality_only = 1; @@ -2602,7 +2602,7 @@ rel2bin_semijoin(backend *be, sql_rel *r } } if (list_length(lje) > 1) { - join = releqjoin(be, lje, rje, exps, 0 /* no hash used */, cmp_equal, 0, 0); + join = releqjoin(be, lje, rje, exps, 0 /* use hash */, 0, 0); } else if (!join && list_length(lje) == list_length(rje) && list_length(lje)) { sql_exp *e = exps->h->data; join = stmt_join(be, lje->h->data, rje->h->data, 0, cmp_equal, 0, is_semantics(e), false); @@ -2879,7 +2879,7 @@ rel2bin_except(backend *be, sql_rel *rel list_append(lje, l); list_append(rje, r); } - s = releqjoin(be, lje, rje, NULL, 1 /* cannot use hash */, cmp_equal, 0, 1 /*is_semantics*/); + s = releqjoin(be, lje, rje, NULL, 0 /* use hash */, 0, 1 /*is_semantics*/); lm = stmt_result(be, s, 0); rm = stmt_result(be, s, 1); @@ -2990,7 +2990,7 @@ rel2bin_inter(backend *be, sql_rel *rel, list_append(lje, l); list_append(rje, r); } - s = releqjoin(be, lje, rje, NULL, 1 /* cannot use hash */, cmp_equal, 0, 1 /* is_semantics */); + s = releqjoin(be, lje, rje, NULL, 0 /* use hash */, 0, 1 /* is_semantics */); lm = stmt_result(be, s, 0); rm = stmt_result(be, s, 1); @@ -3698,7 +3698,7 @@ insert_check_ukey(backend *be, list *ins list_append(lje, col); list_append(rje, cs); } - s = releqjoin(be, lje, rje, NULL, 1 /* hash used */, cmp_equal, 0, 0); + s = releqjoin(be, lje, rje, NULL, 1 /* hash used */, 0, 0); s = stmt_result(be, s, 0); } s = stmt_binop(be, stmt_aggr(be, s, NULL, NULL, cnt, 1, 0, 1), stmt_atom_lng(be, 0), ne); @@ -4151,7 +4151,7 @@ update_check_ukey(backend *be, stmt **up list_append(lje, stmt_col(be, c->c, nu_tids, nu_tids->partition)); list_append(rje, upd); } - s = releqjoin(be, lje, rje, NULL, 1 /* hash used */, cmp_equal, 0, 0); + s = releqjoin(be, lje, rje, NULL, 1 /* hash used */, 0, 0); s = stmt_result(be, s, 0); s = stmt_binop(be, stmt_aggr(be, s, NULL, NULL, cnt, 1, 0, 1), stmt_atom_lng(be, 0), ne); } @@ -4445,7 +4445,7 @@ join_updated_pkey(backend *be, sql_key * list_append(lje, upd); list_append(rje, col); } - s = releqjoin(be, lje, rje, NULL, 1 /* hash used */, cmp_equal, 0, 0); + s = releqjoin(be, lje, rje, NULL, 1 /* hash used */, 0, 0); s = stmt_result(be, s, 0); /* add missing nulls */ @@ -4693,7 +4693,7 @@ join_idx_update(backend *be, sql_idx * i list_append(lje, check_types(be, &rc->c->type, upd, type_equal)); list_append(rje, stmt_col(be, rc->c, ptids, ptids->partition)); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list