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]