MonetDB: check - merge with default

2024-05-22 Thread Yunus Koning via checkin-list
Changeset: 1c112b6b273c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1c112b6b273c
Branch: check
Log Message:

merge with default


diffs (truncated from 619 to 300 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1038,6 +1038,7 @@ log_read_types_file(logger *lg, FILE *fp
 {
int id = 0;
char atom_name[IDLENGTH];
+   bool seen_geom = false;
 
/* scanf should use IDLENGTH somehow */
while (fscanf(fp, "%d,%63s\n", &id, atom_name) == 2) {
@@ -1049,9 +1050,17 @@ log_read_types_file(logger *lg, FILE *fp
GDKerror("unknown type in log file '%s'\n", atom_name);
return GDK_FAIL;
}
+   seen_geom |= strcmp(atom_name, "mbr") == 0 || strcmp(atom_name, 
"wkb") == 0;
lg->type_id[i] = (int8_t) id;
lg->type_nr[id < 0 ? 256 + id : id] = i;
}
+#ifdef HAVE_GEOM
+   if (!seen_geom && ATOMindex("mbr") > 0) {
+   GDKerror("incompatible database: server supports GEOM, but 
database does not\n");
+   return GDK_FAIL;
+   }
+#endif
+   (void) seen_geom;
return GDK_SUCCEED;
 }
 
@@ -1802,7 +1811,8 @@ bm_subcommit(logger *lg, logged_range *p
cleanup++;
if (lids[p] == -1)
continue;
-   if (BUNappend(dcatalog, &(oid){p}, true) != 
GDK_SUCCEED) {
+   if (BUNfnd(dcatalog, &(oid){p}) == BUN_NONE &&
+   BUNappend(dcatalog, &(oid){p}, true) != 
GDK_SUCCEED) {
while (BATcount(dcatalog) > dcnt) {
if (BUNdelete(dcatalog, 
BATcount(dcatalog) - 1) != GDK_SUCCEED) {
TRC_CRITICAL(WAL, "delete after 
failed append failed\n");
diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c
--- a/gdk/gdk_string.c
+++ b/gdk/gdk_string.c
@@ -1477,153 +1477,155 @@ GDKanalytical_str_group_concat(BAT *r, B
  * Only for the casefold table, if the converted codepoint is negative,
  * it is actually an escape into the specialcase table.  The absolute
  * value is the index. */
+
+/* These tables were created using the code in unicaseconvtabs.py */
 static const char *const specialcase[] = {
NULL,
-   "ss",
-   "i\xCC\x87",
-   "\xCA\xBCn",
-   "j\xCC\x8C",
-   "\xCE\xB9\xCC\x88\xCC\x81",
-   "\xCF\x85\xCC\x88\xCC\x81",
-   "\xD5\xA5\xD6\x82",
-   "h\xCC\xB1",
-   "t\xCC\x88",
-   "w\xCC\x8A",
-   "y\xCC\x8A",
-   "a\xCA\xBE",
-   "\xCF\x85\xCC\x93",
-   "\xCF\x85\xCC\x93\xCC\x80",
-   "\xCF\x85\xCC\x93\xCC\x81",
-   "\xCF\x85\xCC\x93\xCD\x82",
-   "\xE1\xBC\x80\xCE\xB9",
-   "\xE1\xBC\x81\xCE\xB9",
-   "\xE1\xBC\x82\xCE\xB9",
-   "\xE1\xBC\x83\xCE\xB9",
-   "\xE1\xBC\x84\xCE\xB9",
-   "\xE1\xBC\x85\xCE\xB9",
-   "\xE1\xBC\x86\xCE\xB9",
-   "\xE1\xBC\x87\xCE\xB9",
-   "\xE1\xBC\xA0\xCE\xB9",
-   "\xE1\xBC\xA1\xCE\xB9",
-   "\xE1\xBC\xA2\xCE\xB9",
-   "\xE1\xBC\xA3\xCE\xB9",
-   "\xE1\xBC\xA4\xCE\xB9",
-   "\xE1\xBC\xA5\xCE\xB9",
-   "\xE1\xBC\xA6\xCE\xB9",
-   "\xE1\xBC\xA7\xCE\xB9",
-   "\xE1\xBD\xA0\xCE\xB9",
-   "\xE1\xBD\xA1\xCE\xB9",
-   "\xE1\xBD\xA2\xCE\xB9",
-   "\xE1\xBD\xA3\xCE\xB9",
-   "\xE1\xBD\xA4\xCE\xB9",
-   "\xE1\xBD\xA5\xCE\xB9",
-   "\xE1\xBD\xA6\xCE\xB9",
-   "\xE1\xBD\xA7\xCE\xB9",
-   "\xE1\xBD\xB0\xCE\xB9",
-   "\xCE\xB1\xCE\xB9",
-   "\xCE\xAC\xCE\xB9",
-   "\xCE\xB1\xCD\x82",
-   "\xCE\xB1\xCD\x82\xCE\xB9",
-   "\xE1\xBD\xB4\xCE\xB9",
-   "\xCE\xB7\xCE\xB9",
-   "\xCE\xAE\xCE\xB9",
-   "\xCE\xB7\xCD\x82",
-   "\xCE\xB7\xCD\x82\xCE\xB9",
-   "\xCE\xB9\xCC\x88\xCC\x80",
-   "\xCE\xB9\xCD\x82",
-   "\xCE\xB9\xCC\x88\xCD\x82",
-   "\xCF\x85\xCC\x88\xCC\x80",
-   "\xCF\x81\xCC\x93",
-   "\xCF\x85\xCD\x82",
-   "\xCF\x85\xCC\x88\xCD\x82",
-   "\xE1\xBD\xBC\xCE\xB9",
-   "\xCF\x89\xCE\xB9",
-   "\xCF\x8E\xCE\xB9",
-   "\xCF\x89\xCD\x82",
-   "\xCF\x89\xCD\x82\xCE\xB9",
-   "ff",
-   "fi",
-   "fl",
-   "ffi",
-   "ffl",
-   "st",
-   "\xD5\xB4\xD5\xB6",
-   "\xD5\xB4\xD5\xA5",
-   "\xD5\xB4\xD5\xAB",
-   "\xD5\xBE\xD5\xB6",
-   "\xD5\xB4\xD5\xAD",
-   "SS",
-   "FF",
-   "FI",
-   "FL",
-   "FFI",
-   "FFL",
-   "ST",
-   "\xD4\xB5\xD5\x92",
-   "\xD5\x84\xD5\x86",
-   "\xD5\x84\xD4\xB5",
-   "\xD5\x84\xD4\xBB",
-   "\xD5\x8E\xD5\x86",
-   "\xD5\x84\xD4\xBD",
-   "\xCA\xBCN",
-   "\xCE\x99\xCC\x88\xCC\x81",
-   "\xCE\xA5\xCC\x88\xCC\x81",
-   "J\xCC\x8C",
-   "H\xCC\xB1",
-   "T\xCC\x88",
-   "W\xCC\x8A",
-   "Y\xCC\x8A",
-   "A\xCA\xBE",
-   "\xCE\xA5\

MonetDB: check - approve new test output

2024-05-22 Thread Yunus Koning via checkin-list
Changeset: 8f41e6d99b7e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8f41e6d99b7e
Modified Files:

sql/test/BugTracker-2018/Tests/groupby_having_orderby_count.Bug-6624.test
sql/test/BugTracker-2019/Tests/alter_table_set_schema.Bug-6701.test
sql/test/bugs/Tests/groupby_having-bug-sf-947600.test
sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test
sql/test/bugs/Tests/select_orderby_alias-bug-sf-1024615.test
sql/test/pg_regress/Tests/alter_table.test
sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.test
sql/test/sys-schema/Tests/check_Not_Nullable_columns.test
Branch: check
Log Message:

approve new test output


diffs (277 lines):

diff --git 
a/sql/test/BugTracker-2018/Tests/groupby_having_orderby_count.Bug-6624.test 
b/sql/test/BugTracker-2018/Tests/groupby_having_orderby_count.Bug-6624.test
--- a/sql/test/BugTracker-2018/Tests/groupby_having_orderby_count.Bug-6624.test
+++ b/sql/test/BugTracker-2018/Tests/groupby_having_orderby_count.Bug-6624.test
@@ -10,7 +10,7 @@ 20
 smallint
 6
 varchar
-14
+15
 
 query TI rowsort
 SELECT type,COUNT(id) FROM cols_6624 GROUP BY type HAVING COUNT(id)>5 ORDER BY 
2 DESC
@@ -20,7 +20,7 @@ 20
 smallint
 6
 varchar
-14
+15
 
 query TI rowsort
 SELECT type,COUNT(id) as cnt FROM cols_6624 GROUP BY type HAVING COUNT(id)>5 
ORDER BY cnt DESC
@@ -30,7 +30,7 @@ 20
 smallint
 6
 varchar
-14
+15
 
 statement ok
 DROP TABLE cols_6624
diff --git 
a/sql/test/BugTracker-2019/Tests/alter_table_set_schema.Bug-6701.test 
b/sql/test/BugTracker-2019/Tests/alter_table_set_schema.Bug-6701.test
--- a/sql/test/BugTracker-2019/Tests/alter_table_set_schema.Bug-6701.test
+++ b/sql/test/BugTracker-2019/Tests/alter_table_set_schema.Bug-6701.test
@@ -6,7 +6,7 @@ query ITTIIITIIT rowsort
 SELECT * FROM sys._columns WHERE table_id NOT IN (SELECT id FROM sys._tables)
 
 
-query IIITII rowsort
+query IIITIIT rowsort
 SELECT * FROM sys.keys WHERE table_id NOT IN (SELECT id FROM sys.tables)
 
 
@@ -106,7 +106,7 @@ query ITTIIITIIT rowsort
 SELECT * FROM sys._columns WHERE table_id NOT IN (SELECT id FROM sys._tables)
 
 
-query IIITII rowsort
+query IIITIIT rowsort
 SELECT * FROM sys.keys WHERE table_id NOT IN (SELECT id FROM sys.tables)
 
 
@@ -137,7 +137,7 @@ query ITTIIITIIT rowsort
 SELECT * FROM sys._columns WHERE table_id NOT IN (SELECT id FROM sys._tables)
 
 
-query IIITII rowsort
+query IIITIIT rowsort
 SELECT * FROM sys.keys WHERE table_id NOT IN (SELECT id FROM sys.tables)
 
 
diff --git a/sql/test/bugs/Tests/groupby_having-bug-sf-947600.test 
b/sql/test/bugs/Tests/groupby_having-bug-sf-947600.test
--- a/sql/test/bugs/Tests/groupby_having-bug-sf-947600.test
+++ b/sql/test/bugs/Tests/groupby_having-bug-sf-947600.test
@@ -75,7 +75,7 @@ idxs
 12
 keys
 keys
-6
+7
 keys
 objects
 6
diff --git a/sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test 
b/sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test
--- a/sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test
+++ b/sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test
@@ -11,7 +11,7 @@ select schemas.name, tables.name, column
'objects', 'keys', 'modules', 'sequences')
  order by schemas.name, tables.name, columns.name
 
-429 values hashing to 6d7dbf36ca46001022af9219632baa04
+435 values hashing to bb81bada51b1bbe50f43e6f3cc184250
 
 query TTT rowsort
 select s.name, t.name, c.name from
@@ -26,5 +26,5 @@ select s.name, t.name, c.name from
'objects', 'keys', 'modules', 'sequences')
  order by s.name, t.name, c.name
 
-429 values hashing to 6d7dbf36ca46001022af9219632baa04
+435 values hashing to bb81bada51b1bbe50f43e6f3cc184250
 
diff --git a/sql/test/bugs/Tests/select_orderby_alias-bug-sf-1024615.test 
b/sql/test/bugs/Tests/select_orderby_alias-bug-sf-1024615.test
--- a/sql/test/bugs/Tests/select_orderby_alias-bug-sf-1024615.test
+++ b/sql/test/bugs/Tests/select_orderby_alias-bug-sf-1024615.test
@@ -1,4 +1,4 @@
-query IIITIIITIIITITIITIII rowsort
+query IIITIITITIIITITIITIII rowsort
 SELECT * FROM "sys"."keys" AS "keys", "sys"."objects" AS
 "objects", "sys"."tables" AS "tables",
 "sys"."schemas" AS "schemas" WHERE "keys"."id" =
@@ -8,7 +8,7 @@ AND "tables"."schema_id" = "schemas"."id
 "tables"."name" LIKE 'x'
 
 
-query IIITIIITIIITITIITIII rowsort
+query IIITIITITIIITITIITIII rowsort
 SELECT * FROM "sys"."keys" AS "keys", "sys"."objects" AS
 "objects", "sys"."tables" AS "tables",
 "sys"."schemas" AS "schemas" WHERE "keys"."id" =
diff --git a/sql/test/pg_regress/Tests/alter_table.test 
b/sql/test/pg_regress/Tests/alter_table.test
--- a/sql/test/pg_regress/Tests/alter_table.test
+++ b/sql/test/pg_regress/Tests/alter_table.test
@@ -451,10 +451,10 @@ DROP TABLE PKTABLE cascade
 statement ok
 create table atacc1 ( test int )
 
-statement error
+statement ok
 alter table atacc1 add constraint atacc_test1 check (test>3)
 
-statement ok
+statement e

MonetDB: check - remove obsolet missing feature test

2024-05-22 Thread Yunus Koning via checkin-list
Changeset: 93c8186a6fc9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/93c8186a6fc9
Removed Files:
sql/test/BugTracker-2013/Tests/check-constraint.Bug-3335.test
Modified Files:
sql/test/2024/Tests/check.test
sql/test/BugTracker-2013/Tests/All
Branch: check
Log Message:

remove obsolet missing feature test


diffs (67 lines):

diff --git a/sql/test/2024/Tests/check.test b/sql/test/2024/Tests/check.test
--- a/sql/test/2024/Tests/check.test
+++ b/sql/test/2024/Tests/check.test
@@ -39,3 +39,23 @@ create table baz(j int check (j > (selec
 
 statement error
 create table baz(j int check (j in (select i from foo)))
+
+-- exported from check-constraint.Bug-3335
+
+statement ok
+create table t3335(x integer check(x > 0 and x < 2))
+
+statement ok
+insert into t3335 values(1)
+
+statement error
+insert into t3335 values(0)
+
+statement error
+insert into t3335 values(2)
+
+statement error
+insert into t3335 values(-1)
+
+statement error
+insert into t3335 values(3)
diff --git a/sql/test/BugTracker-2013/Tests/All 
b/sql/test/BugTracker-2013/Tests/All
--- a/sql/test/BugTracker-2013/Tests/All
+++ b/sql/test/BugTracker-2013/Tests/All
@@ -47,7 +47,6 @@ copy-into-compressed.Bug-3351
 HAVE_LIBZ?copy-into-compressed-gz.Bug-3351
 HAVE_LIBBZ2?copy-into-compressed-bz2.Bug-3351
 median.Bug-3352
-check-constraint.Bug-3335
 crash_after_creation_of_unique_key.Bug-3363
 alter_resets_readonly.Bug-3362
 env_errors.Bug-3370
diff --git a/sql/test/BugTracker-2013/Tests/check-constraint.Bug-3335.test 
b/sql/test/BugTracker-2013/Tests/check-constraint.Bug-3335.test
deleted file mode 100644
--- a/sql/test/BugTracker-2013/Tests/check-constraint.Bug-3335.test
+++ /dev/null
@@ -1,24 +0,0 @@
-statement ok
-start transaction
-
-statement error
-create table t3335(x integer check(x > 0 and x < 2))
-
-statement error
-insert into t3335 values(1)
-
-statement error
-insert into t3335 values(0)
-
-statement error
-insert into t3335 values(2)
-
-statement error
-insert into t3335 values(-1)
-
-statement error
-insert into t3335 values(3)
-
-statement ok
-rollback
-
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: check - fix copy/paste bug

2024-05-22 Thread Yunus Koning via checkin-list
Changeset: fcb13a521f48 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/fcb13a521f48
Modified Files:
sql/storage/store.c
Branch: check
Log Message:

fix copy/paste bug


diffs (12 lines):

diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1687,8 +1687,6 @@ dup_sql_column(allocator *sa, sql_table 
col->storage_type = SA_STRDUP(sa, c->storage_type);
if (ol_add(t->columns, &col->base))
return NULL;
-   if (ol_add(t->columns, &col->base))
-   return NULL;
return col;
 }
 
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: check - aprove tests

2024-05-22 Thread Yunus Koning via checkin-list
Changeset: fcbb5a7377e1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/fcbb5a7377e1
Modified Files:

sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test

sql/test/BugDay_2005-11-09_2.8/Tests/ORDER_BY_evaluation_error.SF-1023658.test
Branch: check
Log Message:

aprove tests


diffs (28 lines):

diff --git 
a/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test
 
b/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test
--- 
a/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test
+++ 
b/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test
@@ -27,5 +27,5 @@ WHERE columns.table_id = tables.id
 'objects', 'keys', 'modules', 'sequences')
 ORDER BY TABLE_SCHEM, TABLE_NAME, ORDINAL_POSITION
 
-1121 values hashing to bb4b4edafb89bbfcb29b757e953cd0ce
+1159 values hashing to 3c2bbe6a5854a6cce3e3b47236e91c82
 
diff --git 
a/sql/test/BugDay_2005-11-09_2.8/Tests/ORDER_BY_evaluation_error.SF-1023658.test
 
b/sql/test/BugDay_2005-11-09_2.8/Tests/ORDER_BY_evaluation_error.SF-1023658.test
--- 
a/sql/test/BugDay_2005-11-09_2.8/Tests/ORDER_BY_evaluation_error.SF-1023658.test
+++ 
b/sql/test/BugDay_2005-11-09_2.8/Tests/ORDER_BY_evaluation_error.SF-1023658.test
@@ -1,4 +1,4 @@
-query IIITIIITIIITITIITIII rowsort
+query IIITIITITIIITITIITIII rowsort
 SELECT *
 FROM "keys", "objects", "tables", "schemas"
 WHERE "keys"."id" = "objects"."id"
@@ -8,7 +8,7 @@ WHERE "keys"."id" = "objects"."id"
   AND "keys"."type" = 0
 
 
-query IIITIIITIIITITIITIII rowsort
+query IIITIITITIIITITIITIII rowsort
 SELECT *
 FROM "keys", "objects", "tables", "schemas"
 WHERE "keys"."id" = "objects"."id"
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: odbc-tls - Approve exports

2024-05-22 Thread Joeri van Ruth via checkin-list
Changeset: 136c890c8682 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/136c890c8682
Modified Files:
clients/Tests/exports.stable.out
Branch: odbc-tls
Log Message:

Approve exports


diffs (19 lines):

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
@@ -752,6 +752,7 @@ mparm mparm_parse(const char *name);
 char *msetting_as_string(const msettings *mp, mparm parm);
 bool msetting_bool(const msettings *mp, mparm parm);
 long msetting_long(const msettings *mp, mparm parm);
+const char *msetting_parm_name(const msettings *mp, mparm parm);
 msettings_error msetting_parse(msettings *mp, mparm parm, const char *text);
 int msetting_parse_bool(const char *text);
 msettings_error msetting_set_bool(msettings *mp, mparm parm, bool value);
@@ -775,6 +776,7 @@ const msettings *msettings_default;
 msettings *msettings_destroy(msettings *mp);
 bool msettings_malloc_failed(msettings_error err);
 bool msettings_parse_url(msettings *mp, const char *url, char **error_buffer);
+void msettings_set_localizer(msettings *mp, const char *(*localizer)(const 
void *data, mparm parm), void *data);
 bool msettings_validate(msettings *mp, char **errmsg);
 const char *wsaerror(int);
 
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: odbc-tls - Use ODBC attr names in ODBC errors

2024-05-22 Thread Joeri van Ruth via checkin-list
Changeset: ef11e287362e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ef11e287362e
Modified Files:
clients/mapilib/msettings.c
clients/mapilib/msettings.h
clients/odbc/driver/ODBCDbc.c
Branch: odbc-tls
Log Message:

Use ODBC attr names in ODBC errors


diffs (135 lines):

diff --git a/clients/mapilib/msettings.c b/clients/mapilib/msettings.c
--- a/clients/mapilib/msettings.c
+++ b/clients/mapilib/msettings.c
@@ -232,6 +232,8 @@ struct msettings {
char *unix_sock_name_buffer;
char certhash_digits_buffer[64 + 2 + 1]; // fit more than required plus 
trailing '\0'
bool validated;
+   const char* (*localizer)(const void *data, mparm parm);
+   void *localizer_data;
char error_message[256];
 };
 
@@ -356,6 +358,22 @@ format_error(msettings *mp, const char *
return mp->error_message;
 }
 
+const char *msetting_parm_name(const msettings *mp, mparm parm)
+{
+   const char *localized = NULL;
+   if (mp->localizer)
+   localized = (mp->localizer)(mp->localizer_data, parm);
+   return localized ? localized : mparm_name(parm);
+}
+
+void msettings_set_localizer(msettings *mp, const char* (*localizer)(const 
void *data, mparm parm), void *data)
+{
+   mp->localizer = localizer;
+   mp->localizer_data = data;
+}
+
+
+
 const char*
 msetting_string(const msettings *mp, mparm parm)
 {
@@ -492,15 +510,15 @@ msetting_parse(msettings *mp, mparm parm
case MPCLASS_BOOL:
b = msetting_parse_bool(text);
if (b < 0)
-   return format_error(mp, "%s: invalid boolean 
value", mparm_name(parm));
+   return format_error(mp, "%s: invalid boolean 
value", msetting_parm_name(mp, parm));
return msetting_set_bool(mp, parm, b);
case MPCLASS_LONG:
if (text[0] == '\0')
-   return format_error(mp, "%s: integer parameter 
cannot be empty string", mparm_name(parm));
+   return format_error(mp, "%s: integer parameter 
cannot be empty string", msetting_parm_name(mp, parm));
char *end;
long l = strtol(text, &end, 10);
if (*end != '\0')
-   return format_error(mp, "%s: invalid integer", 
mparm_name(parm));
+   return format_error(mp, "%s: invalid integer", 
msetting_parm_name(mp, parm));
return msetting_set_long(mp, parm, l);
case MPCLASS_STRING:
return msetting_set_string(mp, parm, text);
@@ -574,7 +592,7 @@ msetting_set_named(msettings *mp, bool a
return msetting_set_ignored(mp, key, value);
 
if (!allow_core && mparm_is_core(parm))
-   return format_error(mp, "%s: parameter not allowed here", 
mparm_name(parm));
+   return format_error(mp, "%s: parameter not allowed here", 
msetting_parm_name(mp, parm));
 
return msetting_parse(mp, parm, value);
 }
@@ -607,7 +625,7 @@ validate_certhash(msettings *mp)
if (strncmp(certhash, "sha256:", 7) == 0) {
certhash += 7;
} else {
-   return "certhash: expected to start with 'sha256:'";
+   return format_error(mp, "%s: expected to start with 'sha256:'", 
msetting_parm_name(mp, MP_CERTHASH));
}
 
size_t i = 0;
@@ -615,13 +633,13 @@ validate_certhash(msettings *mp)
if (*r == ':')
continue;
if (!isxdigit(*r))
-   return "certhash: invalid hex digit";
+   return format_error(mp, "%s: invalid hex digit", 
msetting_parm_name(mp, MP_CERTHASH));
if (i < sizeof(mp->certhash_digits_buffer) - 1)
mp->certhash_digits_buffer[i++] = tolower(*r);
}
mp->certhash_digits_buffer[i] = '\0';
if (i == 0)
-   return "certhash: need at least one digit";
+   return format_error(mp, "%s: need at least one digit", 
msetting_parm_name(mp, MP_CERTHASH));
 
return NULL;
 }
diff --git a/clients/mapilib/msettings.h b/clients/mapilib/msettings.h
--- a/clients/mapilib/msettings.h
+++ b/clients/mapilib/msettings.h
@@ -131,6 +131,9 @@ mapi_export const msettings *msettings_d
 /* always returns NULL */
 mapi_export msettings *msettings_destroy(msettings *mp);
 
+mapi_export const char *msetting_parm_name(const msettings *mp, mparm parm);
+mapi_export void msettings_set_localizer(msettings *mp, const char* 
(*localizer)(const void *data, mparm parm), void *data);
+
 /* retrieve and set; call abort() on type error */
 
 mapi_export const char* msetting_string(const msettings *mp, mparm parm);
diff --git a/clients/odbc/driver/ODBCDbc.c b/clients/odbc/driver/ODBCDbc.c
--- a/clients/odbc/driver/ODBCDbc.c
+

MonetDB: odbc-tls - Get rid of sql_attr_connection_timeout

2024-05-22 Thread Joeri van Ruth via checkin-list
Changeset: 54f574debd57 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/54f574debd57
Modified Files:
clients/odbc/driver/ODBCDbc.h
clients/odbc/driver/SQLConnect.c
clients/odbc/driver/SQLExecDirect.c
clients/odbc/driver/SQLExecute.c
clients/odbc/driver/SQLFetch.c
clients/odbc/driver/SQLGetConnectAttr.c
clients/odbc/driver/SQLMoreResults.c
clients/odbc/driver/SQLSetConnectAttr.c
Branch: odbc-tls
Log Message:

Get rid of sql_attr_connection_timeout


diffs (155 lines):

diff --git a/clients/odbc/driver/ODBCDbc.h b/clients/odbc/driver/ODBCDbc.h
--- a/clients/odbc/driver/ODBCDbc.h
+++ b/clients/odbc/driver/ODBCDbc.h
@@ -61,7 +61,6 @@ typedef struct tODBCDRIVERDBC {
int mapToLongVarchar;   /* when > 0 we map WVARCHAR to WLONGVARCHAR, 
default 0 */
SQLUINTEGER sql_attr_autocommit;
SQLUINTEGER sql_attr_metadata_id;
-   SQLUINTEGER sql_attr_connection_timeout;
 
/* MonetDB connection handle & status information */
Mapi mid;   /* connection with server */
diff --git a/clients/odbc/driver/SQLConnect.c b/clients/odbc/driver/SQLConnect.c
--- a/clients/odbc/driver/SQLConnect.c
+++ b/clients/odbc/driver/SQLConnect.c
@@ -550,9 +550,6 @@ MNDBConnectSettings(ODBCDbc *dbc, const 
if (!SQL_SUCCEEDED(rc))
return rc;
 
-   /* set timeout after we're connected */
-   mapi_timeout(dbc->mid, dbc->sql_attr_connection_timeout * 1000);
-
return SQL_SUCCESS;
 }
 
diff --git a/clients/odbc/driver/SQLExecDirect.c 
b/clients/odbc/driver/SQLExecDirect.c
--- a/clients/odbc/driver/SQLExecDirect.c
+++ b/clients/odbc/driver/SQLExecDirect.c
@@ -40,6 +40,7 @@ ODBCExecDirect(ODBCStmt *stmt, const SQL
const char *err;
MapiMsg ret;
MapiHdl hdl;
+   long timeout;
 
hdl = stmt->hdl;
 
@@ -93,7 +94,8 @@ ODBCExecDirect(ODBCStmt *stmt, const SQL
break;
case MTIMEOUT:
/* Timeout expired / Communication link failure */
-   addStmtError(stmt, stmt->Dbc->sql_attr_connection_timeout ? 
"HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0);
+   timeout = msetting_long(stmt->Dbc->settings, MP_REPLY_TIMEOUT);
+   addStmtError(stmt, timeout > 0 ? "HYT00" : "08S01", 
mapi_error_str(stmt->Dbc->mid), 0);
return SQL_ERROR;
default:
err = mapi_result_error(hdl);
diff --git a/clients/odbc/driver/SQLExecute.c b/clients/odbc/driver/SQLExecute.c
--- a/clients/odbc/driver/SQLExecute.c
+++ b/clients/odbc/driver/SQLExecute.c
@@ -434,6 +434,7 @@ MNDBExecute(ODBCStmt *stmt)
int i;
ODBCDesc *desc;
SQLLEN offset;
+   long timeout;
 
/* check statement cursor state, query should be prepared */
if (stmt->State == INITED ||
@@ -529,7 +530,8 @@ MNDBExecute(ODBCStmt *stmt)
break;
case MTIMEOUT:
/* Timeout expired / Communication link failure */
-   addStmtError(stmt, stmt->Dbc->sql_attr_connection_timeout ? 
"HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0);
+   timeout = msetting_long(stmt->Dbc->settings, MP_REPLY_TIMEOUT);
+   addStmtError(stmt, timeout > 0 ? "HYT00" : "08S01", 
mapi_error_str(stmt->Dbc->mid), 0);
return SQL_ERROR;
default:
errstr = mapi_result_error(hdl);
diff --git a/clients/odbc/driver/SQLFetch.c b/clients/odbc/driver/SQLFetch.c
--- a/clients/odbc/driver/SQLFetch.c
+++ b/clients/odbc/driver/SQLFetch.c
@@ -41,6 +41,7 @@ MNDBFetch(ODBCStmt *stmt, SQLUSMALLINT *
int i;
SQLULEN row;
SQLLEN offset;
+   long timeout;
 
/* stmt->startRow is the (0 based) index of the first row we
 * stmt->need to fetch */
@@ -102,7 +103,8 @@ MNDBFetch(ODBCStmt *stmt, SQLUSMALLINT *
WriteValue(RowStatusArray, 
SQL_ROW_ERROR);
/* Timeout expired / Communication
 * link failure */
-   addStmtError(stmt, 
stmt->Dbc->sql_attr_connection_timeout ? "HYT00" : "08S01", 
mapi_error_str(stmt->Dbc->mid), 0);
+   timeout = msetting_long(stmt->Dbc->settings, 
MP_REPLY_TIMEOUT);
+   addStmtError(stmt, timeout > 0 ? "HYT00" : 
"08S01", mapi_error_str(stmt->Dbc->mid), 0);
return SQL_ERROR;
default:
if (RowStatusArray)
diff --git a/clients/odbc/driver/SQLGetConnectAttr.c 
b/clients/odbc/driver/SQLGetConnectAttr.c
--- a/clients/odbc/driver/SQLGetConnectAttr.c
+++ b/clients/odbc/driver/SQLGetConnectAttr.c
@@ -41,6 +41,7 @@ MNDBGetConnectAttr(ODBCDbc *dbc,
   SQLINTEGER BufferLength,
   SQLINTEGER *StringLengthPtr)
 {
+   long timeout;
/* check input parameters */
   

MonetDB: odbc-tls - Add timeout settings to connect string

2024-05-22 Thread Joeri van Ruth via checkin-list
Changeset: abf9f671ebf7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/abf9f671ebf7
Modified Files:
clients/odbc/driver/SQLConnect.c
Branch: odbc-tls
Log Message:

Add timeout settings to connect string


diffs (12 lines):

diff --git a/clients/odbc/driver/SQLConnect.c b/clients/odbc/driver/SQLConnect.c
--- a/clients/odbc/driver/SQLConnect.c
+++ b/clients/odbc/driver/SQLConnect.c
@@ -64,6 +64,8 @@ const struct attr_setting attr_settings[
{ "TIMEZONE", "Time Zone", MP_TIMEZONE },
{ "REPLYSIZE", "Reply Size", MP_REPLYSIZE },
{ "LOGFILE", "Log File", MP_LOGFILE },
+   { "LOGINTIMEOUT", "Login Timeout", MP_CONNECT_TIMEOUT},
+   { "CONNECTIONTIMEOUT", "Connection Timeout", MP_REPLY_TIMEOUT},
 };
 
 const int attr_setting_count = sizeof(attr_settings) / 
sizeof(attr_settings[0]);
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: odbc-tls - Add error handling to get_serverinfo

2024-05-22 Thread Joeri van Ruth via checkin-list
Changeset: 393fe95a5c79 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/393fe95a5c79
Modified Files:
clients/odbc/driver/SQLConnect.c
Branch: odbc-tls
Log Message:

Add error handling to get_serverinfo


diffs (72 lines):

diff --git a/clients/odbc/driver/SQLConnect.c b/clients/odbc/driver/SQLConnect.c
--- a/clients/odbc/driver/SQLConnect.c
+++ b/clients/odbc/driver/SQLConnect.c
@@ -82,14 +82,15 @@ attr_setting_lookup(const char *attr_nam
 }
 
 
-static void
+static SQLRETURN
 get_serverinfo(ODBCDbc *dbc)
 {
-   MapiHdl hdl;
+   MapiHdl hdl = NULL;
+   SQLRETURN rc; // intentionally uninitialized
char *n, *v;
 
if ((hdl = mapi_query(dbc->mid, "select name, value from sys.env() 
where name in ('monet_version', 'gdk_dbname', 'max_clients', 'raw_strings')")) 
== NULL)
-   return;
+   goto end;
dbc->raw_strings = false;
while (mapi_fetch_row(hdl)) {
n = mapi_fetch_field(hdl, 0);
@@ -107,15 +108,27 @@ get_serverinfo(ODBCDbc *dbc)
msetting_set_string(dbc->settings, MP_DATABASE, v);
}
}
+   if (mapi_error(dbc->mid))
+   goto end;
mapi_close_handle(hdl);
if ((hdl = mapi_query(dbc->mid, "select id from sys._tables where name 
= 'comments' and schema_id = (select id from sys.schemas where name = 'sys')")) 
== NULL)
-   return;
+   goto end;
+   if (mapi_error(dbc->mid))
+   goto end;
n = NULL;
while (mapi_fetch_row(hdl)) {
n = mapi_fetch_field(hdl, 0);
}
dbc->has_comment = n != NULL;
+
+   rc = SQL_SUCCESS;
+end:
+   if (mapi_error(dbc->mid)) {
+   addDbcError(dbc, "08001", mapi_error_str(dbc->mid), 0);
+   rc = SQL_ERROR;
+   }
mapi_close_handle(hdl);
+   return rc;
 }
 
 
@@ -496,7 +509,9 @@ end:
 SQLRETURN
 MNDBConnectSettings(ODBCDbc *dbc, const char *dsn, msettings *settings)
 {
+   SQLRETURN rc;
msettings *clone = msettings_clone(settings);
+
if (clone == NULL) {
addDbcError(dbc, "HY001", NULL, 0);
return SQL_ERROR;
@@ -529,7 +544,9 @@ MNDBConnectSettings(ODBCDbc *dbc, const 
 
dbc->Connected = true;
 
-   get_serverinfo(dbc);
+   rc = get_serverinfo(dbc);
+   if (!SQL_SUCCEEDED(rc))
+   return rc;
 
/* set timeout after we're connected */
mapi_timeout(dbc->mid, dbc->sql_attr_connection_timeout * 1000);
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: odbc-tls - Obey MP_CONNECT_TIMEOUT and MP_REPLY_TIMEOUT...

2024-05-22 Thread Joeri van Ruth via checkin-list
Changeset: 9f2d3d897cb3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9f2d3d897cb3
Modified Files:
clients/mapilib/connect.c
clients/mapilib/connect_unix.c
common/stream/socket_stream.c
Branch: odbc-tls
Log Message:

Obey MP_CONNECT_TIMEOUT and MP_REPLY_TIMEOUT in libmapi


diffs (132 lines):

diff --git a/clients/mapilib/connect.c b/clients/mapilib/connect.c
--- a/clients/mapilib/connect.c
+++ b/clients/mapilib/connect.c
@@ -144,6 +144,17 @@ establish_connection(Mapi mid)
msg = mapi_handshake(mid);
}
 
+   // Switch from MP_CONNECT_TIMEOUT to MP_REPLY_TIMEOUT
+   if (msg == MOK) {
+   long connect_timeout = msetting_long(mid->settings, 
MP_CONNECT_TIMEOUT);
+   long reply_timeout = msetting_long(mid->settings, 
MP_REPLY_TIMEOUT);
+   if (connect_timeout > 0 || reply_timeout > 0) {
+   if (reply_timeout < 0)
+   reply_timeout = 0;
+   msg = mapi_timeout(mid, reply_timeout);
+   }
+   }
+
return msg;
 }
 
@@ -153,6 +164,7 @@ connect_socket(Mapi mid)
assert(!mid->connected);
const char *sockname = msettings_connect_unix(mid->settings);
const char *tcp_host = msettings_connect_tcp(mid->settings);
+   long timeout = msetting_long(mid->settings, MP_CONNECT_TIMEOUT);
 
assert(*sockname || *tcp_host);
do {
@@ -165,6 +177,11 @@ connect_socket(Mapi mid)
return mid->error;
} while (0);
 
+   // the socket code may have set SO_SNDTIMEO and SO_RCVTIMEO but
+   // the mapi layer doesn't know this yet.
+   if (timeout > 0)
+   mapi_timeout(mid, timeout);
+
mid->connected = true;
return MOK;
 }
@@ -293,6 +310,8 @@ connect_socket_tcp(Mapi mid)
 static SOCKET
 connect_socket_tcp_addr(Mapi mid, struct addrinfo *info)
 {
+   long timeout = msetting_long(mid->settings, MP_CONNECT_TIMEOUT);
+
if (mid->tracelog) {
char addrbuf[100] = {0};
const char *addrtext;
@@ -332,6 +351,22 @@ connect_socket_tcp_addr(Mapi mid, struct
(void) fcntl(s, F_SETFD, FD_CLOEXEC);
 #endif
 
+   if (timeout > 0) {
+   struct timeval tv = {
+   .tv_sec = timeout / 1000,
+   .tv_usec = timeout % 1000,
+   };
+   if (
+   setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)) 
== SOCKET_ERROR
+   || setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &tv, 
sizeof(tv)) == SOCKET_ERROR
+   ) {
+   closesocket(s);
+   return mapi_printError(
+   mid, __func__, MERROR,
+   "could not set connect timeout: %s", 
strerror(errno));
+   }
+   }
+
// cast addrlen to int to satisfy Windows.
if (connect(s, info->ai_addr, (int)info->ai_addrlen) == SOCKET_ERROR) {
mapi_printError(
diff --git a/clients/mapilib/connect_unix.c b/clients/mapilib/connect_unix.c
--- a/clients/mapilib/connect_unix.c
+++ b/clients/mapilib/connect_unix.c
@@ -130,15 +130,16 @@ connect_socket_unix(Mapi mid)
 {
const char *sockname = msettings_connect_unix(mid->settings);
assert (*sockname != '\0');
+   long timeout = msetting_long(mid->settings, MP_CONNECT_TIMEOUT);
 
-   mapi_log_record(mid, "CONN", "Connecting to Unix domain socket %s", 
sockname);
+   mapi_log_record(mid, "CONN", "Connecting to Unix domain socket %s with 
timeout %ld", sockname, timeout);
 
struct sockaddr_un userver;
if (strlen(sockname) >= sizeof(userver.sun_path)) {
return mapi_printError(mid, __func__, MERROR, "path name '%s' 
too long", sockname);
}
 
-   // Create the socket, taking care of CLOEXEC
+   // Create the socket, taking care of CLOEXEC and SNDTIMEO
 
 #ifdef SOCK_CLOEXEC
int s = socket(PF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
@@ -154,6 +155,22 @@ connect_socket_unix(Mapi mid)
(void) fcntl(s, F_SETFD, FD_CLOEXEC);
 #endif
 
+   if (timeout > 0) {
+   struct timeval tv = {
+   .tv_sec = timeout / 1000,
+   .tv_usec = timeout % 1000,
+   };
+   if (
+   setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)) 
== SOCKET_ERROR
+   || setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &tv, 
sizeof(tv)) == SOCKET_ERROR
+   ) {
+   closesocket(s);
+   return mapi_printError(
+   mid, __func__, MERROR,
+   "could not set connect timeout: %s", 
strerror(errno));
+   }
+   }
+
// Attempt to connect
 
userver = (struct sockaddr_un) {
diff --git a/common/stream/socket_stream.c b/com

MonetDB: odbc-tls - Add MP_CONNECT_TIMEOUT and MP_REPLY_TIMEOUT ...

2024-05-22 Thread Joeri van Ruth via checkin-list
Changeset: 4f9dc3d1505d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4f9dc3d1505d
Modified Files:
clients/mapilib/msettings.c
clients/mapilib/msettings.h
Branch: odbc-tls
Log Message:

Add MP_CONNECT_TIMEOUT and MP_REPLY_TIMEOUT to msettings


diffs (77 lines):

diff --git a/clients/mapilib/msettings.c b/clients/mapilib/msettings.c
--- a/clients/mapilib/msettings.c
+++ b/clients/mapilib/msettings.c
@@ -86,6 +86,7 @@ by_name[] = {
{ .name="certhash", .parm=MP_CERTHASH },
{ .name="clientcert", .parm=MP_CLIENTCERT },
{ .name="clientkey", .parm=MP_CLIENTKEY },
+   { .name="connect_timeout", .parm=MP_CONNECT_TIMEOUT },
{ .name="database", .parm=MP_DATABASE },
{ .name="host", .parm=MP_HOST },
{ .name="language", .parm=MP_LANGUAGE },
@@ -93,6 +94,7 @@ by_name[] = {
{ .name="password", .parm=MP_PASSWORD },
{ .name="port", .parm=MP_PORT },
{ .name="replysize", .parm=MP_REPLYSIZE },
+   { .name="reply_timeout", .parm=MP_REPLY_TIMEOUT },
{ .name="fetchsize", .parm=MP_REPLYSIZE },
{ .name="schema", .parm=MP_SCHEMA },
{ .name="sock", .parm=MP_SOCK },
@@ -140,6 +142,7 @@ mparm_name(mparm parm)
case MP_CERTHASH: return "certhash";
case MP_CLIENTCERT: return "clientcert";
case MP_CLIENTKEY: return "clientkey";
+   case MP_CONNECT_TIMEOUT: return "connect_timeout";
case MP_DATABASE: return "database";
case MP_HOST: return "host";
case MP_LANGUAGE: return "language";
@@ -147,7 +150,8 @@ mparm_name(mparm parm)
case MP_MAPTOLONGVARCHAR: return "map_to_long_varchar";
case MP_PASSWORD: return "password";
case MP_PORT: return "port";
-   case MP_REPLYSIZE: return "replysize";
+   case MP_REPLY_TIMEOUT: return "reply_timeout";  // underscore 
present means specific to this client library
+   case MP_REPLYSIZE: return "replysize";  // no underscore means 
mandatory for all client libraries
case MP_SCHEMA: return "schema";
case MP_SOCK: return "sock";
case MP_SOCKDIR: return "sockdir";
@@ -194,6 +198,8 @@ struct msettings {
long timezone;
long replysize;
long map_to_long_varchar;
+   long connect_timeout;
+   long reply_timeout;
long dummy_end_long;
 
// Must match EXACTLY the order of enum mparm
diff --git a/clients/mapilib/msettings.h b/clients/mapilib/msettings.h
--- a/clients/mapilib/msettings.h
+++ b/clients/mapilib/msettings.h
@@ -48,12 +48,18 @@ typedef enum mparm {
 // bool
 MP_TLS = MP__BOOL_START,
 MP_AUTOCOMMIT,
+   // Note: if you change anything about this enum whatsoever, make sure to
+   // make the corresponding change to struct msettings in msettings.c as 
well.
 
 // long
 MP_PORT = MP__LONG_START,
 MP_TIMEZONE,
 MP_REPLYSIZE,
MP_MAPTOLONGVARCHAR,   // specific to ODBC
+   MP_CONNECT_TIMEOUT,
+   MP_REPLY_TIMEOUT,
+   // Note: if you change anything about this enum whatsoever, make sure to
+   // make the corresponding change to struct msettings in msettings.c as 
well.
 
 // string
 MP_SOCK = MP__STRING_START,
@@ -72,6 +78,8 @@ typedef enum mparm {
 MP_SCHEMA, // TODO implement this
 MP_BINARY,
MP_LOGFILE,
+   // Note: if you change anything about this enum whatsoever, make sure to
+   // make the corresponding change to struct msettings in msettings.c as 
well.
 
// !! Make sure to keep them all below MP__MAX !!
 } mparm;
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: odbc-tls - Merge 'default' into 'odbc-tls'

2024-05-22 Thread Joeri van Ruth via checkin-list
Changeset: 0de4c922d3cc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0de4c922d3cc
Modified Files:
clients/NT/mclient.bat.in
clients/NT/msqldump.bat.in
clients/Tests/exports.stable.out
clients/odbc/driver/ODBCUtil.c
monetdb5/NT/M5server.bat.in

sql/test/BugTracker-2009/Tests/select_X_where_bla_EQ_whatever.SF-2825974.test
Branch: odbc-tls
Log Message:

Merge 'default' into 'odbc-tls'


diffs (truncated from 36644 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -825,3 +825,5 @@ dcc8c702e685a4faf21ccf663028d1bc3d1165d1
 dcc8c702e685a4faf21ccf663028d1bc3d1165d1 Dec2023_SP1_release
 d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_7
 d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_SP2_release
+9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_9
+9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_SP3_release
diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
 # ChangeLog file for devel
 # This file is updated with Maddlog
 
+* Wed May  8 2024 Sjoerd Mullender 
+- The shared library (.dll aka .so files) now have the version number
+  as part of the name.  This should allow the building of compatibility
+  versions that can be installed in parallel to the latest version.
+- Some of the Debian/Ubuntu packages have been renamed.  The old monetdb5
+  names have been changed to plain monetdb, and libmonetdb5-server-*
+  packages have been renamed monetdb-*.
+- The names of some of the provided RPM files have been changed.
+  References to the old MonetDB5 name have been removed.  All packages
+  are now just MonetDB.
+
+* Wed May  8 2024 Niels Nes 
+- Add support for select exp, count(*) group by 1 order by 1; ie. using
+  numeric references Added support for group by all and order by all. The
+  later is ordering on all columns of the selection.  The group by all
+  finds all expressions from the selections which aren't aggregations
+  and groups on those.  All can also be replaced by '*'.
+
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -8,8 +8,12 @@
 # Copyright August 2008 - 2023 MonetDB B.V.;
 # Copyright 1997 - July 2008 CWI.
 
-%global name MonetDB
 %global version 11.50.0
+
+%bcond_with compat
+
+%global name MonetDB%{?with_compat:%version}
+
 %{!?buildno: %global buildno %(date +%Y%m%d)}
 
 # Use bcond_with to add a --with option; i.e., "without" is default.
@@ -57,7 +61,7 @@
 # available.  However, the geos library is available in the Extra
 # Packages for Enterprise Linux (EPEL).
 %if %{fedpkgs} && (0%{?rhel} != 7) && (0%{?rhel} != 8)
-# By default create the MonetDB-geom-MonetDB5 package on Fedora and RHEL 7
+# By default create the MonetDB-geom package on Fedora and RHEL 7
 %bcond_without geos
 %endif
 
@@ -91,7 +95,7 @@ Group: Applications/Databases
 License: MPL-2.0
 URL: https://www.monetdb.org/
 BugURL: https://github.com/MonetDB/MonetDB/issues
-Source: 
https://www.monetdb.org/downloads/sources/Dec2023-SP2/%{name}-%{version}.tar.bz2
+Source: 
https://www.monetdb.org/downloads/sources/Dec2023-SP3/MonetDB-%{version}.tar.bz2
 
 # The Fedora packaging document says we need systemd-rpm-macros for
 # the _unitdir and _tmpfilesdir macros to exist; however on RHEL 7
@@ -117,7 +121,9 @@ BuildRequires: unixODBC-devel
 BuildRequires: readline-devel
 %else
 BuildRequires: pkgconfig(bzip2)
+%if %{without compat}
 BuildRequires: pkgconfig(odbc)
+%endif
 BuildRequires: pkgconfig(readline)
 %endif
 %if %{with fits}
@@ -154,8 +160,8 @@ BuildRequires: pkgconfig(libR)
 # BuildRequires: pkgconfig(valgrind)# -DWITH_VALGRIND=ON
 
 %if (0%{?fedora} >= 22)
-Recommends: %{name}-SQL-server5%{?_isa} = %{version}-%{release}
-Recommends: MonetDB5-server%{?_isa} = %{version}-%{release}
+Recommends: %{name}-SQL%{?_isa} = %{version}-%{release}
+Recommends: %{name}-server%{?_isa} = %{version}-%{release}
 Suggests: %{name}-client%{?_isa} = %{version}-%{release}
 %endif
 
@@ -167,8 +173,8 @@ accelerators.  It also has an SQL front 
 
 This package contains the core components of MonetDB in the form of a
 single shared library.  If you want to use MonetDB, you will certainly
-need this package, but you will also need at least the MonetDB5-server
-package, and most likely also %{name}-SQL-server5, as well as one or
+need this package, but you will also need at least the %{name}-server
+package, and most likely also %{name}-SQL, as well as one or
 more client packages.
 
 %ldconfig_scriptlets
@@ -176,8 +182,9 @@ more client packages.
 %files
 %license COPYING
 %defattr(-,root,root)
-%{_libdir}/libbat.so.*
+%{_libdir}/libbat*.so.*
 
+%if %{without compat}
 %package devel
 Summary: MonetDB development files
 Group: Applications/Databases
@@ -202,8 +209,9 @@ functionality of MonetDB.
 %{_includedir}/monetdb/mstring.h
 %exclude %{_includedir}/monetdb/monetdbe.h
 %{_includedir}/monetdb/monet*.h
-%{_libdir}/libbat.so
+%{_libdir}/libbat*.so
 %{_libdir}/pkgconfig/monetdb-gdk.pc
+%endif
 
 %

MonetDB: default - Add script to create case conversion tables.

2024-05-22 Thread Sjoerd Mullender via checkin-list
Changeset: 52d49237cf83 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/52d49237cf83
Added Files:
misc/python/unicaseconvtabs.py
Modified Files:
gdk/gdk_string.c
Branch: default
Log Message:

Add script to create case conversion tables.
Also, add indexes to specialcase table for easy reference.


diffs (truncated from 527 to 300 lines):

diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c
--- a/gdk/gdk_string.c
+++ b/gdk/gdk_string.c
@@ -1477,153 +1477,155 @@ GDKanalytical_str_group_concat(BAT *r, B
  * Only for the casefold table, if the converted codepoint is negative,
  * it is actually an escape into the specialcase table.  The absolute
  * value is the index. */
+
+/* These tables were created using the code in unicaseconvtabs.py */
 static const char *const specialcase[] = {
NULL,
-   "ss",
-   "i\xCC\x87",
-   "\xCA\xBCn",
-   "j\xCC\x8C",
-   "\xCE\xB9\xCC\x88\xCC\x81",
-   "\xCF\x85\xCC\x88\xCC\x81",
-   "\xD5\xA5\xD6\x82",
-   "h\xCC\xB1",
-   "t\xCC\x88",
-   "w\xCC\x8A",
-   "y\xCC\x8A",
-   "a\xCA\xBE",
-   "\xCF\x85\xCC\x93",
-   "\xCF\x85\xCC\x93\xCC\x80",
-   "\xCF\x85\xCC\x93\xCC\x81",
-   "\xCF\x85\xCC\x93\xCD\x82",
-   "\xE1\xBC\x80\xCE\xB9",
-   "\xE1\xBC\x81\xCE\xB9",
-   "\xE1\xBC\x82\xCE\xB9",
-   "\xE1\xBC\x83\xCE\xB9",
-   "\xE1\xBC\x84\xCE\xB9",
-   "\xE1\xBC\x85\xCE\xB9",
-   "\xE1\xBC\x86\xCE\xB9",
-   "\xE1\xBC\x87\xCE\xB9",
-   "\xE1\xBC\xA0\xCE\xB9",
-   "\xE1\xBC\xA1\xCE\xB9",
-   "\xE1\xBC\xA2\xCE\xB9",
-   "\xE1\xBC\xA3\xCE\xB9",
-   "\xE1\xBC\xA4\xCE\xB9",
-   "\xE1\xBC\xA5\xCE\xB9",
-   "\xE1\xBC\xA6\xCE\xB9",
-   "\xE1\xBC\xA7\xCE\xB9",
-   "\xE1\xBD\xA0\xCE\xB9",
-   "\xE1\xBD\xA1\xCE\xB9",
-   "\xE1\xBD\xA2\xCE\xB9",
-   "\xE1\xBD\xA3\xCE\xB9",
-   "\xE1\xBD\xA4\xCE\xB9",
-   "\xE1\xBD\xA5\xCE\xB9",
-   "\xE1\xBD\xA6\xCE\xB9",
-   "\xE1\xBD\xA7\xCE\xB9",
-   "\xE1\xBD\xB0\xCE\xB9",
-   "\xCE\xB1\xCE\xB9",
-   "\xCE\xAC\xCE\xB9",
-   "\xCE\xB1\xCD\x82",
-   "\xCE\xB1\xCD\x82\xCE\xB9",
-   "\xE1\xBD\xB4\xCE\xB9",
-   "\xCE\xB7\xCE\xB9",
-   "\xCE\xAE\xCE\xB9",
-   "\xCE\xB7\xCD\x82",
-   "\xCE\xB7\xCD\x82\xCE\xB9",
-   "\xCE\xB9\xCC\x88\xCC\x80",
-   "\xCE\xB9\xCD\x82",
-   "\xCE\xB9\xCC\x88\xCD\x82",
-   "\xCF\x85\xCC\x88\xCC\x80",
-   "\xCF\x81\xCC\x93",
-   "\xCF\x85\xCD\x82",
-   "\xCF\x85\xCC\x88\xCD\x82",
-   "\xE1\xBD\xBC\xCE\xB9",
-   "\xCF\x89\xCE\xB9",
-   "\xCF\x8E\xCE\xB9",
-   "\xCF\x89\xCD\x82",
-   "\xCF\x89\xCD\x82\xCE\xB9",
-   "ff",
-   "fi",
-   "fl",
-   "ffi",
-   "ffl",
-   "st",
-   "\xD5\xB4\xD5\xB6",
-   "\xD5\xB4\xD5\xA5",
-   "\xD5\xB4\xD5\xAB",
-   "\xD5\xBE\xD5\xB6",
-   "\xD5\xB4\xD5\xAD",
-   "SS",
-   "FF",
-   "FI",
-   "FL",
-   "FFI",
-   "FFL",
-   "ST",
-   "\xD4\xB5\xD5\x92",
-   "\xD5\x84\xD5\x86",
-   "\xD5\x84\xD4\xB5",
-   "\xD5\x84\xD4\xBB",
-   "\xD5\x8E\xD5\x86",
-   "\xD5\x84\xD4\xBD",
-   "\xCA\xBCN",
-   "\xCE\x99\xCC\x88\xCC\x81",
-   "\xCE\xA5\xCC\x88\xCC\x81",
-   "J\xCC\x8C",
-   "H\xCC\xB1",
-   "T\xCC\x88",
-   "W\xCC\x8A",
-   "Y\xCC\x8A",
-   "A\xCA\xBE",
-   "\xCE\xA5\xCC\x93",
-   "\xCE\xA5\xCC\x93\xCC\x80",
-   "\xCE\xA5\xCC\x93\xCC\x81",
-   "\xCE\xA5\xCC\x93\xCD\x82",
-   "\xCE\x91\xCD\x82",
-   "\xCE\x97\xCD\x82",
-   "\xCE\x99\xCC\x88\xCC\x80",
-   "\xCE\x99\xCD\x82",
-   "\xCE\x99\xCC\x88\xCD\x82",
-   "\xCE\xA5\xCC\x88\xCC\x80",
-   "\xCE\xA1\xCC\x93",
-   "\xCE\xA5\xCD\x82",
-   "\xCE\xA5\xCC\x88\xCD\x82",
-   "\xCE\xA9\xCD\x82",
-   "\xE1\xBC\x88\xCE\x99",
-   "\xE1\xBC\x89\xCE\x99",
-   "\xE1\xBC\x8A\xCE\x99",
-   "\xE1\xBC\x8B\xCE\x99",
-   "\xE1\xBC\x8C\xCE\x99",
-   "\xE1\xBC\x8D\xCE\x99",
-   "\xE1\xBC\x8E\xCE\x99",
-   "\xE1\xBC\x8F\xCE\x99",
-   "\xE1\xBC\xA8\xCE\x99",
-   "\xE1\xBC\xA9\xCE\x99",
-   "\xE1\xBC\xAA\xCE\x99",
-   "\xE1\xBC\xAB\xCE\x99",
-   "\xE1\xBC\xAC\xCE\x99",
-   "\xE1\xBC\xAD\xCE\x99",
-   "\xE1\xBC\xAE\xCE\x99",
-   "\xE1\xBC\xAF\xCE\x99",
-   "\xE1\xBD\xA8\xCE\x99",
-   "\xE1\xBD\xA9\xCE\x99",
-   "\xE1\xBD\xAA\xCE\x99",
-   "\xE1\xBD\xAB\xCE\x99",
-   "\xE1\xBD\xAC\xCE\x99",
-   "\xE1\xBD\xAD\xCE\x99",
-   "\xE1\xBD\xAE\xCE\x99",
-   "\xE1\xBD\xAF\xCE\x99",
-   "\xCE\x91\xCE\x99",
-   "\xCE\x97\xCE\x99",
-   "\xCE\xA9\xCE\x99",
-   "\xE1\xBE\xBA\xCE\x99",
-   "\xCE\x86\xCE\x99",
-   "\xE1\xBF\x8A\xCE\x99",
-   "\xCE\x89\xCE\x99",
-   "\xE1\xBF\xBA\xCE\x99",
-   "\xCE\x8F\xCE\x99",
-   "\xCE\x91\xCD\x82\xCE\x99",
-   "\xCE\x97\xCD\x82\xCE\x99",
-   "\xCE\xA9\xCD\x82\xCE\x99",
+