MonetDB: monetdbe-proxy - Approve dependency tests.
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...
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.
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,
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...
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...
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...
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.
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....
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...
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.
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.
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.
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.
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
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
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
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...
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.
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
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...
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,...
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 ...
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
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
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
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