Changeset: c9217c7d319c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/c9217c7d319c Branch: default Log Message:
Merge with Dec2023 branch. diffs (truncated from 1318 to 300 lines): diff --git a/ChangeLog.Dec2023 b/ChangeLog.Dec2023 --- a/ChangeLog.Dec2023 +++ b/ChangeLog.Dec2023 @@ -1,6 +1,10 @@ # ChangeLog file for devel # This file is updated with Maddlog +* Fri Dec 1 2023 Sjoerd Mullender <sjo...@acm.org> +- All binary packages are now signed with a new key with key fingerprint + DBCE 5625 94D7 1959 7B54 CE85 3F1A D47F 5521 A603. + * Mon Oct 30 2023 Sjoerd Mullender <sjo...@acm.org> - The ranges of merge partitions are now pushed down into the low level GDK operations, giving them a handle to sometimes execute more diff --git a/clients/Tests/MAL-signatures-hge.test b/clients/Tests/MAL-signatures-hge.test --- a/clients/Tests/MAL-signatures-hge.test +++ b/clients/Tests/MAL-signatures-hge.test @@ -49750,16 +49750,6 @@ SQLpercent_rank; return the percentage into the total number of groups for each row sql persist_unlogged -unsafe pattern sql.persist_unlogged() (X_0:bat[:str], X_1:bat[:int], X_2:bat[:lng]) -SQLpersist_unlogged; -Persist deltas on append only tables in current schema -sql -persist_unlogged -unsafe pattern sql.persist_unlogged(X_0:str) (X_1:bat[:str], X_2:bat[:int], X_3:bat[:lng]) -SQLpersist_unlogged; -Persist deltas on append only tables in schema s -sql -persist_unlogged unsafe pattern sql.persist_unlogged(X_0:str, X_1:str) (X_2:bat[:str], X_3:bat[:int], X_4:bat[:lng]) SQLpersist_unlogged; Persist deltas on append only table in schema s table t diff --git a/clients/Tests/MAL-signatures.test b/clients/Tests/MAL-signatures.test --- a/clients/Tests/MAL-signatures.test +++ b/clients/Tests/MAL-signatures.test @@ -38155,16 +38155,6 @@ SQLpercent_rank; return the percentage into the total number of groups for each row sql persist_unlogged -unsafe pattern sql.persist_unlogged() (X_0:bat[:str], X_1:bat[:int], X_2:bat[:lng]) -SQLpersist_unlogged; -Persist deltas on append only tables in current schema -sql -persist_unlogged -unsafe pattern sql.persist_unlogged(X_0:str) (X_1:bat[:str], X_2:bat[:int], X_3:bat[:lng]) -SQLpersist_unlogged; -Persist deltas on append only tables in schema s -sql -persist_unlogged unsafe pattern sql.persist_unlogged(X_0:str, X_1:str) (X_2:bat[:str], X_3:bat[:int], X_4:bat[:lng]) SQLpersist_unlogged; Persist deltas on append only table in schema s table t diff --git a/clients/odbc/ChangeLog.Dec2023 b/clients/odbc/ChangeLog.Dec2023 --- a/clients/odbc/ChangeLog.Dec2023 +++ b/clients/odbc/ChangeLog.Dec2023 @@ -1,3 +1,7 @@ # ChangeLog file for odbc # This file is updated with Maddlog +* Thu Nov 30 2023 Martin van Dinther <martin.van.dint...@monetdbsolutions.com> +- Corrected the output value of column CHAR_OCTET_LENGTH of ODBC functions + SQLColumns() and SQLProcedureColumns(). + diff --git a/clients/odbc/driver/ODBCQueries.h b/clients/odbc/driver/ODBCQueries.h --- a/clients/odbc/driver/ODBCQueries.h +++ b/clients/odbc/driver/ODBCQueries.h @@ -79,6 +79,7 @@ "when 'double' then 'DOUBLE' " \ "when 'hugeint' then 'HUGEINT' " \ "when 'int' then 'INTEGER' " \ + "when 'json' then 'JSON' " \ "when 'month_interval' then " \ "case " #t ".type_digits " \ "when 1 then 'INTERVAL YEAR' " \ @@ -105,7 +106,10 @@ "when 'timestamptz' then 'TIMESTAMP' " \ "when 'timetz' then 'TIME' " \ "when 'tinyint' then 'TINYINT' " \ + "when 'url' then 'URL' " \ + "when 'uuid' then 'UUID' " \ "when 'varchar' then 'VARCHAR' " \ + "when 'xml' then 'XML' " \ "end as \"TYPE_NAME\"" #define COLUMN_SIZE(t) \ @@ -135,6 +139,7 @@ "when 'timestamp' then 23 " \ "when 'timestamptz' then 23 " \ "when 'timetz' then 12 " \ + "when 'uuid' then 36 " \ "else " #t ".type_digits " \ "end as \"COLUMN_SIZE\"" @@ -147,6 +152,7 @@ "when 'double' then 24 " \ "when 'hugeint' then 40 " \ "when 'int' then 11 " \ + "when 'json' then 2 * " #t ".type_digits " \ "when 'month_interval' then " \ "case " #t ".type_digits " \ "when 1 then 26 " \ @@ -173,7 +179,10 @@ "when 'timestamptz' then 23 " \ "when 'timetz' then 12 " \ "when 'tinyint' then 4 " \ + "when 'url' then 2 * " #t ".type_digits " \ + "when 'uuid' then 36 " \ "when 'varchar' then 2 * " #t ".type_digits " \ + "when 'xml' then 2 * " #t ".type_digits " \ "else " #t ".type_digits " \ "end as integer) as \"BUFFER_LENGTH\"" @@ -242,6 +251,7 @@ "when 'timestamptz' then %d " \ "when 'timetz' then %d " \ "when 'tinyint' then %d " \ + "when 'uuid' then %d " \ "when 'varchar' then %d " \ "end as \"SQL_DATA_TYPE\"" #define SQL_DATA_TYPE_ARGS \ @@ -249,7 +259,7 @@ SQL_WLONGVARCHAR, SQL_DATETIME, SQL_INTERVAL, SQL_DECIMAL, SQL_DOUBLE, \ SQL_HUGEINT, SQL_INTEGER, SQL_INTERVAL, SQL_REAL, \ SQL_INTERVAL, SQL_SMALLINT, SQL_DATETIME, SQL_DATETIME, \ - SQL_DATETIME, SQL_DATETIME, SQL_TINYINT, SQL_WVARCHAR + SQL_DATETIME, SQL_DATETIME, SQL_TINYINT, SQL_GUID, SQL_WVARCHAR #define SQL_DATETIME_SUB(t) \ "case " #t ".type " \ @@ -291,10 +301,8 @@ SQL_CODE_TIME #define CHAR_OCTET_LENGTH(t) \ - "cast(case " #t ".type " \ - "when 'char' then 2 * " #t ".type_digits " \ - "when 'varchar' then 2 * " #t ".type_digits " \ - "when 'clob' then 2 * " #t ".type_digits " \ - "when 'blob' then " #t ".type_digits " \ + "cast(case when " #t ".type in ('varchar','clob','char','json','url','xml') " \ + "then 4 * " #t ".type_digits " \ + "when " #t ".type = 'blob' then " #t ".type_digits " \ "else cast(null as integer) " \ "end as integer) as \"CHAR_OCTET_LENGTH\"" diff --git a/clients/odbc/driver/SQLColumns.c b/clients/odbc/driver/SQLColumns.c --- a/clients/odbc/driver/SQLColumns.c +++ b/clients/odbc/driver/SQLColumns.c @@ -127,7 +127,7 @@ MNDBColumns(ODBCStmt *stmt, } /* construct the query now */ - querylen = 6500 + (sch ? strlen(sch) : 0) + + querylen = 6600 + (sch ? strlen(sch) : 0) + (tab ? strlen(tab) : 0) + (col ? strlen(col) : 0); query = malloc(querylen); if (query == NULL) @@ -217,7 +217,6 @@ MNDBColumns(ODBCStmt *stmt, #endif /* from clause: */ stmt->Dbc->has_comment ? " left outer join sys.comments com on com.id = c.id" : ""); - assert(pos < 6300); /* depending on the input parameter values we must add a variable selection condition dynamically */ @@ -248,6 +247,8 @@ MNDBColumns(ODBCStmt *stmt, /* add the ordering (exclude table_cat as it is the same for all rows) */ pos += strcpy_len(query + pos, " order by \"TABLE_SCHEM\", \"TABLE_NAME\", \"ORDINAL_POSITION\"", querylen - pos); + if (pos >= querylen) + fprintf(stderr, "pos >= querylen, %zu > %zu\n", pos, querylen); assert(pos < querylen); /* debug: fprintf(stdout, "SQLColumns query (pos: %zu, len: %zu):\n%s\n\n", pos, strlen(query), query); */ diff --git a/clients/odbc/driver/SQLProcedureColumns.c b/clients/odbc/driver/SQLProcedureColumns.c --- a/clients/odbc/driver/SQLProcedureColumns.c +++ b/clients/odbc/driver/SQLProcedureColumns.c @@ -119,7 +119,7 @@ MNDBProcedureColumns(ODBCStmt *stmt, } /* construct the query now */ - querylen = 6500 + (sch ? strlen(sch) : 0) + (prc ? strlen(prc) : 0) + + querylen = 6700 + (sch ? strlen(sch) : 0) + (prc ? strlen(prc) : 0) + (col ? strlen(col) : 0); query = malloc(querylen); if (query == NULL) @@ -228,7 +228,6 @@ MNDBProcedureColumns(ODBCStmt *stmt, stmt->Dbc->has_comment ? " left outer join sys.comments c on c.id = a.id" : "", /* where clause: */ F_FUNC, F_PROC, F_UNION); - assert(pos < 6400); /* depending on the input parameter values we must add a variable selection condition dynamically */ @@ -259,6 +258,8 @@ MNDBProcedureColumns(ODBCStmt *stmt, /* add the ordering (exclude procedure_cat as it is the same for all rows) */ pos += strcpy_len(query + pos, " order by \"PROCEDURE_SCHEM\", \"PROCEDURE_NAME\", \"SPECIFIC_NAME\", \"COLUMN_TYPE\", \"ORDINAL_POSITION\"", querylen - pos); + if (pos >= querylen) + fprintf(stderr, "pos >= querylen, %zu > %zu\n", pos, querylen); assert(pos < querylen); /* debug: fprintf(stdout, "SQLProcedureColumns query (pos: %zu, len: %zu):\n%s\n\n", pos, strlen(query), query); */ diff --git a/clients/odbc/driver/SQLSpecialColumns.c b/clients/odbc/driver/SQLSpecialColumns.c --- a/clients/odbc/driver/SQLSpecialColumns.c +++ b/clients/odbc/driver/SQLSpecialColumns.c @@ -207,7 +207,7 @@ MNDBSpecialColumns(ODBCStmt *stmt, } /* construct the query */ - querylen = 6000 + (sch ? strlen(sch) : 0) + (tab ? strlen(tab) : 0); + querylen = 6100 + (sch ? strlen(sch) : 0) + (tab ? strlen(tab) : 0); query = malloc(querylen); if (query == NULL) goto nomem; 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 @@ -608,12 +608,12 @@ main(int argc, char **argv) "TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE\n" "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(1024) WVARCHAR(1024) SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(2048) SMALLINT SMALLINT INTEGER INTEGER WVARCHAR(3)\n" "NULL odbctst nopk_twoucs id2 4 INTEGER 32 11 0 2 0 odbctst.nopk_twoucs.id2 column comment NULL 4 NULL NULL 1 NO\n" - "NULL odbctst nopk_twoucs name2 -9 VARCHAR 99 198 NULL NULL 1 odbctst.nopk_twoucs.name2 column comment NULL -9 NULL 198 2 YES\n" + "NULL odbctst nopk_twoucs name2 -9 VARCHAR 99 198 NULL NULL 1 odbctst.nopk_twoucs.name2 column comment NULL -9 NULL 396 2 YES\n" "NULL odbctst pk2c pkc1 4 INTEGER 32 11 0 2 0 NULL NULL 4 NULL NULL 1 NO\n" - "NULL odbctst pk2c pkc2 -9 VARCHAR 99 198 NULL NULL 0 NULL NULL -9 NULL 198 2 NO\n" - "NULL odbctst pk2c name1 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 198 3 YES\n" + "NULL odbctst pk2c pkc2 -9 VARCHAR 99 198 NULL NULL 0 NULL NULL -9 NULL 396 2 NO\n" + "NULL odbctst pk2c name1 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 396 3 YES\n" "NULL odbctst pk_uc id1 4 INTEGER 32 11 0 2 0 NULL NULL 4 NULL NULL 1 NO\n" - "NULL odbctst pk_uc name1 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 198 2 YES\n"); + "NULL odbctst pk_uc name1 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 396 2 YES\n"); // All columns of all tmp tables containg 'pk' in their name ret = SQLColumns(stmt, (SQLCHAR*)"", SQL_NTS, @@ -625,13 +625,13 @@ main(int argc, char **argv) "TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE\n" "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(1024) WVARCHAR(1024) SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(2048) SMALLINT SMALLINT INTEGER INTEGER WVARCHAR(3)\n" "NULL tmp glbl_nopk_twoucs id2 4 INTEGER 32 11 0 2 0 NULL NULL 4 NULL NULL 1 NO\n" - "NULL tmp glbl_nopk_twoucs name2 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 198 2 YES\n" + "NULL tmp glbl_nopk_twoucs name2 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 396 2 YES\n" "NULL tmp glbl_pk_uc id1 4 INTEGER 32 11 0 2 0 NULL NULL 4 NULL NULL 1 NO\n" - "NULL tmp glbl_pk_uc name1 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 198 2 YES\n" + "NULL tmp glbl_pk_uc name1 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 396 2 YES\n" "NULL tmp tmp_nopk_twoucs id2 4 INTEGER 32 11 0 2 0 NULL NULL 4 NULL NULL 1 NO\n" - "NULL tmp tmp_nopk_twoucs name2 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 198 2 YES\n" + "NULL tmp tmp_nopk_twoucs name2 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 396 2 YES\n" "NULL tmp tmp_pk_uc id1 4 INTEGER 32 11 0 2 0 NULL NULL 4 NULL NULL 1 NO\n" - "NULL tmp tmp_pk_uc name1 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 198 2 YES\n"); + "NULL tmp tmp_pk_uc name1 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 396 2 YES\n"); // All columns of all tmp tables containg 'pk' in their name and the column matching name_ pattern ret = SQLColumns(stmt, (SQLCHAR*)"", SQL_NTS, @@ -642,10 +642,10 @@ main(int argc, char **argv) "Resultset with 4 rows\n" "TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE\n" "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(1024) WVARCHAR(1024) SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(2048) SMALLINT SMALLINT INTEGER INTEGER WVARCHAR(3)\n" - "NULL tmp glbl_nopk_twoucs name2 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 198 2 YES\n" - "NULL tmp glbl_pk_uc name1 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 198 2 YES\n" - "NULL tmp tmp_nopk_twoucs name2 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 198 2 YES\n" - "NULL tmp tmp_pk_uc name1 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 198 2 YES\n"); + "NULL tmp glbl_nopk_twoucs name2 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 396 2 YES\n" + "NULL tmp glbl_pk_uc name1 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 396 2 YES\n" + "NULL tmp tmp_nopk_twoucs name2 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 396 2 YES\n" + "NULL tmp tmp_pk_uc name1 -9 VARCHAR 99 198 NULL NULL 1 NULL NULL -9 NULL 396 2 YES\n"); ret = SQLSpecialColumns(stmt, SQL_ROWVER, (SQLCHAR*)NULL, 0, (SQLCHAR*)"%", SQL_NTS, (SQLCHAR*)"%", SQL_NTS, @@ -1251,12 +1251,12 @@ main(int argc, char **argv) "Resultset with 6 rows\n" "PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME COLUMN_NAME COLUMN_TYPE DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SPECIFIC_NAME\n" "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(256) WVARCHAR(256) SMALLINT SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(1) SMALLINT SMALLINT INTEGER INTEGER WCHAR WVARCHAR(10)\n" - "NULL sys analyze sname 1 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 2048 1 replacedId\n" - "NULL sys analyze sname 1 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 2048 1 replacedId\n" - "NULL sys analyze tname 1 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 2048 2 replacedId\n" - "NULL sys analyze sname 1 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 2048 1 replacedId\n" - "NULL sys analyze tname 1 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 2048 2 replacedId\n" - "NULL sys analyze cname 1 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 2048 3 replacedId\n"); + "NULL sys analyze sname 1 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 4096 1 replacedId\n" + "NULL sys analyze sname 1 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 4096 1 replacedId\n" + "NULL sys analyze tname 1 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 4096 2 replacedId\n" + "NULL sys analyze sname 1 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 4096 1 replacedId\n" + "NULL sys analyze tname 1 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 4096 2 replacedId\n" + "NULL sys analyze cname 1 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 4096 3 replacedId\n"); // test function sys.sin(). There are 2 overloaded variants of this function in MonetDB: sys.sin(real) and sys.sin(double). ret = SQLProcedures(stmt, (SQLCHAR*)"", SQL_NTS, @@ -1300,8 +1300,8 @@ main(int argc, char **argv) "Resultset with 2 rows\n" "PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME COLUMN_NAME COLUMN_TYPE DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SPECIFIC_NAME\n" "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(256) WVARCHAR(256) SMALLINT SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(1) SMALLINT SMALLINT INTEGER INTEGER WCHAR WVARCHAR(10)\n" - "NULL sys env name 3 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 2048 1 replacedId\n" - "NULL sys env value 3 -9 VARCHAR 2048 4096 NULL NULL 2 NULL NULL -9 NULL 4096 2 replacedId\n"); + "NULL sys env name 3 -9 VARCHAR 1024 2048 NULL NULL 2 NULL NULL -9 NULL 4096 1 replacedId\n" + "NULL sys env value 3 -9 VARCHAR 2048 4096 NULL NULL 2 NULL NULL -9 NULL 8192 2 replacedId\n"); // test table returning function sys.statistics(). 4 overloaded variants with 0, 1, 2 or 3 input parameters. 13 result columns. ret = SQLProcedures(stmt, (SQLCHAR*)"", SQL_NTS, @@ -1326,10 +1326,10 @@ main(int argc, char **argv) "WVARCHAR(1) WVARCHAR(1024) WVARCHAR(256) WVARCHAR(256) SMALLINT SMALLINT WCHAR(25) INTEGER INTEGER SMALLINT SMALLINT SMALLINT WVARCHAR(65000) WVARCHAR(1) SMALLINT SMALLINT INTEGER INTEGER WCHAR WVARCHAR(10)\n" _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org