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