Changeset: ad120e92a1cf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ad120e92a1cf
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        monetdb5/modules/atoms/batxml.c
        monetdb5/modules/atoms/json.c
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/kernel/bat5.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_pushselect.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_statement.h
        sql/backends/monet5/sql_statistics.c
        sql/common/sql_types.c
        sql/server/rel_dump.c
        sql/server/rel_optimizer.c
        sql/server/rel_updates.c
Branch: pushcands
Log Message:

Merged with default


diffs (truncated from 145977 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
@@ -7037,6 +7037,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
@@ -9920,6 +9920,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/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -206,6 +206,7 @@ BAT *BATunmask(BAT *b);
 BBPrec *BBP[N_BBPINIT];
 gdk_return BBPaddfarm(const char *dirname, uint32_t rolemask, bool logerror);
 void BBPclear(bat bid);
+void BBPcold(bat i);
 BAT *BBPdescriptor(bat b);
 int BBPfix(bat b);
 bat BBPindex(const char *nme);
@@ -542,6 +543,7 @@ gdk_return log_delta(logger *lg, BAT *ui
 gdk_return log_sequence(logger *lg, int seq, lng id);
 gdk_return log_tend(logger *lg);
 gdk_return log_tstart(logger *lg, ulng commit_ts, bool flush);
+gdk_return logger_activate(logger *lg);
 lng logger_changes(logger *lg);
 logger *logger_create(int debug, const char *fn, const char *logdir, int 
version, preversionfix_fptr prefuncp, postversionfix_fptr postfuncp, void 
*funcdata);
 void logger_destroy(logger *lg);
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/common/utils/matomic.h b/common/utils/matomic.h
--- a/common/utils/matomic.h
+++ b/common/utils/matomic.h
@@ -87,15 +87,17 @@ typedef unsigned long long ATOMIC_BASE_T
 #endif
 
 #define ATOMIC_INIT(var, val)  atomic_init(var, (ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_DESTROY(var)    ((void) 0)
-#define ATOMIC_GET(var)                atomic_load(var)
+#define ATOMIC_DESTROY(var)            ((void) 0)
+#define ATOMIC_GET(var)                        atomic_load(var)
 #define ATOMIC_SET(var, val)   atomic_store(var, (ATOMIC_BASE_TYPE) (val))
 #define ATOMIC_XCG(var, val)   atomic_exchange(var, (ATOMIC_BASE_TYPE) (val))
 #define ATOMIC_CAS(var, exp, des)      atomic_compare_exchange_strong(var, 
exp, (ATOMIC_BASE_TYPE) (des))
 #define ATOMIC_ADD(var, val)   atomic_fetch_add(var, (ATOMIC_BASE_TYPE) (val))
 #define ATOMIC_SUB(var, val)   atomic_fetch_sub(var, (ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_INC(var)                (atomic_fetch_add(var, 1) + 1)
-#define ATOMIC_DEC(var)                (atomic_fetch_sub(var, 1) - 1)
+#define ATOMIC_INC(var)                        (atomic_fetch_add(var, 1) + 1)
+#define ATOMIC_DEC(var)                        (atomic_fetch_sub(var, 1) - 1)
+#define ATOMIC_OR(var, val)            atomic_fetch_or(var, (ATOMIC_BASE_TYPE) 
(val))
+#define ATOMIC_AND(var, val)   atomic_fetch_and(var, (ATOMIC_BASE_TYPE) (val))
 
 #ifdef __INTEL_COMPILER
 typedef volatile atomic_address ATOMIC_PTR_TYPE;
@@ -166,8 +168,10 @@ ATOMIC_CAS(ATOMIC_TYPE *var, ATOMIC_BASE
 #define ATOMIC_CAS(var, exp, des)      ATOMIC_CAS(var, exp, (ATOMIC_BASE_TYPE) 
(des))
 #define ATOMIC_ADD(var, val)   _InterlockedExchangeAdd64(var, 
(ATOMIC_BASE_TYPE) (val))
 #define ATOMIC_SUB(var, val)   _InterlockedExchangeAdd64(var, 
-(ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_INC(var)                _InterlockedIncrement64(var)
-#define ATOMIC_DEC(var)                _InterlockedDecrement64(var)
+#define ATOMIC_INC(var)                        _InterlockedIncrement64(var)
+#define ATOMIC_DEC(var)                        _InterlockedDecrement64(var)
+#define ATOMIC_OR(var, val)            _InterlockedOr64(var, 
(ATOMIC_BASE_TYPE) (val))
+#define ATOMIC_AND(var, val)   _InterlockedAnd64(var, (ATOMIC_BASE_TYPE) (val))
 
 #else
 
