MonetDB: monetdbe-proxy - Approve dependency tests.

2021-01-07 Thread Aris Koning
Changeset: ef8da24bef1b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ef8da24bef1b
Modified Files:
sql/test/Dependencies/Tests/dependency_DBobjects.test
sql/test/Dependencies/Tests/dependency_functions.test
sql/test/Dependencies/Tests/dependency_loop.test
sql/test/Dependencies/Tests/dependency_owner_schema_3.test
Branch: monetdbe-proxy
Log Message:

Approve dependency tests.


diffs (truncated from 428 to 300 lines):

diff --git a/sql/test/Dependencies/Tests/dependency_DBobjects.test 
b/sql/test/Dependencies/Tests/dependency_DBobjects.test
--- a/sql/test/Dependencies/Tests/dependency_DBobjects.test
+++ b/sql/test/Dependencies/Tests/dependency_DBobjects.test
@@ -174,6 +174,12 @@ DEP_FUNC
 comments
 describe_table
 DEP_FUNC
+dump_statements
+current_size_dump_statements
+DEP_FUNC
+dump_statements
+dump_database
+DEP_FUNC
 function_languages
 describe_function
 DEP_FUNC
@@ -198,6 +204,9 @@ DEP_FUNC
 t1
 f2
 DEP_FUNC
+table_partitions
+get_merge_table_partition_expressions
+DEP_FUNC
 table_types
 describe_table
 DEP_FUNC
@@ -292,7 +301,7 @@ DEP_INDEX
 query TTT rowsort
 SELECT c.name, f.name, 'DEP_FUNC' from sys.functions as f, sys.columns as c, 
sys.dependencies as dep where c.id = dep.id AND f.id = dep.depend_id AND 
dep.depend_type = 7 ORDER BY c.name, f.name
 
-255 values hashing to e2d9a3e1109be2f236e4d7f734331ef0
+372 values hashing to 78fd640e374ca620ee5f10465e0caf4a
 
 query TTT rowsort
 SELECT c.name, tri.name, 'DEP_TRIGGER' from sys.columns as c, sys.triggers as 
tri, sys.dependencies as dep where dep.id = c.id AND dep.depend_id =tri.id AND 
dep.depend_type = 8 order by c.name, tri.name
@@ -319,6 +328,63 @@ DEP_TRIGGER
 query TTT rowsort
 SELECT v.name, f.name, 'DEP_FUNC' from sys.functions as f, sys.tables as v, 
sys.dependencies as dep where v.id = dep.id AND f.id = dep.depend_id AND 
dep.depend_type = 7 AND v.type IN (1, 11) ORDER BY v.name, f.name
 
+columns
+get_merge_table_partition_expressions
+DEP_FUNC
+dump_add_schemas_to_users
+dump_database
+DEP_FUNC
+dump_column_defaults
+dump_database
+DEP_FUNC
+dump_comments
+dump_database
+DEP_FUNC
+dump_create_roles
+dump_database
+DEP_FUNC
+dump_create_schemas
+dump_database
+DEP_FUNC
+dump_create_users
+dump_database
+DEP_FUNC
+dump_foreign_keys
+dump_database
+DEP_FUNC
+dump_functions
+dump_database
+DEP_FUNC
+dump_grant_user_priviledges
+dump_database
+DEP_FUNC
+dump_indices
+dump_database
+DEP_FUNC
+dump_partition_tables
+dump_database
+DEP_FUNC
+dump_privileges
+dump_database
+DEP_FUNC
+dump_sequences
+dump_database
+DEP_FUNC
+dump_start_sequences
+dump_database
+DEP_FUNC
+dump_table_constraint_type
+dump_database
+DEP_FUNC
+dump_tables
+dump_database
+DEP_FUNC
+dump_triggers
+dump_database
+DEP_FUNC
+dump_user_defined_types
+dump_database
+DEP_FUNC
 v1
 f2
 DEP_FUNC
@@ -334,12 +400,33 @@ SELECT v.name, tri.name, 'DEP_TRIGGER' f
 query TTT rowsort
 SELECT f1.name, f2.name, 'DEP_FUNC' from sys.functions as f1, sys.functions as 
f2, sys.dependencies as dep where f1.id = dep.id AND f2.id = dep.depend_id AND 
dep.depend_type = 7 order by f2.name, f1.name
 
+current_size_dump_statements
+dump_database
+DEP_FUNC
 describe_type
 describe_columns
 DEP_FUNC
+dq
+fqn
+DEP_FUNC
+dq
+get_merge_table_partition_expressions
+DEP_FUNC
+dq
+prepare_esc
+DEP_FUNC
+dump_table_data
+dump_database
+DEP_FUNC
 f1
 f2
 DEP_FUNC
+fqn
+alter_table
+DEP_FUNC
+fqn
+schema_guard
+DEP_FUNC
 getproj4
 st_transform
 DEP_FUNC
@@ -349,6 +436,15 @@ DEP_FUNC
 ms_trunc
 ms_round
 DEP_FUNC
+remote_table_credentials
+get_remote_table_expressions
+DEP_FUNC
+replace_first
+schema_guard
+DEP_FUNC
+sq
+get_remote_table_expressions
+DEP_FUNC
 st_geometryn
 st_patchn
 DEP_FUNC
diff --git a/sql/test/Dependencies/Tests/dependency_functions.test 
b/sql/test/Dependencies/Tests/dependency_functions.test
--- a/sql/test/Dependencies/Tests/dependency_functions.test
+++ b/sql/test/Dependencies/Tests/dependency_functions.test
@@ -43,9 +43,24 @@ END
 query TTT rowsort
 SELECT f1.name, f2.name, 'DEP_FUNC' from sys.functions as f1, sys.functions as 
f2, sys.dependencies as dep where f1.id = dep.id AND f2.id = dep.depend_id AND 
dep.depend_type = 7 order by f2.name, f1.name
 
+current_size_dump_statements
+dump_database
+DEP_FUNC
 describe_type
 describe_columns
 DEP_FUNC
+dq
+fqn
+DEP_FUNC
+dq
+get_merge_table_partition_expressions
+DEP_FUNC
+dq
+prepare_esc
+DEP_FUNC
+dump_table_data
+dump_database
+DEP_FUNC
 f1
 f2
 DEP_FUNC
@@ -55,6 +70,12 @@ DEP_FUNC
 f1
 f3
 DEP_FUNC
+fqn
+alter_table
+DEP_FUNC
+fqn
+schema_guard
+DEP_FUNC
 getproj4
 st_transform
 DEP_FUNC
@@ -64,6 +85,15 @@ DEP_FUNC
 ms_trunc
 ms_round
 DEP_FUNC
+remote_table_credentials
+get_remote_table_expressions
+DEP_FUNC
+replace_first
+schema_guard
+DEP_FUNC
+sq
+get_remote_table_expressions
+DEP_FUNC
 st_geometryn
 st_patchn
 DEP_FUNC
@@ -86,9 +116,30 @@ DROP ALL FUNCTION f1
 query TTT rowsort
 SELECT f1.name, f2.name, 'DEP_FUNC' from sys.functions as f1, 

MonetDB: monetdbe-proxy - Remove the primary key constraint from...

2021-01-07 Thread Aris Koning
Changeset: c8ada1ed90a3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c8ada1ed90a3
Modified Files:
sql/scripts/76_dump.sql
Branch: monetdbe-proxy
Log Message:

Remove the primary key constraint from dump_statements.


diffs (12 lines):

diff --git a/sql/scripts/76_dump.sql b/sql/scripts/76_dump.sql
--- a/sql/scripts/76_dump.sql
+++ b/sql/scripts/76_dump.sql
@@ -159,7 +159,7 @@ END;
 --Because we need to explicitly overwrite the creation order column "o" in 
those cases. After inserting the dump statements for sys.functions and 
table-likes,
 --we can restart the auto-increment sequence with a sensible value for 
following dump statements.
 
-CREATE TABLE sys.dump_statements(o INT, s STRING, PRIMARY KEY (o));
+CREATE TABLE sys.dump_statements(o INT, s STRING);
 
 CREATE FUNCTION sys.current_size_dump_statements() RETURNS INT BEGIN RETURN 
SELECT COUNT(*) FROM dump_statements; END;
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: monetdbe-proxy - Approve check test.

2021-01-07 Thread Aris Koning
Changeset: acc986d5e60d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=acc986d5e60d
Modified Files:
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.int128
Branch: monetdbe-proxy
Log Message:

Approve check test.


diffs (truncated from 3094 to 300 lines):

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
@@ -23,6 +23,7 @@
 \dSt sys.db_user_info
 \dSt sys.dependencies
 \dSt sys.dependency_types
+\dSt sys.dump_statements
 \dSt sys.function_languages
 \dSt sys.function_types
 \dSt sys.functions
@@ -85,7 +86,38 @@
 \dSv sys.dependency_views_on_functions
 \dSv sys.dependency_views_on_procedures
 \dSv sys.dependency_views_on_views
+\dSv sys.describe_column_defaults
+\dSv sys.describe_comments
+\dSv sys.describe_constraints
+\dSv sys.describe_foreign_keys
+\dSv sys.describe_functions
+\dSv sys.describe_indices
+\dSv sys.describe_partition_tables
+\dSv sys.describe_privileges
+\dSv sys.describe_sequences
+\dSv sys.describe_tables
+\dSv sys.describe_triggers
+\dSv sys.describe_user_defined_types
+\dSv sys.dump_add_schemas_to_users
+\dSv sys.dump_column_defaults
+\dSv sys.dump_comments
+\dSv sys.dump_create_roles
+\dSv sys.dump_create_schemas
+\dSv sys.dump_create_users
+\dSv sys.dump_foreign_keys
+\dSv sys.dump_functions
+\dSv sys.dump_grant_user_priviledges
+\dSv sys.dump_indices
+\dSv sys.dump_partition_tables
+\dSv sys.dump_privileges
+\dSv sys.dump_sequences
+\dSv sys.dump_start_sequences
+\dSv sys.dump_table_constraint_type
+\dSv sys.dump_tables
+\dSv sys.dump_triggers
+\dSv sys.dump_user_defined_types
 \dSv sys.environment
+\dSv sys.fully_qualified_functions
 \dSv sys.geometry_columns
 \dSv sys.ids
 \dSv sys.optimizers
@@ -108,8 +140,10 @@
 \dSv sys.tracelog
 \dSv sys.users
 \dSv sys.var_values
+\dSf sys."_dump_table_data"
 \dSf sys."abbrev"
 \dSf sys."alpha"
+\dSf sys."alter_table"
 \dSf sys."analyze"
 \dSf sys."bbp"
 \dSf sys."broadcast"
@@ -120,6 +154,7 @@
 \dSf sys."covar_pop"
 \dSf sys."covar_samp"
 \dSf sys."createorderindex"
+\dSf sys."current_size_dump_statements"
 \dSf sys."date_to_str"
 \dSf sys."date_trunc"
 \dSf sys."db_users"
@@ -130,16 +165,24 @@
 \dSf sys."describe_function"
 \dSf sys."describe_table"
 \dSf sys."describe_type"
+\dSf sys."dq"
 \dSf sys."droporderindex"
+\dSf sys."dump_database"
+\dSf sys."dump_table_data"
 \dSf sys."env"
 \dSf sys."epoch"
+\dSf sys."esc"
+\dSf sys."eval"
 \dSf sys."evalalgebra"
 \dSf sys."fitsattach"
 \dSf sys."fitsload"
 \dSf sys."flush_log"
+\dSf sys."fqn"
 \dSf sys."fuse"
 \dSf sys."generate_series"
 \dSf sys."geometrytype"
+\dSf sys."get_merge_table_partition_expressions"
+\dSf sys."get_remote_table_expressions"
 \dSf sys."get_type"
 \dSf sys."getanchor"
 \dSf sys."getbasename"
@@ -189,6 +232,7 @@
 \dSf sys."optimizers"
 \dSf sys."password_hash"
 \dSf sys."pause"
+\dSf sys."prepare_esc"
 \dSf sys."prepared_statements"
 \dSf sys."prepared_statements_args"
 \dSf sys."quantile"
@@ -203,12 +247,14 @@
 \dSf sys."queue"
 \dSf sys."rejects"
 \dSf sys."remote_table_credentials"
+\dSf sys."replace_first"
 \dSf sys."resume"
 \dSf sys."resume_log_flushing"
 \dSf sys."reuse"
 \dSf sys."reverse"
 \dSf sys."right_shift"
 \dSf sys."right_shift_assign"
+\dSf sys."schema_guard"
 \dSf sys."sessions"
 \dSf sys."setmasklen"
 \dSf sys."setmemorylimit"
@@ -223,6 +269,7 @@
 \dSf sys."shpload"
 \dSf sys."shrink"
 \dSf sys."shutdown"
+\dSf sys."sq"
 \dSf sys."st_area"
 \dSf sys."st_asbinary"
 \dSf sys."st_asewkt"
@@ -351,6 +398,7 @@ SYSTEM TABLE  sys.comments
 SYSTEM TABLE  sys.db_user_info
 SYSTEM TABLE  sys.dependencies
 SYSTEM TABLE  sys.dependency_types
+SYSTEM TABLE  sys.dump_statements
 SYSTEM TABLE  sys.function_languages
 SYSTEM TABLE  sys.function_types
 SYSTEM TABLE  sys.functions
@@ -406,7 +454,38 @@ SYSTEM VIEW  sys.dependency_tables_on_vi
 SYSTEM VIEW  sys.dependency_views_on_functions
 SYSTEM VIEW  sys.dependency_views_on_procedures
 SYSTEM VIEW  sys.dependency_views_on_views
+SYSTEM VIEW  sys.describe_column_defaults
+SYSTEM VIEW  sys.describe_comments
+SYSTEM VIEW  sys.describe_constraints
+SYSTEM VIEW  sys.describe_foreign_keys
+SYSTEM VIEW  sys.describe_functions
+SYSTEM VIEW  sys.describe_indices
+SYSTEM VIEW  sys.describe_partition_tables
+SYSTEM VIEW  sys.describe_privileges
+SYSTEM VIEW  sys.describe_sequences
+SYSTEM VIEW  sys.describe_tables
+SYSTEM VIEW  sys.describe_triggers
+SYSTEM VIEW  sys.describe_user_defined_types
+SYSTEM VIEW  sys.dump_add_schemas_to_users
+SYSTEM VIEW  sys.dump_column_defaults
+SYSTEM VIEW  sys.dump_comments
+SYSTEM VIEW  sys.dump_create_roles
+SYSTEM VIEW  sys.dump_create_schemas
+SYSTEM VIEW  sys.dump_create_users
+SYSTEM VIEW  sys.dump_foreign_keys
+SYSTEM VIEW  sys.dump_functions
+SYSTEM VIEW  sys.dump_grant_user_priviledges
+SYSTEM VIEW  sys.dump_indices
+SYSTEM VIEW  sys.dump_partition_tables
+SYSTEM VIEW  

MonetDB: monetdbe-proxy - Clean up identifiers,

2021-01-07 Thread Aris Koning
Changeset: e81ff11a7df8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e81ff11a7df8
Modified Files:
sql/scripts/52_describe.sql
sql/scripts/76_dump.sql
Branch: monetdbe-proxy
Log Message:

Clean up identifiers,


diffs (truncated from 394 to 300 lines):

diff --git a/sql/scripts/52_describe.sql b/sql/scripts/52_describe.sql
--- a/sql/scripts/52_describe.sql
+++ b/sql/scripts/52_describe.sql
@@ -145,26 +145,25 @@ BEGIN
 END;
 END;
 
