Changeset: 6008a2c80dde for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/6008a2c80dde Modified Files: MonetDB.spec clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 gdk/gdk_select.c monetdb5/mal/mal_interpreter.c monetdb5/modules/mal/clients.c sql/backends/monet5/sql.c sql/backends/monet5/sql_upgrades.c sql/server/rel_schema.c sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.int128 Branch: default Log Message:
Merge with Jul2021 branch. diffs (truncated from 119606 to 300 lines): diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -196,6 +196,7 @@ functionality of MonetDB. %files devel %defattr(-,root,root) %dir %{_includedir}/monetdb +%{_includedir}/monetdb/copybinary.h %{_includedir}/monetdb/gdk*.h %{_includedir}/monetdb/matomic.h %{_includedir}/monetdb/mstring.h @@ -628,6 +629,7 @@ This package contains files needed to de %package embedded Summary: MonetDB as an embedded library Group: Applications/Databases +Requires: MonetDB5-server%{?_isa} = %{version}-%{release} %description embedded MonetDB is a database management system that is developed from a @@ -636,7 +638,8 @@ automatic index management, extensibilit accelerators. It also has an SQL front end. This package contains the library to turn MonetDB into an embeddable -library. Also see %{name}-embedded-devel to use this in a program. +library, also known as MonetDBe. Also see %{name}-embedded-devel to +use this in a program. %files embedded %{_libdir}/libmonetdbe.so.* @@ -662,6 +665,24 @@ program that uses MonetDB as an embeddab %{_includedir}/monetdb/monetdbe.h %{_libdir}/pkgconfig/monetdbe.pc +%package embedded-tests +Summary: MonetDBe tests package +Group: Applications/Databases +Requires: %{name}-embedded%{?_isa} = %{version}-%{release} + +%description embedded-tests +MonetDB is a database management system that is developed from a +main-memory perspective with use of a fully decomposed storage model, +automatic index management, extensibility of data types and search +accelerators. It also has an SQL front end. + +This package contains some test programs using the %{name}-embedded +package. You probably don't need this, unless you are a developer. + +%files embedded-tests +%defattr(-,root,root) +%{_bindir}/example_proxy + %package testing-python Summary: MonetDB - Monet Database Management System Group: Applications/Databases diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py --- a/NT/mksqlwxs.py +++ b/NT/mksqlwxs.py @@ -175,7 +175,8 @@ def main(): print(r' <Directory Id="monetdb" Name="monetdb">') id = comp(extend, id, 16, sorted([r'include\monetdb\{}'.format(x) for x in filter(lambda x: (x.startswith('gdk') or x.startswith('monet') or x.startswith('mal') or x.startswith('sql')) and x.endswith('.h'), os.listdir(os.path.join(sys.argv[3], 'include', 'monetdb')))] + - [r'include\monetdb\mapi.h', + [r'include\monetdb\copybinary.h', + r'include\monetdb\mapi.h', r'include\monetdb\matomic.h', r'include\monetdb\mel.h', r'include\monetdb\mstring.h', diff --git a/clients/Tests/MAL-signatures.stable.out b/clients/Tests/MAL-signatures.stable.out --- a/clients/Tests/MAL-signatures.stable.out +++ b/clients/Tests/MAL-signatures.stable.out @@ -8339,6 +8339,7 @@ stdout of test 'MAL-signatures` in direc [ "clients", "changePassword", "pattern clients.changePassword(X_0:str, X_1:str):void ", "CLTchangePassword;", "" ] [ "clients", "changeUsername", "pattern clients.changeUsername(X_0:str, X_1:str):void ", "CLTchangeUsername;", "" ] [ "clients", "checkPermission", "pattern clients.checkPermission(X_0:str, X_1:str):void ", "CLTcheckPermission;", "" ] +[ "clients", "current_sessionid", "pattern clients.current_sessionid():int ", "CLTgetSessionID;", "" ] [ "clients", "getId", "pattern clients.getId():int ", "CLTgetClientId;", "" ] [ "clients", "getInfo", "pattern clients.getInfo() (X_0:bat[:str], X_1:bat[:str]) ", "CLTInfo;", "" ] [ "clients", "getLogins", "command clients.getLogins() (X_0:bat[:oid], X_1:bat[:str]) ", "CLTLogin;", "" ] diff --git a/clients/Tests/MAL-signatures.stable.out.int128 b/clients/Tests/MAL-signatures.stable.out.int128 --- a/clients/Tests/MAL-signatures.stable.out.int128 +++ b/clients/Tests/MAL-signatures.stable.out.int128 @@ -11625,6 +11625,7 @@ stdout of test 'MAL-signatures` in direc [ "clients", "changePassword", "pattern clients.changePassword(X_0:str, X_1:str):void ", "CLTchangePassword;", "" ] [ "clients", "changeUsername", "pattern clients.changeUsername(X_0:str, X_1:str):void ", "CLTchangeUsername;", "" ] [ "clients", "checkPermission", "pattern clients.checkPermission(X_0:str, X_1:str):void ", "CLTcheckPermission;", "" ] +[ "clients", "current_sessionid", "pattern clients.current_sessionid():int ", "CLTgetSessionID;", "" ] [ "clients", "getId", "pattern clients.getId():int ", "CLTgetClientId;", "" ] [ "clients", "getInfo", "pattern clients.getInfo() (X_0:bat[:str], X_1:bat[:str]) ", "CLTInfo;", "" ] [ "clients", "getLogins", "command clients.getLogins() (X_0:bat[:oid], X_1:bat[:str]) ", "CLTLogin;", "" ] diff --git a/clients/odbc/ChangeLog.Oct2020 b/clients/odbc/ChangeLog.Oct2020 --- a/clients/odbc/ChangeLog.Oct2020 +++ b/clients/odbc/ChangeLog.Oct2020 @@ -1,3 +1,6 @@ # ChangeLog file for odbc # This file is updated with Maddlog +* Fri May 7 2021 Sjoerd Mullender <sjo...@acm.org> +- A typo that made the SQLSpecialColumns function unusable was fixed. + diff --git a/debian/control b/debian/control --- a/debian/control +++ b/debian/control @@ -265,6 +265,7 @@ Description: Integration of MonetDB and Package: libmonetdbe1 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} + monetdb5-server (= ${source:Version}) Description: MonetDB as an embedded library MonetDB is a database management system that is developed from a main-memory perspective with use of a fully decomposed storage model, @@ -277,7 +278,8 @@ Description: MonetDB as an embedded libr Package: libmonetdbe-dev Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, - libmonetdbe1, libmonetdb-dev + libmonetdbe1 (= ${source:Version}), + libmonetdb-dev (= ${source:Version}) Description: MonetDB development files MonetDB is a database management system that is developed from a main-memory perspective with use of a fully decomposed storage model, @@ -287,6 +289,20 @@ Description: MonetDB development files This package contains the library and include files to create a program that uses MonetDB as an embeddable library. +Package: monetdb-embedded-testing +Architecture: any +Depends: ${shlibs:Depends}, + libmonetdbe (= ${source:Version}) +Description: MonetDB embedded testing tools + MonetDB is a database management system that is developed from a + main-memory perspective with use of a fully decomposed storage model, + automatic index management, extensibility of data types and search + accelerators. It also has an SQL front end. + . + This package contains the sample MAPI programs used for testing other + MonetDB packages. You probably don't need this, unless you are a + developer. + Package: monetdb-testing-python Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, python3, diff --git a/debian/libmonetdb-dev.install b/debian/libmonetdb-dev.install --- a/debian/libmonetdb-dev.install +++ b/debian/libmonetdb-dev.install @@ -1,4 +1,5 @@ debian/tmp/usr/lib/x86_64-linux-gnu/libbat.so usr/lib/x86_64-linux-gnu +debian/tmp/usr/include/monetdb/copybinary.h usr/include/monetdb debian/tmp/usr/include/monetdb/gdk*.h usr/include/monetdb debian/tmp/usr/include/monetdb/matomic.h usr/include/monetdb debian/tmp/usr/include/monetdb/mstring.h usr/include/monetdb diff --git a/debian/monetdb-embedded-testing.install b/debian/monetdb-embedded-testing.install new file mode 100644 --- /dev/null +++ b/debian/monetdb-embedded-testing.install @@ -0,0 +1,1 @@ +debian/tmp/usr/bin/example_proxy usr/bin diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c --- a/gdk/gdk_bat.c +++ b/gdk/gdk_bat.c @@ -1255,6 +1255,8 @@ BUNappendmulti(BAT *b, const void *value } p++; } + if (b->theap) + b->theap->dirty |= count > 0; IMPSdestroy(b); /* no support for inserts in imprints yet */ OIDXdestroy(b); diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -2275,7 +2275,12 @@ decref(bat i, bool logical, bool release if (lock) MT_lock_set(&GDKswapLock(i)); if (releaseShare) { - --BBP_desc(i)->batSharecnt; + if (BBP_desc(i)->batSharecnt == 0) { + GDKerror("%s: %s does not have any shares.\n", func, BBPname(i)); + assert(0); + } else { + --BBP_desc(i)->batSharecnt; + } if (lock) MT_lock_unset(&GDKswapLock(i)); return refs; @@ -3012,7 +3017,7 @@ do_backup(const char *srcdir, const char /* there is a situation where the move may fail, * namely if this heap was not supposed to be existing * before, i.e. after a BATmaterialize on a persistent - * bat as a workaround, do not complain about move + * bat; as a workaround, do not complain about move * failure if the source file is nonexistent */ if (mvret != GDK_SUCCEED && file_exists(h->farmid, srcdir, nme, ext)) { diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -1320,6 +1320,7 @@ logger_switch_bat(BAT *old, BAT *new, co BBPrename(new->batCacheid, bak) != 0) { return GDK_FAIL; } + BBPretain(new->batCacheid); return GDK_SUCCEED; } diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c --- a/gdk/gdk_select.c +++ b/gdk/gdk_select.c @@ -42,6 +42,8 @@ virtualize(BAT *bn) (((bn->ttype == TYPE_void && !is_oid_nil(bn->tseqbase)) || bn->ttype == TYPE_oid) && bn->tkey && bn->tsorted)); + assert(BBP_refs(bn->batCacheid) == 1); + assert(BBP_lrefs(bn->batCacheid) == 0); /* since bn has unique and strictly ascending values, we can * easily check whether the column is dense */ if (bn && bn->ttype == TYPE_oid && diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c --- a/monetdb5/mal/mal_interpreter.c +++ b/monetdb5/mal/mal_interpreter.c @@ -772,10 +772,7 @@ str runMALsequence(Client cntxt, MalBlkP } if (ret == MAL_SUCCEED && ii == pci->argc) { ret = runMALsequence(cntxt, pci->blk, 1, pci->blk->stop, nstk, stk, pci); - //garbageCollector(cntxt, pci->blk, nstk, 0); - for (ii = 0; ii < nstk->stktop; ii++) - if (ATOMextern(nstk->stk[ii].vtype)) - GDKfree(nstk->stk[ii].val.pval); + garbageCollector(cntxt, pci->blk, nstk, 0); arg = q->retc; for (ii = pci->retc; ii < pci->argc; ii++,arg++) { lhs = &nstk->stk[q->argv[arg]]; diff --git a/monetdb5/modules/atoms/json.c b/monetdb5/modules/atoms/json.c --- a/monetdb5/modules/atoms/json.c +++ b/monetdb5/modules/atoms/json.c @@ -982,6 +982,10 @@ JSONtoken(JSON *jt, const char *j, const if (jt->error) return idx; + if (THRhighwater()) { + jt->error = createException(MAL, "json.parser", "expression too complex to parse"); + return idx; + } skipblancs(j); switch (*j) { case '{': diff --git a/monetdb5/modules/mal/clients.c b/monetdb5/modules/mal/clients.c --- a/monetdb5/modules/mal/clients.c +++ b/monetdb5/modules/mal/clients.c @@ -998,6 +998,16 @@ bailout: return msg; } +static str +CLTgetSessionID(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + (void) mb; + (void) stk; + (void) pci; + *getArgReference_int(stk,pci,0) = cntxt->idx; + return MAL_SUCCEED; +} + #include "mel.h" mel_func clients_init_funcs[] = { pattern("clients", "setListing", CLTsetListing, false, "Turn on/off echo of MAL instructions:\n1 - echo input,\n2 - show mal instruction,\n4 - show details of type resolutoin, \n8 - show binding information.", args(1,2, arg("",int),arg("flag",int))), @@ -1050,6 +1060,7 @@ mel_func clients_init_funcs[] = { pattern("clients", "setPassword", CLTsetPassword, false, "Set the password for the given user", args(1,3, arg("",void),arg("user",str),arg("pass",str))), pattern("clients", "checkPermission", CLTcheckPermission, false, "Check permission for a user, requires hashed password (backendsum)", args(1,3, arg("",void),arg("usr",str),arg("pw",str))), pattern("clients", "getUsers", CLTgetUsers, false, "return a BAT with user id and one with name available in the system", args(2,2, batarg("",oid),batarg("",str))), + pattern("clients", "current_sessionid", CLTgetSessionID, false, "return current session ID", args(1,1, arg("",int))), { .imp=NULL } }; #include "mal_import.h" diff --git a/monetdb5/modules/mal/mal_mapi.c b/monetdb5/modules/mal/mal_mapi.c --- a/monetdb5/modules/mal/mal_mapi.c +++ b/monetdb5/modules/mal/mal_mapi.c @@ -1052,6 +1052,9 @@ SERVERdisconnectALL(int *key){ GDKfree(SERVERsessions[i].dbalias); SERVERsessions[i].dbalias = NULL; *key = SERVERsessions[i].key; + if( SERVERsessions[i].hdl) + mapi_close_handle(SERVERsessions[i].hdl); + SERVERsessions[i].hdl= NULL; mapi_disconnect(SERVERsessions[i].mid); } @@ -1074,6 +1077,9 @@ SERVERdisconnectWithAlias(int *key, str GDKfree(SERVERsessions[i].dbalias); SERVERsessions[i].dbalias = NULL; *key = SERVERsessions[i].key; + if( SERVERsessions[i].hdl) + mapi_close_handle(SERVERsessions[i].hdl); + SERVERsessions[i].hdl= NULL; mapi_disconnect(SERVERsessions[i].mid); break; } @@ -1205,6 +1211,9 @@ SERVERdisconnect(void *ret, int *key){ Mapi mid; (void) ret; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list