MonetDB: resource_management - merge with default

2024-09-18 Thread svetlin via checkin-list
Changeset: d7d1962ffa2c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d7d1962ffa2c
Branch: resource_management
Log Message:

merge with default


diffs (91 lines):

diff --git a/testing/tlstester.py b/testing/tlstester.py
--- a/testing/tlstester.py
+++ b/testing/tlstester.py
@@ -416,6 +416,32 @@ class TLSTester:
 for t in threads:
 t.join()
 
+def spawn_server(self, name, server_class, addr, port, handler):
+fam = server_class.address_family.name
+try:
+server = server_class((addr, port), handler)
+except Exception as e:
+log.debug(f"Could not bind {name} to {fam} = {addr} port {port}: 
{e}")
+raise
+bound_addr, bound_port = server.server_address[:2]
+log.debug(f"Bound {name}: {fam} = {bound_addr} port {bound_port}")
+self.portmap[name] = bound_port
+self.workers.append(server.serve_forever)
+return bound_port
+
+def spawn_servers(self, name, server_classes, addr, port, handler):
+exceptions = []
+for server_class in server_classes:
+try:
+# update 'port' so all servers use the same port number
+port = self.spawn_server(name, server_class, addr, port, 
handler)
+except OSError as e:
+exceptions.append(e)
+if len(exceptions) == len(server_classes):
+e = exceptions[0]
+log.error(f"Could not spawn any listener for {name} on {addr}: 
{e}")
+raise e
+
 def spawn_http(self, name: str, only_preassigned: bool):
 if only_preassigned and name not in self.preassigned:
 return
@@ -425,11 +451,7 @@ class TLSTester:
 handler = lambda req, addr, server: WebHandler(
 req, addr, server, self.certs, self.portmap
 )
-server = http.server.HTTPServer((self.listen_addr, port), handler)
-port = server.server_address[1]
-log.debug(f"Bound port {name} to {port}")
-self.portmap[name] = port
-self.workers.append(server.serve_forever)
+self.spawn_servers(name, [MyHTTPServer, MyHTTP6Server], 
self.listen_addr, port, handler)
 
 def spawn_mapi(self, name: str, only_preassigned, ctx: SSLContext, 
check_alpn=None, redirect_to=None):
 if only_preassigned and name not in self.preassigned:
@@ -438,11 +460,7 @@ class TLSTester:
 return
 port = self.allocate_port(name)
 handler = lambda req, addr, server: MapiHandler(req, addr, server, 
self, name, ctx, check_alpn, redirect_to)
-server = MyTCPServer((self.listen_addr, port), handler)
-port = server.server_address[1]
-log.debug(f"Bound port {name} to {port}")
-self.portmap[name] = port
-self.workers.append(server.serve_forever)
+self.spawn_servers(name, [MyTCPServer, MyTCP6Server], 
self.listen_addr, port, handler)
 
 def spawn_forward(self, name, ctx: SSLContext):
 if name in self.portmap:
@@ -451,11 +469,8 @@ class TLSTester:
 handler = lambda req, addr, server: ForwardHandler(
 req, addr, server, name, ctx, self.forward_to
 )
-server = MyTCPServer((self.listen_addr, local_port), handler)
-port = server.server_address[1]
-log.debug(f"Bound port {name} to {port}")
-self.portmap[name] = port
-self.workers.append(server.serve_forever)
+self.spawn_servers(name, [MyTCPServer, MyTCP6Server], 
self.listen_addr, local_port, handler)
+
 
 def allocate_port(self, name):
 if name in self.preassigned:
@@ -551,6 +566,14 @@ class MyTCPServer(socketserver.Threading
 allow_reuse_address = True
 pass
 
+class MyTCP6Server(MyTCPServer):
+address_family = socket.AF_INET6
+
+class MyHTTPServer(http.server.HTTPServer):
+pass
+
+class MyHTTP6Server(MyHTTPServer):
+address_family = socket.AF_INET6
 
 class MapiHandler(socketserver.BaseRequestHandler):
 tlstester: TLSTester
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: resource_management - sanotizer fixes

2024-09-18 Thread svetlin via checkin-list
Changeset: 1b9ae8272033 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1b9ae8272033
Modified Files:
monetdb5/mal/mal_parser.c
Branch: resource_management
Log Message:

sanotizer fixes


diffs (106 lines):

diff --git a/monetdb5/mal/mal_parser.c b/monetdb5/mal/mal_parser.c
--- a/monetdb5/mal/mal_parser.c
+++ b/monetdb5/mal/mal_parser.c
@@ -2039,8 +2039,8 @@ parseAssign(Client cntxt, int cntrl)
l = idLength(cntxt);
i = cstToken(cntxt, curBlk, &cst);
if (l == 0 || i) {
+   freeInstructionX(curInstr, curBlk);
parseError(cntxt, " or  
expected\n");
-   freeInstructionX(curInstr, curBlk);
return;
}
GETvariable(freeInstructionX(curInstr, curBlk));
@@ -2153,8 +2153,8 @@ parseAssign(Client cntxt, int cntrl)
/* continue with parsing a function/operator call */
arg = putNameLen(CURRENT(cntxt), l);
if (arg == NULL) {
+   freeInstructionX(curInstr, curBlk);
parseError(cntxt, SQLSTATE(HY013) MAL_MALLOC_FAIL);
-   freeInstructionX(curInstr, curBlk);
return;
}
advance(cntxt, l + 1);  /* skip '.' too */
@@ -2166,20 +2166,20 @@ parseAssign(Client cntxt, int cntrl)
if (i) {
setFunctionId(curInstr, putNameLen(((char *) 
CURRENT(cntxt)), i));
if (getFunctionId(curInstr) == NULL) {
+   freeInstructionX(curInstr, curBlk);
parseError(cntxt, SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
-   freeInstructionX(curInstr, curBlk);
return;
}
advance(cntxt, i);
} else {
+   freeInstructionX(curInstr, curBlk);
parseError(cntxt, " expected\n");
-   freeInstructionX(curInstr, curBlk);
return;
}
skipSpace(cntxt);
if (currChar(cntxt) != '(') {
+   freeInstructionX(curInstr, curBlk);
parseError(cntxt, "'(' expected\n");
-   freeInstructionX(curInstr, curBlk);
return;
}
advance(cntxt, 1);
@@ -2204,15 +2204,15 @@ parseAssign(Client cntxt, int cntrl)
/* simple arithmetic operator expression */
setFunctionId(curInstr, putNameLen(((char *) CURRENT(cntxt)), 
i));
if (getFunctionId(curInstr) == NULL) {
+   freeInstructionX(curInstr, curBlk);
parseError(cntxt, SQLSTATE(HY013) MAL_MALLOC_FAIL);
-   freeInstructionX(curInstr, curBlk);
return;
}
advance(cntxt, i);
curInstr->modname = putName("calc");
if (curInstr->modname == NULL) {
+   freeInstructionX(curInstr, curBlk);
parseError(cntxt, SQLSTATE(HY013) MAL_MALLOC_FAIL);
-   freeInstructionX(curInstr, curBlk);
return;
}
if ((l = idLength(cntxt))
@@ -2227,18 +2227,18 @@ parseAssign(Client cntxt, int cntrl)
case 3:
goto part3;
}
+   freeInstructionX(curInstr, curBlk);
parseError(cntxt, " expected\n");
-   freeInstructionX(curInstr, curBlk);
return;
} else {
skipSpace(cntxt);
if (currChar(cntxt) == '(') {
+   freeInstructionX(curInstr, curBlk);
parseError(cntxt, "module name missing\n");
-   freeInstructionX(curInstr, curBlk);
return;
} else if (currChar(cntxt) != ';' && currChar(cntxt) != '#') {
+   freeInstructionX(curInstr, curBlk);
parseError(cntxt, "operator expected\n");
-   freeInstructionX(curInstr, curBlk);
return;
}
pushInstruction(curBlk, curInstr);
@@ -2247,16 +2247,16 @@ parseAssign(Client cntxt, int cntrl)
   part3:
skipSpace(cntxt);
if (currChar(cntxt) != ';') {
+   freeInstructionX(curInstr, curBlk);
parseError(cntxt, "';' expected\n");
skipToEnd(cntxt);
-   freeInstructionX(curInstr, curBlk);
return;
}
skipToEnd(cntxt);
if (cntrl == RETURNsymbol
&& !(curInstr->token == ASSIGNsymbo

MonetDB: ordered-set-aggregates - merged with default

2024-09-18 Thread Niels Nes via checkin-list
Changeset: 0c46829beb14 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0c46829beb14
Modified Files:
sql/backends/monet5/sql_cat.c
sql/server/rel_dump.c
sql/server/sql_parser.y
sql/storage/store.c
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.int128
Branch: ordered-set-aggregates
Log Message:

merged with default


diffs (truncated from 8419 to 300 lines):

diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
 # ChangeLog file for devel
 # This file is updated with Maddlog
 
+* Mon Sep 16 2024 Joeri van Ruth 
+- Hot snapshot: allow member files larger than 64 GiB. By member files we mean
+  the files inside the resulting .tar file, not the tar file itself. Huge 
member
+  files are written using a GNU tar extension to the original tar format, which
+  doesn't support more than 8 GiB.
+
diff --git a/clients/Tests/MAL-signatures-hge.test 
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -3782,7 +3782,7 @@ bat
 getSize
 command bat.getSize(X_0:bat[:any_1]):lng
 BKCgetSize;
-Calculate the actual size of the BAT descriptor, heaps, hashes and imprint 
indices in bytes@rounded to the memory page size (see bbp.getPageSize()).
+Calculate the actual size of the BAT descriptor, heaps, hashes in 
bytes@rounded to the memory page size (see bbp.getPageSize()).
 bat
 getVHeapSize
 command bat.getVHeapSize(X_0:bat[:any_1]):lng
@@ -3799,76 +3799,6 @@ pattern bat.hasorderidx(X_0:bat[:any_1])
 OIDXhasorderidx;
 Return true if order index exists
 bat
-imprints
-command bat.imprints(X_0:bat[:bte]):void
-CMDBATimprints;
-(empty)
-bat
-imprints
-command bat.imprints(X_0:bat[:dbl]):void
-CMDBATimprints;
-Check for existence or create an imprint index on the BAT.
-bat
-imprints
-command bat.imprints(X_0:bat[:flt]):void
-CMDBATimprints;
-(empty)
-bat
-imprints
-command bat.imprints(X_0:bat[:hge]):void
-CMDBATimprints;
-(empty)
-bat
-imprints
-command bat.imprints(X_0:bat[:int]):void
-CMDBATimprints;
-(empty)
-bat
-imprints
-command bat.imprints(X_0:bat[:lng]):void
-CMDBATimprints;
-(empty)
-bat
-imprints
-command bat.imprints(X_0:bat[:sht]):void
-CMDBATimprints;
-(empty)
-bat
-imprintsize
-command bat.imprintsize(X_0:bat[:bte]):lng
-CMDBATimprintsize;
-(empty)
-bat
-imprintsize
-command bat.imprintsize(X_0:bat[:dbl]):lng
-CMDBATimprintsize;
-Return the storage size of the imprints index structure.
-bat
-imprintsize
-command bat.imprintsize(X_0:bat[:flt]):lng
-CMDBATimprintsize;
-(empty)
-bat
-imprintsize
-command bat.imprintsize(X_0:bat[:hge]):lng
-CMDBATimprintsize;
-(empty)
-bat
-imprintsize
-command bat.imprintsize(X_0:bat[:int]):lng
-CMDBATimprintsize;
-(empty)
-bat
-imprintsize
-command bat.imprintsize(X_0:bat[:lng]):lng
-CMDBATimprintsize;
-(empty)
-bat
-imprintsize
-command bat.imprintsize(X_0:bat[:sht]):lng
-CMDBATimprintsize;
-(empty)
-bat
 info
 command bat.info(X_0:bat[:any_1]) (X_1:bat[:str], X_2:bat[:str])
 BKCinfo;
@@ -4019,11 +3949,6 @@ command bat.setHash(X_0:bat[:any_1]):bit
 BKCsetHash;
 Create a hash structure on the column
 bat
-setImprints
-command bat.setImprints(X_0:bat[:any_1]):bit
-BKCsetImprints;
-Create an imprints structure on the column
-bat
 setName
 command bat.setName(X_0:bat[:any_1], X_1:str):void
 BKCsetName;
diff --git a/clients/Tests/MAL-signatures.test 
b/clients/Tests/MAL-signatures.test
--- a/clients/Tests/MAL-signatures.test
+++ b/clients/Tests/MAL-signatures.test
@@ -3217,7 +3217,7 @@ bat
 getSize
 command bat.getSize(X_0:bat[:any_1]):lng
 BKCgetSize;
-Calculate the actual size of the BAT descriptor, heaps, hashes and imprint 
indices in bytes@rounded to the memory page size (see bbp.getPageSize()).
+Calculate the actual size of the BAT descriptor, heaps, hashes in 
bytes@rounded to the memory page size (see bbp.getPageSize()).
 bat
 getVHeapSize
 command bat.getVHeapSize(X_0:bat[:any_1]):lng
@@ -3234,66 +3234,6 @@ pattern bat.hasorderidx(X_0:bat[:any_1])
 OIDXhasorderidx;
 Return true if order index exists
 bat
-imprints
-command bat.imprints(X_0:bat[:bte]):void
-CMDBATimprints;
-(empty)
-bat
-imprints
-command bat.imprints(X_0:bat[:dbl]):void
-CMDBATimprints;
-Check for existence or create an imprint index on the BAT.
-bat
-imprints
-command bat.imprints(X_0:bat[:flt]):void
-CMDBATimprints;
-(empty)
-bat
-imprints
-command bat.imprints(X_0:bat[:int]):void
-CMDBATimprints;
-(empty)
-bat
-imprints
-command bat.imprints(X_0:bat[:lng]):void
-CMDBATimprints;
-(empty)
-bat
-imprints
-command bat.imprints(X_0:bat[:sht]):void
-CMDBATimprints;
-(empty)
-bat
-imprintsize
-command bat.imprintsize(X_0:bat[:bte]):lng
-CMDBATimprintsize;
-(empty)
-bat
-imprintsize
-command bat.imprintsize(X_0:bat[:dbl]):lng
-CMDBATimprintsize;
-Return the storage size of the imprints index structure.
-bat
-imprintsize
-command bat.imprintsize(X_0:bat[:flt]):lng
-CMDBATimprintsize;
-(empty)
-bat
-imprintsize
-command bat.i

MonetDB: returning - implement first version of returning clause...

2024-09-18 Thread Yunus Koning via checkin-list
Changeset: 01eb51c80ae0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/01eb51c80ae0
Modified Files:
sql/backends/monet5/rel_bin.c
sql/server/rel_dump.c
sql/server/rel_updates.c
sql/server/sql_parser.y
Branch: returning
Log Message:

implement first version of returning clause on delete statement


diffs (135 lines):

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
@@ -6644,7 +6644,7 @@ static stmt *
 rel2bin_delete(backend *be, sql_rel *rel, list *refs)
 {
mvc *sql = be->mvc;
-   stmt *stdelete = NULL, *tids = NULL;
+   stmt *stdelete = NULL, *tids = NULL, *s = NULL;
sql_rel *tr = rel->l;
sql_table *t = NULL;
 
@@ -6655,12 +6655,20 @@ rel2bin_delete(backend *be, sql_rel *rel
 
if (rel->r) { /* first construct the deletes relation */
stmt *rows = subrel_bin(be, rel->r, refs);
+   (void) rel_dup(((sql_rel*) rel->r)->l); // rel_dup in case 
returning
rows = subrel_project(be, rows, refs, rel->r);
if (!rows)
return NULL;
assert(rows->type == st_list);
tids = rows->op4.lval->h->data; /* TODO this should be the 
candidate list instead */
}
+
+   if (rel->attr) {
+   sql_rel* ret = rel_project(sql->sa, ((sql_rel*) rel->r)->l, 
rel->attr);
+   s = subrel_bin(be, ret, refs);
+   s = subrel_project(be, s, refs, rel);
+   sql->type = Q_TABLE;
+   }
stdelete = sql_delete(be, t, tids);
if (sql->cascade_action)
sql->cascade_action = NULL;
@@ -6669,7 +6677,7 @@ rel2bin_delete(backend *be, sql_rel *rel
 
if (rel->r && !rel_predicates(be, rel->r))
return NULL;
-   return stdelete;
+   return s?s:stdelete;
 }
 
 struct tablelist {
@@ -7517,7 +7525,7 @@ subrel_bin(backend *be, sql_rel *rel, li
break;
case op_delete:
s = rel2bin_delete(be, rel, refs);
-   if (sql->type == Q_TABLE)
+   if (!rel->attr && sql->type == Q_TABLE)
sql->type = Q_UPDATE;
break;
case op_truncate:
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -691,6 +691,8 @@ rel_print_rel(mvc *sql, stream  *fout, s
mnstr_printf(fout, ")");
if (rel->op != op_truncate && rel->op != op_merge && rel->exps)
exps_print(sql, fout, rel->exps, depth, refs, 1, 0, 
decorate, 0);
+   if (is_modify(rel->op) && rel->attr) /* returning lists */
+   exps_print(sql, fout, rel->attr, depth, refs, 1, 0, 
decorate, 0);
}   break;
default:
assert(0);
diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
--- a/sql/server/rel_updates.c
+++ b/sql/server/rel_updates.c
@@ -1281,7 +1281,7 @@ rel_truncate(allocator *sa, sql_rel *t, 
 }
 
 static sql_rel *
-delete_table(sql_query *query, dlist *qname, str alias, symbol *opt_where)
+delete_table(sql_query *query, dlist *qname, str alias, symbol *opt_where, 
dlist *opt_returning)
 {
mvc *sql = query->sql;
char *sname = qname_schema(qname);
@@ -1312,6 +1312,16 @@ delete_table(sql_query *query, dlist *qn
} else {/* delete all */
r = rel_delete(sql->sa, r, NULL);
}
+   if (opt_returning) {
+   sql->type = Q_TABLE;
+   list *pexps = sa_list(sql->sa);
+   for (dnode *n = opt_returning->h; n; n = n->next) {
+   sql_rel* inner = r->l;
+   sql_exp *ce = rel_column_exp(query, &inner, 
n->data.sym, sql_sel);
+   pexps = append(pexps, ce);
+   }
+   r->attr = pexps;
+   }
return r;
}
return NULL;
@@ -2197,8 +2207,8 @@ rel_updates(sql_query *query, symbol *s)
{
dlist *l = s->data.lval;
 
-   ret = delete_table(query, l->h->data.lval, 
l->h->next->data.sval, l->h->next->next->data.sym);
-   sql->type = Q_UPDATE;
+   ret = delete_table(query, l->h->data.lval, 
l->h->next->data.sval, l->h->next->next->data.sym, 
l->h->next->next->next->data.lval);
+   if (!ret->attr) sql->type = Q_UPDATE;
}
break;
case SQL_TRUNCATE:
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -515,6 +515,7 @@ int yydebug=1;
opt_schema_element_list
opt_seps
opt_decimal_seps
+   opt_returning_clause
opt_seq_params
opt_typelist

MonetDB: returning - new returning branch

2024-09-18 Thread Yunus Koning via checkin-list
Changeset: 6e401341 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6e401341
Branch: returning
Log Message:

new returning branch

___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - tlstester: listen on both AF_INET and AF_INET6

2024-09-18 Thread Joeri van Ruth via checkin-list
Changeset: ed17ccf72c48 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ed17ccf72c48
Modified Files:
testing/tlstester.py
Branch: default
Log Message:

tlstester: listen on both AF_INET and AF_INET6

This should speed up the tlssecurity test on Windows.


diffs (91 lines):

diff --git a/testing/tlstester.py b/testing/tlstester.py
--- a/testing/tlstester.py
+++ b/testing/tlstester.py
@@ -416,6 +416,32 @@ class TLSTester:
 for t in threads:
 t.join()
 
+def spawn_server(self, name, server_class, addr, port, handler):
+fam = server_class.address_family.name
+try:
+server = server_class((addr, port), handler)
+except Exception as e:
+log.debug(f"Could not bind {name} to {fam} = {addr} port {port}: 
{e}")
+raise
+bound_addr, bound_port = server.server_address[:2]
+log.debug(f"Bound {name}: {fam} = {bound_addr} port {bound_port}")
+self.portmap[name] = bound_port
+self.workers.append(server.serve_forever)
+return bound_port
+
+def spawn_servers(self, name, server_classes, addr, port, handler):
+exceptions = []
+for server_class in server_classes:
+try:
+# update 'port' so all servers use the same port number
+port = self.spawn_server(name, server_class, addr, port, 
handler)
+except OSError as e:
+exceptions.append(e)
+if len(exceptions) == len(server_classes):
+e = exceptions[0]
+log.error(f"Could not spawn any listener for {name} on {addr}: 
{e}")
+raise e
+
 def spawn_http(self, name: str, only_preassigned: bool):
 if only_preassigned and name not in self.preassigned:
 return
@@ -425,11 +451,7 @@ class TLSTester:
 handler = lambda req, addr, server: WebHandler(
 req, addr, server, self.certs, self.portmap
 )
-server = http.server.HTTPServer((self.listen_addr, port), handler)
-port = server.server_address[1]
-log.debug(f"Bound port {name} to {port}")
-self.portmap[name] = port
-self.workers.append(server.serve_forever)
+self.spawn_servers(name, [MyHTTPServer, MyHTTP6Server], 
self.listen_addr, port, handler)
 
 def spawn_mapi(self, name: str, only_preassigned, ctx: SSLContext, 
check_alpn=None, redirect_to=None):
 if only_preassigned and name not in self.preassigned:
@@ -438,11 +460,7 @@ class TLSTester:
 return
 port = self.allocate_port(name)
 handler = lambda req, addr, server: MapiHandler(req, addr, server, 
self, name, ctx, check_alpn, redirect_to)
-server = MyTCPServer((self.listen_addr, port), handler)
-port = server.server_address[1]
-log.debug(f"Bound port {name} to {port}")
-self.portmap[name] = port
-self.workers.append(server.serve_forever)
+self.spawn_servers(name, [MyTCPServer, MyTCP6Server], 
self.listen_addr, port, handler)
 
 def spawn_forward(self, name, ctx: SSLContext):
 if name in self.portmap:
@@ -451,11 +469,8 @@ class TLSTester:
 handler = lambda req, addr, server: ForwardHandler(
 req, addr, server, name, ctx, self.forward_to
 )
-server = MyTCPServer((self.listen_addr, local_port), handler)
-port = server.server_address[1]
-log.debug(f"Bound port {name} to {port}")
-self.portmap[name] = port
-self.workers.append(server.serve_forever)
+self.spawn_servers(name, [MyTCPServer, MyTCP6Server], 
self.listen_addr, local_port, handler)
+
 
 def allocate_port(self, name):
 if name in self.preassigned:
@@ -551,6 +566,14 @@ class MyTCPServer(socketserver.Threading
 allow_reuse_address = True
 pass
 
+class MyTCP6Server(MyTCPServer):
+address_family = socket.AF_INET6
+
+class MyHTTPServer(http.server.HTTPServer):
+pass
+
+class MyHTTP6Server(MyHTTPServer):
+address_family = socket.AF_INET6
 
 class MapiHandler(socketserver.BaseRequestHandler):
 tlstester: TLSTester
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Aug2024 - Fix cleanup in very unlikely error.

2024-09-18 Thread Sjoerd Mullender via checkin-list
Changeset: 23c0e02b47bb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/23c0e02b47bb
Modified Files:
gdk/gdk_logger.c
Branch: Aug2024
Log Message:

Fix cleanup in very unlikely error.


diffs (20 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2429,6 +2429,8 @@ do_flush_range_cleanup(logger *lg)
logged_range *frange = lg->flush_ranges;
logged_range *first = frange;
 
+   if (frange == NULL)
+   return NULL;
while (frange->next) {
if (ATOMIC_GET(&frange->refcount) > 1)
break;
@@ -2532,6 +2534,7 @@ log_create(int debug, const char *fn, co
};
lg->current = &dummy;
if (log_open_output(lg) != GDK_SUCCEED) {
+   lg->current = NULL;
log_destroy(lg);
return NULL;
}
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Backed out changeset 901f41751361: somehow in...

2024-09-18 Thread Sjoerd Mullender via checkin-list
Changeset: 937990369e60 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/937990369e60
Modified Files:
sql/test/rel-optimizers/Tests/groupby-cse.test
sql/test/rel-optimizers/Tests/join-merge-remote-replica-plan.test
sql/test/rel-optimizers/Tests/local-replica.test
sql/test/rel-optimizers/Tests/merge-ors-multi-col-eq-to-cmp_in.test
sql/test/rel-optimizers/Tests/merge-ors-single-col-eq-to-cmp_in.test
sql/test/rel-optimizers/Tests/merge-unions.test
sql/test/rel-optimizers/Tests/replicas-join-plan.test
Branch: default
Log Message:

Backed out changeset 901f41751361: somehow incorrectly approved.


diffs (truncated from 704 to 300 lines):

diff --git a/sql/test/rel-optimizers/Tests/groupby-cse.test 
b/sql/test/rel-optimizers/Tests/groupby-cse.test
--- a/sql/test/rel-optimizers/Tests/groupby-cse.test
+++ b/sql/test/rel-optimizers/Tests/groupby-cse.test
@@ -41,9 +41,9 @@ GROUP BY
 
 project (
 | group by (
-| | table("sys"."foo") [ "foo"."c1", "foo"."c3" ]
-| ) [ "foo"."c1" ] [ "foo"."c1", "sys"."count" no nil ("foo"."c3") NOT NULL as 
"%1"."%1" ]
-) [ "foo"."c1" UNIQUE, "foo"."c1" UNIQUE, "%1"."%1" NOT NULL ]
+| | table("sys"."foo") [ "foo"."c1" NOT NULL ]
+| ) [ "foo"."c1" NOT NULL ] [ "foo"."c1" NOT NULL, "sys"."count"() NOT NULL as 
"%1"."%1" ]
+) [ "foo"."c1" NOT NULL UNIQUE, "foo"."c1" NOT NULL UNIQUE, "%1"."%1" NOT NULL 
]
 
 query III rowsort
 SELECT
@@ -78,9 +78,9 @@ GROUP BY
 
 project (
 | group by (
-| | table("sys"."foo") [ "foo"."c1", "foo"."c3" ]
-| ) [ "foo"."c1" as "c1_alias1" ] [ "c1_alias1", "c1_alias1" as "c1_alias2", 
"sys"."count" no nil ("foo"."c3") NOT NULL as "%1"."%1" ]
-) [ "c1_alias1" UNIQUE, "c1_alias2", "%1"."%1" NOT NULL ]
+| | table("sys"."foo") [ "foo"."c1" NOT NULL ]
+| ) [ "foo"."c1" NOT NULL as "c1_alias1" ] [ "c1_alias1" NOT NULL, "c1_alias1" 
NOT NULL as "c1_alias2", "sys"."count"() NOT NULL as "%1"."%1" ]
+) [ "c1_alias1" NOT NULL UNIQUE, "c1_alias2" NOT NULL, "%1"."%1" NOT NULL ]
 
 query III rowsort gb-over-bt
 SELECT
@@ -126,10 +126,10 @@ GROUP BY
 project (
 | group by (
 | | project (
-| | | table("sys"."foo") [ "foo"."c1", "foo"."c3" ]
-| | ) [ "foo"."c1" as "%1"."a1", "foo"."c3" as "%1"."a3" ]
-| ) [ "%1"."a1" ] [ "%1"."a1", "sys"."count" no nil ("%1"."a3") NOT NULL as 
"%2"."%2" ]
-) [ "%1"."a1" UNIQUE, "%1"."a1" UNIQUE, "%2"."%2" NOT NULL ]
+| | | table("sys"."foo") [ "foo"."c1" NOT NULL, "foo"."c3" NOT NULL ]
+| | ) [ "foo"."c1" NOT NULL as "%1"."a1", "foo"."c3" NOT NULL as "%1"."a3" ]
+| ) [ "%1"."a1" NOT NULL ] [ "%1"."a1" NOT NULL, "sys"."count" no nil 
("%1"."a3" NOT NULL) NOT NULL as "%2"."%2" ]
+) [ "%1"."a1" NOT NULL UNIQUE, "%1"."a1" NOT NULL UNIQUE, "%2"."%2" NOT NULL ]
 
 query III rowsort
 SELECT
@@ -177,10 +177,10 @@ GROUP BY
 project (
 | group by (
 | | project (
-| | | table("sys"."foo") [ "foo"."c1", "foo"."c2" ]
-| | ) [ "foo"."c1" as "sq"."c1_alias1", "sq"."c1_alias1" as "sq"."c1_alias2", 
"foo"."c2" as "sq"."c2" ]
-| ) [ "sq"."c1_alias1", "sq"."c2" ] [ "sq"."c1_alias1", "sq"."c1_alias1" as 
"sq"."c1_alias2", "sq"."c2", "sys"."count" no nil ("sq"."c1_alias2") NOT NULL 
as "%1"."%1" ]
-) [ "sq"."c1_alias1", "sq"."c1_alias2", "sq"."c2", "%1"."%1" NOT NULL ]
+| | | table("sys"."foo") [ "foo"."c1" NOT NULL, "foo"."c2" NOT NULL ]
+| | ) [ "foo"."c1" NOT NULL as "sq"."c1_alias1", "foo"."c2" NOT NULL as 
"sq"."c2" ]
+| ) [ "sq"."c1_alias1" NOT NULL, "sq"."c2" NOT NULL ] [ "sq"."c1_alias1" NOT 
NULL, "sq"."c1_alias1" NOT NULL as "sq"."c1_alias2", "sq"."c2" NOT NULL, 
"sys"."count"() NOT NULL as "%1"."%1" ]
+) [ "sq"."c1_alias1" NOT NULL, "sq"."c1_alias2" NOT NULL, "sq"."c2" NOT NULL, 
"%1"."%1" NOT NULL ]
 
 query III rowsort gb-over-pr
 SELECT
@@ -233,10 +233,10 @@ GROUP BY
 project (
 | group by (
 | | project (
-| | | table("sys"."foo") [ "foo"."c1", "foo"."c2", "foo"."c3" ]
-| | ) [ "foo"."c1" as "sq"."c1", "foo"."c2" as "sq"."c2", "foo"."c3" as 
"sq"."c3" ]
-| ) [ "sq"."c1" as "c1_alias_1", "sq"."c2" ] [ "c1_alias_1", "c1_alias_1" as 
"c1_alias_2", "sys"."count" no nil ("sq"."c3") NOT NULL as "%1"."%1" ]
-) [ "c1_alias_1", "c1_alias_2", "%1"."%1" NOT NULL ]
+| | | table("sys"."foo") [ "foo"."c1" NOT NULL, "foo"."c2" NOT NULL ]
+| | ) [ "foo"."c1" NOT NULL as "sq"."c1", "foo"."c2" NOT NULL as "sq"."c2" ]
+| ) [ "sq"."c1" NOT NULL as "c1_alias_1", "sq"."c2" NOT NULL ] [ "c1_alias_1" 
NOT NULL, "c1_alias_1" NOT NULL as "c1_alias_2", "sys"."count"() NOT NULL as 
"%1"."%1" ]
+) [ "c1_alias_1" NOT NULL, "c1_alias_2" NOT NULL, "%1"."%1" NOT NULL ]
 
 query III rowsort gb-over-pr
 SELECT
@@ -291,10 +291,10 @@ GROUP BY
 project (
 | group by (
 | | project (
-| | | table("sys"."foo") [ "foo"."c1", "foo"."c2", "foo"."c3" ]
-| | ) [ "foo"."c1" as "sq"."c1_in_alias_1", "foo"."c2" as "sq"."c2", 
"foo"."c3" as "sq"."c3" ]
-| ) [ "sq"."c1_in_alias_1" as "c1_out_alias_1", "sq"."c2" ] [ 
"c1_out_alias_1", "c1_out_alias_1" as "c1_out_alias_2", "sys"."count" no nil 
("sq"."c3") NOT NULL as "%1"."%1" 

MonetDB: resource_management - merge with default

2024-09-18 Thread svetlin via checkin-list
Changeset: c39d991f786f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c39d991f786f
Branch: resource_management
Log Message:

merge with default


diffs (truncated from 704 to 300 lines):

diff --git a/sql/test/rel-optimizers/Tests/groupby-cse.test 
b/sql/test/rel-optimizers/Tests/groupby-cse.test
--- a/sql/test/rel-optimizers/Tests/groupby-cse.test
+++ b/sql/test/rel-optimizers/Tests/groupby-cse.test
@@ -41,9 +41,9 @@ GROUP BY
 
 project (
 | group by (
-| | table("sys"."foo") [ "foo"."c1", "foo"."c3" ]
-| ) [ "foo"."c1" ] [ "foo"."c1", "sys"."count" no nil ("foo"."c3") NOT NULL as 
"%1"."%1" ]
-) [ "foo"."c1" UNIQUE, "foo"."c1" UNIQUE, "%1"."%1" NOT NULL ]
+| | table("sys"."foo") [ "foo"."c1" NOT NULL ]
+| ) [ "foo"."c1" NOT NULL ] [ "foo"."c1" NOT NULL, "sys"."count"() NOT NULL as 
"%1"."%1" ]
+) [ "foo"."c1" NOT NULL UNIQUE, "foo"."c1" NOT NULL UNIQUE, "%1"."%1" NOT NULL 
]
 
 query III rowsort
 SELECT
@@ -78,9 +78,9 @@ GROUP BY
 
 project (
 | group by (
-| | table("sys"."foo") [ "foo"."c1", "foo"."c3" ]
-| ) [ "foo"."c1" as "c1_alias1" ] [ "c1_alias1", "c1_alias1" as "c1_alias2", 
"sys"."count" no nil ("foo"."c3") NOT NULL as "%1"."%1" ]
-) [ "c1_alias1" UNIQUE, "c1_alias2", "%1"."%1" NOT NULL ]
+| | table("sys"."foo") [ "foo"."c1" NOT NULL ]
+| ) [ "foo"."c1" NOT NULL as "c1_alias1" ] [ "c1_alias1" NOT NULL, "c1_alias1" 
NOT NULL as "c1_alias2", "sys"."count"() NOT NULL as "%1"."%1" ]
+) [ "c1_alias1" NOT NULL UNIQUE, "c1_alias2" NOT NULL, "%1"."%1" NOT NULL ]
 
 query III rowsort gb-over-bt
 SELECT
@@ -126,10 +126,10 @@ GROUP BY
 project (
 | group by (
 | | project (
-| | | table("sys"."foo") [ "foo"."c1", "foo"."c3" ]
-| | ) [ "foo"."c1" as "%1"."a1", "foo"."c3" as "%1"."a3" ]
-| ) [ "%1"."a1" ] [ "%1"."a1", "sys"."count" no nil ("%1"."a3") NOT NULL as 
"%2"."%2" ]
-) [ "%1"."a1" UNIQUE, "%1"."a1" UNIQUE, "%2"."%2" NOT NULL ]
+| | | table("sys"."foo") [ "foo"."c1" NOT NULL, "foo"."c3" NOT NULL ]
+| | ) [ "foo"."c1" NOT NULL as "%1"."a1", "foo"."c3" NOT NULL as "%1"."a3" ]
+| ) [ "%1"."a1" NOT NULL ] [ "%1"."a1" NOT NULL, "sys"."count" no nil 
("%1"."a3" NOT NULL) NOT NULL as "%2"."%2" ]
+) [ "%1"."a1" NOT NULL UNIQUE, "%1"."a1" NOT NULL UNIQUE, "%2"."%2" NOT NULL ]
 
 query III rowsort
 SELECT
