Changeset: 250f771255c3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/250f771255c3
Branch: default
Log Message:

Merge with Aug2024 branch.


diffs (135 lines):

diff --git a/common/stream/Tests/urlstream.py b/common/stream/Tests/urlstream.py
--- a/common/stream/Tests/urlstream.py
+++ b/common/stream/Tests/urlstream.py
@@ -9,25 +9,6 @@ import time
 
 OUTPUT = io.StringIO()
 
-def wait_for_server(timeout):
-    deadline = time.time() + timeout
-    while time.time() < deadline:
-        if port == 0:
-            time.sleep(0.25)
-            continue
-        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        s.settimeout(0.1)
-        try:
-            s.connect(('localhost', port))
-            break
-        except ConnectionRefusedError:
-            time.sleep(0.1)
-        finally:
-            s.close()
-    else:
-        print(f'Warning: waited {timeout} seconds for the server to start but 
could still not connect', file=OUTPUT)
-
-
 class Handler(http.server.BaseHTTPRequestHandler):
     def log_message(self, format, *args):
         # add a # at the beginning of the line to not mess up Mtest diffs
@@ -66,19 +47,23 @@ class Handler(http.server.BaseHTTPReques
             self.end_headers()
             self.wfile.write(b'NOT FOUND\n')
 
+b = threading.Barrier(2)
+
 def runserver():
     global port
     addr = ('127.0.0.1', 0)
     srv = http.server.HTTPServer(addr, Handler)
     port = srv.server_port
     print(f"Listening on {port}", file=OUTPUT)
+    b.wait()
     srv.serve_forever()
 
 # Start the http server
 port = 0
 t = threading.Thread(target=lambda: runserver(), daemon=True)
 t.start()
-wait_for_server(5.0)
+# and wait for it to fill in the port
+b.wait()
 
 url = f'http://localhost:{port}'
 
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -817,11 +817,26 @@ COLcopy(BAT *b, int tt, bool writable, r
         * table and that would result in buckets containing values
         * beyond the original vheap that we're copying */
        MT_lock_set(&b->theaplock);
+       BAT *pb = NULL, *pvb = NULL;
+       if (b->theap->parentid != b->batCacheid) {
+               pb = BBP_desc(b->theap->parentid);
+               MT_lock_set(&pb->theaplock);
+       }
+       if (b->tvheap &&
+           b->tvheap->parentid != b->batCacheid &&
+           b->tvheap->parentid != b->theap->parentid) {
+               pvb = BBP_desc(b->tvheap->parentid);
+               MT_lock_set(&pvb->theaplock);
+       }
        bi = bat_iterator_nolock(b);
        if (ATOMstorage(b->ttype) == TYPE_str && b->tvheap->free >= 
GDK_STRHASHSIZE)
                memcpy(strhash, b->tvheap->base, GDK_STRHASHSIZE);
 
        bat_iterator_incref(&bi);
+       if (pvb)
+               MT_lock_unset(&pvb->theaplock);
+       if (pb)
+               MT_lock_unset(&pb->theaplock);
        MT_lock_unset(&b->theaplock);
 
        /* first try case (1); create a view, possibly with different
diff --git a/gdk/gdk_calc_private.h b/gdk/gdk_calc_private.h
--- a/gdk/gdk_calc_private.h
+++ b/gdk/gdk_calc_private.h
@@ -36,7 +36,7 @@
 #include "gdk_cand.h"
 
 #ifdef HAVE___BUILTIN_ADD_OVERFLOW
-#define OP_WITH_CHECK(lft, rgt, dst, op, nil, max, on_overflow)                
\
+#define OP_WITH_CHECK(lft, rgt, dst, op, max, on_overflow)             \
        do {                                                            \
                if (__builtin_##op##_overflow(lft, rgt, &(dst)) ||      \
                    (dst) < -(max) || (dst) > (max)) {                  \
@@ -68,7 +68,7 @@
 #ifdef HAVE___BUILTIN_ADD_OVERFLOW
 /* integer version using Gnu CC builtin function for overflow check */
 #define ADDI_WITH_CHECK(lft, rgt, TYPE3, dst, max, on_overflow)                
\
-       OP_WITH_CHECK(lft, rgt, dst, add, TYPE3##_nil, max, on_overflow)
+       OP_WITH_CHECK(lft, rgt, dst, add, max, on_overflow)
 #else
 /* integer version using generic version */
 #define ADDI_WITH_CHECK(lft, rgt, TYPE3, dst, max, on_overflow) \
@@ -102,7 +102,7 @@
 #ifdef HAVE___BUILTIN_ADD_OVERFLOW
 /* integer version using Gnu CC builtin function for overflow check */
 #define SUBI_WITH_CHECK(lft, rgt, TYPE3, dst, max, on_overflow)                
\
-       OP_WITH_CHECK(lft, rgt, dst, sub, TYPE3##_nil, max, on_overflow)
+       OP_WITH_CHECK(lft, rgt, dst, sub, max, on_overflow)
 #else
 /* integer version using generic version */
 #define SUBI_WITH_CHECK(lft, rgt, TYPE3, dst, max, on_overflow) \
@@ -130,9 +130,9 @@
 #ifdef HAVE___BUILTIN_ADD_OVERFLOW
 /* integer version using Gnu CC builtin function for overflow check */
 #define MULI4_WITH_CHECK(lft, rgt, TYPE3, dst, max, TYPE4, on_overflow) \
-       OP_WITH_CHECK(lft, rgt, dst, mul, TYPE3##_nil, max, on_overflow)
+       OP_WITH_CHECK(lft, rgt, dst, mul, max, on_overflow)
 #define LNGMUL_CHECK(lft, rgt, dst, max, on_overflow)                  \
-       OP_WITH_CHECK(lft, rgt, dst, mul, lng_nil, max, on_overflow)
+       OP_WITH_CHECK(lft, rgt, dst, mul, max, on_overflow)
 #else
 /* integer version using generic version */
 #define MULI4_WITH_CHECK(lft, rgt, TYPE3, dst, max, TYPE4, on_overflow) \
@@ -195,7 +195,7 @@
 #ifdef HAVE_HGE
 #ifdef HAVE___BUILTIN_ADD_OVERFLOW
 #define HGEMUL_CHECK(lft, rgt, dst, max, on_overflow)                  \
-       OP_WITH_CHECK(lft, rgt, dst, mul, hge_nil, max, on_overflow)
+       OP_WITH_CHECK(lft, rgt, dst, mul, max, on_overflow)
 #else
 #define HGEMUL_CHECK(lft, rgt, dst, max, on_overflow)                  \
        do {                                                            \
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to