Changeset: 8c3594cc5229 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8c3594cc5229
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/server/rel_optimize_others.c
        sql/server/rel_rel.c
        sql/server/rel_rel.h
        sql/server/rel_select.c
Branch: balanced_union
Log Message:

Merges with default


diffs (truncated from 25740 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/README.rst b/README.rst
--- a/README.rst
+++ b/README.rst
@@ -61,35 +61,35 @@ the first of the ``cmake`` command lines
 otherwise, options are ``ON`` when the relevant libraries can be found.
 Available options are:
 
-==============  
===============================================================================================
-Option          Explanation
-==============  
===============================================================================================
-ASSERT          Enable asserts (default=ON for development sources, OFF for 
tarball installation)
-CINTEGRATION    Enable support for C UDFs (default=ON except on Windows)
-CMAKE_SUMMARY   Show a summary of the cmake configuration (for debug purposes, 
default=OFF)
-CMAKE_UNITTEST  Build and run the unittest for the build system (default=OFF)
-FITS            Enable support for FITS
-GEOM            Enable support for geom module
-INT128          Enable support for 128-bit integers
-NETCDF          Enable support for netcdf
-ODBC            Compile the MonetDB ODBC driver
-PY3INTEGRATION  Enable support for Python 3 integration into MonetDB
-RINTEGRATION    Enable support for R integration into MonetDB
-SANITIZER       Enable support for the GCC address sanitizer (default=OFF)
-SHP             Enable support for ESRI Shapefiles
-STRICT          Enable strict compiler flags (default=ON for development 
sources, OFF for tarball installation)
-TESTING         Enable support for testing
-WITH_BZ2        Include bz2 support
-WITH_CMOCKA     Include cmocka support (default=OFF)
-WITH_CURL       Include curl support
-WITH_LZMA       Include lzma support
-WITH_PCRE       Include pcre support
-WITH_PROJ       Include proj support
-WITH_READLINE   Include readline support
-WITH_VALGRIND   Include valgrind support
-WITH_XML2       Include xml2 support
-WITH_ZLIB       Include zlib support
-==============  
===============================================================================================
+=================   
===============================================================================================
+Option              Explanation
+=================   
===============================================================================================
+ASSERT              Enable asserts (default=ON for development sources, OFF 
for tarball installation)
+CINTEGRATION        Enable support for C UDFs (default=ON except on Windows)
+CMAKE_SUMMARY       Show a summary of the cmake configuration (for debug 
purposes, default=OFF)
+CMAKE_UNITTESTS     Build and run the unittest for the build system 
(default=OFF)
+FITS                Enable support for FITS
+GEOM                Enable support for geom module
+INT128              Enable support for 128-bit integers
+NETCDF              Enable support for netcdf
+ODBC                Compile the MonetDB ODBC driver
+PY3INTEGRATION      Enable support for Python 3 integration into MonetDB
+RINTEGRATION        Enable support for R integration into MonetDB
+SANITIZER           Enable support for the GCC address sanitizer (default=OFF)
+SHP                 Enable support for ESRI Shapefiles
+STRICT              Enable strict compiler flags (default=ON for development 
sources, OFF for tarball installation)
+TESTING             Enable support for testing
+WITH_BZ2            Include bz2 support
+WITH_CMOCKA         Include cmocka support (default=OFF)
+WITH_CURL           Include curl support
+WITH_LZMA           Include lzma support
+WITH_PCRE           Include pcre support
+WITH_PROJ           Include proj support
+WITH_READLINE       Include readline support
+WITH_VALGRIND       Include valgrind support
+WITH_XML2           Include xml2 support
+WITH_ZLIB           Include zlib support
+=================   
===============================================================================================
 
 Required and Optional Packages
 ..............................
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
@@ -369,11 +369,13 @@ int MT_rename(const char *old, const cha
 int MT_rmdir(const char *dirname);
 void MT_sleep_ms(unsigned int ms);
 int MT_stat(const char *filename, struct stat *stb);
+void MT_thread_deregister(void);
 QryCtx *MT_thread_get_qry_ctx(void);
 const char *MT_thread_getalgorithm(void);
 void *MT_thread_getdata(void);
 const char *MT_thread_getname(void);
 bool MT_thread_init(void);
+bool MT_thread_register(void);
 void MT_thread_set_qry_ctx(QryCtx *ctx);
 void MT_thread_setalgorithm(const char *algo);
 void MT_thread_setdata(void *data);
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/SQLGetInfo.c b/clients/odbc/driver/SQLGetInfo.c
--- a/clients/odbc/driver/SQLGetInfo.c
+++ b/clients/odbc/driver/SQLGetInfo.c
@@ -589,28 +589,28 @@ MNDBGetInfo(ODBCDbc *dbc,
                /* SQL_IK_ASC | SQL_IK_DESC | SQL_IK_ALL */
                break;
        case SQL_INFO_SCHEMA_VIEWS:
+               nValue = SQL_ISV_CHARACTER_SETS |
+                       SQL_ISV_COLUMNS |
+                       SQL_ISV_SCHEMATA |
+                       SQL_ISV_TABLES |
+                       SQL_ISV_VIEWS;
                /* SQL_ISV_ASSERTIONS |
-                * SQL_ISV_CHARACTER_SETS |
                 * SQL_ISV_CHECK_CONSTRAINTS |
                 * SQL_ISV_COLLATIONS |
                 * SQL_ISV_COLUMN_DOMAIN_USAGE |
                 * SQL_ISV_COLUMN_PRIVILEGES |
-                * SQL_ISV_COLUMNS |
                 * SQL_ISV_CONSTRAINT_COLUMN_USAGE |
                 * SQL_ISV_CONSTRAINT_TABLE_USAGE |
                 * SQL_ISV_DOMAIN_CONSTRAINTS |
                 * SQL_ISV_DOMAINS |
                 * SQL_ISV_KEY_COLUMN_USAGE |
                 * SQL_ISV_REFERENTIAL_CONSTRAINTS |
-                * SQL_ISV_SCHEMATA |
                 * SQL_ISV_SQL_LANGUAGES |
                 * SQL_ISV_TABLE_CONSTRAINTS |
                 * SQL_ISV_TABLE_PRIVILEGES |
-                * SQL_ISV_TABLES |
                 * SQL_ISV_TRANSLATIONS |
                 * SQL_ISV_USAGE_PRIVILEGES |
                 * SQL_ISV_VIEW_COLUMN_USAGE |
-                * SQL_ISV_VIEWS |
                 * SQL_ISV_VIEW_TABLE_USAGE */
                break;
        case SQL_INSERT_STATEMENT:
@@ -663,9 +663,46 @@ MNDBGetInfo(ODBCDbc *dbc,
                 * SQL_CA2_SIMULATE_UNIQUE */
                break;
        case SQL_KEYWORDS:
-               /* Returns the MonetDB keywords, i.e. a dump of
-                * sys.keywords */
-               if ((hdl = mapi_query(dbc->mid, "WITH x(k) AS (SELECT keyword 
FROM sys.keywords ORDER BY keyword) SELECT group_concat(k, ',') FROM x")) != 
NULL && mapi_fetch_row(hdl)) {
+               /* A character string that contains a comma-separated list of 
all data source-specific keywords.
+                * This list does not contain keywords specific to ODBC or 
keywords used by both the data source and ODBC.
+                * This list represents all the reserved keywords; 
interoperable applications should not use these words in object names.
+                * Returns the MonetDB sys.keywords minus the ODBC keywords: 
https://learn.microsoft.com/en-us/sql/odbc/reference/appendixes/reserved-keywords
 */
+               hdl = mapi_query(dbc->mid,
+                       "WITH x(k) AS (SELECT keyword FROM sys.keywords WHERE 
keyword NOT IN ("
+                       
"'ABSOLUTE','ACTION','ADA','ADD','ALL','ALLOCATE','ALTER','AND','ANY',"
+                       
"'ARE','AS','ASC','ASSERTION','AT','AUTHORIZATION','AVG',"
+                       "'BEGIN','BETWEEN','BIT','BIT_LENGTH','BOTH','BY',"
+                       
"'CASCADE','CASCADED','CASE','CAST','CATALOG','CHAR','CHAR_LENGTH',"
+                       
"'CHARACTER','CHARACTER_LENGTH','CHECK','CLOSE','COALESCE',"
+                       
"'COLLATE','COLLATION','COLUMN','COMMIT','CONNECT','CONNECTION','CONSTRAINT',"
+                       
"'CONSTRAINTS','CONTINUE','CONVERT','CORRESPONDING','COUNT','CREATE','CROSS',"
+                       
"'CURRENT','CURRENT_DATE','CURRENT_TIME','CURRENT_TIMESTAMP','CURRENT_USER','CURSOR',"
+                       
"'DATE','DAY','DEALLOCATE','DEC','DECIMAL','DECLARE','DEFAULT','DEFERRABLE',"
+                       
"'DEFERRED','DELETE','DESC','DESCRIBE','DESCRIPTOR','DIAGNOSTICS','DISCONNECT',"
+                       "'DISTINCT','DOMAIN','DOUBLE','DROP',"
+                       
"'ELSE','END','END-EXEC','ESCAPE','EXCEPT','EXCEPTION','EXEC','EXECUTE',"
+                       "'EXISTS','EXTERNAL','EXTRACT',"
+                       
"'FALSE','FETCH','FIRST','FLOAT','FOR','FOREIGN','FORTRAN','FOUND','FROM','FULL',"
+                       
"'GET','GLOBAL','GO','GOTO','GRANT','GROUP','HAVING','HOUR',"
+                       
"'IDENTITY','IMMEDIATE','IN','INCLUDE','INDEX','INDICATOR','INITIALLY','INNER','INPUT',"
+                       
"'INSENSITIVE','INSERT','INT','INTEGER','INTERSECT','INTERVAL','INTO','IS','ISOLATION',"
+                       
"'JOIN','KEY','LANGUAGE','LAST','LEADING','LEFT','LEVEL','LIKE','LOCAL','LOWER',"
+                       "'MATCH','MAX','MIN','MINUTE','MODULE','MONTH',"
+                       
"'NAMES','NATIONAL','NATURAL','NCHAR','NEXT','NO','NONE','NOT','NULL','NULLIF','NUMERIC',"
+                       
"'OCTET_LENGTH','OF','ON','ONLY','OPEN','OPTION','OR','ORDER','OUTER','OUTPUT','OVERLAPS',"
+                       
"'PAD','PARTIAL','PASCAL','PLI','POSITION','PRECISION','PREPARE','PRESERVE',"
+                       "'PRIMARY','PRIOR','PRIVILEGES','PROCEDURE','PUBLIC',"
+                       
"'READ','REAL','REFERENCES','RELATIVE','RESTRICT','REVOKE','RIGHT','ROLLBACK','ROWS',"
+                       
"'SCHEMA','SCROLL','SECOND','SECTION','SELECT','SESSION','SESSION_USER','SET',"
+                       
"'SIZE','SMALLINT','SOME','SPACE','SQL','SQLCA','SQLCODE','SQLERROR',"
+                       
"'SQLSTATE','SQLWARNING','SUBSTRING','SUM','SYSTEM_USER',"
+                       
"'TABLE','TEMPORARY','THEN','TIME','TIMESTAMP','TIMEZONE_HOUR','TIMEZONE_MINUTE',"
+                       
"'TO','TRAILING','TRANSACTION','TRANSLATE','TRANSLATION','TRIM','TRUE',"
+                       
"'UNION','UNIQUE','UNKNOWN','UPDATE','UPPER','USAGE','USER','USING',"
+                       "'VALUE','VALUES','VARCHAR','VARYING','VIEW',"
+                       "'WHEN','WHENEVER','WHERE','WITH','WORK','WRITE',"
+                       "'YEAR','ZONE') ORDER BY keyword) SELECT 
group_concat(k, ',') FROM x");
+               if (hdl != NULL && mapi_fetch_row(hdl)) {
                        sValue = mapi_fetch_field(hdl, 0);
                } else {
                        addDbcError(dbc, mapi_error(dbc->mid) == MTIMEOUT ? 
"HYT01" : "HY000", NULL, 0);
diff --git a/clients/odbc/tests/ODBCgetInfo.c b/clients/odbc/tests/ODBCgetInfo.c
--- a/clients/odbc/tests/ODBCgetInfo.c
+++ b/clients/odbc/tests/ODBCgetInfo.c
@@ -618,7 +618,7 @@ const struct {
                .info = SQL_INFO_SCHEMA_VIEWS,
                .name = "SQL_INFO_SCHEMA_VIEWS",
                .type = INTEGER,
-               .i = 0,
+               .i = SQL_ISV_CHARACTER_SETS | SQL_ISV_COLUMNS | 
SQL_ISV_SCHEMATA | SQL_ISV_TABLES | SQL_ISV_VIEWS,
        },
        {
                .info = SQL_INSERT_STATEMENT,
@@ -648,49 +648,33 @@ const struct {
                .info = SQL_KEYWORDS,
                .name = "SQL_KEYWORDS",
                .type = STRING,
-               .str = "ADD,ADMIN,AFTER,AGGREGATE,ALL,ALTER,ALWAYS,ANALYZE,AND,"
-                       "ANY,ASC,ASYMMETRIC,AT,ATOMIC,AUTHORIZATION,"
-                       "AUTO_INCREMENT,BEFORE,BEGIN,BEST,BETWEEN,BIG,BIGINT,"
-                       "BIGSERIAL,BINARY,BLOB,BY,CACHE,CALL,CASCADE,CASE,CAST,"
-                       "CENTURY,CHAIN,CHAR,CHARACTER,CHECK,CLIENT,CLOB,"
-                       "COALESCE,COLUMN,COMMENT,COMMIT,COMMITTED,CONSTRAINT,"
-                       "CONTINUE,CONVERT,COPY,CORRESPONDING,CREATE,CROSS,CUBE,"
-                       "CURRENT,CURRENT_DATE,CURRENT_ROLE,CURRENT_SCHEMA,"
-                       "CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_TIMEZONE,"
-                       "CURRENT_USER,CYCLE,DATA,DATE,DAY,DEALLOCATE,DEBUG,DEC,"
-                       "DECADE,DECIMAL,DECLARE,DEFAULT,DELETE,DELIMITERS,DESC,"
-                       "DIAGNOSTICS,DISTINCT,DO,DOUBLE,DOW,DOY,DROP,EACH,"
-                       "EFFORT,ELSE,ELSEIF,ENCRYPTED,END,ENDIAN,EPOCH,ESCAPE,"
-                       "EVERY,EXCEPT,EXCLUDE,EXEC,EXECUTE,EXISTS,EXPLAIN,"
-                       "EXTERNAL,EXTRACT,FALSE,FIRST,FLOAT,FOLLOWING,FOR,"
-                       "FOREIGN,FROM,FULL,FUNCTION,FWF,GENERATED,GLOBAL,GRANT,"
-                       "GROUP,GROUPING,GROUPS,HAVING,HOUR,HUGEINT,IDENTITY,IF,"
-                       "ILIKE,IMPRINTS,IN,INCREMENT,INDEX,INNER,INSERT,INT,"
-                       "INTEGER,INTERSECT,INTERVAL,INTO,IS,ISOLATION,JOIN,KEY,"
-                       "LANGUAGE,LARGE,LAST,LATERAL,LEFT,LEVEL,LIKE,LIMIT,"
-                       "LITTLE,LOADER,LOCAL,LOCALTIME,LOCALTIMESTAMP,MATCH,"
-                       "MATCHED,MAXVALUE,MEDIUMINT,MERGE,MINUTE,MINVALUE,"
-                       "MONTH,NAME,NATIVE,NATURAL,NEW,NEXT,NO,NOT,NOW,NULL,"
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to