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]