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

Reply via email to