Changeset: 30b4bdfa35cd for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/30b4bdfa35cd Modified Files: gdk/gdk.h monetdb5/modules/kernel/algebra.c monetdb5/optimizer/opt_mergetable.c monetdb5/optimizer/opt_prelude.c monetdb5/optimizer/opt_prelude.h monetdb5/optimizer/opt_support.c sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_statement.c Branch: groupjoin Log Message:
Merge with default branch. diffs (truncated from 71819 to 300 lines): diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml new file mode 100644 --- /dev/null +++ b/.github/workflows/linux.yml @@ -0,0 +1,57 @@ +name: MonetDB build and test + +on: + push: + branches: + - '*' + - 'branches/*' + pull_request: + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + + schedule: + - cron: '15 1 * * *' + +jobs: + test: + strategy: + fail-fast: false # don't stop other jobs + matrix: + branch: [ master ] + os: [ ubuntu-latest, macos-latest ] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ matrix.branch }} + + - name: make MonetDB on linux + run: | + mkdir build + cd build + cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/${{ matrix.branch }} -DPY3INTEGRATION=OFF -DCMAKE_BUILD_TYPE=Release -DASSERT=OFF -DRINTEGRATION=OFF + make install -j3 + if: runner.os == 'Linux' + - + name: brew packages + run: brew install bison + if: runner.os == 'macOS' + - name: make MonetDB on macos + run: | + mkdir build + cd build + cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/${{ matrix.branch }} -DPY3INTEGRATION=OFF -DCMAKE_BUILD_TYPE=Release -DASSERT=OFF -DRINTEGRATION=OFF \ + -DBISON_EXECUTABLE=/usr/local/opt/bison/bin/bison + make install -j3 + if: runner.os == 'macOS' + - name: ctest + run: | + cd build + cmake --build . --target test + #- + #uses: actions/upload-artifact@v3 + #name: Publish Linux binary wheels + #with: + #name: monetdbe-linux-wheel-${{ matrix.branch }}-${{ matrix.python-version }} + #path: dist/*.whl diff --git a/ChangeLog.Jun2023 b/ChangeLog.Jun2023 --- a/ChangeLog.Jun2023 +++ b/ChangeLog.Jun2023 @@ -1,3 +1,8 @@ # ChangeLog file for devel # This file is updated with Maddlog +* Thu Aug 10 2023 Panagiotis Koutsourakis <kutsu...@monetdbsolutions.com> +- Improve performance of the ILIKE operator when the pattern contains only + ASCII characters. In this case we do not need to treat any characters as + UTF-8 and we can use much faster routines that perform byte comparisons. + diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -3482,6 +3482,11 @@ main(int argc, char **argv) #endif mnstr_printf(toConsole, "using mapi library %s\n", mapi_get_mapi_version()); + free(dotfile.user); + free(dotfile.passwd); + free(dotfile.dbname); + free(dotfile.host); + free(dotfile.output); return 0; } case 'w': diff --git a/clients/odbc/driver/SQLTables.c b/clients/odbc/driver/SQLTables.c --- a/clients/odbc/driver/SQLTables.c +++ b/clients/odbc/driver/SQLTables.c @@ -234,7 +234,7 @@ MNDBTables(ODBCStmt *stmt, strcpy(buf, "LOCAL TEMPORARY TABLE"); } pos += snprintf(query + pos, querylen - pos, "'%s',", buf); - j = 0; + j = 0; } else if (j < sizeof(buf) && TableType[i] != '\'' && (TableType[i] != ' ' || diff --git a/clients/odbc/tests/ODBCmetadata.c b/clients/odbc/tests/ODBCmetadata.c --- a/clients/odbc/tests/ODBCmetadata.c +++ b/clients/odbc/tests/ODBCmetadata.c @@ -114,7 +114,7 @@ nameofSQLtype(SQLSMALLINT dataType) case SQL_REAL: return "REAL"; case SQL_FLOAT: return "FLOAT"; case SQL_DOUBLE: return "DOUBLE"; - case SQL_BIT: return "BOOLEAN"; /* MonetDB boolean type is mapped to SQL_BIT in ODBC (see msql_types[] in SQLExecute.c) */ + case SQL_BIT: return "BOOLEAN"; /* MonetDB boolean type is mapped to SQL_BIT in ODBC (see msql_types[] in SQLExecute.c) */ case SQL_TINYINT: return "TINYINT"; case SQL_BIGINT: return "BIGINT"; case SQL_BINARY: return "BINARY"; @@ -125,7 +125,7 @@ nameofSQLtype(SQLSMALLINT dataType) case SQL_TYPE_TIME: return "TIME"; case SQL_TYPE_TIMESTAMP: return "TIMESTAMP"; case SQL_INTERVAL_MONTH: return "INTERVAL MONTH"; - case SQL_INTERVAL_YEAR: return "INTERVAL YEAR"; + case SQL_INTERVAL_YEAR: return "INTERVAL YEAR"; case SQL_INTERVAL_YEAR_TO_MONTH: return "INTERVAL YEAR TO MONTH"; case SQL_INTERVAL_DAY: return "INTERVAL DAY"; case SQL_INTERVAL_HOUR: return "INTERVAL HOUR"; diff --git a/cmake/monetdb-defines.cmake b/cmake/monetdb-defines.cmake --- a/cmake/monetdb-defines.cmake +++ b/cmake/monetdb-defines.cmake @@ -105,6 +105,7 @@ function(monetdb_configure_defines) check_function_exists("setsid" HAVE_SETSID) check_function_exists("shutdown" HAVE_SHUTDOWN) check_function_exists("sigaction" HAVE_SIGACTION) + check_function_exists("siglongjmp" HAVE_SIGLONGJMP) check_symbol_exists("stpcpy" "string.h" HAVE_STPCPY) check_function_exists("strcasestr" HAVE_STRCASESTR) check_symbol_exists("strncasecmp" "strings.h" HAVE_STRNCASECMP) diff --git a/cmake/monetdb-findpackages.cmake b/cmake/monetdb-findpackages.cmake --- a/cmake/monetdb-findpackages.cmake +++ b/cmake/monetdb-findpackages.cmake @@ -9,7 +9,7 @@ #]] # Detect required packages -find_package(BISON REQUIRED) +find_package(BISON REQUIRED 3.2) find_package(Iconv) find_package(Threads) diff --git a/cmake/monetdb-toolchain.cmake b/cmake/monetdb-toolchain.cmake --- a/cmake/monetdb-toolchain.cmake +++ b/cmake/monetdb-toolchain.cmake @@ -128,7 +128,6 @@ function(monetdb_default_compiler_option add_option_if_available("-fstack-protector-all") add_option_if_available("-Wpacked-bitfield-compat") add_option_if_available("-Wsync-nand") - add_option_if_available("-Wjump-misses-init") add_option_if_available("-Wmissing-include-dirs") add_option_if_available("-Wlogical-op") add_option_if_available("-Wduplicated-cond") diff --git a/cmake/os_release_info.cmake b/cmake/os_release_info.cmake --- a/cmake/os_release_info.cmake +++ b/cmake/os_release_info.cmake @@ -29,7 +29,7 @@ set(_os_release_info TRUE) # of the local cmake environment. # Set cmake policies for at least this level: -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.5) # Function get_os_release_info - Determine and return OS name and version diff --git a/common/utils/matomic.h b/common/utils/matomic.h --- a/common/utils/matomic.h +++ b/common/utils/matomic.h @@ -67,10 +67,15 @@ #if SIZEOF_LONG_LONG == 8 #if ATOMIC_LLONG_LOCK_FREE != 2 -#error "we need _Atomic(unsigned long long) to be lock free" +#if ATOMIC_LLONG_LOCK_FREE != 1 +#error "we need _Atomic(unsigned [long] long) to be lock free" #endif +typedef atomic_ulong ATOMIC_TYPE; +typedef unsigned long ATOMIC_BASE_TYPE; +#else typedef atomic_ullong ATOMIC_TYPE; typedef unsigned long long ATOMIC_BASE_TYPE; +#endif #elif SIZEOF_LONG == 8 #if ATOMIC_LONG_LOCK_FREE != 2 #error "we need _Atomic(unsigned long) to be lock free" @@ -87,10 +92,15 @@ typedef unsigned long ATOMIC_BASE_TYPE; #if SIZEOF_LONG_LONG == 8 #if ATOMIC_LLONG_LOCK_FREE != 2 -#error "we need _Atomic(unsigned long long) to be lock free" +#if ATOMIC_LLONG_LOCK_FREE != 1 +#error "we need _Atomic(unsigned [long] long) to be lock free" #endif +typedef atomic_ulong ATOMIC_TYPE; +typedef unsigned long ATOMIC_BASE_TYPE; +#else typedef volatile atomic_ullong ATOMIC_TYPE; typedef unsigned long long ATOMIC_BASE_TYPE; +#endif #elif SIZEOF_LONG == 8 #if ATOMIC_LONG_LOCK_FREE != 2 #error "we need _Atomic(unsigned long) to be lock free" diff --git a/ctest/monetdb5/mal/test_malEmbeddedBoot.c b/ctest/monetdb5/mal/test_malEmbeddedBoot.c --- a/ctest/monetdb5/mal/test_malEmbeddedBoot.c +++ b/ctest/monetdb5/mal/test_malEmbeddedBoot.c @@ -21,7 +21,7 @@ main(void) if (BBPaddfarm(NULL, (1U << PERSISTENT) | (1U << TRANSIENT), false) != GDK_SUCCEED) { /* set in memory dbfarm */ createException(MAL, "embedded.monetdb_startup", "BBPaddfram() failed"); - return 1; + return 1; } gdk_res = GDKinit(NULL, 0, true, NULL); diff --git a/ctest/monetdb5/mal/test_malInclude.c b/ctest/monetdb5/mal/test_malInclude.c --- a/ctest/monetdb5/mal/test_malInclude.c +++ b/ctest/monetdb5/mal/test_malInclude.c @@ -21,13 +21,13 @@ main(void) if (BBPaddfarm(NULL, (1U << PERSISTENT) | (1U << TRANSIENT), false) != GDK_SUCCEED) { /* set in memory dbfarm */ createException(MAL, "embedded.monetdb_startup", "BBPaddfram() failed"); - return 1; + return 1; } gdk_res = GDKinit(NULL, 0, true, NULL); if (gdk_res != GDK_SUCCEED) { createException(MAL, "embedded.monetdb_startup", "GDKinit() failed"); - return 1; + return 1; } char *modules[2]; modules[0] = "sql"; diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -797,7 +797,7 @@ typedef struct BAT { batTransient:1, /* should the BAT persist on disk? */ batCopiedtodisk:1; /* once written */ uint16_t selcnt; /* how often used in equi select without hash */ - uint16_t unused; /* value=0 for now (sneakily used by mat.c) */ + uint16_t unused; /* value=0 for now (sneakily used by mat.c) */ /* delta status administration */ BUN batInserted; /* start of inserted elements */ @@ -1644,20 +1644,20 @@ BATsettrivprop(BAT *b) static inline void BATnegateprops(BAT *b) { - /* disable all properties here */ - b->tnonil = false; - b->tnil = false; - if (b->ttype) { - b->tsorted = false; - b->trevsorted = false; - b->tnosorted = 0; - b->tnorevsorted = 0; - } - b->tseqbase = oid_nil; - b->tkey = false; - b->tnokey[0] = 0; - b->tnokey[1] = 0; - b->tmaxpos = b->tminpos = BUN_NONE; + /* disable all properties here */ + b->tnonil = false; + b->tnil = false; + if (b->ttype) { + b->tsorted = false; + b->trevsorted = false; + b->tnosorted = 0; + b->tnorevsorted = 0; + } + b->tseqbase = oid_nil; + b->tkey = false; + b->tnokey[0] = 0; + b->tnokey[1] = 0; + b->tmaxpos = b->tminpos = BUN_NONE; } /* @@ -2218,7 +2218,7 @@ gdk_export void VIEWbounds(BAT *b, BAT * if (!(f)) { \ MT_lock_set(&(x)->theaplock); \ if ((x)->batRestricted == BAT_READ || \ - ((ATOMIC_GET(&(x)->theap->refs) & HEAPREFS) > 1)) { \ + ((ATOMIC_GET(&(x)->theap->refs) & HEAPREFS) > 1)) { \ GDKerror("access denied to %s, aborting.\n", BATgetId(x)); \ MT_lock_unset(&(x)->theaplock); \ return (e); \ diff --git a/gdk/gdk_analytic.h b/gdk/gdk_analytic.h --- a/gdk/gdk_analytic.h +++ b/gdk/gdk_analytic.h @@ -75,8 +75,8 @@ gdk_export gdk_return GDKrebuild_segment } \ } \ \ - while (current_level < nlevels) { /* for the following levels we have to use the previous level results */ \ _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org