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 <[email protected]>
+- 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 -- [email protected]
To unsubscribe send an email to [email protected]