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

Reply via email to