monetdb-java: default - compile_mcl depends on driver (MonetVers...

2024-07-10 Thread Sjoerd Mullender via checkin-list
Changeset: e74154a1d4b2 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/e74154a1d4b2
Modified Files:
build.xml
Branch: default
Log Message:

compile_mcl depends on driver (MonetVersion.java).


diffs (12 lines):

diff --git a/build.xml b/build.xml
--- a/build.xml
+++ b/build.xml
@@ -175,7 +175,7 @@ Copyright 1997 - July 2008 CWI.
 
   
 
-  
+  
 
 

MonetDB: Dec2023 - Approve upgrade after release.

2024-07-10 Thread Sjoerd Mullender via checkin-list
Changeset: edbb31389fcf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/edbb31389fcf
Modified Files:
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: Dec2023
Log Message:

Approve upgrade after release.


diffs (192 lines):

diff --git a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -1,11 +0,0 @@
-Running database upgrade commands:
-delete from sys.dependencies where (id, depend_id) in (select c.id, f.id from 
sys.functions f, sys._tables t, sys._columns c, sys.dependencies d where 
c.table_id = t.id and f.id = d.depend_id and c.id = d.id and f.schema_id = 2000 
and t.schema_id = 2000 and (f.name, t.name, c.name) in (values 
('describe_columns', '_columns', 'storage'), ('describe_function', 
'function_languages', 'language_name'), ('describe_function', 'function_types', 
'function_type_name'), ('describe_function', 'functions', 'func'), 
('describe_function', 'functions', 'mod'), ('describe_function', 'functions', 
'semantics'), ('describe_function', 'functions', 'side_effect'), 
('describe_function', 'functions', 'system'), ('describe_function', 
'functions', 'vararg'), ('describe_function', 'functions', 'varres'), 
('describe_function', 'schemas', 'authorization'), ('describe_function', 
'schemas', 'owner'), ('describe_function', 'schemas', 'system'), 
('describe_table', '_tables', 'access'), ('describe_table', '_tables',
  'commit_action'), ('describe_table', '_tables', 'system')));
-delete from sys.dependencies where (id, depend_id) in (select c.id, v.id from 
sys._tables v, sys._tables t, sys._columns c, sys.dependencies d where 
c.table_id = t.id and v.id = d.depend_id and c.id = d.id and v.schema_id = 2000 
and t.schema_id = 2000 and (v.name, t.name, c.name) in (values 
('dependency_columns_on_indexes', '_columns', 'name'), 
('dependency_columns_on_indexes', '_columns', 'number'), 
('dependency_columns_on_indexes', '_columns', 'storage'), 
('dependency_columns_on_indexes', '_columns', 'table_id'), 
('dependency_columns_on_indexes', '_columns', 'type_digits'), 
('dependency_columns_on_indexes', 'keys', 'id'), 
('dependency_columns_on_indexes', 'triggers', 'name'), 
('dependency_columns_on_indexes', 'triggers', 'orientation'), 
('dependency_columns_on_indexes', 'triggers', 'table_id'), 
('dependency_columns_on_indexes', 'triggers', 'time'), 
('dependency_columns_on_keys', '_columns', 'name'), 
('dependency_columns_on_keys', '_columns', 'table_id'), 
('dependency_columns_on_ke
 ys', '_columns', 'type'), ('dependency_columns_on_keys', '_columns', 
'type_digits'), ('dependency_columns_on_keys', '_columns', 'type_scale'), 
('dependency_columns_on_keys', 'triggers', 'name'), 
('dependency_columns_on_keys', 'triggers', 'orientation'), 
('dependency_columns_on_keys', 'triggers', 'table_id'), 
('dependency_columns_on_keys', 'triggers', 'time'), 
('dependency_columns_on_triggers', 'keys', 'name'), 
('dependency_columns_on_triggers', 'keys', 'rkey'), 
('dependency_columns_on_triggers', 'keys', 'type'), 
('dependency_functions_on_triggers', 'keys', 'action'), 
('dependency_functions_on_triggers', 'keys', 'name'), 
('dependency_functions_on_triggers', 'keys', 'rkey'), 
('dependency_functions_on_triggers', 'keys', 'type'), 
('dependency_keys_on_foreignkeys', '_columns', 'default'), 
('dependency_keys_on_foreignkeys', '_columns', 'name'), 
('dependency_keys_on_foreignkeys', '_columns', 'table_id'), 
('dependency_keys_on_foreignkeys', '_columns', 'type'), 
('dependency_keys_on_foreignke
 ys', '_columns', 'type_digits'), ('dependency_keys_on_foreignkeys', 
'_columns', 'type_scale'), ('dependency_tables_on_foreignkeys', '_columns', 
'default'), ('dependency_tables_on_foreignkeys', '_columns', 'name'), 
('dependency_tables_on_foreignkeys', '_columns', 'table_id'), 
('dependency_tables_on_foreignkeys', '_columns', 'type'), 
('dependency_tables_on_foreignkeys', '_columns', 'type_digits'), 
('dependency_tables_on_foreignkeys', '_columns', 'type_scale'), 
('dependency_tables_on_indexes', '_columns', 'name'), 
('dependency_tables_on_index

MonetDB: Dec2023 - Compatibility with Numpy 2.0.

2024-07-10 Thread Sjoerd Mullender via checkin-list
Changeset: fd7498241c4a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/fd7498241c4a
Modified Files:
sql/backends/monet5/UDF/pyapi3/conversion3.c
Branch: Dec2023
Log Message:

Compatibility with Numpy 2.0.


diffs (32 lines):

diff --git a/sql/backends/monet5/UDF/pyapi3/conversion3.c 
b/sql/backends/monet5/UDF/pyapi3/conversion3.c
--- a/sql/backends/monet5/UDF/pyapi3/conversion3.c
+++ b/sql/backends/monet5/UDF/pyapi3/conversion3.c
@@ -787,6 +787,10 @@ wrapup:
return NULL;
 }
 
+#ifndef NUMPY_CORE_INCLUDE_NUMPY_NPY_2_COMPAT_H_
+#define PyDataType_ELSIZE(x) (x)->elsize
+#endif
+
 str
 PyObject_GetReturnValues(PyObject *obj, PyReturn *ret)
 {
@@ -802,7 +806,7 @@ PyObject_GetReturnValues(PyObject *obj, 
}
 
ret->result_type = PyArray_DESCR((PyArrayObject 
*)ret->numpy_array)->type_num; // We read the result type from the resulting 
array
-   ret->memory_size = PyArray_DESCR((PyArrayObject 
*)ret->numpy_array)->elsize;
+   ret->memory_size = PyDataType_ELSIZE(PyArray_DESCR((PyArrayObject 
*)ret->numpy_array));
ret->count = PyArray_DIMS((PyArrayObject *)ret->numpy_array)[0];
ret->array_data = PyArray_DATA((PyArrayObject *)ret->numpy_array);
ret->mask_data = NULL;
@@ -891,7 +895,7 @@ PyObject_PreprocessObject(PyObject *pRes
ret->array_data = PyArray_DATA((PyArrayObject 
*)ret->numpy_array);
if (ret->numpy_mask != NULL)
ret->mask_data = PyArray_DATA((PyArrayObject 
*)ret->numpy_mask);
-   ret->memory_size = PyArray_DESCR((PyArrayObject 
*)ret->numpy_array)->elsize;
+   ret->memory_size = 
PyDataType_ELSIZE(PyArray_DESCR((PyArrayObject *)ret->numpy_array));
} else {
msg = PyObject_GetReturnValues(pColO, ret);
Py_DECREF(pColO);
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Dec2023 - Work around deprecation warning in Python 3.12.

2024-07-10 Thread Sjoerd Mullender via checkin-list
Changeset: 3468258b9dc5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3468258b9dc5
Modified Files:
sql/test/Tests/hot_snapshot.py
Branch: Dec2023
Log Message:

Work around deprecation warning in Python 3.12.
In 3.12 we need a "filter" argument, but before that argument didn't
exist.  Wonderful design, NOT.


diffs (18 lines):

diff --git a/sql/test/Tests/hot_snapshot.py b/sql/test/Tests/hot_snapshot.py
--- a/sql/test/Tests/hot_snapshot.py
+++ b/sql/test/Tests/hot_snapshot.py
@@ -110,7 +110,13 @@ def test_snapshot(z_extension, expected_
 
 # and extract the tar file
 with tarfile.open(fileobj=f) as tar:
-tar.extractall(dbfarm)
+try:
+tar.extraction_filter
+except AttributeError:
+# pre 3.12 Python
+tar.extractall(dbfarm)
+else:
+tar.extractall(dbfarm, filter='data')
 
 f.close()
 # and restart the server
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Aug2024 - Merge with Dec2023 branch.

2024-07-10 Thread Sjoerd Mullender via checkin-list
Changeset: 8bc7ea1b710e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8bc7ea1b710e
Modified Files:
.hgtags
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: Aug2024
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 310 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -829,3 +829,4 @@ 9a694c41042503a22d6c92aeab5bc4ca1912b62e
 9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_SP3_release
 e1e9e22bf3d734dc50b56151c657a57c18f56561 Aug2024_root
 cde7d8f7c99540a8c95856df052a9f123b0c1643 Dec2023_11
+cde7d8f7c99540a8c95856df052a9f123b0c1643 Dec2023_SP4_release
diff --git a/sql/backends/monet5/UDF/pyapi3/conversion3.c 
b/sql/backends/monet5/UDF/pyapi3/conversion3.c
--- a/sql/backends/monet5/UDF/pyapi3/conversion3.c
+++ b/sql/backends/monet5/UDF/pyapi3/conversion3.c
@@ -787,6 +787,10 @@ wrapup:
return NULL;
 }
 
+#ifndef NUMPY_CORE_INCLUDE_NUMPY_NPY_2_COMPAT_H_
+#define PyDataType_ELSIZE(x) (x)->elsize
+#endif
+
 str
 PyObject_GetReturnValues(PyObject *obj, PyReturn *ret)
 {
@@ -802,7 +806,7 @@ PyObject_GetReturnValues(PyObject *obj, 
}
 
ret->result_type = PyArray_DESCR((PyArrayObject 
*)ret->numpy_array)->type_num; // We read the result type from the resulting 
array
-   ret->memory_size = PyArray_DESCR((PyArrayObject 
*)ret->numpy_array)->elsize;
+   ret->memory_size = PyDataType_ELSIZE(PyArray_DESCR((PyArrayObject 
*)ret->numpy_array));
ret->count = PyArray_DIMS((PyArrayObject *)ret->numpy_array)[0];
ret->array_data = PyArray_DATA((PyArrayObject *)ret->numpy_array);
ret->mask_data = NULL;
@@ -891,7 +895,7 @@ PyObject_PreprocessObject(PyObject *pRes
ret->array_data = PyArray_DATA((PyArrayObject 
*)ret->numpy_array);
if (ret->numpy_mask != NULL)
ret->mask_data = PyArray_DATA((PyArrayObject 
*)ret->numpy_mask);
-   ret->memory_size = PyArray_DESCR((PyArrayObject 
*)ret->numpy_array)->elsize;
+   ret->memory_size = 
PyDataType_ELSIZE(PyArray_DESCR((PyArrayObject *)ret->numpy_array));
} else {
msg = PyObject_GetReturnValues(pColO, ret);
Py_DECREF(pColO);
diff --git a/sql/test/Tests/hot_snapshot.py b/sql/test/Tests/hot_snapshot.py
--- a/sql/test/Tests/hot_snapshot.py
+++ b/sql/test/Tests/hot_snapshot.py
@@ -110,7 +110,13 @@ def test_snapshot(z_extension, expected_
 
 # and extract the tar file
 with tarfile.open(fileobj=f) as tar:
-tar.extractall(dbfarm)
+try:
+tar.extraction_filter
+except AttributeError:
+# pre 3.12 Python
+tar.extractall(dbfarm)
+else:
+tar.extractall(dbfarm, filter='data')
 
 f.close()
 # and restart the server
diff --git a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -1,17 +1,6 @@
 Running database upgrade commands to update system tables.
 
 Running database upgrade commands:
-delete from sys.dependencies where (id, depend_id) in (select c.id, f.id from 
sys.functions f, sys._tables t, sys._columns c, sys.dependencies d where 
c.table_id = t.id and f.id = d.depend_id and c.id = d.id and f.schema_id = 2000 
and t.schema_id = 2000 and (f.name, t.name, c.name) in (values 
('describe_columns', '_columns', 'storage'), ('describe_function', 
'function_languages', 'language_name'), ('describe_function', 'function_types', 
'function_type_name'), ('describe_function', 'functions', 'func'), 
('describe_function', 'functions', 'mod'), ('describe_function', 'functions', 
'semantics'), ('describe_function', 'functions', 'side_effect'), 
('describe_function', 'functions', 'system'), ('describe_function', 
'functions', 'vararg'), ('describe_function', 'functions', 'varres'), 
('describe_function', 'schemas', 'authorization'), ('describe_function', 
'schemas', 'owner'), ('describe_function', 'sche

MonetDB: default - Merge with Aug2024 branch.

2024-07-10 Thread Sjoerd Mullender via checkin-list
Changeset: 3a168604378c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3a168604378c
Modified Files:
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: default
Log Message:

Merge with Aug2024 branch.


diffs (truncated from 322 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -829,3 +829,4 @@ 9a694c41042503a22d6c92aeab5bc4ca1912b62e
 9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_SP3_release
 e1e9e22bf3d734dc50b56151c657a57c18f56561 Aug2024_root
 cde7d8f7c99540a8c95856df052a9f123b0c1643 Dec2023_11
+cde7d8f7c99540a8c95856df052a9f123b0c1643 Dec2023_SP4_release
diff --git a/sql/ChangeLog.Aug2024 b/sql/ChangeLog.Aug2024
--- a/sql/ChangeLog.Aug2024
+++ b/sql/ChangeLog.Aug2024
@@ -8,6 +8,8 @@
 * Wed May 29 2024 Joeri van Ruth 
 - Extended view sys.sessions and function sys.sessions() with new columns:
   language, peer, hostname, application, client, clientpid and remark.
+- All users now have SELECT privilege on view sys.sessions, but non-admin
+  users only see their own sessions.
 - Added procedure sys.setclientinfo(property string, value string)
   to allow the client application to set a specific client info property.
 - Added system table sys.clientinfo_properties that lists the supported
diff --git a/sql/backends/monet5/UDF/pyapi3/conversion3.c 
b/sql/backends/monet5/UDF/pyapi3/conversion3.c
--- a/sql/backends/monet5/UDF/pyapi3/conversion3.c
+++ b/sql/backends/monet5/UDF/pyapi3/conversion3.c
@@ -787,6 +787,10 @@ wrapup:
return NULL;
 }
 
+#ifndef NUMPY_CORE_INCLUDE_NUMPY_NPY_2_COMPAT_H_
+#define PyDataType_ELSIZE(x) (x)->elsize
+#endif
+
 str
 PyObject_GetReturnValues(PyObject *obj, PyReturn *ret)
 {
@@ -802,7 +806,7 @@ PyObject_GetReturnValues(PyObject *obj, 
}
 
ret->result_type = PyArray_DESCR((PyArrayObject 
*)ret->numpy_array)->type_num; // We read the result type from the resulting 
array
-   ret->memory_size = PyArray_DESCR((PyArrayObject 
*)ret->numpy_array)->elsize;
+   ret->memory_size = PyDataType_ELSIZE(PyArray_DESCR((PyArrayObject 
*)ret->numpy_array));
ret->count = PyArray_DIMS((PyArrayObject *)ret->numpy_array)[0];
ret->array_data = PyArray_DATA((PyArrayObject *)ret->numpy_array);
ret->mask_data = NULL;
@@ -891,7 +895,7 @@ PyObject_PreprocessObject(PyObject *pRes
ret->array_data = PyArray_DATA((PyArrayObject 
*)ret->numpy_array);
if (ret->numpy_mask != NULL)
ret->mask_data = PyArray_DATA((PyArrayObject 
*)ret->numpy_mask);
-   ret->memory_size = PyArray_DESCR((PyArrayObject 
*)ret->numpy_array)->elsize;
+   ret->memory_size = 
PyDataType_ELSIZE(PyArray_DESCR((PyArrayObject *)ret->numpy_array));
} else {
msg = PyObject_GetReturnValues(pColO, ret);
Py_DECREF(pColO);
diff --git a/sql/test/Tests/hot_snapshot.py b/sql/test/Tests/hot_snapshot.py
--- a/sql/test/Tests/hot_snapshot.py
+++ b/sql/test/Tests/hot_snapshot.py
@@ -110,7 +110,13 @@ def test_snapshot(z_extension, expected_
 
 # and extract the tar file
 with tarfile.open(fileobj=f) as tar:
-tar.extractall(dbfarm)
+try:
+tar.extraction_filter
+except AttributeError:
+# pre 3.12 Python
+tar.extractall(dbfarm)
+else:
+tar.extractall(dbfarm, filter='data')
 
 f.close()
 # and restart the server
diff --git a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -1,17 +1,6 @@
 Running database upgrade commands to update system tables.
 
 Running database upgrade commands:
-delete from sys.dependencies where (id, depend_id) in (select c.id, f.id from 
sys.functions f, sys._tables t, sys._columns c, sys.dependencies d where 
c.table_id = t.id and f.id = d.depend_id and c.id = d.id and f.schema_id = 2000 
and t.schema_id = 2000 and (f.name, t.name, c.name) in (value

MonetDB: Aug2024 - some more multiplex inlining, fixes bug #7272

2024-07-10 Thread Niels Nes via checkin-list
Changeset: 9d0472b171f1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9d0472b171f1
Modified Files:
clients/Tests/exports.stable.out
monetdb5/optimizer/opt_prelude.c
monetdb5/optimizer/opt_prelude.h
monetdb5/optimizer/opt_remap.c
Branch: Aug2024
Log Message:

some more multiplex inlining, fixes bug #7272


diffs (101 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
@@ -1065,6 +1065,7 @@ const char *likeRef;
 const char *likejoinRef;
 const char *likeselectRef;
 const char *likeuselectRef;
+const char *lngRef;
 str loadLibrary(const char *modulename, int flag);
 char *locate_file(const char *basename, const char *ext, bit recurse);
 const char *lockRef;
diff --git a/monetdb5/optimizer/opt_prelude.c b/monetdb5/optimizer/opt_prelude.c
--- a/monetdb5/optimizer/opt_prelude.c
+++ b/monetdb5/optimizer/opt_prelude.c
@@ -149,6 +149,7 @@ const char *leftjoinRef;
 const char *likejoinRef;
 const char *likeRef;
 const char *likeselectRef;
+const char *lngRef;
 const char *lockRef;
 const char *lookupRef;
 const char *malRef;
@@ -409,6 +410,7 @@ optimizerInit(void)
likejoinRef = putName("likejoin");
likeRef = putName("like");
likeselectRef = putName("likeselect");
+   lngRef = putName("lng");
lockRef = putName("lock");
lookupRef = putName("lookup");
malRef = putName("mal");
diff --git a/monetdb5/optimizer/opt_prelude.h b/monetdb5/optimizer/opt_prelude.h
--- a/monetdb5/optimizer/opt_prelude.h
+++ b/monetdb5/optimizer/opt_prelude.h
@@ -147,6 +147,7 @@ mal_export const char *likejoinRef;
 mal_export const char *likeRef;
 mal_export const char *likeselectRef;
 mal_export const char *likeuselectRef;
+mal_export const char *lngRef;
 mal_export const char *lockRef;
 mal_export const char *lookupRef;
 mal_export const char *malRef;
diff --git a/monetdb5/optimizer/opt_remap.c b/monetdb5/optimizer/opt_remap.c
--- a/monetdb5/optimizer/opt_remap.c
+++ b/monetdb5/optimizer/opt_remap.c
@@ -21,6 +21,21 @@
 #include "opt_inline.h"
 #include "opt_multiplex.h"
 
+static InstrPtr
+pushNilAt(MalBlkPtr mb, InstrPtr p, int pos)
+{
+int i;
+
+p = pushNilBat(mb, p);   /* push at end */
+if (mb->errors == NULL) {
+   int arg = getArg(p, p->argc - 1);
+for (i = p->argc - 1; i > pos; i--)
+getArg(p, i) = getArg(p, i - 1);
+getArg(p, pos) = arg;
+}
+return p;
+}
+
 static int
 OPTremapDirect(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, int 
idx,
   Module scope)
@@ -261,11 +276,16 @@ OPTmultiplexInline(Client cntxt, MalBlkP
q->typeresolved = false;
if (q->retc == 1 &&
((getModuleId(q) == batcalcRef
- && (getFunctionId(q) == mulRef
- || getFunctionId(q) 
== divRef
- || getFunctionId(q) 
== plusRef
- || getFunctionId(q) 
== minusRef
- || getFunctionId(q) 
== modRef))
+ && (   getFunctionId(q) == 
mulRef
+  || getFunctionId(q) 
== divRef
+  || getFunctionId(q) 
== plusRef
+  || getFunctionId(q) 
== minusRef
+  || getFunctionId(q) 
== modRef
+  || (q->argc > 3 && (
+
getFunctionId(q) == intRef
+ || 
getFunctionId(q) == lngRef
+ || 
getFunctionId(q) == hgeRef))
+))
 || getModuleId(q) == 
batmtimeRef
 || getModuleId(q) == 
batstrRef)) {
if (q->argc == 3 &&
@@ -292,6 +312,12 @@ OPTmultiplexInline(Client cntxt, MalBlkP
if 
(isaBatType(getArgType(mq, q, 2)))
q = 
pushNilBat(mq, q);
q = pushArgument(mq, q, 
a);
+   } else if (q->argc == 5 && 
getModuleId(q) == batcalcRef) { /* decimal casts */
+   int

MonetDB: default - merged with Aug2024

2024-07-10 Thread Niels Nes via checkin-list
Changeset: 2cc06379d80e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2cc06379d80e
Modified Files:
clients/Tests/exports.stable.out
Branch: default
Log Message:

merged with Aug2024


diffs (101 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
@@ -1065,6 +1065,7 @@ const char *likeRef;
 const char *likejoinRef;
 const char *likeselectRef;
 const char *likeuselectRef;
+const char *lngRef;
 str loadLibrary(const char *modulename, int flag);
 char *locate_file(const char *basename, const char *ext, bit recurse);
 const char *lockRef;
diff --git a/monetdb5/optimizer/opt_prelude.c b/monetdb5/optimizer/opt_prelude.c
--- a/monetdb5/optimizer/opt_prelude.c
+++ b/monetdb5/optimizer/opt_prelude.c
@@ -149,6 +149,7 @@ const char *leftjoinRef;
 const char *likejoinRef;
 const char *likeRef;
 const char *likeselectRef;
+const char *lngRef;
 const char *lockRef;
 const char *lookupRef;
 const char *malRef;
@@ -409,6 +410,7 @@ optimizerInit(void)
likejoinRef = putName("likejoin");
likeRef = putName("like");
likeselectRef = putName("likeselect");
+   lngRef = putName("lng");
lockRef = putName("lock");
lookupRef = putName("lookup");
malRef = putName("mal");
diff --git a/monetdb5/optimizer/opt_prelude.h b/monetdb5/optimizer/opt_prelude.h
--- a/monetdb5/optimizer/opt_prelude.h
+++ b/monetdb5/optimizer/opt_prelude.h
@@ -147,6 +147,7 @@ mal_export const char *likejoinRef;
 mal_export const char *likeRef;
 mal_export const char *likeselectRef;
 mal_export const char *likeuselectRef;
+mal_export const char *lngRef;
 mal_export const char *lockRef;
 mal_export const char *lookupRef;
 mal_export const char *malRef;
diff --git a/monetdb5/optimizer/opt_remap.c b/monetdb5/optimizer/opt_remap.c
--- a/monetdb5/optimizer/opt_remap.c
+++ b/monetdb5/optimizer/opt_remap.c
@@ -21,6 +21,21 @@
 #include "opt_inline.h"
 #include "opt_multiplex.h"
 
+static InstrPtr
+pushNilAt(MalBlkPtr mb, InstrPtr p, int pos)
+{
+int i;
+
+p = pushNilBat(mb, p);   /* push at end */
+if (mb->errors == NULL) {
+   int arg = getArg(p, p->argc - 1);
+for (i = p->argc - 1; i > pos; i--)
+getArg(p, i) = getArg(p, i - 1);
+getArg(p, pos) = arg;
+}
+return p;
+}
+
 static int
 OPTremapDirect(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, int 
idx,
   Module scope)
@@ -261,11 +276,16 @@ OPTmultiplexInline(Client cntxt, MalBlkP
q->typeresolved = false;
if (q->retc == 1 &&
((getModuleId(q) == batcalcRef
- && (getFunctionId(q) == mulRef
- || getFunctionId(q) 
== divRef
- || getFunctionId(q) 
== plusRef
- || getFunctionId(q) 
== minusRef
- || getFunctionId(q) 
== modRef))
+ && (   getFunctionId(q) == 
mulRef
+  || getFunctionId(q) 
== divRef
+  || getFunctionId(q) 
== plusRef
+  || getFunctionId(q) 
== minusRef
+  || getFunctionId(q) 
== modRef
+  || (q->argc > 3 && (
+
getFunctionId(q) == intRef
+ || 
getFunctionId(q) == lngRef
+ || 
getFunctionId(q) == hgeRef))
+))
 || getModuleId(q) == 
batmtimeRef
 || getModuleId(q) == 
batstrRef)) {
if (q->argc == 3 &&
@@ -292,6 +312,12 @@ OPTmultiplexInline(Client cntxt, MalBlkP
if 
(isaBatType(getArgType(mq, q, 2)))
q = 
pushNilBat(mq, q);
q = pushArgument(mq, q, 
a);
+   } else if (q->argc == 5 && 
getModuleId(q) == batcalcRef) { /* decimal casts */
+   int pos = 3;
+   if 
(isaBatType(getArgType(mq, q, 1)))
+ 

MonetDB: Dec2023 - Move client context printing to SQL layer.

2024-07-10 Thread Sjoerd Mullender via checkin-list
Changeset: 73891dff281c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/73891dff281c
Modified Files:
monetdb5/mal/mal.c
monetdb5/mal/mal_client.c
monetdb5/mal/mal_private.h
sql/backends/monet5/sql_scenario.c
Branch: Dec2023
Log Message:

Move client context printing to SQL layer.
We can now print whether a context has an open transaction.
We also print the name of the client thread responsible for the context.


diffs (135 lines):

diff --git a/monetdb5/mal/mal.c b/monetdb5/mal/mal.c
--- a/monetdb5/mal/mal.c
+++ b/monetdb5/mal/mal.c
@@ -53,12 +53,6 @@ mal_version(void)
return MONETDB5_VERSION;
 }
 
-static void
-MALprintinfo(void)
-{
-   MCprintinfo();
-}
-
 /*
  * Initialization of the MAL context
  */
@@ -99,8 +93,6 @@ mal_init(char *modules[], bool embedded,
return -1;
initNamespace();
 
-   GDKprintinforegister(MALprintinfo);
-
err = malBootstrap(modules, embedded, initpasswd);
if (err !=MAL_SUCCEED) {
mal_client_reset();
diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c
--- a/monetdb5/mal/mal_client.c
+++ b/monetdb5/mal/mal_client.c
@@ -587,36 +587,3 @@ MCvalid(Client tc)
MT_lock_unset(&mal_contextLock);
return 0;
 }
-
-void
-MCprintinfo(void)
-{
-   int nrun = 0, nfinish = 0, nblock = 0;
-
-   MT_lock_set(&mal_contextLock);
-   for (Client c = mal_clients; c < mal_clients + MAL_MAXCLIENTS; c++) {
-   switch (c->mode) {
-   case RUNCLIENT:
-   /* running */
-   nrun++;
-   if (c->idle)
-   printf("client %d, user %s, using %"PRIu64" 
bytes of transient space, idle since %s", c->idx, c->username, (uint64_t) 
ATOMIC_GET(&c->qryctx.datasize), ctime(&c->idle));
-   else
-   printf("client %d, user %s, using %"PRIu64" 
bytes of transient space\n", c->idx, c->username, (uint64_t) 
ATOMIC_GET(&c->qryctx.datasize));
-   break;
-   case FINISHCLIENT:
-   /* finishing */
-   nfinish++;
-   break;
-   case BLOCKCLIENT:
-   /* blocked */
-   nblock++;
-   break;
-   case FREECLIENT:
-   break;
-   }
-   }
-   MT_lock_unset(&mal_contextLock);
-   printf("%d active clients, %d finishing clients, %d blocked clients\n",
-  nrun, nfinish, nblock);
-}
diff --git a/monetdb5/mal/mal_private.h b/monetdb5/mal/mal_private.h
--- a/monetdb5/mal/mal_private.h
+++ b/monetdb5/mal/mal_private.h
@@ -80,6 +80,3 @@ void mal_runtime_reset(void)
 
 char *dupError(const char *err)
__attribute__((__visibility__("hidden"), __returns_nonnull__));
-
-void MCprintinfo(void)
-   __attribute__((__visibility__("hidden")));
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -87,10 +87,55 @@ static MT_Lock sql_contextLock = MT_LOCK
 static str SQLinit(Client c, const char *initpasswd);
 static str master_password = NULL;
 
+#include "mal.h"
+#include "mal_client.h"
+
+static void
+CLIENTprintinfo(void)
+{
+   int nrun = 0, nfinish = 0, nblock = 0;
+   char buf[32];
+   char tbuf[64];
+   struct tm tm;
+
+   MT_lock_set(&mal_contextLock);
+   for (Client c = mal_clients; c < mal_clients + MAL_MAXCLIENTS; c++) {
+   switch (c->mode) {
+   case RUNCLIENT:
+   /* running */
+   nrun++;
+   if (c->qryctx.maxmem)
+   snprintf(buf, sizeof(buf), " (max %"PRIu64")", 
(uint64_t) c->qryctx.maxmem);
+   else
+   buf[0] = 0;
+   if (c->idle) {
+   localtime_r(&c->idle, &tm);
+   strftime(tbuf, sizeof(tbuf), ", idle since %F 
%H:%M:%S%z", &tm);
+   } else
+   tbuf[0] = 0;
+   printf("client %d, user %s, thread %s, using %"PRIu64" 
bytes of transient space%s%s%s\n", c->idx, c->username, c->mythread ? 
c->mythread : "?", (uint64_t) ATOMIC_GET(&c->qryctx.datasize), buf, tbuf, 
c->sqlcontext && ((backend *) c->sqlcontext)->mvc && ((backend *) 
c->sqlcontext)->mvc->session && ((backend *) c->sqlcontext)->mvc->session->tr 
&& ((backend *) c->sqlcontext)->mvc->session->tr->active ? ", active 
transaction" : "");
+   break;
+   case FINISHCLIENT:
+   /* finishing */
+   nfinish++;
+   break;
+   case BLOCKCLIENT:
+   /* blocked */
+

MonetDB: Dec2023 - Keep the lock a bit longer so that values don...

2024-07-10 Thread Sjoerd Mullender via checkin-list
Changeset: 3d0f45933e8a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3d0f45933e8a
Modified Files:
tools/merovingian/daemon/forkmserver.c
Branch: Dec2023
Log Message:

Keep the lock a bit longer so that values don't get changed while we're (not) 
looking.


diffs (71 lines):

diff --git a/tools/merovingian/daemon/forkmserver.c 
b/tools/merovingian/daemon/forkmserver.c
--- a/tools/merovingian/daemon/forkmserver.c
+++ b/tools/merovingian/daemon/forkmserver.c
@@ -723,7 +723,6 @@ forkMserver(const char *database, sabdb*
(void) fcntl(pfdo[0], F_SETFD, FD_CLOEXEC);
(void) fcntl(pfde[0], F_SETFD, FD_CLOEXEC);
 #endif
-   pthread_mutex_unlock(&_mero_topdp_lock);
 
while (argv[freec] != NULL) {
free(argv[freec++]);
@@ -735,6 +734,8 @@ forkMserver(const char *database, sabdb*
 * and if it hangs, we're just doomed, with the drawback that we
 * completely kill the functionality of monetdbd too */
do {
+   pthread_mutex_unlock(&_mero_topdp_lock);
+
/* give the database a break */
sleep_ms(500);
 
@@ -756,12 +757,7 @@ forkMserver(const char *database, sabdb*
 * waited for), the pid will have been set to -1, so 
check
 * that. */
pthread_mutex_lock(&_mero_topdp_lock);
-   if (dp->pid == -1) {
-   pthread_mutex_unlock(&_mero_topdp_lock);
-   break;
-   }
-   pthread_mutex_unlock(&_mero_topdp_lock);
-   } while ((*stats)->state != SABdbRunning);
+   } while (dp->pid != -1 && (*stats)->state != SABdbRunning);
 
/* check if the SQL scenario was loaded */
if (dp->pid != -1 && (*stats)->state == SABdbRunning &&
@@ -777,14 +773,18 @@ forkMserver(const char *database, sabdb*
if (scen == NULL) {
/* we don't know what it's doing, but we don't 
like it
 * any case, so kill it */
-   (void) terminateProcess(dp->dbname, dp->pid, 
MERODB);
+   pid_t pid = dp->pid;
+   pthread_mutex_unlock(&_mero_topdp_lock);
+   (void) terminateProcess(dp->dbname, pid, 
MERODB);
msab_freeStatus(stats);
pthread_mutex_unlock(&dp->fork_lock);
return(newErr("database '%s' did not initialise 
the sql "
  "scenario", 
database));
}
} else if (dp->pid != -1) {
-   (void) terminateProcess(dp->dbname, dp->pid, MERODB);
+   pid_t pid = dp->pid;
+   pthread_mutex_unlock(&_mero_topdp_lock);
+   (void) terminateProcess(dp->dbname, pid, MERODB);
msab_freeStatus(stats);
pthread_mutex_unlock(&dp->fork_lock);
return(newErr(
@@ -796,6 +796,7 @@ forkMserver(const char *database, sabdb*
if (dp->pid == -1) {
state = (*stats)->state;
 
+   pthread_mutex_unlock(&_mero_topdp_lock);
pthread_mutex_unlock(&dp->fork_lock);
 
/* starting failed */
@@ -837,6 +838,7 @@ forkMserver(const char *database, sabdb*
}
}
 
+   pthread_mutex_unlock(&_mero_topdp_lock);
pthread_mutex_unlock(&dp->fork_lock);
 
if ((*stats)->locked) {
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Dec2023 - A little cleanup.

2024-07-10 Thread Sjoerd Mullender via checkin-list
Changeset: 36fea6dd2ea2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/36fea6dd2ea2
Modified Files:
common/utils/msabaoth.c
tools/merovingian/daemon/discoveryrunner.c
tools/merovingian/daemon/forkmserver.c
tools/merovingian/daemon/merovingian.h
Branch: Dec2023
Log Message:

A little cleanup.


diffs (87 lines):

diff --git a/common/utils/msabaoth.c b/common/utils/msabaoth.c
--- a/common/utils/msabaoth.c
+++ b/common/utils/msabaoth.c
@@ -721,9 +721,15 @@ msab_getSingleStatus(const char *pathbuf
};
 
/* store the database name */
-   snprintf(buf, sizeof(buf), "%s/%s", pathbuf, dbname);
+   int dbnamestart;
+#ifdef _MSC_VER
+   dbnamestart = snprintf(buf, sizeof(buf), "%s/", pathbuf);
+   snprintf(buf + dbnamestart, sizeof(buf) - dbnamestart, "%s", dbname);
+#else
+   snprintf(buf, sizeof(buf), "%s/%n%s", pathbuf, &dbnamestart, dbname);
+#endif
sdb->path = strdup(buf);
-   sdb->dbname = sdb->path + strlen(sdb->path) - strlen(dbname);
+   sdb->dbname = sdb->path + dbnamestart;
 
 
/* check the state of the server by looking at its gdk lock:
diff --git a/tools/merovingian/daemon/discoveryrunner.c 
b/tools/merovingian/daemon/discoveryrunner.c
--- a/tools/merovingian/daemon/discoveryrunner.c
+++ b/tools/merovingian/daemon/discoveryrunner.c
@@ -189,21 +189,21 @@ getRemoteDB(const char *database)
} else {
walk = stats = malloc(sizeof(sabdb));
}
-   walk->dbname = strdup(rdb->dbname);
+   *walk = (sabdb) {
+   .dbname = strdup(rdb->dbname),
+   .locked = false,
+   .state = SABdbRunning,
+   .pid = -1,
+   .scens = malloc(sizeof(sablist)),
+   .conns = malloc(sizeof(sablist)),
+   };
+   *walk->scens = (sablist) {
+   .val = strdup("sql"),
+   };
+   *walk->conns = (sablist) {
+   .val = strdup(rdb->conn),
+   };
walk->path = walk->dbname; /* only freed by sabaoth */
-   walk->locked = false;
-   walk->state = SABdbRunning;
-   walk->pid = 0;
-   walk->scens = malloc(sizeof(sablist));
-   walk->scens->val = strdup("sql");
-   walk->scens->next = NULL;
-   walk->conns = malloc(sizeof(sablist));
-   walk->conns->val = strdup(rdb->conn);
-   walk->conns->next = NULL;
-   walk->uri = NULL;
-   walk->secret = NULL;
-   walk->next = NULL;
-   walk->uplog = NULL;
 
/* cut out first returned entry, put it down the list
 * later, as to implement a round-robin DNS-like
diff --git a/tools/merovingian/daemon/forkmserver.c 
b/tools/merovingian/daemon/forkmserver.c
--- a/tools/merovingian/daemon/forkmserver.c
+++ b/tools/merovingian/daemon/forkmserver.c
@@ -236,6 +236,10 @@ forkMserver(const char *database, sabdb*
*dp = (struct _dpair) {
.dbname = strdup(database),
.fork_lock = PTHREAD_MUTEX_INITIALIZER,
+   .input[0].fd = -1,
+   .input[1].fd = -1,
+   .type = NODB,
+   .pid = -1,
};
break;
}
diff --git a/tools/merovingian/daemon/merovingian.h 
b/tools/merovingian/daemon/merovingian.h
--- a/tools/merovingian/daemon/merovingian.h
+++ b/tools/merovingian/daemon/merovingian.h
@@ -36,7 +36,8 @@ typedef char* err;
 #define NO_ERR (err)0
 
 typedef enum _mtype {
-   MERO = 1,
+   NODB = 0,
+   MERO,
MERODB,
MEROFUN
 } mtype;
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Dec2023 - Also print transaction start (ts) value for o...

2024-07-10 Thread Sjoerd Mullender via checkin-list
Changeset: ba1c5677388d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ba1c5677388d
Modified Files:
sql/backends/monet5/sql_scenario.c
Branch: Dec2023
Log Message:

Also print transaction start (ts) value for open transactions.


diffs (40 lines):

diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -94,8 +94,9 @@ static void
 CLIENTprintinfo(void)
 {
int nrun = 0, nfinish = 0, nblock = 0;
-   char buf[32];
-   char tbuf[64];
+   char mmbuf[64];
+   char tmbuf[64];
+   char trbuf[64];
struct tm tm;
 
MT_lock_set(&mal_contextLock);
@@ -105,15 +106,19 @@ CLIENTprintinfo(void)
/* running */
nrun++;
if (c->qryctx.maxmem)
-   snprintf(buf, sizeof(buf), " (max %"PRIu64")", 
(uint64_t) c->qryctx.maxmem);
+   snprintf(mmbuf, sizeof(mmbuf), " (max 
%"PRIu64")", (uint64_t) c->qryctx.maxmem);
else
-   buf[0] = 0;
+   mmbuf[0] = 0;
if (c->idle) {
localtime_r(&c->idle, &tm);
-   strftime(tbuf, sizeof(tbuf), ", idle since %F 
%H:%M:%S%z", &tm);
+   strftime(tmbuf, sizeof(tmbuf), ", idle since %F 
%H:%M:%S%z", &tm);
} else
-   tbuf[0] = 0;
-   printf("client %d, user %s, thread %s, using %"PRIu64" 
bytes of transient space%s%s%s\n", c->idx, c->username, c->mythread ? 
c->mythread : "?", (uint64_t) ATOMIC_GET(&c->qryctx.datasize), buf, tbuf, 
c->sqlcontext && ((backend *) c->sqlcontext)->mvc && ((backend *) 
c->sqlcontext)->mvc->session && ((backend *) c->sqlcontext)->mvc->session->tr 
&& ((backend *) c->sqlcontext)->mvc->session->tr->active ? ", active 
transaction" : "");
+   tmbuf[0] = 0;
+   if (c->sqlcontext && ((backend *) c->sqlcontext)->mvc 
&& ((backend *) c->sqlcontext)->mvc->session && ((backend *) 
c->sqlcontext)->mvc->session->tr && ((backend *) 
c->sqlcontext)->mvc->session->tr->active)
+   snprintf(trbuf, sizeof(trbuf), ", active 
transaction, ts: "ULLFMT, ((backend *) c->sqlcontext)->mvc->session->tr->ts);
+   else
+   trbuf[0] = 0;
+   printf("client %d, user %s, thread %s, using %"PRIu64" 
bytes of transient space%s%s%s\n", c->idx, c->username, c->mythread ? 
c->mythread : "?", (uint64_t) ATOMIC_GET(&c->qryctx.datasize), mmbuf, tmbuf, 
trbuf);
break;
case FINISHCLIENT:
/* finishing */
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: nilmask - merged with default

2024-07-10 Thread Niels Nes via checkin-list
Changeset: e8b7b2e5171a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e8b7b2e5171a
Modified Files:
clients/Tests/MAL-signatures.test
clients/Tests/exports.stable.out
gdk/gdk.h
gdk/gdk_select.c
monetdb5/optimizer/opt_emptybind.c
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_statement.c
sql/storage/bat/bat_storage.c
sql/storage/bat/bat_table.c
sql/storage/sql_storage.h
sql/storage/store.c
Branch: nilmask
Log Message:

merged with default


diffs (truncated from 12057 to 300 lines):

diff --git a/.github/ISSUE_TEMPLATE/bug_report.md 
b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,34 +0,0 @@

-name: Bug report
-about: Create a report to help us improve the sytem 
-title: ''
-labels: ''
-assignees: ''
-

-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**To Reproduce**
-Create a setting with minimal input for an external user to demonstrate the 
buggy behavior.
-This includes the relevant part of the database schema description.
-Performance trace of the rogue query (using the TRACE command)
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
-
-**Software versions**
- - MonetDB version number [a milestone label]
- - OS and version: [e.g. Ubuntu 18.04]
- - Installed from release package or self-installed and compiled
-
-
-**Issue labeling **
-Make liberal use of the labels to characterise the issue topics. e.g. identify 
severity, version, etc..
-
-**Additional context**
-Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml 
b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,61 @@
+name: Bug report
+description: Use this template to report bugs in MonetDB
+labels: ["needs triage"]
+body:
+  - type: textarea
+id: summary
+attributes:
+  label: Describe the bug
+  description: |
+Clear and concise description of what the bug is.
+validations:
+  required: true
+  - type: textarea
+id: reproduction
+attributes:
+  label: Reproduction steps
+  description: |
+Create a setting with minimal input for an external user to 
demonstrate the buggy behavior.
+This includes the relevant part of the database schema description.
+Performance trace of the rogue query (using the TRACE command).
+validations:
+  required: false
+  - type: textarea
+id: expected
+attributes:
+  label: Expected behavior
+  description: |
+Clear and concise description of what you expected to happen.
+validations:
+  required: false
+  - type: input
+id: mdbversion
+attributes:
+  label: MonetDB release
+  placeholder: e.g., Dec2023_SP1, 11.49.1
+validations:
+  required: true
+  - type: dropdown
+id: binsource
+attributes:
+  label: Executables source
+  options:
+- "Release packages"
+- "Self compiled and installed"
+validations:
+  required: true
+  - type: input
+id: osversion
+attributes:
+  label: Operating System
+  placeholder: e.g., Fedora Linux 39 (Workstation Edition)
+validations:
+  required: true
+  - type: textarea
+id: additional
+attributes:
+  label: Additional context
+  description: |
+Add any other context or screenshots about the problem here.
+validations:
+  required: false
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md 
b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,20 +0,0 @@

-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: ''
-assignees: ''
-

-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always 
frustrated when [...]
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features 
you've considered.
-
-**Additional context**
-Add any other context or screenshots about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml 
b/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,36 @@
+name: Feature request
+description: Use this template for feature requests
+labels: ["needs triage"]
+body:
+  - type: textarea
+id: problem
+attributes:
+  label: Is your feature request related to a problem? Describe