Changeset: c8cf0a85f81c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/c8cf0a85f81c Modified Files: gdk/gdk.h gdk/gdk_batop.c gdk/gdk_bbp.c gdk/gdk_private.h sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql_cat.c sql/backends/monet5/sql_upgrades.c sql/server/rel_exp.c sql/server/rel_optimizer.c sql/server/rel_rel.c sql/server/rel_rewriter.c sql/server/rel_rewriter.h sql/server/rel_select.c sql/server/rel_updates.c sql/storage/bat/bat_storage.c sql/storage/sql_storage.h sql/storage/store.c tools/monetdbe/monetdbe.c Branch: properties Log Message:
Merged with default diffs (truncated from 93381 to 300 lines): diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -11,9 +11,9 @@ assignees: '' A clear and concise description of what the bug is. **To Reproduce** -Create a setting with minimal input for an external user to demonstrate him the buggy behavior. -This includes the relevant part of the database schema description. -Performance trace of the roque query (using the TRACE command) +Create a setting with minimal input for an external user to demonstrate the buggy behavior. +This includes the relevant part of the database schema description. +Performance trace of the rogue query (using the TRACE command) **Expected behavior** A clear and concise description of what you expected to happen. diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -798,3 +798,5 @@ 929f5e280bc1532a2bfaab127ca7915dc3b69a33 742b7847cfdcea39a6c19ab29eb35471d46bb2bb Oct2020_SP2_release 17d27ad30941c81e4bc700300912e84e9b9a8c37 Oct2020_13 17d27ad30941c81e4bc700300912e84e9b9a8c37 Oct2020_SP3_release +6b71a8cc3498561815ac88d6c652922359efd13a Oct2020_15 +6b71a8cc3498561815ac88d6c652922359efd13a Oct2020_SP4_release diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -84,7 +84,7 @@ Group: Applications/Databases License: MPLv2.0 URL: https://www.monetdb.org/ BugURL: https://bugs.monetdb.org/ -Source: https://www.monetdb.org/downloads/sources/Oct2020-SP3/%{name}-%{version}.tar.bz2 +Source: https://www.monetdb.org/downloads/sources/Oct2020-SP4/%{name}-%{version}.tar.bz2 # The Fedora packaging document says we need systemd-rpm-macros for # the _unitdir and _tmpfilesdir macros to exist; however on RHEL 7 @@ -302,8 +302,8 @@ This package contains the files needed t Summary: MonetDB ODBC driver Group: Applications/Databases Requires: %{name}-client%{?_isa} = %{version}-%{release} -Requires(post): unixODBC -Requires(postun): unixODBC +Requires(post): %{_bindir}/odbcinst +Requires(postun): %{_bindir}/odbcinst %description client-odbc MonetDB is a database management system that is developed from a @@ -828,6 +828,48 @@ else fi %changelog +* Fri Apr 02 2021 Sjoerd Mullender <sjo...@acm.org> - 11.39.15-20210402 +- Rebuilt. +- GH#6786: function json.isvalid(js json) is not useful, could be removed +- GH#7016: Database crashes when use similarity function on a table with + more than 200k records +- GH#7037: Clearer err msg for ALTER USER with insufficient privileges +- GH#7042: AddressSanitizer:DEADLYSIGNAL in Oct2020/gdk/gdk_tracer.c:494 +- GH#7050: file descriptor leak when forward=redirect +- GH#7057: ODBC driver installer on Windows is missing some DLLs +- GH#7058: MonetDBe: COPY INTO csv file does not produce any output +- GH#7059: MonetDBe: 'reverse' C UDF crashes +- GH#7061: Have bulk load support combined gzip files +- GH#7064: Temporary hashes created in hash and unique logic should try to + use transient data farm first +- GH#7066: percent_rank function with wrong results +- GH#7070: double free error when running MonetDBe Example +- GH#7076: mserver5 ignores memory.low from cgroups v2 +- GH#7077: Oct2020: new default privileges not effectively communicated +- GH#7083: MonetDBe C++ Compiling Error +- GH#7085: Mitosis and filter functions +- GH#7087: SIGSEGV caused by error in subquery's function being ignored by + top-level query +- GH#7089: Data consistency problem of query results in the latest release + of Monetdb (Remote Table) + +* Wed Mar 31 2021 Sjoerd Mullender <sjo...@acm.org> - 11.39.15-20210402 +- odbc: When connecting using a DSN (Data Source Name), information about the + data source is retrieved from the ODBC.INI file. Now we also get the + location of the LOGFILE from this file. The logfile can be used to + log all calls to the MonetDB ODBC driver to a file which can be used + for debugging. + +* Thu Mar 25 2021 Sjoerd Mullender <sjo...@acm.org> - 11.39.15-20210402 +- odbc: The ODBC driver now only passes on information about HUGEINT columns + as HUGEINT when the application has indicated interest by querying + about the SQL_HUGEINT extension type using the SQLGetTypeInfo + function or by specifying the type in a call to SQLSetDescField. + Otherwise the driver silently translates the HUGEINT type to BIGINT. + This means that most application will see BIGINT columns when the + server produced a HUGEINT column and only give an error if the value + in the HUGEINT column didn't fit into a BIGINT. + * Thu Feb 11 2021 Sjoerd Mullender <sjo...@acm.org> - 11.39.13-20210211 - Rebuilt. - GH#7049: Implement DISTINCT for GROUP_CONCAT 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 @@ -146,6 +146,7 @@ BAT *BATgroupsum(BAT *b, BAT *g, BAT *e, BAT *BATgroupvariance_population(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool skip_nils, bool abort_on_error); BAT *BATgroupvariance_sample(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool skip_nils, bool abort_on_error); BUN BATgrows(BAT *b); +BUN BATguess_uniques(BAT *b, struct canditer *ci); gdk_return BAThash(BAT *b); void BAThseqbase(BAT *b, oid o); gdk_return BATimprints(BAT *b); @@ -181,7 +182,7 @@ gdk_return BATrangejoin(BAT **r1p, BAT * gdk_return BATreplace(BAT *b, BAT *p, BAT *n, bool force) __attribute__((__warn_unused_result__)); gdk_return BATroles(BAT *b, const char *tnme); BAT *BATsample(BAT *b, BUN n); -BAT *BATsample_with_seed(BAT *b, BUN n, unsigned seed); +BAT *BATsample_with_seed(BAT *b, BUN n, uint64_t seed); gdk_return BATsave(BAT *b) __attribute__((__warn_unused_result__)); BAT *BATselect(BAT *b, BAT *s, const void *tl, const void *th, bool li, bool hi, bool anti); gdk_return BATsemijoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, bool nil_matches, bool max_one, BUN estimate) __attribute__((__warn_unused_result__)); @@ -224,8 +225,9 @@ gdk_return BUNappend(BAT *b, const void gdk_return BUNappendmulti(BAT *b, const void *values, BUN count, bool force) __attribute__((__warn_unused_result__)); gdk_return BUNdelete(BAT *b, oid o) __attribute__((__warn_unused_result__)); BUN BUNfnd(BAT *b, const void *right); -gdk_return BUNinplace(BAT *b, BUN p, const void *right, bool force) __attribute__((__warn_unused_result__)); gdk_return BUNreplace(BAT *b, oid left, const void *right, bool force) __attribute__((__warn_unused_result__)); +gdk_return BUNreplacemulti(BAT *b, const oid *positions, const void *values, BUN count, bool force) __attribute__((__warn_unused_result__)); +gdk_return BUNreplacemultiincr(BAT *b, oid position, const void *values, BUN count, bool force) __attribute__((__warn_unused_result__)); BAT *COLcopy(BAT *b, int tt, bool writable, role_t role); BAT *COLnew(oid hseq, int tltype, BUN capacity, role_t role) __attribute__((__warn_unused_result__)); size_t GDK_mem_maxsize; @@ -241,7 +243,7 @@ gdk_return GDKanalytical_variance_samp(B gdk_return GDKanalyticalavg(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, int tpe, int frame_type); gdk_return GDKanalyticalavginteger(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, int tpe, int frame_type); gdk_return GDKanalyticalcount(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, bit ignore_nils, int tpe, int frame_type); -gdk_return GDKanalyticaldiff(BAT *r, BAT *b, BAT *p, int tpe); +gdk_return GDKanalyticaldiff(BAT *r, BAT *b, BAT *p, const bit *restrict npbit, int tpe); gdk_return GDKanalyticalfirst(BAT *r, BAT *b, BAT *s, BAT *e, int tpe); gdk_return GDKanalyticallag(BAT *r, BAT *b, BAT *p, BUN lag, const void *restrict default_value, int tpe); gdk_return GDKanalyticallast(BAT *r, BAT *b, BAT *s, BAT *e, int tpe); @@ -1451,7 +1453,7 @@ int mnstr_fsetpos(stream *restrict s, fp int mnstr_fsync(stream *s); buffer *mnstr_get_buffer(stream *s); bool mnstr_get_swapbytes(const stream *s); -int mnstr_init(bool embedded); +int mnstr_init(void); int mnstr_isalive(const stream *s); bool mnstr_isbinary(const stream *s); char *mnstr_name(const stream *s); diff --git a/clients/examples/C/streamcat.c b/clients/examples/C/streamcat.c --- a/clients/examples/C/streamcat.c +++ b/clients/examples/C/streamcat.c @@ -92,7 +92,7 @@ croak(int status, const char *msg, ...) int main(int argc, char *argv[]) { - if (mnstr_init(false) < 0) + if (mnstr_init() < 0) croak(2, "Could not initialize streams library"); if (argc < 2) diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -3178,7 +3178,7 @@ main(int argc, char **argv) perror("sigaction"); #endif - if (mnstr_init(false) < 0) { + if (mnstr_init() < 0) { fprintf(stderr, "error: could not initialize streams library"); exit(2); } diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c --- a/clients/mapilib/mapi.c +++ b/clients/mapilib/mapi.c @@ -2039,7 +2039,7 @@ mapi_mapiuri(const char *url, const char char *query; if (!ATOMIC_TAS(&mapi_initialized)) { - if (mnstr_init(false) < 0) + if (mnstr_init() < 0) return NULL; } @@ -2161,7 +2161,7 @@ mapi_mapi(const char *host, int port, co Mapi mid; if (!ATOMIC_TAS(&mapi_initialized)) { - if (mnstr_init(false) < 0) + if (mnstr_init() < 0) return NULL; } diff --git a/clients/odbc/ChangeLog b/clients/odbc/ChangeLog --- a/clients/odbc/ChangeLog +++ b/clients/odbc/ChangeLog @@ -1,13 +1,3 @@ # ChangeLog file for odbc # This file is updated with Maddlog -* Thu Mar 25 2021 Sjoerd Mullender <sjo...@acm.org> -- The ODBC driver now only passes on information about HUGEINT columns - as HUGEINT when the application has indicated interest by querying - about the SQL_HUGEINT extension type using the SQLGetTypeInfo - function or by specifying the type in a call to SQLSetDescField. - Otherwise the driver silently translates the HUGEINT type to BIGINT. - This means that most application will see BIGINT columns when the - server produced a HUGEINT column and only give an error if the value - in the HUGEINT column didn't fit into a BIGINT. - diff --git a/clients/odbc/ChangeLog-Archive b/clients/odbc/ChangeLog-Archive --- a/clients/odbc/ChangeLog-Archive +++ b/clients/odbc/ChangeLog-Archive @@ -1,6 +1,23 @@ # DO NOT EDIT THIS FILE -- MAINTAINED AUTOMATICALLY # This file contains past ChangeLog entries +* Wed Mar 31 2021 Sjoerd Mullender <sjo...@acm.org> - 11.39.15-20210402 +- When connecting using a DSN (Data Source Name), information about the + data source is retrieved from the ODBC.INI file. Now we also get the + location of the LOGFILE from this file. The logfile can be used to + log all calls to the MonetDB ODBC driver to a file which can be used + for debugging. + +* Thu Mar 25 2021 Sjoerd Mullender <sjo...@acm.org> - 11.39.15-20210402 +- The ODBC driver now only passes on information about HUGEINT columns + as HUGEINT when the application has indicated interest by querying + about the SQL_HUGEINT extension type using the SQLGetTypeInfo + function or by specifying the type in a call to SQLSetDescField. + Otherwise the driver silently translates the HUGEINT type to BIGINT. + This means that most application will see BIGINT columns when the + server produced a HUGEINT column and only give an error if the value + in the HUGEINT column didn't fit into a BIGINT. + * Mon Apr 20 2020 Sjoerd Mullender <sjo...@acm.org> - 11.37.1-20200511 - The NUMERIC and FLOAT types are now handled fully. Before only DECIMAL, FLOAT, and DOUBLE were handled fully. diff --git a/clients/odbc/ChangeLog.Oct2020 b/clients/odbc/ChangeLog.Oct2020 new file mode 100644 --- /dev/null +++ b/clients/odbc/ChangeLog.Oct2020 @@ -0,0 +1,3 @@ +# ChangeLog file for odbc +# This file is updated with Maddlog + diff --git a/clients/odbc/driver/SQLConnect.c b/clients/odbc/driver/SQLConnect.c --- a/clients/odbc/driver/SQLConnect.c +++ b/clients/odbc/driver/SQLConnect.c @@ -141,6 +141,20 @@ MNDBConnect(ODBCDbc *dbc, } } +#ifdef ODBCDEBUG + if ((ODBCdebug == NULL || *ODBCdebug == 0) && dsn && *dsn) { + char logfile[2048]; + n = SQLGetPrivateProfileString(dsn, "logfile", "", + logfile, sizeof(logfile), + "odbc.ini"); + if (n > 0) { + if (ODBCdebug) + free((void *) ODBCdebug); /* discard const */ + ODBCdebug = strdup(logfile); + } + } +#endif + if (dsn && *dsn) n = SQLGetPrivateProfileString(dsn, "uid", "monetdb", uid, sizeof(uid), "odbc.ini"); diff --git a/clients/odbc/driver/SQLGetTypeInfo.c b/clients/odbc/driver/SQLGetTypeInfo.c --- a/clients/odbc/driver/SQLGetTypeInfo.c +++ b/clients/odbc/driver/SQLGetTypeInfo.c @@ -1148,6 +1148,10 @@ MNDBGetTypeInfo(ODBCStmt *stmt, assert(t == types || t->data_type >= (t-1)->data_type); if (DataType != SQL_ALL_TYPES && DataType != t->data_type) continue; + if (DataType == SQL_ALL_TYPES && + t->data_type == SQL_HUGEINT && + !stmt->Dbc->allow_hugeint) + continue; if (first) { /* specify column types in first set of values */ i += snprintf(query + i, sizeof(query) - i, diff --git a/cmake/monetdb-versions.cmake b/cmake/monetdb-versions.cmake --- a/cmake/monetdb-versions.cmake +++ b/cmake/monetdb-versions.cmake @@ -50,7 +50,7 @@ set(MONETDB_VERSION "${MONETDB_VERSION_M # version of the GDK library (subdirectory gdk; also includes # common/options and common/utils) set(GDK_VERSION_CURRENT "22") -set(GDK_VERSION_REVISION "2") +set(GDK_VERSION_REVISION "3") set(GDK_VERSION_AGE "1") math(EXPR GDK_VERSION_MAJOR "${GDK_VERSION_CURRENT} - ${GDK_VERSION_AGE}") set(GDK_VERSION "${GDK_VERSION_MAJOR}.${GDK_VERSION_AGE}.${GDK_VERSION_REVISION}") @@ -64,7 +64,7 @@ set(MAPI_VERSION "${MAPI_VERSION_MAJOR}. # version of the MONETDB5 library (subdirectory monetdb5, not including extras or sql) set(MONETDB5_VERSION_CURRENT "30") -set(MONETDB5_VERSION_REVISION "5") +set(MONETDB5_VERSION_REVISION "6") set(MONETDB5_VERSION_AGE "0") _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list