-CREATE FUNCTION SQ (s STRING) RETURNS STRING BEGIN RETURN ' ''' || s || ''' '; 
END;
-CREATE FUNCTION DQ (s STRING) RETURNS STRING BEGIN RETURN '"' || s || '"'; 
END; --TODO: Figure out why this breaks with the space
-CREATE FUNCTION FQN(s STRING, t STRING) RETURNS STRING BEGIN RETURN DQ(s) || 
'.' || DQ(t); END;
-CREATE FUNCTION ALTER_TABLE(s STRING, t STRING) RETURNS STRING BEGIN RETURN 
'ALTER TABLE ' || FQN(s, t) || ' '; END;
+CREATE FUNCTION sys.SQ (s STRING) RETURNS STRING BEGIN RETURN ' ''' || s || 
''' '; END;
+CREATE FUNCTION sys.DQ (s STRING) RETURNS STRING BEGIN RETURN '"' || s || '"'; 
END; --TODO: Figure out why this breaks with the space
+CREATE FUNCTION sys.FQN(s STRING, t STRING) RETURNS STRING BEGIN RETURN DQ(s) 
|| '.' || DQ(t); END;
+CREATE FUNCTION sys.ALTER_TABLE(s STRING, t STRING) RETURNS STRING BEGIN 
RETURN 'ALTER TABLE ' || FQN(s, t) || ' '; END;
 
 --We need pcre to implement a header guard which means adding the schema of an 
object explicitely to its identifier.
-CREATE FUNCTION replace_first(ori STRING, pat STRING, rep STRING, flg STRING) 
RETURNS STRING EXTERNAL NAME "pcre"."replace_first";
-CREATE FUNCTION schema_guard(sch STRING, nme STRING, stmt STRING) RETURNS 
STRING BEGIN
+CREATE FUNCTION sys.replace_first(ori STRING, pat STRING, rep STRING, flg 
STRING) RETURNS STRING EXTERNAL NAME "pcre"."replace_first";
+CREATE FUNCTION sys.schema_guard(sch STRING, nme STRING, stmt STRING) RETURNS 
STRING BEGIN
 RETURN
SELECT replace_first(stmt, '(\\s*"?' || sch ||  '"?\\s*\\.|)\\s*"?' || 
nme || '"?\\s*', ' ' || FQN(sch, nme) || ' ', 'imsx');
 END;
 
-CREATE VIEW describe_constraints AS
+CREATE VIEW sys.describe_constraints AS
SELECT
-   s.name s,
-   t.name "table",
-   kc.nr nr,
+   s.name sch,
+   t.name tbl,
kc.name col,
k.name con,
-   CASE WHEN k.type = 0 THEN 'PRIMARY KEY' WHEN k.type = 1 THEN 
'UNIQUE' END "type"
+   CASE WHEN k.type = 0 THEN 'PRIMARY KEY' WHEN k.type = 1 THEN 
'UNIQUE' END tpe
FROM sys.schemas s, sys._tables t, sys.objects kc, sys.keys k
WHERE kc.id = k.id
AND k.table_id = t.id
@@ -173,15 +172,14 @@ CREATE VIEW describe_constraints AS
AND k.type in (0, 1)
AND t.type IN (0, 6);
 
-CREATE VIEW describe_indices AS
+CREATE VIEW sys.describe_indices AS
WITH it (id, idx) AS (VALUES (0, 'INDEX'), (4, 'IMPRINTS INDEX'), (5, 
'ORDERED INDEX')) --UNIQUE INDEX wraps to INDEX.
SELECT
-   i.name i,
-   kc.nr o, --TODO: Does this determine the concatenation order?
-   s.name s,
-   t.name t,
-   c.name c,
-   it.idx it
+   i.name ind,
+   s.name sch,
+   t.name tbl,
+   c.name col,
+   it.idx tpe
FROM
sys.idxs AS i LEFT JOIN sys.keys AS k ON i.name = k.name,
sys.objects AS kc,
@@ -199,7 +197,7 @@ CREATE VIEW describe_indices AS
AND i.type = it.id
ORDER BY i.name, kc.nr;
 
-CREATE VIEW describe_column_defaults AS
+CREATE VIEW sys.describe_column_defaults AS
SELECT
s.name sch,
t.name tbl,
@@ -213,7 +211,7 @@ CREATE VIEW describe_column_defaults AS
NOT t.system AND
c."default" IS NOT NULL;
 
-CREATE VIEW describe_foreign_keys AS
+CREATE VIEW sys.describe_foreign_keys AS
WITH action_type (id, act) AS (VALUES
(0, 'NO ACTION'),
(1, 'CASCADE'),
@@ -254,7 +252,7 @@ CREATE VIEW describe_foreign_keys AS
ORDER BY fkk.name, fkkc.nr;
 
 --TODO: CRASHES when this function gets inlined into describe_tables
-CREATE FUNCTION get_merge_table_partition_expressions(tid INT) RETURNS STRING
+CREATE FUNCTION sys.get_merge_table_partition_expressions(tid INT) RETURNS 
STRING
 BEGIN
RETURN
SELECT
@@ -277,11 +275,11 @@ BEGIN
 END;
 
 --TODO: gives mergejoin errors when inlined
-CREATE FUNCTION get_remote_table_expressions(s STRING, t STRING) RETURNS 
STRING BEGIN
+CREATE FUNCTION sys.get_remote_table_expressions(s STRING, t STRING) RETURNS 
STRING BEGIN
RETURN SELECT ' ON ' || SQ(uri) || ' WITH USER ' || SQ(username) || ' 
ENCRYPTED PASSWORD ' || SQ("hash") FROM sys.remote_table_credentials(s ||'.' || 
t);
 END;
 
-CREATE VIEW describe_tables 

MonetDB: monetdbe-proxy - Use views instead functions where poss...

2021-01-07 Thread Aris Koning
Changeset: 5ef0326d8cdf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5ef0326d8cdf
Modified Files:
dump_output.sql
sql/scripts/76_dump.sql
Branch: monetdbe-proxy
Log Message:

Use views instead functions where possible.


diffs (267 lines):

diff --git a/dump_output.sql b/dump_output.sql
--- a/dump_output.sql
+++ b/dump_output.sql
@@ -86,12 +86,12 @@ COMMENT ON INDEX "sys"."ind3" IS  'This 
 COMMENT ON SEQUENCE "sys"."seq1" IS  'This is a comment on a sequence.' ;
 COMMENT ON WINDOW "sys"."stddev" IS  'This is a comment on a window function.' 
;
 TRUNCATE sys.privileges;
-INSERT INTO sys.privileges VALUES ((SELECT t.id FROM sys.schemas s, tables t 
WHERE s.id = t.schema_id AND s.name || '.' || t.name = 'sys.foo' ),(SELECT id 
FROM auths a WHERE a.name =  'voc' ),(SELECT pc.privilege_code_id FROM 
privilege_codes pc WHERE pc.privilege_code_name =  'SELECT' ),(SELECT id FROM 
auths g WHERE g.name =  'monetdb' ),false);
-INSERT INTO sys.privileges VALUES ((SELECT c.id FROM sys.schemas s, tables t, 
columns c WHERE s.id = t.schema_id AND t.id = c.table_id AND s.name || '.' || 
t.name || '.' || c.name = 'sys.foo.i' ),(SELECT id FROM auths a WHERE a.name =  
'voc' ),(SELECT pc.privilege_code_id FROM privilege_codes pc WHERE 
pc.privilege_code_name =  'UPDATE' ),(SELECT id FROM auths g WHERE g.name =  
'monetdb' ),false);
-INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1(INTEGER)'  AND fqn.tpe = 
 'FUNCTION' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),false);
-INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1(INTEGER)'  AND fqn.tpe = 
 'PROCEDURE' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),false);
-INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1()'  AND fqn.tpe =  
'PROCEDURE' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),true);
-INSERT INTO sys.privileges VALUES (0,(SELECT id FROM auths a WHERE a.name =  
'voc' ),(SELECT pc.privilege_code_id FROM privilege_codes pc WHERE 
pc.privilege_code_name =  'UPDATE' ),(SELECT id FROM auths g WHERE g.name =  
'monetdb' ),false);
+INSERT INTO sys.privileges VALUES ((SELECT t.id FROM sys.schemas s, tables t 
WHERE s.id = t.schema_id AND s.name || '.' || t.name = 'sys.foo' ),(SELECT id 
FROM auths a WHERE a.name =  'voc' ),(SELECT pc.privilege_code_id FROM 
privilege_codes pc WHERE pc.privilege_code_name =  'SELECT' ),(SELECT id FROM 
auths g WHERE g.name =  'monetdb' ),0);
+INSERT INTO sys.privileges VALUES ((SELECT c.id FROM sys.schemas s, tables t, 
columns c WHERE s.id = t.schema_id AND t.id = c.table_id AND s.name || '.' || 
t.name || '.' || c.name = 'sys.foo.i' ),(SELECT id FROM auths a WHERE a.name =  
'voc' ),(SELECT pc.privilege_code_id FROM privilege_codes pc WHERE 
pc.privilege_code_name =  'UPDATE' ),(SELECT id FROM auths g WHERE g.name =  
'monetdb' ),0);
+INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1(INTEGER)'  AND fqn.tpe = 
 'FUNCTION' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),0);
+INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1(INTEGER)'  AND fqn.tpe = 
 'PROCEDURE' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),0);
+INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1()'  AND fqn.tpe =  
'PROCEDURE' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),1);
+INSERT INTO sys.privileges VALUES (0,(SELECT id FROM auths a WHERE a.name =  
'voc' ),(SELECT pc.privilege_code_id FROM privilege_codes pc WHERE 
pc.privilege_code_name =  'UPDATE' ),(SELECT id FROM auths g WHERE g.name =  
'monetdb' ),0);
 COPY 3 RECORDS INTO "sys"."tbl_with_data"("c1", "c2", "c3", "c4", "c5", "c6", 
"c7", "c8", "c9", "c10", "c11", "c12", "c13", "c14", "c18", "c19", "c20", 
"c21", "c22", "c23", "c24", "c25", "c26", "c27", "c28", "c29", "c30", "c31", 
"c32", "c33") FROM 

MonetDB: monetdbe-proxy - Use views instead functions where poss...

2021-01-07 Thread Aris Koning
Changeset: 8741ca0f4c8f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8741ca0f4c8f
Modified Files:
sql/scripts/76_dump.sql
Branch: monetdbe-proxy
Log Message:

Use views instead functions where possible.


diffs (90 lines):

diff --git a/sql/scripts/76_dump.sql b/sql/scripts/76_dump.sql
--- a/sql/scripts/76_dump.sql
+++ b/sql/scripts/76_dump.sql
@@ -1,40 +1,31 @@
-CREATE FUNCTION dump_table_constraint_type() RETURNS TABLE(stmt STRING) BEGIN
-   RETURN
-   SELECT
-   'ALTER TABLE ' || DQ(s) || '.' || DQ("table") ||
-   ' ADD CONSTRAINT ' || DQ(con) || ' '||
-   type || ' (' || GROUP_CONCAT(DQ(col), ', ') || ');'
-   FROM describe_constraints GROUP BY s, "table", con, type;
-END;
+CREATE VIEW dump_table_constraint_type AS
+   SELECT
+   'ALTER TABLE ' || DQ(s) || '.' || DQ("table") ||
+   ' ADD CONSTRAINT ' || DQ(con) || ' '||
+   type || ' (' || GROUP_CONCAT(DQ(col), ', ') || ');' stmt
+   FROM describe_constraints GROUP BY s, "table", con, type;
 
-CREATE FUNCTION dump_indices() RETURNS TABLE(stmt STRING) BEGIN
-   RETURN
-   SELECT
-   'CREATE ' || it || ' ' ||
-   DQ(i) || ' ON ' || DQ(s) || '.' || DQ(t) ||
-   '(' || GROUP_CONCAT(c) || ');'
-   FROM describe_indices GROUP BY i, it, s, t;
-END;
+CREATE VIEW dump_indices AS
+   SELECT
+   'CREATE ' || it || ' ' ||
+   DQ(i) || ' ON ' || DQ(s) || '.' || DQ(t) ||
+   '(' || GROUP_CONCAT(c) || ');' stmt
+   FROM describe_indices GROUP BY i, it, s, t;
 
-CREATE FUNCTION dump_column_defaults() RETURNS TABLE(stmt STRING) BEGIN
-   RETURN
-   SELECT 'ALTER TABLE ' || FQN(sch, tbl) || ' ALTER COLUMN ' || 
DQ(col) || ' SET DEFAULT ' || def || ';'
-   FROM describe_column_defaults;
-END;
+CREATE VIEW dump_column_defaults AS
+   SELECT 'ALTER TABLE ' || FQN(sch, tbl) || ' ALTER COLUMN ' || DQ(col) 
|| ' SET DEFAULT ' || def || ';' stmt
+   FROM describe_column_defaults;
 
-CREATE FUNCTION dump_foreign_keys() RETURNS TABLE(stmt STRING) BEGIN
-RETURN
+CREATE FUNCTION dump_foreign_keys AS
SELECT
'ALTER TABLE ' || DQ(fk_s) || '.'|| DQ(fk_t) || ' ADD 
CONSTRAINT ' || DQ(fk) || ' ' ||
'FOREIGN KEY(' || GROUP_CONCAT(DQ(fk_c), ',') ||') ' ||
'REFERENCES ' || DQ(pk_s) || '.' || DQ(pk_t) || '(' || 
GROUP_CONCAT(DQ(pk_c), ',') || ') ' ||
'ON DELETE ' || on_delete || ' ON UPDATE ' || on_update ||
-   ';'
+   ';' stmt
FROM describe_foreign_keys GROUP BY fk_s, fk_t, pk_s, pk_t, fk, 
on_delete, on_update;
-END;
 
-CREATE FUNCTION dump_partition_tables() RETURNS TABLE(stmt STRING) BEGIN
-RETURN
+CREATE FUNCTION dump_partition_tables AS
SELECT
ALTER_TABLE(m_sname, m_tname) || ' ADD TABLE ' || FQN(p_sname, 
p_tname) ||
CASE 
@@ -44,9 +35,8 @@ RETURN
ELSE '' --'READ ONLY'
END ||
CASE WHEN p_type in ('VALUES', 'RANGE') AND with_nulls THEN ' 
WITH NULL VALUES' ELSE '' END ||
-   ';' 
+   ';' stmt
FROM describe_partition_tables;
-END;
 
 CREATE FUNCTION dump_sequences() RETURNS TABLE(stmt STRING) BEGIN
 RETURN
@@ -277,11 +267,11 @@ BEGIN
SELECT * FROM sys.dump_tables() t
) AS stmts(o, s);
 
-   INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_column_defaults();
-   INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_table_constraint_type();
-   INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_indices();
-   INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_foreign_keys();
-   INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_partition_tables();
+   INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_column_defaults;
+   INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_table_constraint_type;
+   INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_indices;
+   INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_foreign_keys;
+   INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_partition_tables;
INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_triggers();
INSERT INTO 

MonetDB: monetdbe-proxy - Use views instead functions where poss...

2021-01-07 Thread Aris Koning
Changeset: 01c6dab96e78 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=01c6dab96e78
Modified Files:
dump_output.sql
sql/scripts/52_describe.sql
sql/scripts/76_dump.sql
Branch: monetdbe-proxy
Log Message:

Use views instead functions where possible.


diffs (truncated from 604 to 300 lines):

diff --git a/dump_output.sql b/dump_output.sql
--- a/dump_output.sql
+++ b/dump_output.sql
@@ -88,9 +88,9 @@ COMMENT ON WINDOW "sys"."stddev" IS  'Th
 TRUNCATE sys.privileges;
 INSERT INTO sys.privileges VALUES ((SELECT t.id FROM sys.schemas s, tables t 
WHERE s.id = t.schema_id AND s.name || '.' || t.name = 'sys.foo' ),(SELECT id 
FROM auths a WHERE a.name =  'voc' ),(SELECT pc.privilege_code_id FROM 
privilege_codes pc WHERE pc.privilege_code_name =  'SELECT' ),(SELECT id FROM 
auths g WHERE g.name =  'monetdb' ),false);
 INSERT INTO sys.privileges VALUES ((SELECT c.id FROM sys.schemas s, tables t, 
columns c WHERE s.id = t.schema_id AND t.id = c.table_id AND s.name || '.' || 
t.name || '.' || c.name = 'sys.foo.i' ),(SELECT id FROM auths a WHERE a.name =  
'voc' ),(SELECT pc.privilege_code_id FROM privilege_codes pc WHERE 
pc.privilege_code_name =  'UPDATE' ),(SELECT id FROM auths g WHERE g.name =  
'monetdb' ),false);
-INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions() fqn WHERE fqn.nme =  'sys.f1(INTEGER)'  AND fqn.tpe 
=  'FUNCTION' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),false);
-INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions() fqn WHERE fqn.nme =  'sys.f1(INTEGER)'  AND fqn.tpe 
=  'PROCEDURE' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),false);
-INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions() fqn WHERE fqn.nme =  'sys.f1()'  AND fqn.tpe =  
'PROCEDURE' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),true);
+INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1(INTEGER)'  AND fqn.tpe = 
 'FUNCTION' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),false);
+INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1(INTEGER)'  AND fqn.tpe = 
 'PROCEDURE' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),false);
+INSERT INTO sys.privileges VALUES ((SELECT fqn.id FROM 
fully_qualified_functions fqn WHERE fqn.nme =  'sys.f1()'  AND fqn.tpe =  
'PROCEDURE' ),(SELECT id FROM auths a WHERE a.name =  'voc' ),(SELECT 
pc.privilege_code_id FROM privilege_codes pc WHERE pc.privilege_code_name =  
'EXECUTE' ),(SELECT id FROM auths g WHERE g.name =  'monetdb' ),true);
 INSERT INTO sys.privileges VALUES (0,(SELECT id FROM auths a WHERE a.name =  
'voc' ),(SELECT pc.privilege_code_id FROM privilege_codes pc WHERE 
pc.privilege_code_name =  'UPDATE' ),(SELECT id FROM auths g WHERE g.name =  
'monetdb' ),false);
 COPY 3 RECORDS INTO "sys"."tbl_with_data"("c1", "c2", "c3", "c4", "c5", "c6", 
"c7", "c8", "c9", "c10", "c11", "c12", "c13", "c14", "c18", "c19", "c20", 
"c21", "c22", "c23", "c24", "c25", "c26", "c27", "c28", "c29", "c30", "c31", 
"c32", "c33") FROM STDIN USING DELIMITERS '|','\n','"';
 1234|5678|90|true|"Hello\n \\|\" 
World"|2020-12-20|10.000|1023.345|12345|123.45|1123.455|1122133.5|121233.45|"POINT
 (5.1 
34.5)"|2000|4000|8000|65333.414|8000.000|4000.000|2000.000|1000.000|14:18:18|2015-05-22
 14:18:17.780331|2015-05-22 00:00:00.00|2015-05-22 
13:18:17.780331+01:00|"{\"price\":9}"|10.1.0.0/16|"https://m...@www.monetdb.org:458/Doc/Abc.html?lang=nl=asc#example;|65950c76-a2f6-4543-660a-b849cf5f2453
diff --git a/sql/scripts/52_describe.sql b/sql/scripts/52_describe.sql
--- a/sql/scripts/52_describe.sql
+++ b/sql/scripts/52_describe.sql
@@ -157,28 +157,31 @@ RETURN
SELECT replace_first(stmt, '(\\s*"?' || sch ||  '"?\\s*\\.|)\\s*"?' || 
nme || '"?\\s*', ' ' || FQN(sch, nme) || ' ', 'imsx');
 END;
 
-CREATE FUNCTION describe_constraints() RETURNS TABLE(s STRING, "table" STRING, 
nr INT, col STRING, con STRING, type STRING) BEGIN
-   RETURN
-   SELECT s.name, t.name, kc.nr, kc.name, k.name, CASE WHEN k.type 
= 0 THEN 'PRIMARY KEY' WHEN k.type = 1 THEN 'UNIQUE' END
-   FROM 

MonetDB: monetdbe-proxy - Fix _dump_table_data.

2021-01-07 Thread Aris Koning
Changeset: 0c52a0564033 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0c52a0564033
Modified Files:
sql/scripts/76_dump.sql
Branch: monetdbe-proxy
Log Message:

Fix _dump_table_data.


diffs (56 lines):

diff --git a/sql/scripts/76_dump.sql b/sql/scripts/76_dump.sql
--- a/sql/scripts/76_dump.sql
+++ b/sql/scripts/76_dump.sql
@@ -132,16 +132,14 @@ CREATE PROCEDURE EVAL(stmt STRING) EXTER
 
 CREATE FUNCTION esc(s STRING) RETURNS STRING BEGIN RETURN '"' || 
sys.replace(sys.replace(sys.replace(s,'\\', ''), '\n', '\\n'), '"', '\\"') 
|| '"'; END;
 
-CREATE FUNCTION esc_null(s STRING) RETURNS STRING BEGIN RETURN CASE WHEN s IS 
NULL THEN 'null' ELSE s END; END;
-
 CREATE FUNCTION prepare_esc(s STRING, t STRING) RETURNS STRING
 BEGIN
 RETURN
 CASE
 WHEN (t = 'varchar' OR t ='char' OR t = 'clob' OR t = 'json' OR t 
= 'geometry' OR t = 'url') THEN
-'esc_null(esc(' || DQ(s) || '))'
+'CASE WHEN ' || DQ(s) || ' IS NULL THEN ''null'' ELSE ' || 
'esc(' || DQ(s) || ')' || ' END'
 ELSE
-'esc_null(' || DQ(s) || ')'
+'CASE WHEN ' || DQ(s) || ' IS NULL THEN ''null'' ELSE CAST(' 
|| DQ(s) || ' AS STRING) END'
 END;
 END;
 
@@ -178,23 +176,14 @@ CREATE PROCEDURE _dump_table_data(sch ST
DECLARE M INT;
SET M = (SELECT MAX(c.id) FROM columns c, tables t 
WHERE c.table_id = t.id AND t.name = tbl);
 
-   IF (k < M) THEN
+   WHILE (k < M) DO
SET k = (SELECT MIN(c.id) FROM columns c, 
tables t WHERE c.table_id = t.id AND t.name = tbl AND c.id > k);
-   END IF;
-
-   WHILE (k < M) DO
SET cname = (SELECT c.name FROM sys.columns c 
WHERE c.id = k);
SET ctype = (SELECT c.type FROM sys.columns c 
WHERE c.id = k);
SET COPY_INTO_STMT = (COPY_INTO_STMT || ', ' || 
DQ(cname));
SET SELECT_DATA_STMT = SELECT_DATA_STMT || '|| 
''|'' || ' || prepare_esc(cname, ctype);
-   SET k = (SELECT MIN(c.id ) FROM columns c, 
tables t WHERE c.table_id = t.id AND t.name = tbl AND c.id > k);
END WHILE;
 
-   SET cname = (SELECT c.name FROM sys.columns c WHERE 
c.id = k);
-   SET ctype = (SELECT c.type FROM sys.columns c WHERE 
c.id = k);
-   SET COPY_INTO_STMT = (COPY_INTO_STMT || ', ' || 
DQ(cname));
-   SET SELECT_DATA_STMT = SELECT_DATA_STMT || '|| ''|'' || 
' || prepare_esc(cname, ctype);
-
SET COPY_INTO_STMT = (COPY_INTO_STMT || ') FROM STDIN 
USING DELIMITERS ''|'',''\\n'',''"'';');
SET SELECT_DATA_STMT =  SELECT_DATA_STMT || ' FROM ' || 
FQN(sch, tbl);
 
@@ -303,7 +292,7 @@ BEGIN
IF NOT DESCRIBE THEN
CALL dump_table_data();
END IF;
-
+   --TODO clean up code: factor in more dump functions
--TODO loaders ,procedures, window and filter sys.functions.
--TODO look into order dependent group_concat
--TODO ADD upgrade code
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


monetdb-java: default - Improve code when setting query timeout....

2021-01-07 Thread Martin van Dinther
Changeset: 5540793628d6 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=5540793628d6
Modified Files:
src/main/java/org/monetdb/jdbc/MonetConnection.java
src/main/java/org/monetdb/jdbc/MonetStatement.java
Branch: default
Log Message:

Improve code when setting query timeout. It used to call the 
sys.settimeout(bigint) which is deprecated as of release Jun2020 (11.37.7) and 
replaced by new sys.setquerytimeout(int).
As the server call was done from two places MonetConnection.isValid() and 
MonetStatement.internalExecute(), I created a single utlity method which is now 
called instead.


diffs (254 lines):

diff --git a/src/main/java/org/monetdb/jdbc/MonetConnection.java 
b/src/main/java/org/monetdb/jdbc/MonetConnection.java
--- a/src/main/java/org/monetdb/jdbc/MonetConnection.java
+++ b/src/main/java/org/monetdb/jdbc/MonetConnection.java
@@ -142,7 +142,7 @@ public class MonetConnection
private boolean treatClobAsVarChar = true;
 
/** The last set query timeout on the server as used by Statement, 
PreparedStatement and CallableStatement */
-   protected int lastSetQueryTimeout = 0;  // 0 means no timeout, which is 
the default on the server
+   protected int lastSetQueryTimeout;  // 0 means no timeout, which is 
the default on the server
 
 
/**
@@ -1311,7 +1311,7 @@ public class MonetConnection
}
}
} catch (SQLException se) {
-   String msg = se.getMessage();
+   final String msg = se.getMessage();
// System.out.println(se.getSQLState() + " 
Con.isValid(): " + msg);
if (msg != null && msg.equalsIgnoreCase("Current 
transaction is aborted (please ROLLBACK)")) {
// Must use equalsIgnoreCase() here because up 
to Jul2017 release 'Current' was 'current' so with lowercase c.
@@ -1321,22 +1321,18 @@ public class MonetConnection
}
/* ignore stmt errors/exceptions, we are only testing 
if the connection is still alive and usable */
} finally {
+   closeResultsetStatement(rs, stmt);
/* when changed, reset the original server timeout 
value on the server */
if (timeout > 0 && original_timeout != 
this.lastSetQueryTimeout) {
this.lastSetQueryTimeout = original_timeout;
-   Statement stmt2 = null;
try {
/* we have to set in the server 
explicitly, because the test 'queryTimeout != connection.lastSetQueryTimeout' 
   on 
MonetStatement.internalExecute(sql) won't pass and the server won't be set back 
*/
-   stmt2 = this.createStatement();
-   stmt2.execute("CALL 
\"sys\".\"settimeout\"(" + this.lastSetQueryTimeout + ")");
+   setQueryTimeout(original_timeout);
} catch (SQLException se) {
/* ignore stmt errors/exceptions, we 
are only testing if the connection is still alive and usable */
-   } finally {
-   closeResultsetStatement(null, stmt2);
}
}
-   closeResultsetStatement(rs, stmt);
}
return isValid;
}
@@ -1636,6 +1632,43 @@ public class MonetConnection
//== internal helper methods which do not belong to the JDBC interface
 
/**
+* Local helper method to test whether the Connection object is closed
+* When closed it throws an SQLException
+*/
+   private void checkNotClosed() throws SQLException {
+   if (closed)
+   throw new SQLException("Connection is closed", "M1M20");
+   }
+
+   /**
+* Utility method to call sys.setquerytimeout(int); procedure on the 
connected server.
+* It is called from: MonetConnection.isValid() and 
MonetStatement.internalExecute()
+*/
+   void setQueryTimeout(final int millis) throws SQLException {
+   if (millis < 0)
+   throw new SQLException("query timeout milliseconds is 
less than zero", "M1M05");
+
+   checkNotClosed();
+   Statement st = null;
+   try {
+   // as of release Jun2020 (11.37.7) the function 
sys.settimeout(bigint) is deprecated and replaced by new 
sys.setquerytimeout(int)
+   final boolean postJun2020 = (getDatabaseMajorVersion() 
>=11) && (getDatabaseMinorVersion() >= 37);
+   final String callstmt = 

monetdb-java: default - Optimise code, reduce duplicate code, ca...

2021-01-07 Thread Martin van Dinther
Changeset: 40a1db14dca5 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=40a1db14dca5
Modified Files:
src/main/java/org/monetdb/jdbc/MonetConnection.java
Branch: default
Log Message:

Optimise code, reduce duplicate code, cache major and minor version nrs of 
connected database server and max nr of clients so conversion of strings to 
ints is only done once.


diffs (186 lines):

diff --git a/src/main/java/org/monetdb/jdbc/MonetConnection.java 
b/src/main/java/org/monetdb/jdbc/MonetConnection.java
--- a/src/main/java/org/monetdb/jdbc/MonetConnection.java
+++ b/src/main/java/org/monetdb/jdbc/MonetConnection.java
@@ -76,7 +76,7 @@ public class MonetConnection
/** The hostname to connect to */
private final String hostname;
/** The port to connect on the host to */
-   private int port = 0;
+   private int port;
/** The database to use (currently not used) */
private final String database;
/** The username to use when authenticating */
@@ -101,7 +101,7 @@ public class MonetConnection
private boolean autoCommit = true;
 
/** The stack of warnings for this Connection object */
-   private SQLWarning warnings = null;
+   private SQLWarning warnings;
 
/** The Connection specific mapping of user defined types to Java types 
*/
private Map> typeMap = new HashMap>() {
@@ -1014,7 +1014,7 @@ public class MonetConnection
public void setAutoCommit(final boolean autoCommit) throws SQLException 
{
checkNotClosed();
if (this.autoCommit != autoCommit) {
-   sendControlCommand("auto_commit " + (autoCommit ? "1" : 
"0"));
+   sendControlCommand(autoCommit ? "auto_commit 1" : 
"auto_commit 0");
this.autoCommit = autoCommit;
}
}
@@ -1074,14 +1074,7 @@ public class MonetConnection
 */
@Override
public Savepoint setSavepoint() throws SQLException {
-   checkNotClosed();
-   // create a new Savepoint object
-   final MonetSavepoint sp = new MonetSavepoint();
-
-   // note: can't use sendIndependentCommand here because we need
-   // to process the auto_commit state the server gives
-   sendTransactionCommand("SAVEPOINT " + sp.getName());
-   return sp;
+   return setSavepoint(null);
}
 
/**
@@ -1099,7 +1092,7 @@ public class MonetConnection
// create a new Savepoint object
final MonetSavepoint sp;
try {
-   sp = new MonetSavepoint(name);
+   sp = (name != null) ? new MonetSavepoint(name) : new 
MonetSavepoint();
} catch (IllegalArgumentException e) {
throw new SQLException(e.getMessage(), "M0M03");
}
@@ -1702,10 +1695,12 @@ public class MonetConnection
}
 
 
-   // Internal cache for 3 static mserver environment values, so they 
aren't queried from mserver again and again
-   private String env_current_user = null;
-   private String env_monet_version = null;
-   private String env_max_clients = null;
+   // Internal caches for 3 static mserver environment values, so they 
aren't queried from mserver again and again
+   private String env_current_user;
+   private String env_monet_version;
+   private int maxConnections;
+   private int databaseMajorVersion;
+   private int databaseMinorVersion;
 
/**
 * Utility method to fetch 3 mserver environment values combined in one 
query for efficiency.
@@ -1732,8 +1727,14 @@ public class MonetConnection
if 
("monet_version".equals(prop)) {
env_monet_version = 
value;
} else
-   if ("max_clients".equals(prop)) 
{
-   env_max_clients = value;
+   if ("max_clients".equals(prop) 
&& value != null) {
+   try {
+   maxConnections 
= Integer.parseInt(value);
+   } catch 
(NumberFormatException nfe) {
+   /* ignore */
+   }
+   if (maxConnections <= 0)
+   maxConnections 
= 1;
}
}
}
@@ -1742,7 +1743,7 @@ public 

MonetDB: unlock - Merge with default branch.

2021-01-07 Thread Sjoerd Mullender
Changeset: 043549fbedc4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=043549fbedc4
Modified Files:
clients/Tests/exports.stable.out
gdk/CMakeLists.txt
gdk/gdk.h
gdk/gdk_aggr.c
gdk/gdk_align.c
gdk/gdk_atoms.c
gdk/gdk_atoms.h
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_bbp.c
gdk/gdk_bbp.h
gdk/gdk_calc.c
gdk/gdk_calc_compare.h
gdk/gdk_cand.c
gdk/gdk_cand.h
gdk/gdk_delta.c
gdk/gdk_delta.h
gdk/gdk_firstn.c
gdk/gdk_group.c
gdk/gdk_hash.c
gdk/gdk_heap.c
gdk/gdk_imprints.c
gdk/gdk_interprocess.c
gdk/gdk_join.c
gdk/gdk_logger.c
gdk/gdk_logger.h
gdk/gdk_logger_internals.h
gdk/gdk_logger_old.c
gdk/gdk_orderidx.c
gdk/gdk_private.h
gdk/gdk_project.c
gdk/gdk_sample.c
gdk/gdk_select.c
gdk/gdk_storage.c
gdk/gdk_string.c
gdk/gdk_system.h
gdk/gdk_tm.c
gdk/gdk_unique.c
gdk/gdk_value.c
geom/monetdb5/geom.c
geom/monetdb5/geom.h
geom/monetdb5/geom_upgrade.c
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
monetdb5/mal/mal.h
monetdb5/mal/mal_atom.c
monetdb5/mal/mal_authorize.c
monetdb5/mal/mal_dataflow.c
monetdb5/mal/mal_debugger.c
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_interpreter.h
monetdb5/mal/mal_parser.c
monetdb5/mal/mal_prelude.c
monetdb5/mal/mal_profiler.c
monetdb5/mal/mal_resolve.c
monetdb5/mal/mal_runtime.c
monetdb5/mal/mal_type.c
monetdb5/mal/mal_type.h
monetdb5/mal/mel.h
monetdb5/modules/atoms/batxml.c
monetdb5/modules/atoms/batxml.mal
monetdb5/modules/atoms/blob.c
monetdb5/modules/atoms/inet.c
monetdb5/modules/atoms/json.c
monetdb5/modules/atoms/json.mal
monetdb5/modules/atoms/str.c
monetdb5/modules/kernel/00_aggr_hge.mal
monetdb5/modules/kernel/aggr.c
monetdb5/modules/kernel/aggr.mal
monetdb5/modules/kernel/algebra.c
monetdb5/modules/kernel/algebra.mal
monetdb5/modules/kernel/bat5.c
monetdb5/modules/kernel/bat5.mal
monetdb5/modules/kernel/batcolor.c
monetdb5/modules/kernel/batmmath.c
monetdb5/modules/kernel/batmmath.mal
monetdb5/modules/kernel/batstr.c
monetdb5/modules/kernel/group.c
monetdb5/modules/kernel/group.mal
monetdb5/modules/kernel/status.c
monetdb5/modules/mal/00_batcalc_hge.mal
monetdb5/modules/mal/00_calc_hge.mal
monetdb5/modules/mal/01_batcalc.mal
monetdb5/modules/mal/01_calc.mal
monetdb5/modules/mal/CMakeLists.txt
monetdb5/modules/mal/batMask.c
monetdb5/modules/mal/batMask.mal
monetdb5/modules/mal/batcalc.c
monetdb5/modules/mal/batmtime.mal
monetdb5/modules/mal/calc.c
monetdb5/modules/mal/manifold.c
monetdb5/modules/mal/mat.c
monetdb5/modules/mal/pcre.c
monetdb5/modules/mal/pcre.mal
monetdb5/modules/mal/projectionpath.c
monetdb5/modules/mal/querylog.c
monetdb5/modules/mal/remote.c
monetdb5/modules/mal/tablet.c
monetdb5/modules/mal/tokenizer.c
monetdb5/modules/mal/transaction.c
monetdb5/modules/mal/txtsim.c
monetdb5/optimizer/CMakeLists.txt
monetdb5/optimizer/opt_emptybind.c
monetdb5/optimizer/opt_mask.c
monetdb5/optimizer/opt_mask.h
monetdb5/optimizer/opt_mergetable.c
monetdb5/optimizer/opt_pipes.c
monetdb5/optimizer/opt_prelude.c
monetdb5/optimizer/opt_prelude.h
monetdb5/optimizer/opt_pushselect.c
monetdb5/optimizer/opt_remap.c
monetdb5/optimizer/opt_support.c
monetdb5/optimizer/opt_volcano.c
monetdb5/optimizer/opt_wlc.c
monetdb5/optimizer/opt_wrapper.c
monetdb5/optimizer/optimizer.c
sql/backends/monet5/CMakeLists.txt
sql/backends/monet5/UDF/capi/capi.c
sql/backends/monet5/UDF/pyapi3/conversion3.c
sql/backends/monet5/UDF/pyapi3/convert_loops.h
sql/backends/monet5/UDF/pyapi3/pyapi3.c
sql/backends/monet5/UDF/udf/udf.c
sql/backends/monet5/generator/generator.c
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql.h
sql/backends/monet5/sql.mal
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_gencode.h
sql/backends/monet5/sql_optimizer.c
sql/backends/monet5/sql_result.c
sql/backends/monet5/sql_result.h
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statement.h

MonetDB: nospare - Merge with default branch.

2021-01-07 Thread Sjoerd Mullender
Changeset: 78651fc263fb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=78651fc263fb
Modified Files:
gdk/gdk_logger.c
gdk/gdk_logger.h
gdk/gdk_logger_internals.h
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql.h
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_optimizer.c
sql/backends/monet5/sql_orderidx.c
sql/backends/monet5/sql_result.c
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statistics.c
sql/backends/monet5/sql_upgrades.c
sql/backends/monet5/sql_user.c
sql/backends/monet5/vaults/fits/fits.c
sql/backends/monet5/vaults/netcdf/netcdf.c
sql/backends/monet5/vaults/shp/shp.c
sql/backends/monet5/wlr.c
sql/common/sql_list.c
sql/common/sql_types.c
sql/include/sql_catalog.h
sql/include/sql_list.h
sql/server/rel_distribute.c
sql/server/rel_optimizer.c
sql/server/rel_partition.c
sql/server/rel_planner.c
sql/server/rel_propagate.c
sql/server/rel_psm.c
sql/server/rel_rel.c
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/rel_sequence.c
sql/server/rel_updates.c
sql/server/sql_mvc.c
sql/server/sql_mvc.h
sql/server/sql_partition.c
sql/server/sql_privileges.c
sql/server/sql_semantic.c
sql/storage/bat/bat_logger.c
sql/storage/bat/bat_logger.h
sql/storage/bat/bat_storage.c
sql/storage/bat/bat_storage.h
sql/storage/bat/bat_table.c
sql/storage/bat/bat_utils.c
sql/storage/sql_catalog.c
sql/storage/sql_storage.h
sql/storage/store.c
sql/storage/store_dependency.c
sql/storage/store_sequence.c
sql/storage/store_sequence.h
tools/monetdbe/monetdbe.c
Branch: nospare
Log Message:

Merge with default branch.


diffs (truncated from 18636 to 300 lines):

diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,7 +3,7 @@
 # License, v. 2.0.  If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 #
-# Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V.
+# Copyright 1997 - July 2008 CWI, August 2008 - 2021 MonetDB B.V.
 #]]
 
 cmake_minimum_required(VERSION 3.12)
diff --git a/Config.cmake.in b/Config.cmake.in
--- a/Config.cmake.in
+++ b/Config.cmake.in
@@ -3,7 +3,7 @@
 # License, v. 2.0.  If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 #
-# Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V.
+# Copyright 1997 - July 2008 CWI, August 2008 - 2021 MonetDB B.V.
 #]]
 
 @PACKAGE_INIT@
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -41,25 +41,15 @@
 %global fedpkgs 1
 %endif
 
-%if %{?rhel:1}%{!?rhel:0} && 0%{?rhel} < 7
-# RedHat Enterprise Linux < 7
-# There is no macro _rundir, and no directory /run, instead use /var/run.
-%global _rundir %{_localstatedir}/run
-%endif
-
 # On Fedora, the geos library is available, and so we can require it
 # and build the geom modules.  On RedHat Enterprise Linux and
 # derivatives (CentOS, Scientific Linux), the geos library is not
 # available.  However, the geos library is available in the Extra
-# Packages for Enterprise Linux (EPEL).  However, On RHEL 6, the geos
-# library is too old for us, so we need an extra check for an
-# up-to-date version of RHEL.
+# Packages for Enterprise Linux (EPEL).
 %if %{fedpkgs}
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 # By default create the MonetDB-geom-MonetDB5 package on Fedora and RHEL 7
 %bcond_without geos
 %endif
-%endif
 
 # By default use PCRE for the implementation of the SQL LIKE and ILIKE
 # operators.  Otherwise the POSIX regex functions are used.
@@ -73,11 +63,8 @@
 %bcond_without rintegration
 %endif
 
-%if 0%{?rhel} >= 7 || 0%{?fedora} > 0
-# On RHEL 6, Python 3 is too old.  On RHEL 7, Python 3 was too old
-# when RHEL 7 was released, but now it is ok.
+# By default, include Python 3 integration.
 %bcond_without py3integration
-%endif
 
 %if %{fedpkgs}
 # By default, create the MonetDB-cfitsio package.
@@ -104,13 +91,10 @@ Source: https://www.monetdb.org/download
 # that doesn't exist and we need systemd, so instead we just require
 # the macro file that contains the definitions.
 # We need checkpolicy and selinux-policy-devel for the SELinux policy.
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
-# RHEL >= 7, and all current Fedora
 BuildRequires: /usr/lib/rpm/macros.d/macros.systemd
 BuildRequires: checkpolicy
 BuildRequires: selinux-policy-devel
 BuildRequires: hardlink
-%endif
 BuildRequires: cmake3 >= 3.12
 BuildRequires: gcc
 BuildRequires: bison
@@ -497,9 

MonetDB: default - Merge with Oct2020 branch.

2021-01-07 Thread Sjoerd Mullender
Changeset: 76905e6a95f6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=76905e6a95f6
Modified Files:
clients/examples/C/sample0.c
clients/examples/C/sample1.c
clients/examples/C/sample4.c
clients/examples/C/smack01.c
clients/examples/python/sqlsample.py
clients/mapiclient/dump.c
clients/mapiclient/mclient.c
clients/mapiclient/mhelp.c
clients/mapiclient/msqldump.h
clients/mapilib/mapi.c
clients/mapilib/mapi.h
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/samples/odbcsample1.c
clients/odbc/samples/testgetinfo.c
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
common/stream/bs2.c
common/stream/socket_stream.c
common/stream/stream.c
common/stream/stream.h
common/stream/stream_internal.h
common/utils/matomic.h
common/utils/mcrypt.c
ctest/monetdb5/mal/test_malEmbeddedBoot.c
ctest/tools/monetdbe/CMakeLists.txt
ctest/tools/monetdbe/example_proxy.c
ctest/tools/monetdbe/example_remote.c
documentation/source/developers_handbook.rst
gdk/gdk.h
gdk/gdk_aggr.c
gdk/gdk_analytic.h
gdk/gdk_analytic_bounds.c
gdk/gdk_analytic_func.c
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_bbp.c
gdk/gdk_bbp.h
gdk/gdk_calc.h
gdk/gdk_group.c
gdk/gdk_hash.c
gdk/gdk_heap.c
gdk/gdk_imprints.c
gdk/gdk_join.c
gdk/gdk_logger.c
gdk/gdk_logger.h
gdk/gdk_orderidx.c
gdk/gdk_posix.c
gdk/gdk_private.h
gdk/gdk_sample.c
gdk/gdk_storage.c
gdk/gdk_string.c
gdk/gdk_subquery.c
gdk/gdk_system.h
gdk/gdk_time.c
gdk/gdk_time.h
gdk/gdk_tm.c
gdk/gdk_tracer.c
gdk/gdk_utils.c
gdk/libbat.rc
monetdb5/extras/rapi/rapi.c
monetdb5/mal/mal.c
monetdb5/mal/mal.h
monetdb5/mal/mal_authorize.c
monetdb5/mal/mal_builder.c
monetdb5/mal/mal_builder.h
monetdb5/mal/mal_dataflow.c
monetdb5/mal/mal_embedded.c
monetdb5/mal/mal_embedded.h
monetdb5/mal/mal_exception.c
monetdb5/mal/mal_exception.h
monetdb5/mal/mal_function.c
monetdb5/mal/mal_function.h
monetdb5/mal/mal_instruction.c
monetdb5/mal/mal_instruction.h
monetdb5/mal/mal_linker.c
monetdb5/mal/mal_listing.c
monetdb5/mal/mal_namespace.c
monetdb5/mal/mal_parser.c
monetdb5/mal/mal_prelude.c
monetdb5/mal/mal_profiler.c
monetdb5/mal/mal_resource.c
monetdb5/mal/mal_scenario.c
monetdb5/mal/mal_session.c
monetdb5/modules/atoms/CMakeLists.txt
monetdb5/modules/atoms/mtime.c
monetdb5/modules/atoms/str.c
monetdb5/modules/atoms/str.h
monetdb5/modules/atoms/uuid.c
monetdb5/modules/kernel/batmmath.c
monetdb5/modules/kernel/batstr.c
monetdb5/modules/kernel/mmath.c
monetdb5/modules/mal/CMakeLists.txt
monetdb5/modules/mal/clients.c
monetdb5/modules/mal/clients.h
monetdb5/modules/mal/inspect.c
monetdb5/modules/mal/mal_mapi.c
monetdb5/modules/mal/manifold.c
monetdb5/modules/mal/querylog.c
monetdb5/modules/mal/remote.c
monetdb5/modules/mal/remote.h
monetdb5/modules/mal/remote.mal
monetdb5/modules/mal/tablet.c
monetdb5/modules/mal/wlc.c
monetdb5/optimizer/opt_evaluate.c
monetdb5/optimizer/opt_generator.c
monetdb5/optimizer/opt_macro.c
monetdb5/optimizer/opt_mergetable.c
monetdb5/optimizer/opt_mitosis.c
monetdb5/optimizer/opt_multiplex.c
monetdb5/optimizer/opt_pipes.c
monetdb5/optimizer/opt_prelude.c
monetdb5/optimizer/opt_prelude.h
monetdb5/optimizer/opt_projectionpath.c
monetdb5/optimizer/opt_querylog.c
monetdb5/optimizer/opt_remap.c
monetdb5/optimizer/opt_remoteQueries.c
monetdb5/tools/libmonetdb5.rc
sql/backends/monet5/CMakeLists.txt
sql/backends/monet5/UDF/capi/capi.c
sql/backends/monet5/UDF/pyapi3/conversion3.c
sql/backends/monet5/UDF/pyapi3/pyapi3.c
sql/backends/monet5/UDF/udf/udf.c
sql/backends/monet5/UDF/udf/udf.h
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql.h
sql/backends/monet5/sql.mal
sql/backends/monet5/sql_cast.c
sql/backends/monet5/sql_cast.h
sql/backends/monet5/sql_cast_impl_int.h
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_execute.c
sql/backends/monet5/sql_fround.c
sql/backends/monet5/sql_fround_impl.h
sql/backends/monet5/sql_gencode.c

MonetDB: Oct2020 - It's a new year.

2021-01-07 Thread Sjoerd Mullender
Changeset: 3eb851abda7f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3eb851abda7f
Modified Files:
CMakeLists.txt
Config.cmake.in
NT/mkodbcwxs.py
NT/mksqlwxs.py
README.rst
buildtools/CMakeLists.txt
buildtools/conf/CMakeLists.txt
buildtools/conf/Maddlog
buildtools/conf/website.html
buildtools/coverity_model.c
clients/CMakeLists.txt
clients/NT/CMakeLists.txt
clients/NT/mclient.bat
clients/NT/msqldump.bat
clients/NT/stethoscope.bat
clients/examples/C/CMakeLists.txt
clients/examples/C/sample0.c
clients/examples/C/sample1.c
clients/examples/C/sample4.c
clients/examples/C/smack00.c
clients/examples/C/smack01.c
clients/examples/CMakeLists.txt
clients/examples/perl/CMakeLists.txt
clients/examples/perl/malsample.pl
clients/examples/perl/sqlsample.pl
clients/examples/php/CMakeLists.txt
clients/examples/php/sqlsample.php
clients/examples/python/basics.py
clients/examples/python/mclient-python3.py
clients/examples/python/perf.py
clients/examples/python/sqlsample.py
clients/mapiclient/CMakeLists.txt
clients/mapiclient/ReadlineTools.c
clients/mapiclient/ReadlineTools.h
clients/mapiclient/dotfile.py
clients/mapiclient/dotmonetdb.c
clients/mapiclient/dotmonetdb.h
clients/mapiclient/dump.c
clients/mapiclient/eventparser.c
clients/mapiclient/eventparser.h
clients/mapiclient/mclient.c
clients/mapiclient/mhelp.c
clients/mapiclient/mhelp.h
clients/mapiclient/msqldump.c
clients/mapiclient/msqldump.h
clients/mapiclient/stethoscope.c
clients/mapilib/CMakeLists.txt
clients/mapilib/mapi.c
clients/mapilib/mapi.h
clients/mapilib/mapi.rc
clients/mapilib/mapi_prompt.h
clients/mapilib/mapi_querytype.h
clients/mapilib/monetdb-mapi.pc.in
clients/odbc/CMakeLists.txt
clients/odbc/doc/ExcelMonetDB.html
clients/odbc/doc/unixODBC.html
clients/odbc/driver/CMakeLists.txt
clients/odbc/driver/ODBCConvert.c
clients/odbc/driver/ODBCDbc.c
clients/odbc/driver/ODBCDbc.h
clients/odbc/driver/ODBCDesc.c
clients/odbc/driver/ODBCDesc.h
clients/odbc/driver/ODBCEnv.c
clients/odbc/driver/ODBCEnv.h
clients/odbc/driver/ODBCError.c
clients/odbc/driver/ODBCError.h
clients/odbc/driver/ODBCGlobal.h
clients/odbc/driver/ODBCQueries.h
clients/odbc/driver/ODBCStmt.c
clients/odbc/driver/ODBCStmt.h
clients/odbc/driver/ODBCUtil.c
clients/odbc/driver/ODBCUtil.h
clients/odbc/driver/SQLAllocConnect.c
clients/odbc/driver/SQLAllocEnv.c
clients/odbc/driver/SQLAllocHandle.c
clients/odbc/driver/SQLAllocStmt.c
clients/odbc/driver/SQLBindCol.c
clients/odbc/driver/SQLBindParameter.c
clients/odbc/driver/SQLBrowseConnect.c
clients/odbc/driver/SQLBulkOperations.c
clients/odbc/driver/SQLCancel.c
clients/odbc/driver/SQLCloseCursor.c
clients/odbc/driver/SQLColAttribute.c
clients/odbc/driver/SQLColAttributes.c
clients/odbc/driver/SQLColumnPrivileges.c
clients/odbc/driver/SQLColumns.c
clients/odbc/driver/SQLConnect.c
clients/odbc/driver/SQLCopyDesc.c
clients/odbc/driver/SQLDataSources.c
clients/odbc/driver/SQLDescribeCol.c
clients/odbc/driver/SQLDescribeParam.c
clients/odbc/driver/SQLDisconnect.c
clients/odbc/driver/SQLDriverConnect.c
clients/odbc/driver/SQLDrivers.c
clients/odbc/driver/SQLEndTran.c
clients/odbc/driver/SQLError.c
clients/odbc/driver/SQLExecDirect.c
clients/odbc/driver/SQLExecute.c
clients/odbc/driver/SQLExtendedFetch.c
clients/odbc/driver/SQLFetch.c
clients/odbc/driver/SQLFetchScroll.c
clients/odbc/driver/SQLForeignKeys.c
clients/odbc/driver/SQLFreeConnect.c
clients/odbc/driver/SQLFreeEnv.c
clients/odbc/driver/SQLFreeHandle.c
clients/odbc/driver/SQLFreeStmt.c
clients/odbc/driver/SQLGetConnectAttr.c
clients/odbc/driver/SQLGetConnectOption.c
clients/odbc/driver/SQLGetCursorName.c
clients/odbc/driver/SQLGetData.c
clients/odbc/driver/SQLGetDescField.c
clients/odbc/driver/SQLGetDescRec.c
clients/odbc/driver/SQLGetDiagField.c
clients/odbc/driver/SQLGetDiagRec.c
clients/odbc/driver/SQLGetEnvAttr.c
clients/odbc/driver/SQLGetFunctions.c
clients/odbc/driver/SQLGetInfo.c
clients/odbc/driver/SQLGetStmtAttr.c
clients/odbc/driver/SQLGetStmtOption.c
clients/odbc/driver/SQLGetTypeInfo.c

MonetDB: properties - Merged with default

2021-01-07 Thread Pedro Ferreira
Changeset: c509bed616dd for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c509bed616dd
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_statement.c
sql/server/rel_optimizer.c
sql/server/rel_rel.c
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/rel_updates.c
sql/server/sql_atom.c
sql/server/sql_mvc.c
sql/server/sql_mvc.h
sql/storage/sql_storage.h
sql/storage/store.c
Branch: properties
Log Message:

Merged with default


diffs (truncated from 7882 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -41,25 +41,15 @@
 %global fedpkgs 1
 %endif
 
-%if %{?rhel:1}%{!?rhel:0} && 0%{?rhel} < 7
-# RedHat Enterprise Linux < 7
-# There is no macro _rundir, and no directory /run, instead use /var/run.
-%global _rundir %{_localstatedir}/run
-%endif
-
 # On Fedora, the geos library is available, and so we can require it
 # and build the geom modules.  On RedHat Enterprise Linux and
 # derivatives (CentOS, Scientific Linux), the geos library is not
 # available.  However, the geos library is available in the Extra
-# Packages for Enterprise Linux (EPEL).  However, On RHEL 6, the geos
-# library is too old for us, so we need an extra check for an
-# up-to-date version of RHEL.
+# Packages for Enterprise Linux (EPEL).
 %if %{fedpkgs}
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 # By default create the MonetDB-geom-MonetDB5 package on Fedora and RHEL 7
 %bcond_without geos
 %endif
-%endif
 
 # By default use PCRE for the implementation of the SQL LIKE and ILIKE
 # operators.  Otherwise the POSIX regex functions are used.
@@ -73,11 +63,8 @@
 %bcond_without rintegration
 %endif
 
-%if 0%{?rhel} >= 7 || 0%{?fedora} > 0
-# On RHEL 6, Python 3 is too old.  On RHEL 7, Python 3 was too old
-# when RHEL 7 was released, but now it is ok.
+# By default, include Python 3 integration.
 %bcond_without py3integration
-%endif
 
 %if %{fedpkgs}
 # By default, create the MonetDB-cfitsio package.
@@ -104,13 +91,10 @@ Source: https://www.monetdb.org/download
 # that doesn't exist and we need systemd, so instead we just require
 # the macro file that contains the definitions.
 # We need checkpolicy and selinux-policy-devel for the SELinux policy.
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
-# RHEL >= 7, and all current Fedora
 BuildRequires: /usr/lib/rpm/macros.d/macros.systemd
 BuildRequires: checkpolicy
 BuildRequires: selinux-policy-devel
 BuildRequires: hardlink
-%endif
 BuildRequires: cmake3 >= 3.12
 BuildRequires: gcc
 BuildRequires: bison
@@ -497,9 +481,7 @@ Suggests: %{name}-client%{?_isa} = %{ver
 %endif
 # versions up to 1.0.5 don't accept the queryid field in the result set
 Conflicts: python-pymonetdb < 1.0.6
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 Requires(pre): systemd
-%endif
 
 %description -n MonetDB5-server
 MonetDB is a database management system that is developed from a
@@ -535,9 +517,7 @@ exit 0
 
 %files -n MonetDB5-server
 %defattr(-,root,root)
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 %{_sysusersdir}/monetdb.conf
-%endif
 %attr(2750,monetdb,monetdb) %dir %{_localstatedir}/lib/monetdb
 %attr(2770,monetdb,monetdb) %dir %{_localstatedir}/monetdb5
 %attr(2770,monetdb,monetdb) %dir %{_localstatedir}/monetdb5/dbfarm
@@ -589,9 +569,7 @@ Provides: %{name}-SQL-server5-hugeint%{?
 %if (0%{?fedora} >= 22)
 Suggests: %{name}-client%{?_isa} = %{version}-%{release}
 %endif
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 %{?systemd_requires}
-%endif
 
 %description SQL-server5
 MonetDB is a database management system that is developed from a
@@ -602,7 +580,6 @@ accelerators.  It also has an SQL front 
 This package contains the monetdb and monetdbd programs and the systemd
 configuration.
 
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 %post SQL-server5
 %systemd_post monetdbd.service
 
@@ -611,7 +588,6 @@ configuration.
 
 %postun SQL-server5
 %systemd_postun_with_restart monetdbd.service
-%endif
 
 %files SQL-server5
 %defattr(-,root,root)
@@ -619,16 +595,9 @@ configuration.
 %{_bindir}/monetdbd
 %dir %attr(775,monetdb,monetdb) %{_localstatedir}/log/monetdb
 %dir %attr(775,monetdb,monetdb) %{_rundir}/monetdb
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 # RHEL >= 7, and all current Fedora
 %{_tmpfilesdir}/monetdbd.conf
 %{_unitdir}/monetdbd.service
-%else
-# RedHat Enterprise Linux < 7
-%exclude %{_sysconfdir}/tmpfiles.d/monetdbd.conf
-# no _unitdir macro
-%exclude %{_prefix}/lib/systemd/system/monetdbd.service
-%endif
 %config(noreplace) %attr(664,monetdb,monetdb) 
%{_localstatedir}/monetdb5/dbfarm/.merovingian_properties
 %verify(not mtime) %attr(664,monetdb,monetdb) 
%{_localstatedir}/monetdb5/dbfarm/.merovingian_lock
 %config(noreplace) %attr(644,root,root) %{_sysconfdir}/logrotate.d/monetdbd
@@ -716,7 +685,6 @@ developer, but if you do want to test, t
 

MonetDB: default - Updated tests

2021-01-07 Thread Pedro Ferreira
Changeset: aafbff1d8ab4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=aafbff1d8ab4
Added Files:
sql/test/SQLancer/Tests/sqlancer10.test
Modified Files:
sql/test/SQLancer/Tests/sqlancer09.test
sql/test/sysmon/Tests/sys_queue_multisessions.SQL.py
sql/test/sysmon/Tests/sys_queue_multisessions.stable.out
Branch: default
Log Message:

Updated tests


diffs (228 lines):

diff --git a/sql/test/SQLancer/Tests/sqlancer09.test 
b/sql/test/SQLancer/Tests/sqlancer09.test
--- a/sql/test/SQLancer/Tests/sqlancer09.test
+++ b/sql/test/SQLancer/Tests/sqlancer09.test
@@ -268,4 +268,157 @@ 0
 statement ok
 ROLLBACK
 
+statement error
+values (0.51506835), (2), (least('a', 0.5667308))
 
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE TABLE "sys"."t2" ("c0" BIGINT,"c1" BIGINT,"c2" REAL)
+
+statement ok
+COPY 21 RECORDS INTO "sys"."t2" FROM stdin USING DELIMITERS E'\t',E'\n','"'
+
+NULL   46  NULL
+NULL   978792098   NULL
+NULL   -209719663  NULL
+NULL   -1594519521 NULL
+NULL   1440437651  NULL
+NULL   NULL0.7521466
+NULL   NULL-9.6071763e+08
+NULL   NULL0.5561435
+NULL   867710451   -9.6071763e+08
+NULL   -160941982  NULL
+NULL   1990736519  NULL
+NULL   -103481269  NULL
+NULL   1811733944  NULL
+1976443849 NULLNULL
+1998125136 NULLNULL
+1387808544 NULLNULL
+-978792098 666383819   NULL
+NULL   0   -1.6970901e+08
+NULL   1   0.07074437
+-2027341916NULLNULL
+239480113  NULLNULL
+
+statement ok
+create view v2(vc0, vc1, vc2) as (values (+ 
(0.51506835))&(-2)))<<(scale_down(least(31552,
+0.3), cast(1500294098 as int,
+((- (((44257622)-(0.6>=(least(-15958291, -1534974396))), case - 
(sql_min(0.632858,
+0.3)) when 0.5)^(0.4)))+(((0.4)/(5
+then sql_max(cast(5293 as decimal), ((0.5)-
+(0.5))) end),(charindex(r'934079707', r'35305325'), not (false),
+sql_max(((+ (102))|(case 0.028362095 when 458003921 then 28118 end)), 
cast(least(0.3,
+0.79115176) as double))), (least(0.5)%(0.40122834)))||(2)),
+0.5667308), false, 45))
+
+statement ok
+create view v3(vc0) as (values (least(least(cast(0.3 as bigint), 0.9), 0.5)))
+
+query I rowsort
+select 1 from v2, v3
+
+1
+1
+1
+
+query I rowsort
+select cast(sum(count) as bigint) from (select cast((cast(sin(3) as double)) 
is null as int) as count from
+t2 cross join v3 full outer join (select distinct sql_max(case when 
cast(v2.vc1 as boolean) then cast(-3 as string)
+when case when v2.vc1 then v2.vc1 when v2.vc1 then v2.vc1 end then 
sql_max(r'()', r'1574131922') end,
+coalesce(cast(t2.c2 as string), case 2 when v3.vc0 then r'0.8941967611205319' 
end, case when v2.vc1 then r''
+when v2.vc1 then r'-1402390265' else r't࿕}rj}&' end, greatest(r'1', r'I'''))) 
from t2, v2, v3) as sub0 on
+greatest("isauuid"(r'-209719663'), 
((false)or(true)))or(false)))or(false as res
+
+0
+
+statement ok
+ROLLBACK
+
+statement ok
+START TRANSACTION
+
+statement ok
+create view v27(vc0, vc1) as (values (sql_max(case when false then -4 when 
false then 96 when true then 19491 end,
+nullif(0.322, 4.3)), 0.31),
+(abs(6363), -34)) with check option
+
+statement ok
+create view v32(vc0, vc1) as (select distinct cast(((-4)*(-4)) as tinyint), 
coalesce(nullif(r'p', r'E]T'),
+sql_max(r'f)6_', r'.u'), cast(true as string(679)), case -3 when -5 then r'94' 
end)
+group by substr(r'FALSE', 2))
+
+query T rowsort
+select sum(all abs(interval '-27135172' second)) from v27 full outer join 
(select all scale_up(0.131, 12375.0)
+from v32 cross join (values (round(0.23, 10))) as sub0
+where ((v32.vc0)=(0.32))) as sub0 on case 3 when
+case 21 when 12524 then -3 when r'1092027064' then 3692 else 18 end then case 
when true then true else true end
+when case when true then 0.33 end then (6363) not in (3,
+-3, v27.vc0, -3) end
+
+628 days, 3:05:44
+
+statement ok
+create or replace view v27(vc0) as (values (4.3), (63))
+
+query I rowsort
+select 1 from v27 full outer join (select 1) as sub0 on case 3 when 0.33 then 
(2) in (v27.vc0, 9) end
+
+1
+1
+1
+
+statement ok
+ROLLBACK
+
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE TABLE "sys"."t1" ("c0" DECIMAL(18,3),"c1" VARCHAR(253))
+
+statement ok
+COPY 7 RECORDS INTO "sys"."t1" FROM stdin USING DELIMITERS E'\t',E'\n','"'
+
+-804767602.000 ".c("
+0.799  ".c("
+0.763  ".c("
+0.957  NULL
+NULL   "5"
+NULL   "j"
+NULL   "UXNW/#綒"
+
+statement ok
+CREATE TABLE "sys"."t2" ("c0" DECIMAL(18,3),"c1" VARCHAR(253),CONSTRAINT 
"t2_c1_unique" UNIQUE ("c1"))
+
+statement ok
+COPY 7 RECORDS INTO "sys"."t2" FROM stdin USING DELIMITERS E'\t',E'\n','"'
+
+0.120  "0.225103631409"
+0.120  "-677904380"
+NULL   "['퓵h'iI"
+NULL   "3128"
+1.000  "+EUSP1"
+0.968  "1403896159"
+0.565  "0.8224972062481081"
+
+query I nosort
+SELECT 1 FROM t2 JOIN t1 ON CASE true WHEN true THEN true ELSE (t2.c0) IN (2) 
END
+
+
+query II nosort
+SELECT ALL t2.c0, t2.c1 FROM t2 LEFT OUTER JOIN t1 ON 

MonetDB: default - Merged with Oct2020

2021-01-07 Thread Pedro Ferreira
Changeset: afff2f2c983a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=afff2f2c983a
Modified Files:
MonetDB.spec
sql/backends/monet5/rel_bin.c
sql/common/sql_types.c
sql/common/sql_types.h
sql/server/rel_optimizer.c
sql/server/rel_unnest.c
sql/server/sql_atom.c
sql/server/sql_mvc.c
sql/server/sql_mvc.h
sql/server/sql_parser.y
sql/server/sql_semantic.c
sql/storage/sql_storage.h
sql/storage/store.c
sql/test/SQLancer/Tests/sqlancer09.test
sql/test/sysmon/Tests/All
Branch: default
Log Message:

Merged with Oct2020


diffs (truncated from 4951 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -41,25 +41,15 @@
 %global fedpkgs 1
 %endif
 
-%if %{?rhel:1}%{!?rhel:0} && 0%{?rhel} < 7
-# RedHat Enterprise Linux < 7
-# There is no macro _rundir, and no directory /run, instead use /var/run.
-%global _rundir %{_localstatedir}/run
-%endif
-
 # On Fedora, the geos library is available, and so we can require it
 # and build the geom modules.  On RedHat Enterprise Linux and
 # derivatives (CentOS, Scientific Linux), the geos library is not
 # available.  However, the geos library is available in the Extra
-# Packages for Enterprise Linux (EPEL).  However, On RHEL 6, the geos
-# library is too old for us, so we need an extra check for an
-# up-to-date version of RHEL.
+# Packages for Enterprise Linux (EPEL).
 %if %{fedpkgs}
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 # By default create the MonetDB-geom-MonetDB5 package on Fedora and RHEL 7
 %bcond_without geos
 %endif
-%endif
 
 # By default use PCRE for the implementation of the SQL LIKE and ILIKE
 # operators.  Otherwise the POSIX regex functions are used.
@@ -73,11 +63,8 @@
 %bcond_without rintegration
 %endif
 
-%if 0%{?rhel} >= 7 || 0%{?fedora} > 0
-# On RHEL 6, Python 3 is too old.  On RHEL 7, Python 3 was too old
-# when RHEL 7 was released, but now it is ok.
+# By default, include Python 3 integration.
 %bcond_without py3integration
-%endif
 
 %if %{fedpkgs}
 # By default, create the MonetDB-cfitsio package.
@@ -104,13 +91,10 @@ Source: https://www.monetdb.org/download
 # that doesn't exist and we need systemd, so instead we just require
 # the macro file that contains the definitions.
 # We need checkpolicy and selinux-policy-devel for the SELinux policy.
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
-# RHEL >= 7, and all current Fedora
 BuildRequires: /usr/lib/rpm/macros.d/macros.systemd
 BuildRequires: checkpolicy
 BuildRequires: selinux-policy-devel
 BuildRequires: hardlink
-%endif
 BuildRequires: cmake3 >= 3.12
 BuildRequires: gcc
 BuildRequires: bison
@@ -497,9 +481,7 @@ Suggests: %{name}-client%{?_isa} = %{ver
 %endif
 # versions up to 1.0.5 don't accept the queryid field in the result set
 Conflicts: python-pymonetdb < 1.0.6
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 Requires(pre): systemd
-%endif
 
 %description -n MonetDB5-server
 MonetDB is a database management system that is developed from a
@@ -535,9 +517,7 @@ exit 0
 
 %files -n MonetDB5-server
 %defattr(-,root,root)
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 %{_sysusersdir}/monetdb.conf
-%endif
 %attr(2750,monetdb,monetdb) %dir %{_localstatedir}/lib/monetdb
 %attr(2770,monetdb,monetdb) %dir %{_localstatedir}/monetdb5
 %attr(2770,monetdb,monetdb) %dir %{_localstatedir}/monetdb5/dbfarm
@@ -589,9 +569,7 @@ Provides: %{name}-SQL-server5-hugeint%{?
 %if (0%{?fedora} >= 22)
 Suggests: %{name}-client%{?_isa} = %{version}-%{release}
 %endif
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 %{?systemd_requires}
-%endif
 
 %description SQL-server5
 MonetDB is a database management system that is developed from a
@@ -602,7 +580,6 @@ accelerators.  It also has an SQL front 
 This package contains the monetdb and monetdbd programs and the systemd
 configuration.
 
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 %post SQL-server5
 %systemd_post monetdbd.service
 
@@ -611,7 +588,6 @@ configuration.
 
 %postun SQL-server5
 %systemd_postun_with_restart monetdbd.service
-%endif
 
 %files SQL-server5
 %defattr(-,root,root)
@@ -619,16 +595,9 @@ configuration.
 %{_bindir}/monetdbd
 %dir %attr(775,monetdb,monetdb) %{_localstatedir}/log/monetdb
 %dir %attr(775,monetdb,monetdb) %{_rundir}/monetdb
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 # RHEL >= 7, and all current Fedora
 %{_tmpfilesdir}/monetdbd.conf
 %{_unitdir}/monetdbd.service
-%else
-# RedHat Enterprise Linux < 7
-%exclude %{_sysconfdir}/tmpfiles.d/monetdbd.conf
-# no _unitdir macro
-%exclude %{_prefix}/lib/systemd/system/monetdbd.service
-%endif
 %config(noreplace) %attr(664,monetdb,monetdb) 
%{_localstatedir}/monetdb5/dbfarm/.merovingian_properties
 %verify(not mtime) %attr(664,monetdb,monetdb) 
%{_localstatedir}/monetdb5/dbfarm/.merovingian_lock
 %config(noreplace) %attr(644,root,root) %{_sysconfdir}/logrotate.d/monetdbd
@@ -716,7 +685,6 @@ developer, but if you do 

MonetDB: default - Make error message compatible with older vers...

2021-01-07 Thread Pedro Ferreira
Changeset: 7e21a9a0d884 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7e21a9a0d884
Modified Files:
sql/test/BugTracker-2010/Tests/unicode-bom.Bug-2641.py
Branch: default
Log Message:

Make error message compatible with older versions of bison


diffs (14 lines):

diff --git a/sql/test/BugTracker-2010/Tests/unicode-bom.Bug-2641.py 
b/sql/test/BugTracker-2010/Tests/unicode-bom.Bug-2641.py
--- a/sql/test/BugTracker-2010/Tests/unicode-bom.Bug-2641.py
+++ b/sql/test/BugTracker-2010/Tests/unicode-bom.Bug-2641.py
@@ -42,8 +42,8 @@ with process.client('sql', text=False, s
 
 if retcode == 0:
 sys.stderr.write("Expected nonzero return code")
-if not err or b'syntax error in' not in err:
-sys.stderr.write("Expected stderr to contain 'syntax error in', 
instead got '%s'" % (err))
+if not err or b'syntax error' not in err:
+sys.stderr.write("Expected stderr to contain 'syntax error', instead 
got '%s'" % (err))
 
 # More than one BOM scattered over the entire statement
 INPUT4 = 
b"\x53\x45\xEF\xBB\xBF\x4C\x45\xEF\xBB\xBF\x43\x54\xEF\xBB\xBF\x20\x31\xEF\xBB\xBF\x3B\xEF\xBB\xBF\x0A"
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: nospare - we use a shallow copy, with ref counts.

2021-01-07 Thread Niels Nes
Changeset: 0f338bf8861b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0f338bf8861b
Modified Files:
sql/backends/monet5/sql_cat.c
sql/include/sql_catalog.h
sql/server/rel_distribute.c
sql/server/rel_optimizer.c
sql/server/rel_propagate.c
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/rel_updates.c
sql/server/sql_partition.c
sql/storage/sql_catalog.c
sql/storage/store.c
Branch: nospare
Log Message:

we use a shallow copy, with ref counts.
handle renames of schemas again.


diffs (truncated from 792 to 300 lines):

diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -158,7 +158,7 @@ validate_alter_table_add_table(mvc *sql,
const char *errtable = TABLE_TYPE_DESCRIPTION(rmt->type, 
rmt->properties);
if (!update && (!isMergeTable(rmt) && !isReplicaTable(rmt)))
throw(SQL,call,SQLSTATE(42S02) "ALTER TABLE: cannot add table 
'%s.%s' to %s '%s.%s'", psname, ptname, errtable, msname, mtname);
-   node *n = list_find_base_id(rmt->members, rpt->base.id);
+   node *n = cs_find_id(>members, rpt->base.id);
if (isView(rpt))
throw(SQL,call,SQLSTATE(42000) "ALTER TABLE: can't add a view 
into a %s", errtable);
if (isDeclaredTable(rpt))
@@ -416,7 +416,7 @@ alter_table_del_table(mvc *sql, char *ms
const char *errtable = TABLE_TYPE_DESCRIPTION(mt->type, mt->properties);
if (!isMergeTable(mt) && !isReplicaTable(mt))
throw(SQL,"sql.alter_table_del_table",SQLSTATE(42S02) "ALTER 
TABLE: cannot drop table '%s.%s' to %s '%s.%s'", psname, ptname, errtable, 
msname, mtname);
-   if (!(n = list_find_base_id(mt->members, pt->base.id)))
+   if (!(n = cs_find_id(>members, pt->base.id)))
throw(SQL,"sql.alter_table_del_table",SQLSTATE(42S02) "ALTER 
TABLE: table '%s.%s' isn't part of %s '%s.%s'", ps->base.name, ptname, 
errtable, ms->base.name, mtname);
 
sql_trans_del_table(sql->session->tr, mt, pt, drop_action);
@@ -1711,7 +1711,7 @@ SQLrename_table(Client cntxt, MalBlkPtr 
throw(SQL, "sql.rename_table", SQLSTATE(42000) "ALTER 
TABLE: not possible to change schema of a view");
if (isDeclaredTable(t))
throw(SQL, "sql.rename_table", SQLSTATE(42000) "ALTER 
TABLE: not possible to change schema of a declared table");
-   if (mvc_check_dependency(sql, t->base.id, TABLE_DEPENDENCY, 
NULL) || !list_empty(t->members) || !list_empty(t->triggers.set))
+   if (mvc_check_dependency(sql, t->base.id, TABLE_DEPENDENCY, 
NULL) || cs_size(>members) || !list_empty(t->triggers.set))
throw(SQL, "sql.rename_table", SQLSTATE(2BM37) "ALTER 
TABLE: unable to set schema of table '%s' (there are database objects which 
depend on it)", otable_name);
if (!(s = mvc_bind_schema(sql, nschema_name)))
throw(SQL, "sql.rename_table", SQLSTATE(42S02) "ALTER 
TABLE: no such schema '%s'", nschema_name);
diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -255,6 +255,7 @@ typedef struct objectlist {
 #endif
 
 extern void cs_new(changeset * cs, sql_allocator *sa, fdestroy destroy);
+extern changeset* cs_dup(changeset * cs);
 extern void cs_destroy(changeset * cs);
 extern void cs_add(changeset * cs, void *elm, int flag);
 extern void *cs_add_with_validate(changeset * cs, void *elm, int flag, 
fvalidate cmp);
@@ -283,7 +284,6 @@ typedef struct sql_schema {
changeset types;
changeset funcs;
changeset seqs;
-   changeset parts;/* merge/replica tables can only contain parts from the 
same schema */
list *keys; /* Names for keys, idxs and triggers are */
list *idxs; /* global, but these objects are only */
list *triggers; /* useful within a table */
@@ -694,7 +694,7 @@ typedef struct sql_table {
changeset idxs;
changeset keys;
changeset triggers;
-   list *members;
+   changeset members;  /* member tables of merge/replica tables */
int drop_action;/* only needed for alter drop table */
 
void *data;
@@ -779,7 +779,7 @@ extern sql_idx *sql_trans_find_idx(sql_t
 
 extern sql_column *find_sql_column(sql_table *t, const char *cname);
 
-extern sql_part *find_sql_part_id(sql_table *t, sqlid id);
+extern sql_part *find_sql_part_id(sql_trans *tr, sql_table *t, sqlid id);
 
 extern sql_table *find_sql_table(sql_trans *tr, sql_schema *s, const char 
*tname);
 extern sql_table *find_sql_table_id(sql_trans *tr, sql_schema *s, sqlid id);
diff --git a/sql/server/rel_distribute.c b/sql/server/rel_distribute.c
--- a/sql/server/rel_distribute.c
+++ 

MonetDB: Oct2020 - Move crashing subquery into a new test

2021-01-07 Thread Pedro Ferreira
Changeset: cfc3e94c5961 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cfc3e94c5961
Added Files:
sql/test/SQLancer/Tests/sqlancer10.sql
sql/test/SQLancer/Tests/sqlancer10.stable.err
sql/test/SQLancer/Tests/sqlancer10.stable.out
Modified Files:
sql/test/SQLancer/Tests/All
sql/test/SQLancer/Tests/sqlancer09.sql
Branch: Oct2020
Log Message:

Move crashing subquery into a new test


diffs (108 lines):

diff --git a/sql/test/SQLancer/Tests/All b/sql/test/SQLancer/Tests/All
--- a/sql/test/SQLancer/Tests/All
+++ b/sql/test/SQLancer/Tests/All
@@ -7,3 +7,4 @@ sqlancer06
 sqlancer07
 sqlancer08
 sqlancer09
+sqlancer10
diff --git a/sql/test/SQLancer/Tests/sqlancer09.sql 
b/sql/test/SQLancer/Tests/sqlancer09.sql
--- a/sql/test/SQLancer/Tests/sqlancer09.sql
+++ b/sql/test/SQLancer/Tests/sqlancer09.sql
@@ -56,24 +56,6 @@ nullif(timestamp '1970-01-20 08:57:27', 
 ROLLBACK;
 
 START TRANSACTION;
-CREATE TABLE "sys"."t0" ("c0" TIME NOT NULL, "c1" VARCHAR(143),
-   CONSTRAINT "t0_c0_pkey" PRIMARY KEY ("c0"), CONSTRAINT "t0_c0_unique" 
UNIQUE ("c0"), CONSTRAINT "t0_c1_unique" UNIQUE ("c1"));
-COPY 7 RECORDS INTO "sys"."t0" FROM stdin USING DELIMITERS E'\t',E'\n','"';
-21:19:08   ""
-13:02:49   NULL
-01:02:11   NULL
-16:34:25   NULL
-12:11:43   NULL
-10:35:38   NULL
-04:26:50   NULL
-
-CREATE TABLE "sys"."t1" ("c0" CHAR(375) NOT NULL, CONSTRAINT "t1_c0_pkey" 
PRIMARY KEY ("c0"), CONSTRAINT "t1_c0_fkey" FOREIGN KEY ("c0") REFERENCES 
"sys"."t0" ("c1"));
---insert into t1 values ('');
---insert into t1(c0) values ((select 'a')), ('b');
---insert into t1(c0) values(r']BW扗}FUp'), (cast((values (greatest(r'Aᨐ', 
r'_'))) as string(616))), (r'');
-ROLLBACK;
-
-START TRANSACTION;
 CREATE TABLE "sys"."t1" ("c0" BIGINT);
 COPY 4 RECORDS INTO "sys"."t1" FROM stdin USING DELIMITERS E'\t',E'\n','"';
 1096730569
diff --git a/sql/test/SQLancer/Tests/sqlancer10.sql 
b/sql/test/SQLancer/Tests/sqlancer10.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/SQLancer/Tests/sqlancer10.sql
@@ -0,0 +1,17 @@
+START TRANSACTION;
+CREATE TABLE "sys"."t0" ("c0" TIME NOT NULL, "c1" VARCHAR(143),
+   CONSTRAINT "t0_c0_pkey" PRIMARY KEY ("c0"), CONSTRAINT "t0_c0_unique" 
UNIQUE ("c0"), CONSTRAINT "t0_c1_unique" UNIQUE ("c1"));
+COPY 7 RECORDS INTO "sys"."t0" FROM stdin USING DELIMITERS E'\t',E'\n','"';
+21:19:08   ""
+13:02:49   NULL
+01:02:11   NULL
+16:34:25   NULL
+12:11:43   NULL
+10:35:38   NULL
+04:26:50   NULL
+
+CREATE TABLE "sys"."t1" ("c0" CHAR(375) NOT NULL, CONSTRAINT "t1_c0_pkey" 
PRIMARY KEY ("c0"), CONSTRAINT "t1_c0_fkey" FOREIGN KEY ("c0") REFERENCES 
"sys"."t0" ("c1"));
+insert into t1 values ('');
+insert into t1(c0) values ((select 'a')), ('b');
+insert into t1(c0) values(r']BW扗}FUp'), (cast((values (greatest(r'Aᨐ', r'_'))) 
as string(616))), (r'');
+ROLLBACK;
diff --git a/sql/test/SQLancer/Tests/sqlancer10.stable.err 
b/sql/test/SQLancer/Tests/sqlancer10.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/SQLancer/Tests/sqlancer10.stable.err
@@ -0,0 +1,12 @@
+stderr of test 'sqlancer10` in directory 'sql/test/SQLancer` itself:
+
+
+# 13:59:46 >  
+# 13:59:46 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-215607" "--port=30526"
+# 13:59:46 >  
+
+
+# 13:59:46 >  
+# 13:59:46 >  "Done."
+# 13:59:46 >  
+
diff --git a/sql/test/SQLancer/Tests/sqlancer10.stable.out 
b/sql/test/SQLancer/Tests/sqlancer10.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/SQLancer/Tests/sqlancer10.stable.out
@@ -0,0 +1,28 @@
+stdout of test 'sqlancer10` in directory 'sql/test/SQLancer` itself:
+
+
+# 13:59:46 >  
+# 13:59:46 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-215607" "--port=30526"
+# 13:59:46 >  
+
+#START TRANSACTION;
+#CREATE TABLE "sys"."t0" ("c0" TIME NOT NULL, "c1" VARCHAR(143),
+#  CONSTRAINT "t0_c0_pkey" PRIMARY KEY ("c0"), CONSTRAINT "t0_c0_unique" 
UNIQUE ("c0"), CONSTRAINT "t0_c1_unique" UNIQUE ("c1"));
+#COPY 7 RECORDS INTO "sys"."t0" FROM stdin USING DELIMITERS E'\t',E'\n','"';
+#21:19:08  ""
+#13:02:49  NULL
+#01:02:11  NULL
+#16:34:25  NULL
+#12:11:43  NULL
+#10:35:38  NULL
+#04:26:50  NULL
+[ 7]
+#CREATE TABLE "sys"."t1" ("c0" CHAR(375) NOT NULL, CONSTRAINT "t1_c0_pkey" 
PRIMARY KEY ("c0"), CONSTRAINT "t1_c0_fkey" FOREIGN KEY ("c0") REFERENCES 
"sys"."t0" ("c1"));
+#insert into t1 values ('');
+[ 1]
+#ROLLBACK;
+
+# 13:59:46 >  
+# 13:59:46 >  "Done."
+# 13:59:46 >  
+
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2020 - SQLancer: inputs not the same size error. Loo...

2021-01-07 Thread Pedro Ferreira
Changeset: 9582f0eaea1f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9582f0eaea1f
Modified Files:
sql/test/SQLancer/Tests/sqlancer09.sql
Branch: Oct2020
Log Message:

SQLancer: inputs not the same size error. Looking into it


diffs (53 lines):

diff --git a/sql/test/SQLancer/Tests/sqlancer09.sql 
b/sql/test/SQLancer/Tests/sqlancer09.sql
--- a/sql/test/SQLancer/Tests/sqlancer09.sql
+++ b/sql/test/SQLancer/Tests/sqlancer09.sql
@@ -68,9 +68,9 @@ 10:35:38  NULL
 04:26:50   NULL
 
 CREATE TABLE "sys"."t1" ("c0" CHAR(375) NOT NULL, CONSTRAINT "t1_c0_pkey" 
PRIMARY KEY ("c0"), CONSTRAINT "t1_c0_fkey" FOREIGN KEY ("c0") REFERENCES 
"sys"."t0" ("c1"));
-insert into t1 values ('');
-insert into t1(c0) values ((select 'a')), ('b');
-insert into t1(c0) values(r']BW扗}FUp'), (cast((values (greatest(r'Aᨐ', r'_'))) 
as string(616))), (r'');
+--insert into t1 values ('');
+--insert into t1(c0) values ((select 'a')), ('b');
+--insert into t1(c0) values(r']BW扗}FUp'), (cast((values (greatest(r'Aᨐ', 
r'_'))) as string(616))), (r'');
 ROLLBACK;
 
 START TRANSACTION;
@@ -240,3 +240,36 @@ when case when true then 0.33 end then (
 create or replace view v27(vc0) as (values (4.3), (63));
 select 1 from v27 full outer join (select 1) as sub0 on case 3 when 0.33 then 
(2) in (v27.vc0, 9) end;
 ROLLBACK;
+
+START TRANSACTION;
+CREATE TABLE "sys"."t1" ("c0" DECIMAL(18,3),"c1" VARCHAR(253));
+COPY 7 RECORDS INTO "sys"."t1" FROM stdin USING DELIMITERS E'\t',E'\n','"';
+-804767602.000 ".c("
+0.799  ".c("
+0.763  ".c("
+0.957  NULL
+NULL   "5"
+NULL   "j"
+NULL   "UXNW/#綒"
+
+CREATE TABLE "sys"."t2" ("c0" DECIMAL(18,3),"c1" VARCHAR(253),CONSTRAINT 
"t2_c1_unique" UNIQUE ("c1"));
+COPY 7 RECORDS INTO "sys"."t2" FROM stdin USING DELIMITERS E'\t',E'\n','"';
+0.120  "0.225103631409"
+0.120  "-677904380"
+NULL   "['퓵h'iI"
+NULL   "3128"
+1.000  "+EUSP1"
+0.968  "1403896159"
+0.565  "0.8224972062481081"
+
+SELECT 1 FROM t2 JOIN t1 ON CASE true WHEN true THEN true ELSE (t2.c0) IN (2) 
END;
+
+SELECT ALL t2.c0, t2.c1 FROM t2 LEFT OUTER JOIN t1 ON CASE ((t2.c1)NOT 
LIKE(t2.c1)) WHEN (t1.c1) NOT BETWEEN SYMMETRIC
+(t1.c1) AND (t1.c1) THEN ((FALSE)OR(FALSE)) WHEN ((t2.c1)LIKE(t1.c1)) THEN 
ifthenelse(FALSE, TRUE, TRUE) WHEN
+FALSE)OR(TRUE)))OR(TRUE)) THEN ((t2.c1)<>(t1.c1)) ELSE (t2.c0) IN 
(102830492) END RIGHT OUTER JOIN
+(SELECT DISTINCT CASE (-809462446) IN (2020241275, 2116461308) WHEN CASE WHEN 
FALSE THEN TRUE WHEN FALSE THEN
+FALSE WHEN TRUE THEN TRUE WHEN TRUE THEN FALSE WHEN FALSE THEN FALSE WHEN 
FALSE THEN FALSE END THEN
+CAST(1847496204 AS BOOLEAN) WHEN CASE WHEN FALSE THEN FALSE WHEN FALSE THEN 
FALSE ELSE TRUE END THEN (t2.c0) IS NULL
+WHEN ((t2.c1)LIKE(t2.c1)) THEN (t1.c0) IN (t2.c0, t1.c0) ELSE (t2.c1) NOT 
BETWEEN SYMMETRIC (t1.c1) AND (t2.c1) END
+FROM t2, t1 WHERE CAST(20726 AS BOOLEAN)) AS sub0 ON ((CAST(t1.c1 AS 
STRING))ILIKE(t1.c1));
+ROLLBACK;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2020 - If a projection doesn't have a left relation,...

2021-01-07 Thread Pedro Ferreira
Changeset: 21b467469899 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=21b467469899
Modified Files:
sql/server/rel_optimizer.c
sql/test/SQLancer/Tests/sqlancer09.sql
sql/test/SQLancer/Tests/sqlancer09.stable.out
Branch: Oct2020
Log Message:

If a projection doesn't have a left relation, create a new projection at 
rel_push_func_down, so the code generation doesn't screw up


diffs (86 lines):

diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -1511,9 +1511,9 @@ rel_push_func_down(visitor *v, sql_rel *
 
/* we need a full projection, group by's and unions 
cannot be extended
 * with more expressions */
-   if (!is_simple_project(l->op))
+   if (!is_simple_project(l->op) || !l->l)
rel->l = l = rel_project(v->sql->sa, l, 
rel_projections(v->sql, l, NULL, 1, 1));
-   if (is_joinop(rel->op) && !is_simple_project(r->op))
+   if (is_joinop(rel->op) && (!is_simple_project(r->op) || 
!r->l))
rel->r = r = rel_project(v->sql->sa, r, 
rel_projections(v->sql, r, NULL, 1, 1));
nrel = rel_project(v->sql->sa, rel, 
rel_projections(v->sql, rel, NULL, 1, 1));
 
@@ -1537,9 +1537,9 @@ rel_push_func_down(visitor *v, sql_rel *
sql_rel *l = pl->l, *r = pl->r;
list *nexps = new_exp_list(v->sql->sa);
 
-   if (!is_simple_project(l->op))
+   if (!is_simple_project(l->op) || !l->l)
pl->l = l = rel_project(v->sql->sa, l, 
rel_projections(v->sql, l, NULL, 1, 1));
-   if (is_joinop(rel->op) && !is_simple_project(r->op))
+   if (is_joinop(rel->op) && (!is_simple_project(r->op) || 
!r->l))
pl->r = r = rel_project(v->sql->sa, r, 
rel_projections(v->sql, r, NULL, 1, 1));
for (node *n = rel->exps->h; n; n = n->next) {
sql_exp *e = n->data;
diff --git a/sql/test/SQLancer/Tests/sqlancer09.sql 
b/sql/test/SQLancer/Tests/sqlancer09.sql
--- a/sql/test/SQLancer/Tests/sqlancer09.sql
+++ b/sql/test/SQLancer/Tests/sqlancer09.sql
@@ -228,12 +228,15 @@ nullif(0.322, 4.3)), 0.31),
 (abs(6363), -34)) with check option;
 create view v32(vc0, vc1) as (select distinct cast(((-4)*(-4)) as tinyint), 
coalesce(nullif(r'p', r'E]T'),
 sql_max(r'f)6_', r'.u'), cast(true as string(679)), case -3 when -5 then r'94' 
end)
-group by substr(r'FALSE', 6318585747));
+group by substr(r'FALSE', 2));
 
 select sum(all abs(interval '-27135172' second)) from v27 full outer join 
(select all scale_up(0.131, 12375.0)
-from v32 cross join (values (round(0.23, 24055))) as sub0
+from v32 cross join (values (round(0.23, 10))) as sub0
 where ((v32.vc0)=(0.32))) as sub0 on case 3 when
 case 21 when 12524 then -3 when r'1092027064' then 3692 else 18 end then case 
when true then true else true end
 when case when true then 0.33 end then (6363) not in (3,
 -3, v27.vc0, -3) end;
+
+create or replace view v27(vc0) as (values (4.3), (63));
+select 1 from v27 full outer join (select 1) as sub0 on case 3 when 0.33 then 
(2) in (v27.vc0, 9) end;
 ROLLBACK;
diff --git a/sql/test/SQLancer/Tests/sqlancer09.stable.out 
b/sql/test/SQLancer/Tests/sqlancer09.stable.out
--- a/sql/test/SQLancer/Tests/sqlancer09.stable.out
+++ b/sql/test/SQLancer/Tests/sqlancer09.stable.out
@@ -234,6 +234,34 @@ stdout of test 'sqlancer09` in directory
 % 1 # length
 [ 0]
 #ROLLBACK;
+#START TRANSACTION;
+#create view v27(vc0, vc1) as (values (sql_max(case when false then -4 when 
false then 96 when true then 19491 end,
+#nullif(0.322, 4.3)), 0.31),
+#(abs(6363), -34)) with check option;
+#create view v32(vc0, vc1) as (select distinct cast(((-4)*(-4)) as tinyint), 
coalesce(nullif(r'p', r'E]T'),
+#sql_max(r'f)6_', r'.u'), cast(true as string(679)), case -3 when -5 then 
r'94' end)
+#group by substr(r'FALSE', 2));
+#select sum(all abs(interval '-27135172' second)) from v27 full outer join 
(select all scale_up(0.131, 12375.0)
+#from v32 cross join (values (round(0.23, 10))) as sub0
+#where ((v32.vc0)=(0.32))) as sub0 on case 3 when
+#case 21 when 12524 then -3 when r'1092027064' then 3692 else 18 end then case 
when true then true else true end
+#when case when true then 0.33 end then (6363) not in (3,
+#-3, v27.vc0, -3) end;
+% .%21 # table_name
+% %21 # name
+% sec_interval # type
+% 12 # length
+[ 54270344.000 ]
+#create or replace view v27(vc0) as (values (4.3), (63));
+#select 1 from v27 full outer join (select 1) as sub0 on case 3 when 0.33 then 
(2) in (v27.vc0, 9) end;
+% .%12 # table_name
+% %12 # name
+% tinyint # type
+% 1 # length
+[ 1]
+[ 1]
+[ 1]
+#ROLLBACK;
 
 # 14:35:03 >  
 # 14:35:03 >  "Done."

MonetDB: Oct2020 - A user should be able to see all its queries ...

2021-01-07 Thread Ying Zhang
Changeset: e110b6e1a2b9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e110b6e1a2b9
Added Files:
sql/test/sysmon/Tests/sys_queue_multisessions.SQL.py
sql/test/sysmon/Tests/sys_queue_multisessions.stable.err
sql/test/sysmon/Tests/sys_queue_multisessions.stable.out
Modified Files:
monetdb5/modules/mal/sysmon.c
sql/test/sysmon/Tests/All
Branch: Oct2020
Log Message:

A user should be able to see all its queries from all current sessions of this
user in sys.queue() output.


diffs (169 lines):

diff --git a/monetdb5/modules/mal/sysmon.c b/monetdb5/modules/mal/sysmon.c
--- a/monetdb5/modules/mal/sysmon.c
+++ b/monetdb5/modules/mal/sysmon.c
@@ -164,7 +164,6 @@ SYSMONqueue(Client cntxt, MalBlkPtr mb, 
timestamp tsn;
str msg = MAL_SUCCEED;
 
-   (void) cntxt;
(void) mb;
sz = (BUN) qsize;   // reserve space for all tuples in QRYqueue
tag = COLnew(0, TYPE_lng, sz, TRANSIENT);
@@ -196,7 +195,8 @@ SYSMONqueue(Client cntxt, MalBlkPtr mb, 
if( i == qhead)
break;
}
-   if( QRYqueue[i].query && (cntxt->user == MAL_ADMIN || 
cntxt->idx == QRYqueue[i].idx) ){
+   if( QRYqueue[i].query && (cntxt->user == MAL_ADMIN || 
+   strcmp(cntxt->username, 
QRYqueue[i].username) == 0) ){
qtag = (lng) QRYqueue[i].tag;
if (BUNappend(tag, , false) != GDK_SUCCEED)
goto bailout;
@@ -272,11 +272,8 @@ SYSMONpause(Client cntxt, MalBlkPtr mb, 
 {
bool set = false;
lng tag = 0;
-   (void) mb;
-   (void) stk;
-   (void) pci;
 
-   switch( getArgType(mb,pci,1)){
+   switch(getArgType(mb,pci,1)){
case TYPE_bte: tag = *getArgReference_bte(stk,pci,1); break;
case TYPE_sht: tag = *getArgReference_sht(stk,pci,1); break;
case TYPE_int: tag = *getArgReference_int(stk,pci,1); break;
@@ -308,11 +305,8 @@ SYSMONresume(Client cntxt, MalBlkPtr mb,
 {
bool set = false;
lng tag = 0;
-   (void) mb;
-   (void) stk;
-   (void) pci;
 
-   switch( getArgType(mb,pci,1)){
+   switch(getArgType(mb,pci,1)){
case TYPE_bte: tag = *getArgReference_bte(stk,pci,1); break;
case TYPE_sht: tag = *getArgReference_sht(stk,pci,1); break;
case TYPE_int: tag = *getArgReference_int(stk,pci,1); break;
@@ -344,11 +338,8 @@ SYSMONstop(Client cntxt, MalBlkPtr mb, M
 {
bool set = false;
lng tag = 0;
-   (void) mb;
-   (void) stk;
-   (void) pci;
 
-   switch( getArgType(mb,pci,1)){
+   switch(getArgType(mb,pci,1)){
case TYPE_bte: tag = *getArgReference_bte(stk,pci,1); break;
case TYPE_sht: tag = *getArgReference_sht(stk,pci,1); break;
case TYPE_int: tag = *getArgReference_int(stk,pci,1); break;
diff --git a/sql/test/sysmon/Tests/All b/sql/test/sysmon/Tests/All
--- a/sql/test/sysmon/Tests/All
+++ b/sql/test/sysmon/Tests/All
@@ -4,3 +4,4 @@ sys_queue_rotate
 HAVE_PYMONETDB?sys_queue_expand
 HAVE_PYMONETDB?sys_user_statistics
 drop_sleep
+sys_queue_multisessions
diff --git a/sql/test/sysmon/Tests/sys_queue_multisessions.SQL.py 
b/sql/test/sysmon/Tests/sys_queue_multisessions.SQL.py
new file mode 100644
--- /dev/null
+++ b/sql/test/sysmon/Tests/sys_queue_multisessions.SQL.py
@@ -0,0 +1,58 @@
+###
+# Check that an ordinary user can see queries in all its sessions
+###
+import pymonetdb
+import os
+
+DB = os.environ['TSTDB']
+PORT = int(os.environ['MAPIPORT'])
+HOST = os.environ['MAPIHOST']
+USR = 'u1'
+PSWD = 'u1'
+
+try:
+mdbdbh = pymonetdb.connect(database=DB, port=PORT, hostname=HOST, 
autocommit=True)
+mdbcursor = mdbdbh.cursor()
+mdbcursor.execute('create role r1;')
+mdbcursor.execute('create schema s1 authorization r1;')
+mdbcursor.execute('create user u1 with password \'u1\' name \'u1\' schema 
s1;')
+mdbcursor.execute('grant r1 to u1;')
+
+# Let the user establish several connections to the server
+usrdbh1 = pymonetdb.connect(database=DB, port=PORT, hostname=HOST,
+username=USR, password=PSWD, autocommit=True)
+usrcursor1 = usrdbh1.cursor()
+
+usrdbh2 = pymonetdb.connect(database=DB, port=PORT, hostname=HOST,
+username=USR, password=PSWD, autocommit=True)
+usrcursor2 = usrdbh2.cursor()
+
+# NB, we only have 4-1 slots in sys.queue to use because of the
+# SingleServer config in this test
+usrcursor1.execute('select \'u1 session_1\';')
+usrcursor2.execute('select \'u1 session_2\';')
+
+# Check that the sys.queue() output of each user contains queries from both
+# connections
+usrcursor1.execute('select username, sessionid  from sys.queue() group by 
username, sessionid order by sessionid;')
+for row in usrcursor1.fetchall():
+print(row)
+

MonetDB: Oct2020 - New SQLancer crash at rel_bin. Looking into it

2021-01-07 Thread Pedro Ferreira
Changeset: 6b96ea0a94a1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6b96ea0a94a1
Modified Files:
sql/test/SQLancer/Tests/sqlancer09.sql
Branch: Oct2020
Log Message:

New SQLancer crash at rel_bin. Looking into it


diffs (23 lines):

diff --git a/sql/test/SQLancer/Tests/sqlancer09.sql 
b/sql/test/SQLancer/Tests/sqlancer09.sql
--- a/sql/test/SQLancer/Tests/sqlancer09.sql
+++ b/sql/test/SQLancer/Tests/sqlancer09.sql
@@ -221,3 +221,19 @@ coalesce(cast(t2.c2 as string), case 2 w
 when v2.vc1 then r'-1402390265' else r't࿕}rj}&' end, greatest(r'1', r'I'''))) 
from t2, v2, v3) as sub0 on
 greatest("isauuid"(r'-209719663'), 
((false)or(true)))or(false)))or(false as res;
 ROLLBACK;
+
+START TRANSACTION;
+create view v27(vc0, vc1) as (values (sql_max(case when false then -4 when 
false then 96 when true then 19491 end,
+nullif(0.322, 4.3)), 0.31),
+(abs(6363), -34)) with check option;
+create view v32(vc0, vc1) as (select distinct cast(((-4)*(-4)) as tinyint), 
coalesce(nullif(r'p', r'E]T'),
+sql_max(r'f)6_', r'.u'), cast(true as string(679)), case -3 when -5 then r'94' 
end)
+group by substr(r'FALSE', 6318585747));
+
+select sum(all abs(interval '-27135172' second)) from v27 full outer join 
(select all scale_up(0.131, 12375.0)
+from v32 cross join (values (round(0.23, 24055))) as sub0
+where ((v32.vc0)=(0.32))) as sub0 on case 3 when
+case 21 when 12524 then -3 when r'1092027064' then 3692 else 18 end then case 
when true then true else true end
+when case when true then 0.33 end then (6363) not in (3,
+-3, v27.vc0, -3) end;
+ROLLBACK;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: nospare - merged with default

2021-01-07 Thread Niels Nes
Changeset: c412fe1e990b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c412fe1e990b
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_statement.c
sql/server/rel_rel.c
Branch: nospare
Log Message:

merged with default


diffs (truncated from 644 to 300 lines):

diff --git a/debian/libmonetdb-client12.install 
b/debian/libmonetdb-client12.install
--- a/debian/libmonetdb-client12.install
+++ b/debian/libmonetdb-client12.install
@@ -1,2 +1,1 @@
-debian/tmp/usr/lib/x86_64-linux-gnu/libmapi.so.12 /usr/lib/x86_64-linux-gnu
-debian/tmp/usr/lib/x86_64-linux-gnu/libmapi.so.12.* /usr/lib/x86_64-linux-gnu
+debian/tmp/usr/lib/x86_64-linux-gnu/libmapi.so.* /usr/lib/x86_64-linux-gnu
diff --git a/debian/libmonetdb-stream14.install 
b/debian/libmonetdb-stream14.install
--- a/debian/libmonetdb-stream14.install
+++ b/debian/libmonetdb-stream14.install
@@ -1,2 +1,1 @@
-debian/tmp/usr/lib/x86_64-linux-gnu/libstream.so.14 usr/lib/x86_64-linux-gnu
-debian/tmp/usr/lib/x86_64-linux-gnu/libstream.so.14.* usr/lib/x86_64-linux-gnu
+debian/tmp/usr/lib/x86_64-linux-gnu/libstream.so.* usr/lib/x86_64-linux-gnu
diff --git a/debian/libmonetdb21.install b/debian/libmonetdb21.install
--- a/debian/libmonetdb21.install
+++ b/debian/libmonetdb21.install
@@ -1,2 +1,1 @@
-debian/tmp/usr/lib/x86_64-linux-gnu/libbat.so.21 usr/lib/x86_64-linux-gnu
-debian/tmp/usr/lib/x86_64-linux-gnu/libbat.so.21.* usr/lib/x86_64-linux-gnu
+debian/tmp/usr/lib/x86_64-linux-gnu/libbat.so.* usr/lib/x86_64-linux-gnu
diff --git a/debian/libmonetdbe1.install b/debian/libmonetdbe1.install
--- a/debian/libmonetdbe1.install
+++ b/debian/libmonetdbe1.install
@@ -1,2 +1,1 @@
-debian/tmp/usr/lib/x86_64-linux-gnu/libmonetdbe.so.1 usr/lib/x86_64-linux-gnu
-debian/tmp/usr/lib/x86_64-linux-gnu/libmonetdbe.so.1.* usr/lib/x86_64-linux-gnu
+debian/tmp/usr/lib/x86_64-linux-gnu/libmonetdbe.so.* usr/lib/x86_64-linux-gnu
diff --git a/monetdb5/modules/atoms/uuid.c b/monetdb5/modules/atoms/uuid.c
--- a/monetdb5/modules/atoms/uuid.c
+++ b/monetdb5/modules/atoms/uuid.c
@@ -407,7 +407,7 @@ UUIDhash(const void *v)
(ulng) u->u[10] << 40 | (ulng) u->u[11] << 32 |
(ulng) u->u[12] << 24 | (ulng) u->u[13] << 16 |
(ulng) u->u[14] << 8 | (ulng) u->u[15];
-   /* we're not using mix_hge since this we way get the same result
+   /* we're not using mix_hge since this way we get the same result
 * on systems with and without 128 bit integer support */
return (BUN) (mix_lng(u1) ^ mix_lng(u2));
 }
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -31,6 +31,13 @@ static stmt * subrel_bin(backend *be, sq
 
 static stmt *check_types(backend *be, sql_subtype *ct, stmt *s, check_type 
tpe);
 
+static void
+clean_mal_statements(backend *be, int oldstop, int oldvtop)
+{
+   MSresetInstructions(be->mb, oldstop);
+   freeVariables(be->client, be->mb, NULL, oldvtop);
+}
+
 static stmt *
 stmt_selectnil( backend *be, stmt *col)
 {
@@ -429,6 +436,8 @@ handle_in_exps(backend *be, sql_exp *ce,
 
/* The actual in-value-list should not contain duplicates to 
ensure that final join results are unique. */
s = distinct_value_list(be, nl, _null_value);
+   if (!s)
+   return NULL;
 
if (last_null_value) {
/* The actual in-value-list should not contain null 
values. */
@@ -1164,7 +1173,7 @@ exp_bin(backend *be, sql_exp *e, stmt *l
}   break;
case e_cmp: {
stmt *l = NULL, *r = NULL, *r2 = NULL;
-   int swapped = 0, is_select = 0;
+   int swapped = 0, is_select = 0, oldvtop, oldstop;
sql_exp *re = e->r, *re2 = e->f;
 
/* general predicate, select and join */
@@ -1177,10 +1186,13 @@ exp_bin(backend *be, sql_exp *e, stmt *l
ops = sa_list(sql->sa);
args = e->l;
for( n = args->h; n; n = n->next ) {
+   oldvtop = be->mb->vtop;
+   oldstop = be->mb->stop;
s = NULL;
if (!swapped)
s = exp_bin(be, n->data, left, NULL, 
grp, ext, cnt, NULL, depth+1, 0, push);
if (!s && (first || swapped)) {
+   clean_mal_statements(be, oldstop, 
oldvtop);
s = exp_bin(be, n->data, right, NULL, 
grp, ext, cnt, NULL, depth+1, 0, push);
swapped = 1;
}
@@ -1202,7 +1214,7 @@ exp_bin(backend *be, sql_exp *e, stmt *l
}
r = stmt_list(be, ops);
 
-   if (left 

MonetDB: nospare - small cleanup

2021-01-07 Thread Niels Nes
Changeset: a64f041b98b1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a64f041b98b1
Modified Files:
sql/include/sql_catalog.h
sql/storage/sql_catalog.c
sql/storage/store.c
Branch: nospare
Log Message:

small cleanup


diffs (127 lines):

diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -221,6 +221,39 @@ typedef struct changeset {
node *nelm;
 } changeset;
 
+typedef void *sql_store;
+
+#if 0
+extern void (destroy_fptr*)(sql_store *store, sql_base *b);
+
+/* unordered object set */
+typedef struct objectset {
+   int refcnt;
+   sql_allocator *sa;
+   destroy_fptr destroy;
+   struct list *objs;
+   struct sql_hash *map;
+} objectset;
+
+extern int /*ok, error (name existed) and conflict (added before) */ 
os_add(objectset *os, sql_trans *tr, const char *name, sql_base *b);
+extern int os_del(objectset *os, sql_trans *tr, const char *name, sql_base *b);
+extern int os_size(objectset *os, sql_trans *tr);
+extern int os_empty(objectset *os, sql_trans *tr);
+extern sql_base *os_find_name(objectset *os, sql_trans *tr, const char *name);
+extern sql_base *os_find_id(objectset *os, sql_trans *tr, sqlid id);
+/* iterating (for example for location functinos) */
+extern node *os_first(objectset *os, sql_trans *tr, const char *name);
+extern node *os_next(objectset *os, sql_trans *tr, node *cur, const char 
*name);
+
+/* ordered object list */
+typedef struct objectlist {
+   sql_allocator *sa;
+   destroy_fptr destroy;
+   struct list *objs;
+   struct sql_hash *map;
+} objectlist;
+#endif
+
 extern void cs_new(changeset * cs, sql_allocator *sa, fdestroy destroy);
 extern void cs_destroy(changeset * cs);
 extern void cs_add(changeset * cs, void *elm, int flag);
@@ -239,8 +272,6 @@ extern void cs_remove_node(changeset * c
 typedef void *backend_code;
 typedef size_t backend_stack;
 
-typedef void *sql_store;
-
 typedef struct sql_schema {
sql_base base;
sqlid auth_id;
diff --git a/sql/storage/sql_catalog.c b/sql/storage/sql_catalog.c
--- a/sql/storage/sql_catalog.c
+++ b/sql/storage/sql_catalog.c
@@ -328,7 +328,7 @@ find_sql_schema(sql_trans *tr, const cha
 {
if (tr->tmp && strcmp(sname, "tmp")==0)
return tr->tmp;
-   return _cs_find_name(>cat->schemas, sname);
+   return tr_find_name(tr, >cat->schemas, sname);
 }
 
 sql_schema *
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -4453,6 +4453,22 @@ sql_trans_create_schema(sql_trans *tr, c
return s;
 }
 
+static sql_schema*
+new_schema( sql_trans *tr, sql_schema *s, node *n)
+{
+   if (n && s->base.ts == tr->tid)
+   return s;
+   sql_schema *ds = SA_ZNEW(tr->sa, sql_schema);
+   *ds = *s;
+   ds->base.ts = tr->tid;
+   ds->base.older = >base;
+   s->base.newer = >base;
+   trans_add(tr, >base, NULL, _gc_schema, _commit_schema);
+   if (n) //n->data = ds;
+   list_update_data(tr->cat->schemas.set, n, ds);
+   return ds;
+}
+
 sql_schema*
 sql_trans_rename_schema(sql_trans *tr, sqlid id, const char *new_name)
 {
@@ -4464,10 +4480,19 @@ sql_trans_rename_schema(sql_trans *tr, s
 
assert(!strNil(new_name));
 
+   /* delete schema, add schema */
+   sql_schema *ds = new_schema(tr, s, n);
+   ds->base.deleted = 1;
+   sql_schema *ns = new_schema(tr, s, NULL);
+   ns->base.name = sa_strdup(tr->sa, new_name);
+   cs_add(>cat->schemas, ns, 0);
+
+#if 0
list_hash_delete(tr->cat->schemas.set, s, NULL); /* has to re-hash the 
entry in the changeset */
s->base.name = sa_strdup(tr->sa, new_name);
if (!list_hash_add(tr->cat->schemas.set, s, NULL))
return NULL;
+#endif
 
rid = store->table_api.column_find_row(tr, find_sql_column(sysschema, 
"id"), >base.id, NULL);
assert(!is_oid_nil(rid));
@@ -4511,14 +4536,8 @@ sql_trans_drop_schema(sql_trans *tr, sql
sql_trans_drop_any_comment(tr, s->base.id);
sql_trans_drop_obj_priv(tr, s->base.id);
 
-   sql_schema *ds = SA_ZNEW(tr->sa, sql_schema);
-   *ds = *s;
-   ds->base.ts = tr->tid;
-   ds->base.deleted = 1;
-   ds->base.older = >base;
-   s->base.newer = >base;
-   trans_add(tr, >base, NULL, _gc_schema, _commit_schema);
-   list_update_data(tr->cat->schemas.set, n, ds);
+   s = new_schema(tr, s, n);
+   s->base.deleted = 1;
//cs_del(>cat->schemas, n, s->base.flags);
 
if (drop_action == DROP_CASCADE_START && tr->dropped) {
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list