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