@@ -179,6 +183,23 @@ ATOMIC_CAS(ATOMIC_TYPE *var, ATOMIC_BASE
 #define ATOMIC_GET(var)                        
_InlineInterlockedExchangeAdd64(var, 0)
 #define ATOMIC_SET(var, val)   _InlineInterlockedExchange64(var, 
(ATOMIC_BASE_TYPE) (val))
 #define ATOMIC_XCG(var, val)   _InlineInterlockedExchange64(var, 
(ATOMIC_BASE_TYPE) (val))
+#define ATOMIC_ADD(var, val)   _InlineInterlockedExchangeAdd64(var, 
(ATOMIC_BASE_TYPE) (val))
+#define ATOMIC_SUB(var, val)   _InlineInterlockedExchangeAdd64(var, 
-(ATOMIC_BASE_TYPE) (val))
+#define ATOMIC_INC(var)                        
_InlineInterlockedIncrement64(var)
+#define ATOMIC_DEC(var)                        
_InlineInterlockedDecrement64(var)
+#define ATOMIC_OR(var, val)            _InlineInterlockedOr64(var, 
(ATOMIC_BASE_TYPE) (val))
+#define ATOMIC_AND(var, val)   _InlineInterlockedAnd64(var, (ATOMIC_BASE_TYPE) 
(val))
+#else
+#define ATOMIC_GET(var)                        _InterlockedExchangeAdd64(var, 
0)
+#define ATOMIC_SET(var, val)   _InterlockedExchange64(var, (ATOMIC_BASE_TYPE) 
(val))
+#define ATOMIC_XCG(var, val)   _InterlockedExchange64(var, (ATOMIC_BASE_TYPE) 
(val))
+#define ATOMIC_ADD(var, val)   _InterlockedExchangeAdd64(var, 
(ATOMIC_BASE_TYPE) (val))
+#define ATOMIC_SUB(var, val)   _InterlockedExchangeAdd64(var, 
-(ATOMIC_BASE_TYPE) (val))
+#define ATOMIC_INC(var)                        _InterlockedIncrement64(var)
+#define ATOMIC_DEC(var)                        _InterlockedDecrement64(var)
+#define ATOMIC_OR(var, val)            _InterlockedOr64(var, 
(ATOMIC_BASE_TYPE) (val))
+#define ATOMIC_AND(var, val)   _InterlockedAnd64(var, (ATOMIC_BASE_TYPE) (val))
+#endif
 static inline bool
 ATOMIC_CAS(ATOMIC_TYPE *var, ATOMIC_BASE_TYPE *exp, ATOMIC_BASE_TYPE des)
 {
@@ -190,30 +211,6 @@ ATOMIC_CAS(ATOMIC_TYPE *var, ATOMIC_BASE
        return false;
 }
 #define ATOMIC_CAS(var, exp, des)      ATOMIC_CAS(var, exp, (ATOMIC_BASE_TYPE) 
(des))
-#define ATOMIC_ADD(var, val)   _InlineInterlockedExchangeAdd64(var, 
(ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_SUB(var, val)   _InlineInterlockedExchangeAdd64(var, 
-(ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_INC(var)                _InlineInterlockedIncrement64(var)
-#define ATOMIC_DEC(var)                _InlineInterlockedDecrement64(var)
-#else
-#define ATOMIC_GET(var)                        _InterlockedExchangeAdd64(var, 
0)
-#define ATOMIC_SET(var, val)   _InterlockedExchange64(var, (ATOMIC_BASE_TYPE) 
(val))
-#define ATOMIC_XCG(var, val)   _InterlockedExchange64(var, (ATOMIC_BASE_TYPE) 
(val))
-static inline bool
-ATOMIC_CAS(ATOMIC_TYPE *var, ATOMIC_BASE_TYPE *exp, ATOMIC_BASE_TYPE des)
-{
-       ATOMIC_BASE_TYPE old;
-       old = _InterlockedCompareExchange64(var, des, *exp);
-       if (old == *exp)
-               return true;
-       *exp = old;
-       return false;
-}
-#define ATOMIC_CAS(var, exp, des)      ATOMIC_CAS(var, exp, (ATOMIC_BASE_TYPE) 
(des))
-#define ATOMIC_ADD(var, val)   _InterlockedExchangeAdd64(var, 
(ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_SUB(var, val)   _InterlockedExchangeAdd64(var, 
-(ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_INC(var)                _InterlockedIncrement64(var)
-#define ATOMIC_DEC(var)                _InterlockedDecrement64(var)
-#endif
 
 #endif
 
@@ -259,14 +256,16 @@ typedef volatile int ATOMIC_TYPE;
 #define ATOMIC_INIT(var, val)  (*(var) = (val))
 #define ATOMIC_DESTROY(var)    ((void) 0)
 
-#define ATOMIC_GET(var)                __atomic_load_n(var, __ATOMIC_SEQ_CST)
+#define ATOMIC_GET(var)                        __atomic_load_n(var, 
__ATOMIC_SEQ_CST)
 #define ATOMIC_SET(var, val)   __atomic_store_n(var, (ATOMIC_BASE_TYPE) (val), 
__ATOMIC_SEQ_CST)
 #define ATOMIC_XCG(var, val)   __atomic_exchange_n(var, (ATOMIC_BASE_TYPE) 
(val), __ATOMIC_SEQ_CST)
 #define ATOMIC_CAS(var, exp, des)      __atomic_compare_exchange_n(var, exp, 
