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

Reply via email to