Changeset: c44ecd10331a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c44ecd10331a
Modified Files:
        .github/workflows/linux.yml
        gdk/gdk_batop.c
        gdk/gdk_project.c
Branch: pp_hashjoin
Log Message:

Merge with default branch.


diffs (128 lines):

diff --git a/.editorconfig b/.editorconfig
--- a/.editorconfig
+++ b/.editorconfig
@@ -27,3 +27,7 @@ trim_trailing_whitespace = true
 [{clients/{mapilib,odbc},gdk}/**.{c,h}{,.in}]
 tab_width = 8
 max_line_length = 72
+
+[*.yml]
+indent_style = space
+indent_size = 2
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -19,8 +19,8 @@ jobs:
     strategy:
       fail-fast: false  # don't stop other jobs
       matrix:
-        os: [ ubuntu-latest, macos-latest, windows-latest ]
-        c_compiler: [ gcc, clang, cl ]
+        os: [ ubuntu-latest, ubuntu-24.04-arm ]
+        c_compiler: [ gcc, clang ]
         include:
           - os: windows-latest
             c_compiler: cl
@@ -28,21 +28,8 @@ jobs:
             c_compiler: clang
           - os: macos-latest
             c_compiler: gcc-14
-          - os: ubuntu-latest
-            c_compiler: gcc
-          - os: ubuntu-latest
-            c_compiler: clang
-        exclude:
-          - os: windows-latest
-            c_compiler: gcc
-          - os: windows-latest
-            c_compiler: clang
-          - os: macos-latest
-            c_compiler: cl
-          - os: macos-latest
-            c_compiler: gcc
-          - os: ubuntu-latest
-            c_compiler: cl
+          #- os: windows-11-arm
+          #  c_compiler: cl
     runs-on: ${{ matrix.os }}
     steps:
       - name: Checkout
diff --git a/debian/control b/debian/control
--- a/debian/control
+++ b/debian/control
@@ -8,7 +8,7 @@ Vcs-Hg: https://dev.monetdb.org/hg/Monet
 Build-Depends: debhelper-compat (= 12), cmake (>= 3.12), bison,
  libbz2-dev, libcurl4-gnutls-dev, libgeos-dev (>= 3.10.0),
  libpcre2-dev, libreadline-dev, liblzma-dev, liblz4-dev (>= 1.8.0),
- libxml2-dev, pkg-config, libxxash-dev,
+ libxml2-dev, pkg-config, libxxhash-dev,
  python3,
  unixodbc-dev, zlib1g-dev,
  libcfitsio-dev, libssl-dev (>= 1.1.1)
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -160,11 +160,26 @@ insert_string_bat(BAT *b, BATiter *ni, s
                toff = 0;
                b->tvkey |= ni->vkey;
                MT_thread_setalgorithm("shared vheap", __func__);
+       } else if (ni->vhfree <= GDK_STRHASHSIZE &&
+                  (!GDK_ELIMDOUBLES(b->tvheap) ||
+                   strLocate(b->tvheap, str_nil) == 0)) {
+               /* the incoming bat's vheap is empty, meaning the bat
+                * contains only nil values, if the destination bat's
+                * nil is also at offset 0, we can just copy zeros */
+               toff = 0;
+               MT_thread_setalgorithm("empty source vheap (just nils)",
+                                      __func__);
        } else if (b->ustr) {
                MT_thread_setalgorithm("individual inserts into ustr", 
__func__);
-       } else if (mayshare && b->batRole == TRANSIENT && oldcnt == 0 && 
ni->b->tvheap->storage != STORE_NOWN) {
+       } else if (mayshare && b->batRole == TRANSIENT &&
+                  ni->vh->storage != STORE_NOWN &&
+                  (oldcnt == 0 || (b->tvheap->free <= GDK_STRHASHSIZE &&
+                                   (!GDK_ELIMDOUBLES(ni->vh) ||
+                                    strLocate(ni->vh, str_nil) == 0)))) {
                /* we can share the vheaps, so we then only need to
-                * append the offsets */
+                * append the offsets; the condition is: b is empty, or
+                * its vheap is empty (i.e. there are only nils) and the
+                * incoming heap also stores them with offset 0 */
                MT_lock_set(&b->theaplock);
                bat bid = b->tvheap->parentid;
                HEAPdecref(b->tvheap, bid == b->batCacheid);
diff --git a/gdk/gdk_project.c b/gdk/gdk_project.c
--- a/gdk/gdk_project.c
+++ b/gdk/gdk_project.c
@@ -396,6 +396,7 @@ BATproject2(BAT *restrict l, BAT *restri
                lo = l->tseqbase;
                hi = l->tseqbase + lcount;
                if (lo >= r1->hseqbase && hi <= r1->hseqbase + r1i.count) {
+                       MT_thread_setalgorithm("using slice", __func__);
                        bn = BATslice(r1, lo - r1->hseqbase, hi - r1->hseqbase);
                        BAThseqbase(bn, l->hseqbase);
                        msg = " (slice)";
@@ -409,6 +410,7 @@ BATproject2(BAT *restrict l, BAT *restri
                        return NULL;
                }
                if (lo >= r2->hseqbase) {
+                       MT_thread_setalgorithm("using slice", __func__);
                        bn = BATslice(r2, lo - r2->hseqbase, hi - r2->hseqbase);
                        BAThseqbase(bn, l->hseqbase);
                        msg = " (slice2)";
@@ -439,6 +441,7 @@ BATproject2(BAT *restrict l, BAT *restri
                /* trivial: all values are nil (includes no entries at all) */
                const void *nil = r1i.type == TYPE_msk ? &oid_nil : 
ATOMnilptr(r1i.type);
 
+               MT_thread_setalgorithm("constant result", __func__);
                bn = BATconstant(l->hseqbase, r1i.type == TYPE_oid || r1i.type 
== TYPE_msk ? TYPE_void : r1i.type,
                                 nil, lcount, TRANSIENT);
                if (bn != NULL &&
@@ -459,6 +462,7 @@ BATproject2(BAT *restrict l, BAT *restri
                         * heaps */
                        tpe = r1i.width == 1 ? TYPE_bte : (r1i.width == 2 ? 
TYPE_sht : (r1i.width == 4 ? TYPE_int : TYPE_lng));
                        vheaptrick = true;
+                       MT_thread_setalgorithm("using vheaptrick", __func__);
                }
        } else if (tpe == TYPE_msk || mask_cand(r1)) {
                r1 = BATunmask(r1);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to