@@ -177,10 +177,10 @@ GROUP BY
 project (
 | group by (
 | | project (
-| | | table("sys"."foo") [ "foo"."c1", "foo"."c2" ]
-| | ) [ "foo"."c1" as "sq"."c1_alias1", "sq"."c1_alias1" as "sq"."c1_alias2", 
"foo"."c2" as "sq"."c2" ]
-| ) [ "sq"."c1_alias1", "sq"."c2" ] [ "sq"."c1_alias1", "sq"."c1_alias1" as 
"sq"."c1_alias2", "sq"."c2", "sys"."count" no nil ("sq"."c1_alias2") NOT NULL 
as "%1"."%1" ]
-) [ "sq"."c1_alias1", "sq"."c1_alias2", "sq"."c2", "%1"."%1" NOT NULL ]
+| | | table("sys"."foo") [ "foo"."c1" NOT NULL, "foo"."c2" NOT NULL ]
+| | ) [ "foo"."c1" NOT NULL as "sq"."c1_alias1", "foo"."c2" NOT NULL as 
"sq"."c2" ]
+| ) [ "sq"."c1_alias1" NOT NULL, "sq"."c2" NOT NULL ] [ "sq"."c1_alias1" NOT 
NULL, "sq"."c1_alias1" NOT NULL as "sq"."c1_alias2", "sq"."c2" NOT NULL, 
"sys"."count"() NOT NULL as "%1"."%1" ]
+) [ "sq"."c1_alias1" NOT NULL, "sq"."c1_alias2" NOT NULL, "sq"."c2" NOT NULL, 
"%1"."%1" NOT NULL ]
 
 query III rowsort gb-over-pr
 SELECT