(ATOMIC_BASE_TYPE) (des), false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
 #define ATOMIC_ADD(var, val)   __atomic_fetch_add(var, (ATOMIC_BASE_TYPE) 
(val), __ATOMIC_SEQ_CST)
 #define ATOMIC_SUB(var, val)   __atomic_fetch_sub(var, (ATOMIC_BASE_TYPE) 
(val), __ATOMIC_SEQ_CST)
-#define ATOMIC_INC(var)                __atomic_add_fetch(var, 1, 
__ATOMIC_SEQ_CST)
-#define ATOMIC_DEC(var)                __atomic_sub_fetch(var, 1, 
__ATOMIC_SEQ_CST)
+#define ATOMIC_INC(var)                        __atomic_add_fetch(var, 1, 
__ATOMIC_SEQ_CST)
+#define ATOMIC_DEC(var)                        __atomic_sub_fetch(var, 1, 
__ATOMIC_SEQ_CST)
+#define ATOMIC_OR(var, val)            __atomic_fetch_or(var, 
(ATOMIC_BASE_TYPE) (val), __ATOMIC_SEQ_CST)
+#define ATOMIC_AND(var, val)   __atomic_fetch_and(var, (ATOMIC_BASE_TYPE) 
(val), __ATOMIC_SEQ_CST)
 
 typedef void *volatile ATOMIC_PTR_TYPE;
 #define ATOMIC_PTR_INIT(var, val)      (*(var) = (val))
@@ -397,6 +396,30 @@ ATOMIC_DEC(ATOMIC_TYPE *var)
        return new;
 }
 
+static inline ATOMIC_BASE_TYPE
+ATOMIC_OR(ATOMIC_TYPE *var, ATOMIC_BASE_TYPE val)
+{
+       ATOMIC_BASE_TYPE old;
+       pthread_mutex_lock(&var->lck);
+       old = var->val;
+       var->val |= val;
+       pthread_mutex_unlock(&var->lck);
+       return old;
+}
+#define ATOMIC_OR(var, val)    ATOMIC_OR(var, (ATOMIC_BASE_TYPE) (val))
+
+static inline ATOMIC_BASE_TYPE
+ATOMIC_AND(ATOMIC_TYPE *var, ATOMIC_BASE_TYPE val)
+{
+       ATOMIC_BASE_TYPE old;
+       pthread_mutex_lock(&var->lck);
+       old = var->val;
+       var->val &= val;
+       pthread_mutex_unlock(&var->lck);
+       return old;
+}
+#define ATOMIC_AND(var, val)   ATOMIC_AND(var, (ATOMIC_BASE_TYPE) (val))
+
 typedef struct {
        void *val;
        pthread_mutex_t lck;
diff --git a/common/utils/mstring.h b/common/utils/mstring.h
--- a/common/utils/mstring.h
+++ b/common/utils/mstring.h
@@ -29,7 +29,10 @@ strcpy_len(char *restrict dst, const cha
                        if ((dst[i] = src[i]) == 0)
                                return i;
                }
-               dst[n - 1] = 0;
+               /* for correctness, the decrement isn't needed (just assigning 0
+                * to dst[n-1] would be sufficient), but to work around a too
+                * strict GNU C compiler, we do need it */
+               dst[--n] = 0;
 /* in some versions of GCC (at least gcc (Ubuntu 7.5.0-3ubuntu1~18.04)
  * 7.5.0), the error just can't be turned off when using
  * --enable-strict, so we just use the (more) expensive way of getting the
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
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to