Changeset: d83343a770f8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/d83343a770f8 Modified Files: clients/Tests/exports.stable.out gdk/gdk.h sql/backends/monet5/sql_scenario.c sql/test/sql_dump/Tests/dump.test Branch: groupjoin Log Message:
merged with default diffs (truncated from 18241 to 300 lines): 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 @@ -277,6 +277,7 @@ bit GDKfataljumpenable; str GDKfatalmsg; char *GDKfilepath(int farmid, const char *dir, const char *nme, const char *ext); void GDKfree(void *blk); +char *GDKgetbuf(void); unsigned GDKgetdebug(void); const char *GDKgetenv(const char *name); int GDKgetenv_int(const char *name, int def); @@ -307,9 +308,12 @@ void GDKqsort(void *restrict h, void *re void *GDKrealloc(void *pold, size_t size) __attribute__((__alloc_size__(2))) __attribute__((__warn_unused_result__)); gdk_return GDKrebuild_segment_tree(oid ncount, oid data_size, BAT *st, void **segment_tree, oid **levels_offset, oid *nlevels); void GDKreset(int status); +void GDKsetbuf(char *); void GDKsetdebug(unsigned debug); gdk_return GDKsetenv(const char *name, const char *value); void GDKsetmallocsuccesscount(lng count); +stream *GDKstdin; +stream *GDKstdout; ssize_t GDKstrFromStr(unsigned char *restrict dst, const unsigned char *restrict src, ssize_t len, char quote); str GDKstrdup(const char *s) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)); str GDKstrndup(const char *s, size_t n) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)); @@ -370,11 +374,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); @@ -400,14 +406,7 @@ BUN SORTfndlast(BAT *b, const void *v); gdk_return STRMPcreate(BAT *b, BAT *s); void STRMPdestroy(BAT *b); BAT *STRMPfilter(BAT *b, BAT *s, const char *q, const bool keep_nils); -MT_Id THRcreate(void (*f)(void *), void *arg, enum MT_thr_detach d, const char *name); -void *THRdata[THREADDATA]; -void THRdel(Thread t); -Thread THRget(int tid); -void *THRgetdata(int); -int THRgettid(void); -int THRhighwater(void); -void THRsetdata(int, void *); +bool THRhighwater(void); gdk_return TMsubcommit(BAT *bl) __attribute__((__warn_unused_result__)); gdk_return TMsubcommit_list(bat *restrict subcommit, BUN *restrict sizes, int cnt, lng logno, lng transid) __attribute__((__warn_unused_result__)); void VALclear(ValPtr v); diff --git a/clients/examples/C/testcondvar.c b/clients/examples/C/testcondvar.c --- a/clients/examples/C/testcondvar.c +++ b/clients/examples/C/testcondvar.c @@ -149,9 +149,7 @@ main(void) fprintf(stderr, "\n-- Starting the worker threads\n"); for (int i = 0; i < NN; i++) { struct state *st = &states[i]; - char name[MT_NAME_LEN]; - snprintf(name, sizeof(name), "worker%d", i); - MT_create_thread(&st->id, worker, st, MT_THR_JOINABLE, name); + MT_create_thread(&st->id, worker, st, MT_THR_JOINABLE, "workerXXXX"); } MT_sleep_ms(100); diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -810,7 +810,7 @@ dump_type(Mapi mid, stream *toConsole, c space = mnstr_printf(toConsole, "INTERVAL MONTH"); else fprintf(stderr, "Internal error: unrecognized month interval %s\n", c_type_digits); - } else if (strlen(c_type) > 4 && strcmp(c_type+3, "_interval") == 0) { + } else if (strcmp(c_type, "day_interval") == 0 || strcmp(c_type, "sec_interval") == 0) { if (strcmp(c_type_digits, "4") == 0) space = mnstr_printf(toConsole, "INTERVAL DAY"); else if (strcmp(c_type_digits, "5") == 0) @@ -1874,7 +1874,7 @@ dump_table_data(Mapi mid, const char *sc if (s == NULL) mnstr_printf(toConsole, "NULL"); else if (useInserts) { - if (strlen(tp) > 4 && strcmp(tp+3, "_interval") == 0) { + if (strcmp(tp, "day_interval") == 0 || strcmp(tp, "sec_interval") == 0) { const char *p = strchr(s, '.'); if (p == NULL) p = s + strlen(s); 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," - "NULLIF,NULLS,NUMERIC,OBJECT,OF,OFFSET,OLD,ON,ONLY," - "OPTION,OPTIONS,OR,ORDER,ORDERED,OTHERS,OUTER,OVER," - "PARTIAL,PARTITION,PASSWORD,PATH,PLAN,POSITION," - "PRECEDING,PRECISION,PREP,PREPARE,PRESERVE,PRIMARY," - "PRIVILEGES,PROCEDURE,PUBLIC,QUARTER,RANGE,READ,REAL," - "RECORDS,REFERENCES,REFERENCING,RELEASE,REMOTE,RENAME," - "REPEATABLE,REPLACE,REPLICA,RESTART,RESTRICT,RETURN," - "RETURNS,REVOKE,RIGHT,ROLE,ROLLBACK,ROLLUP,ROW,ROWS," - "SAMPLE,SAVEPOINT,SCHEMA,SECOND,SEED,SELECT,SEQUENCE," - "SERIAL,SERIALIZABLE,SERVER,SESSION,SESSION_USER,SET," - "SETS,SIMPLE,SIZE,SMALLINT,SOME,SPLIT_PART,START," - "STATEMENT,STDIN,STDOUT,STORAGE,STRING,SUBSTRING," - "SYMMETRIC,TABLE,TEMP,TEMPORARY,TEXT,THEN,TIES,TIME," - "TIMESTAMP,TINYINT,TO,TRACE,TRANSACTION,TRIGGER,TRUE," - "TRUNCATE,TYPE,UNBOUNDED,UNCOMMITTED,UNENCRYPTED,UNION," - "UNIQUE,UPDATE,USER,USING,VALUE,VALUES,VARCHAR,VARYING," - "VIEW,WEEK,WHEN,WHERE,WHILE,WINDOW,WITH,WORK,WRITE," _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org