@@ -233,10 +233,10 @@ GROUP BY
 project (
 | group by (
 | | project (
-| | | table("sys"."foo") [ "foo"."c1", "foo"."c2", "foo"."c3" ]
-| | ) [ "foo"."c1" as "sq"."c1", "foo"."c2" as "sq"."c2", "foo"."c3" as 
"sq"."c3" ]
-| ) [ "sq"."c1" as "c1_alias_1", "sq"."c2" ] [ "c1_alias_1", "c1_alias_1" as 
"c1_alias_2", "sys"."count" no nil ("sq"."c3") NOT NULL as "%1"."%1" ]
-) [ "c1_alias_1", "c1_alias_2", "%1"."%1" NOT NULL ]
+| | | table("sys"."foo") [ "foo"."c1" NOT NULL, "foo"."c2" NOT NULL ]
+| | ) [ "foo"."c1" NOT NULL as "sq"."c1", "foo"."c2" NOT NULL as "sq"."c2" ]
+| ) [ "sq"."c1" NOT NULL as "c1_alias_1", "sq"."c2" NOT NULL ] [ "c1_alias_1" 
NOT NULL, "c1_alias_1" NOT NULL as "c1_alias_2", "sys"."count"() NOT NULL as 
"%1"."%1" ]
+) [ "c1_alias_1" NOT NULL, "c1_alias_2" NOT NULL, "%1"."%1" NOT NULL ]
 
 query III rowsort gb-over-pr
 SELECT
