MonetDB: resource_management - merge with default
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
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
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...
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
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
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.
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...
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
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...
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