Changeset: fdb01d751ce1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/fdb01d751ce1
Branch: less_explain_info
Log Message:
Merge with default branch
diffs (truncated from 496 to 300 lines):
diff --git a/clients/mapiclient/curl-stream.h b/clients/mapiclient/curl-stream.h
--- a/clients/mapiclient/curl-stream.h
+++ b/clients/mapiclient/curl-stream.h
@@ -53,9 +53,9 @@ open_urlstream(const char *url, char *er
if ((ret = curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, errbuf)) !=
CURLE_OK ||
(ret = curl_easy_setopt(handle, CURLOPT_URL, url)) != CURLE_OK ||
(ret = curl_easy_setopt(handle, CURLOPT_WRITEDATA, s)) != CURLE_OK
||
- (ret = curl_easy_setopt(handle, CURLOPT_VERBOSE, 0)) != CURLE_OK ||
- (ret = curl_easy_setopt(handle, CURLOPT_NOSIGNAL, 1)) != CURLE_OK ||
- (ret = curl_easy_setopt(handle, CURLOPT_FAILONERROR, 1)) !=
CURLE_OK ||
+ (ret = curl_easy_setopt(handle, CURLOPT_VERBOSE, (long)0)) !=
CURLE_OK ||
+ (ret = curl_easy_setopt(handle, CURLOPT_NOSIGNAL, (long)1)) !=
CURLE_OK ||
+ (ret = curl_easy_setopt(handle, CURLOPT_FAILONERROR, (long)1)) !=
CURLE_OK ||
(ret = curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION,
write_callback)) != CURLE_OK ||
(ret = curl_easy_perform(handle)) != CURLE_OK) {
curl_easy_cleanup(handle);
diff --git a/sql/backends/monet5/sql_user.c b/sql/backends/monet5/sql_user.c
--- a/sql/backends/monet5/sql_user.c
+++ b/sql/backends/monet5/sql_user.c
@@ -27,6 +27,7 @@
#include "mal_authorize.h"
#include "mcrypt.h"
#include "sql_execute.h"
+#include "opt_pipes.h"
static inline sql_table*
getUsersTbl(mvc *m)
@@ -321,6 +322,11 @@ monet5_create_user(ptr _mvc, str user, s
if (!optimizer)
optimizer = default_optimizer;
+ if (!isOptimizerPipe(optimizer)) {
+ GDKfree(schema_buf);
+ throw(MAL, "sql.create_user", SQLSTATE(42000) "Optimizer pipe
%s unknown", optimizer);
+ }
+
if (!enc) {
if (!(pwd = mcrypt_BackendSum(passwd, strlen(passwd)))) {
diff --git a/sql/test/BugTracker-2025/Tests/7699-create-user.test
b/sql/test/BugTracker-2025/Tests/7699-create-user.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2025/Tests/7699-create-user.test
@@ -0,0 +1,7 @@
+statement error
+CREATE USER test WITH PASSWORD 'me' NAME 'tester' OPTIMIZER 'xyz'
+
+query TTITIITI
+SELECT * FROM sys.users WHERE name = 'tester'
+----
+
diff --git a/sql/test/BugTracker-2025/Tests/All
b/sql/test/BugTracker-2025/Tests/All
--- a/sql/test/BugTracker-2025/Tests/All
+++ b/sql/test/BugTracker-2025/Tests/All
@@ -46,6 +46,7 @@ 7695-antijoin-without-expressions
7696-antijoin-with-complex-expression
7697-exists-any-semantics
7698-get-statistics-problem
+7699-create-user
7701-alter-user-max_workers
7702-stmt_convert_cands
7703-left-join
diff --git a/sql/test/emptydb/Tests/check.SQL.py
b/sql/test/emptydb/Tests/check.SQL.py
--- a/sql/test/emptydb/Tests/check.SQL.py
+++ b/sql/test/emptydb/Tests/check.SQL.py
@@ -87,7 +87,7 @@ sys_pkeys = [
('var_values', 'var_name'),
('table_partitions', 'id'),
- ('range_partitions', 'table_id, partition_id, minimum'),
+ ('range_partitions', 'table_id'),
('value_partitions', 'table_id, partition_id, "value"'),
('queue', 'tag'),
@@ -131,7 +131,6 @@ sys_akeys = [
('table_partitions WHERE column_id IS NOT NULL', 'table_id, column_id'),
('table_partitions WHERE "expression" IS NOT NULL', 'table_id,
"expression"'),
- ('range_partitions', 'table_id, partition_id, "maximum"'),
('fkey_actions', 'action_name'),
('fkeys', 'table_id, name'),
diff --git a/sql/test/emptydb/Tests/check.stable.out
b/sql/test/emptydb/Tests/check.stable.out
--- a/sql/test/emptydb/Tests/check.stable.out
+++ b/sql/test/emptydb/Tests/check.stable.out
@@ -114,7 +114,7 @@ select 'duplicates in comments', count(*
select 'duplicates in ids', count(*), id from sys.ids group by id having
count(*) > 1;
select 'duplicates in var_values', count(*), var_name from sys.var_values
group by var_name having count(*) > 1;
select 'duplicates in table_partitions', count(*), id from
sys.table_partitions group by id having count(*) > 1;
-select 'duplicates in range_partitions', count(*), table_id, partition_id,
minimum from sys.range_partitions group by table_id, partition_id, minimum
having count(*) > 1;
+select 'duplicates in range_partitions', count(*), table_id from
sys.range_partitions group by table_id having count(*) > 1;
select 'duplicates in value_partitions', count(*), table_id, partition_id,
"value" from sys.value_partitions group by table_id, partition_id, "value"
having count(*) > 1;
select 'duplicates in queue', count(*), tag from sys.queue group by tag having
count(*) > 1;
select 'duplicates in sessions', count(*), sessionid from sys.sessions group
by sessionid having count(*) > 1;
@@ -149,7 +149,6 @@ select 'duplicates in privilege_codes',
select 'duplicates in comments', count(*), id from sys.comments group by id
having count(*) > 1;
select 'duplicates in table_partitions WHERE column_id IS NOT NULL', count(*),
table_id, column_id from sys.table_partitions WHERE column_id IS NOT NULL group
by table_id, column_id having count(*) > 1;
select 'duplicates in table_partitions WHERE expression IS NOT NULL',
count(*), table_id, "expression" from sys.table_partitions WHERE "expression"
IS NOT NULL group by table_id, "expression" having count(*) > 1;
-select 'duplicates in range_partitions', count(*), table_id, partition_id,
"maximum" from sys.range_partitions group by table_id, partition_id, "maximum"
having count(*) > 1;
select 'duplicates in fkey_actions', count(*), action_name from
sys.fkey_actions group by action_name having count(*) > 1;
select 'duplicates in fkeys', count(*), table_id, name from sys.fkeys group by
table_id, name having count(*) > 1;
select 'missing reference in schemas authorization', authorization, * from
sys.schemas where (authorization) not in (select id from sys.auths);
@@ -5782,10 +5781,10 @@ select 'null in fkeys.delete_action', de
% %2, %1, id # name
% varchar, bigint, int # type
% 0, 1, 1 # length
-% .%2, sys.%1, sys.range_partitions, sys.range_partitions,
sys.range_partitions # table_name
-% %2, %1, table_id, partition_id, minimum # name
-% varchar, bigint, int, int, varchar # type
-% 0, 1, 1, 1, 0 # length
+% .%2, sys.%1, sys.range_partitions # table_name
+% %2, %1, table_id # name
+% varchar, bigint, int # type
+% 0, 1, 1 # length
% .%2, sys.%1, sys.value_partitions, sys.value_partitions,
sys.value_partitions # table_name
% %2, %1, table_id, partition_id, value # name
% varchar, bigint, int, int, varchar # type
@@ -5922,10 +5921,6 @@ select 'null in fkeys.delete_action', de
% %2, %1, table_id, expression # name
% varchar, bigint, int, varchar # type
% 0, 1, 1, 0 # length
-% .%2, sys.%1, sys.range_partitions, sys.range_partitions,
sys.range_partitions # table_name
-% %2, %1, table_id, partition_id, maximum # name
-% varchar, bigint, int, int, varchar # type
-% 0, 1, 1, 1, 0 # length
% .%2, sys.%1, sys.fkey_actions # table_name
% %2, %1, action_name # name
% varchar, bigint, varchar # type
diff --git a/sql/test/emptydb/Tests/check.stable.out.32bit
b/sql/test/emptydb/Tests/check.stable.out.32bit
--- a/sql/test/emptydb/Tests/check.stable.out.32bit
+++ b/sql/test/emptydb/Tests/check.stable.out.32bit
@@ -114,7 +114,7 @@ select 'duplicates in comments', count(*
select 'duplicates in ids', count(*), id from sys.ids group by id having
count(*) > 1;
select 'duplicates in var_values', count(*), var_name from sys.var_values
group by var_name having count(*) > 1;
select 'duplicates in table_partitions', count(*), id from
sys.table_partitions group by id having count(*) > 1;
-select 'duplicates in range_partitions', count(*), table_id, partition_id,
minimum from sys.range_partitions group by table_id, partition_id, minimum
having count(*) > 1;
+select 'duplicates in range_partitions', count(*), table_id from
sys.range_partitions group by table_id having count(*) > 1;
select 'duplicates in value_partitions', count(*), table_id, partition_id,
"value" from sys.value_partitions group by table_id, partition_id, "value"
having count(*) > 1;
select 'duplicates in queue', count(*), tag from sys.queue group by tag having
count(*) > 1;
select 'duplicates in sessions', count(*), sessionid from sys.sessions group
by sessionid having count(*) > 1;
@@ -149,7 +149,6 @@ select 'duplicates in privilege_codes',
select 'duplicates in comments', count(*), id from sys.comments group by id
having count(*) > 1;
select 'duplicates in table_partitions WHERE column_id IS NOT NULL', count(*),
table_id, column_id from sys.table_partitions WHERE column_id IS NOT NULL group
by table_id, column_id having count(*) > 1;
select 'duplicates in table_partitions WHERE expression IS NOT NULL',
count(*), table_id, "expression" from sys.table_partitions WHERE "expression"
IS NOT NULL group by table_id, "expression" having count(*) > 1;
-select 'duplicates in range_partitions', count(*), table_id, partition_id,
"maximum" from sys.range_partitions group by table_id, partition_id, "maximum"
having count(*) > 1;
select 'duplicates in fkey_actions', count(*), action_name from
sys.fkey_actions group by action_name having count(*) > 1;
select 'duplicates in fkeys', count(*), table_id, name from sys.fkeys group by
table_id, name having count(*) > 1;
select 'missing reference in schemas authorization', authorization, * from
sys.schemas where (authorization) not in (select id from sys.auths);
@@ -5732,10 +5731,10 @@ select 'null in fkeys.delete_action', de
% %2, %1, id # name
% varchar, bigint, int # type
% 0, 1, 1 # length
-% .%2, sys.%1, sys.range_partitions, sys.range_partitions,
sys.range_partitions # table_name
-% %2, %1, table_id, partition_id, minimum # name
-% varchar, bigint, int, int, varchar # type
-% 0, 1, 1, 1, 0 # length
+% .%2, sys.%1, sys.range_partitions # table_name
+% %2, %1, table_id # name
+% varchar, bigint, int # type
+% 0, 1, 1 # length
% .%2, sys.%1, sys.value_partitions, sys.value_partitions,
sys.value_partitions # table_name
% %2, %1, table_id, partition_id, value # name
% varchar, bigint, int, int, varchar # type
@@ -5872,10 +5871,6 @@ select 'null in fkeys.delete_action', de
% %2, %1, table_id, expression # name
% varchar, bigint, int, varchar # type
% 0, 1, 1, 0 # length
-% .%2, sys.%1, sys.range_partitions, sys.range_partitions,
sys.range_partitions # table_name
-% %2, %1, table_id, partition_id, maximum # name
-% varchar, bigint, int, int, varchar # type
-% 0, 1, 1, 1, 0 # length
% .%2, sys.%1, sys.fkey_actions # table_name
% %2, %1, action_name # name
% varchar, bigint, varchar # type
diff --git a/sql/test/emptydb/Tests/check.stable.out.int128
b/sql/test/emptydb/Tests/check.stable.out.int128
--- a/sql/test/emptydb/Tests/check.stable.out.int128
+++ b/sql/test/emptydb/Tests/check.stable.out.int128
@@ -114,7 +114,7 @@ select 'duplicates in comments', count(*
select 'duplicates in ids', count(*), id from sys.ids group by id having
count(*) > 1;
select 'duplicates in var_values', count(*), var_name from sys.var_values
group by var_name having count(*) > 1;
select 'duplicates in table_partitions', count(*), id from
sys.table_partitions group by id having count(*) > 1;
-select 'duplicates in range_partitions', count(*), table_id, partition_id,
minimum from sys.range_partitions group by table_id, partition_id, minimum
having count(*) > 1;
+select 'duplicates in range_partitions', count(*), table_id from
sys.range_partitions group by table_id having count(*) > 1;
select 'duplicates in value_partitions', count(*), table_id, partition_id,
"value" from sys.value_partitions group by table_id, partition_id, "value"
having count(*) > 1;
select 'duplicates in queue', count(*), tag from sys.queue group by tag having
count(*) > 1;
select 'duplicates in sessions', count(*), sessionid from sys.sessions group
by sessionid having count(*) > 1;
@@ -149,7 +149,6 @@ select 'duplicates in privilege_codes',
select 'duplicates in comments', count(*), id from sys.comments group by id
having count(*) > 1;
select 'duplicates in table_partitions WHERE column_id IS NOT NULL', count(*),
table_id, column_id from sys.table_partitions WHERE column_id IS NOT NULL group
by table_id, column_id having count(*) > 1;
select 'duplicates in table_partitions WHERE expression IS NOT NULL',
count(*), table_id, "expression" from sys.table_partitions WHERE "expression"
IS NOT NULL group by table_id, "expression" having count(*) > 1;
-select 'duplicates in range_partitions', count(*), table_id, partition_id,
"maximum" from sys.range_partitions group by table_id, partition_id, "maximum"
having count(*) > 1;
select 'duplicates in fkey_actions', count(*), action_name from
sys.fkey_actions group by action_name having count(*) > 1;
select 'duplicates in fkeys', count(*), table_id, name from sys.fkeys group by
table_id, name having count(*) > 1;
select 'missing reference in schemas authorization', authorization, * from
sys.schemas where (authorization) not in (select id from sys.auths);
@@ -5925,10 +5924,10 @@ select 'null in fkeys.delete_action', de
% %2, %1, id # name
% varchar, bigint, int # type
% 0, 1, 1 # length
-% .%2, sys.%1, sys.range_partitions, sys.range_partitions,
sys.range_partitions # table_name
-% %2, %1, table_id, partition_id, minimum # name
-% varchar, bigint, int, int, varchar # type
-% 0, 1, 1, 1, 0 # length
+% .%2, sys.%1, sys.range_partitions # table_name
+% %2, %1, table_id # name
+% varchar, bigint, int # type
+% 0, 1, 1 # length
% .%2, sys.%1, sys.value_partitions, sys.value_partitions,
sys.value_partitions # table_name
% %2, %1, table_id, partition_id, value # name
% varchar, bigint, int, int, varchar # type
@@ -6065,10 +6064,6 @@ select 'null in fkeys.delete_action', de
% %2, %1, table_id, expression # name
% varchar, bigint, int, varchar # type
% 0, 1, 1, 0 # length
-% .%2, sys.%1, sys.range_partitions, sys.range_partitions,
sys.range_partitions # table_name
-% %2, %1, table_id, partition_id, maximum # name
-% varchar, bigint, int, int, varchar # type
-% 0, 1, 1, 1, 0 # length
% .%2, sys.%1, sys.fkey_actions # table_name
% %2, %1, action_name # name
% varchar, bigint, varchar # type
diff --git a/testing/Mtest.py.in b/testing/Mtest.py.in
--- a/testing/Mtest.py.in
+++ b/testing/Mtest.py.in
@@ -1311,6 +1311,7 @@ def PerformDir(env, testdir, testlist, t
finally:
if pSrvr is not None:
pSrvr.sendusr1()
+ pSrvr.checkkeys()
pSrvr.terminate()
pSrvr = None
if produce_html:
@@ -2552,6 +2553,198 @@ def killProc(proc, outfile=None, cmd=Non
else:
killchildren(proc.pid)
+sys_pkeys = [
+ ('schemas', 'id'),
+ ('_tables', 'id'),
+ ('tables', 'id'),
+ ('_columns', 'id'),
+ ('columns', 'id'),
+ ('functions', 'id'),
+ ('args', 'id'),
+ ('types', 'id'),
+ ('objects', 'id, nr'),
+ ('keys', 'id'),
+ ('idxs', 'id'),
+ ('triggers', 'id'),
+ ('sequences', 'id'),
+ ('dependency_types', 'dependency_type_id'),
+ ('dependencies', 'id, depend_id'),
+ ('auths', 'id'),
+ ('users', 'name'),
+ ('user_role', 'login_id, role_id'),
+ ('privileges', 'obj_id, auth_id, privileges'),
+ ('querylog_catalog', 'id'),
+ ('querylog_calls', 'id'),
+ ('querylog_history', 'id'),
+ ('optimizers', 'name'),
+ ('environment', 'name'),
+ ('db_user_info', 'name'),
+ ('statistics', 'column_id'),
+ ('"storage"()', 'schema, "table", "column"'),
+ ('storagemodelinput', 'schema, "table", "column"'),
+
+ ('rejects', 'rowid'),
+
+ ('keywords', 'keyword'),
+ ('table_types', 'table_type_id'),
+
+ ('function_languages', 'language_id'),
+ ('function_types', 'function_type_id'),
+ ('index_types', 'index_type_id'),
+ ('key_types', 'key_type_id'),
+ ('privilege_codes', 'privilege_code_id'),
+
+ ('comments', 'id'),
+ ('ids', 'id'),
+ ('var_values', 'var_name'),
+
+ ('table_partitions', 'id'),
+ ('range_partitions', 'table_id'),
+ ('value_partitions', 'table_id, partition_id, "value"'),
+
+ ('queue', 'tag'),
+ ('sessions', 'sessionid'),
+
+ ('fkey_actions', 'action_id'),
+ ('fkeys', 'id'),
+]
+
+sys_akeys = [
+ ('schemas', 'name'),
+ ('_tables', 'schema_id, name'),
+ ('tables', 'schema_id, name'),
+ ('_columns', 'table_id, name'),
+ ('columns', 'table_id, name'),
+ ('_columns', 'table_id, number'),
+ ('columns', 'table_id, number'),
+
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]