@@ -291,10 +291,10 @@ GROUP BY
 project (
 | group by (
 | | project (
-| | | table("sys"."foo") [ "foo"."c1", "foo"."c2", "foo"."c3" ]
-| | ) [ "foo"."c1" as "sq"."c1_in_alias_1", "foo"."c2" as "sq"."c2", 
"foo"."c3" as "sq"."c3" ]
-| ) [ "sq"."c1_in_alias_1" as "c1_out_alias_1", "sq"."c2" ] [ 
"c1_out_alias_1", "c1_out_alias_1" as "c1_out_alias_2", "sys"."count" no nil 
("sq"."c3") NOT NULL as "%1"."%1" ]
-) [ "c1_out_alias_1", "c1_out_alias_2", "%1"."%1" NOT NULL ]
+| | | table("sys"."foo") [ "foo"."c1" NOT NULL, "foo"."c2" NOT NULL ]
+| | ) [ "foo"."c1" NOT NULL as "sq"."c1_in_alias_1", "foo"."c2" NOT NULL as 
"sq"."c2" ]
+| ) [ "sq"."c1_in_alias_1" NOT NULL as "c1_out_alias_1", "sq"."c2" NOT NULL ] 
[ "c1_out_alias_1" NOT NULL, "c1_out_alias_1" NOT NULL as "c1_out_alias_2", 
"sys"."count"() NOT NULL as "%1"."%1" ]
+) [ "c1_out_alias_1" NOT NULL, "c1_out_alias_2" NOT NULL, "%1"."%1" NOT NULL ]
 
 qu

MonetDB: resource_management - keep track of allocated/freed obj...

2024-09-18 Thread svetlin via checkin-list
Changeset: b7be015fa060 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b7be015fa060
Modified Files:
gdk/gdk.h
gdk/gdk_utils.c
Branch: resource_management
Log Message:

keep track of allocated/freed objects


diffs (88 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -597,11 +597,13 @@ gdk_export _Noreturn void eb_error(excep
 
 typedef struct allocator {
struct allocator *pa;
-   size_t size;
-   size_t nr;
+   size_t size;/* size of the allocator in terms of blocks */
+   size_t nr;  /* number of blocks allocated */
char **blks;
size_t used;/* memory used in last block */
size_t usedmem; /* used memory */
+   size_t objects; /* number of objects */
+   size_t inuse;   /* number of objects in use*/
void *freelist; /* list of freed objects */
void *freelist_blks;/* list of freed blks */
 
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -2099,6 +2099,7 @@ sa_free_obj(allocator *pa, void *obj, si
assert(sz > 0);
assert(!pa->pa); // must be root allocator
size_t i;
+
char *obj_start = (char *) obj;
char *obj_end = obj_start + sz;
 
@@ -2115,6 +2116,8 @@ sa_free_obj(allocator *pa, void *obj, si
f->n = pa->freelist;
f->sz = sz;
pa->freelist = f;
+   if (pa->inuse > 0)
+   pa->inuse -= 1;
 }
 
 static void
@@ -2155,7 +2158,12 @@ sa_use_freed_obj(allocator *pa, size_t s
return sa_use_freed_obj(pa->pa, sz);
freed_t *prev = NULL;
freed_t *curr = pa->freelist;
-   while(curr) {
+   // size_t objects = pa->objects;
+   // size_t inuse = pa->inuse;
+   // size_t nr_free_objects = objects - inuse;
+   int MAX_ITERATIONS = 100;
+   int cntr = 0;
+   while(curr && (cntr <= MAX_ITERATIONS)) {
if (sz == curr->sz) {
if (prev) {
prev->n = curr->n;
@@ -2167,6 +2175,7 @@ sa_use_freed_obj(allocator *pa, size_t s
prev = curr;
curr = curr->n;
}
+   cntr += 1;
}
return NULL;
 }
@@ -2224,6 +2233,8 @@ sa_create(allocator *pa)
return NULL;
}
sa->used = 0;
+   sa->objects = 0;
+   sa->inuse = 0;
sa->tmp_active = 0;
sa->tmp_used = 0;
return sa;
@@ -2242,6 +2253,8 @@ allocator *sa_reset( allocator *sa )
sa->nr = 1;
sa->used = 0;
sa->usedmem = SA_BLOCK_SIZE;
+   sa->objects = 0;
+   sa->inuse = 0;
return sa;
 }
 
@@ -2316,6 +2329,8 @@ sa_alloc( allocator *sa, size_t sz )
r = sa->blks[sa->nr-1] + sa->used;
sa->used += sz;
}
+   sa->objects += 1;
+   sa->inuse += 1;
return r;
 }
 
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org