Changeset: 3875fe65e08f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3875fe65e08f
Modified Files:
sql/backends/monet5/sql_upgrades.c
sql/scripts/52_describe.sql
sql/scripts/76_dump.sql
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.int128
Branch: default
Log Message:
Use fully qualified table and function names in system functions.
diffs (truncated from 3046 to 300 lines):
diff --git a/sql/backends/monet5/sql_upgrades.c
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -2527,16 +2527,16 @@ sql_update_default(Client c, mvc *sql, c
" END;\n"
"END;\n"
"\n"
- "CREATE FUNCTION sys.SQ (s STRING)
RETURNS STRING BEGIN RETURN ' ''' || s || ''' '; END;\n"
- "CREATE FUNCTION sys.DQ (s STRING)
RETURNS STRING BEGIN RETURN '\"' || s || '\"'; END; --TODO: Figure out why this
breaks with the space\n"
- "CREATE FUNCTION sys.FQN(s STRING, t
STRING) RETURNS STRING BEGIN RETURN DQ(s) || '.' || DQ(t); END;\n"
- "CREATE FUNCTION sys.ALTER_TABLE(s
STRING, t STRING) RETURNS STRING BEGIN RETURN 'ALTER TABLE ' || FQN(s, t) || '
'; END;\n"
+ "CREATE FUNCTION sys.SQ (s STRING)
RETURNS STRING BEGIN RETURN ' ''' || sys.replace(s,'''','''''') || ''' ';
END;\n"
+ "CREATE FUNCTION sys.DQ (s STRING)
RETURNS STRING BEGIN RETURN '\"' || sys.replace(s,'\"','\"\"') || '\"'; END;
--TODO: Figure out why this breaks with the space\n"
+ "CREATE FUNCTION sys.FQN(s STRING, t
STRING) RETURNS STRING BEGIN RETURN sys.DQ(s) || '.' || sys.DQ(t); END;\n"
+ "CREATE FUNCTION sys.ALTER_TABLE(s
STRING, t STRING) RETURNS STRING BEGIN RETURN 'ALTER TABLE ' || sys.FQN(s, t)
|| ' '; END;\n"
"\n"
"--We need pcre to implement a header
guard which means adding the schema of an object explicitely to its
identifier.\n"
"CREATE FUNCTION sys.replace_first(ori
STRING, pat STRING, rep STRING, flg STRING) RETURNS STRING EXTERNAL NAME
\"pcre\".\"replace_first\";\n"
"CREATE FUNCTION sys.schema_guard(sch
STRING, nme STRING, stmt STRING) RETURNS STRING BEGIN\n"
"RETURN\n"
- " SELECT replace_first(stmt,
'(\\\\s*\"?' || sch || '\"?\\\\s*\\\\.|)\\\\s*\"?' || nme || '\"?\\\\s*', ' '
|| FQN(sch, nme) || ' ', 'imsx');\n"
+ " SELECT sys.replace_first(stmt,
'(\\\\s*\"?' || sch || '\"?\\\\s*\\\\.|)\\\\s*\"?' || nme || '\"?\\\\s*', ' '
|| sys.FQN(sch, nme) || ' ', 'imsx');\n"
"END;\n"
"\n"
"CREATE VIEW sys.describe_constraints
AS\n"
@@ -2585,7 +2585,7 @@ sql_update_default(Client c, mvc *sql, c
" t.name tbl,\n"
" c.name col,\n"
" c.\"default\" def\n"
- " FROM schemas s, tables t, columns
c\n"
+ " FROM sys.schemas s, sys.tables t,
sys.columns c\n"
" WHERE\n"
" s.id = t.schema_id AND\n"
" t.id = c.table_id AND\n"
@@ -2647,7 +2647,7 @@ sql_update_default(Client c, mvc *sql, c
" END ||\n"
" CASE\n"
" WHEN
bit_and(tp.type, 4) = 4 --column expression\n"
- " THEN 'ON ' || '('
|| (SELECT DQ(c.name) || ')' FROM sys.columns c WHERE c.id = tp.column_id)\n"
+ " THEN 'ON ' || '('
|| (SELECT sys.DQ(c.name) || ')' FROM sys.columns c WHERE c.id =
tp.column_id)\n"
" ELSE 'USING ' ||
'(' || tp.expression || ')' --generic expression\n"
" END\n"
" ELSE
--read only partition merge table.\n"
@@ -2658,7 +2658,7 @@ sql_update_default(Client c, mvc *sql, c
"\n"
"--TODO: gives mergejoin errors when
inlined\n"
"CREATE FUNCTION
sys.get_remote_table_expressions(s STRING, t STRING) RETURNS STRING BEGIN\n"
- " RETURN SELECT ' ON ' || SQ(uri) ||
' WITH USER ' || SQ(username) || ' ENCRYPTED PASSWORD ' || SQ(\"hash\") FROM
sys.remote_table_credentials(s ||'.' || t);\n"
+ " RETURN SELECT ' ON ' ||
sys.SQ(uri) || ' WITH USER ' || sys.SQ(username) || ' ENCRYPTED PASSWORD ' ||
sys.SQ(\"hash\") FROM sys.remote_table_credentials(s ||'.' || t);\n"
"END;\n"
"\n"
"CREATE VIEW sys.describe_tables AS\n"
@@ -2670,7 +2670,7 @@ sql_update_default(Client c, mvc *sql, c
" (SELECT\n"
" ' (' ||\n"
" GROUP_CONCAT(\n"
- " DQ(c.name) || ' ' ||\n"
+ " sys.DQ(c.name) || ' '
||\n"
"
sys.describe_type(c.type, c.type_digits, c.type_scale) ||\n"
" ifthenelse(c.\"null\"
= 'false', ' NOT NULL', '')\n"
" , ', ') || ')'\n"
@@ -2686,7 +2686,7 @@ sql_update_default(Client c, mvc *sql, c
" ELSE\n"
" ''\n"
" END opt\n"
- " FROM sys.schemas s, table_types
ts, sys.tables t\n"
+ " FROM sys.schemas s,
sys.table_types ts, sys.tables t\n"
" WHERE ts.table_type_name IN
('TABLE', 'VIEW', 'MERGE TABLE', 'REMOTE TABLE', 'REPLICA TABLE')\n"
" AND t.system = FALSE\n"
" AND s.id = t.schema_id\n"
@@ -2709,32 +2709,32 @@ sql_update_default(Client c, mvc *sql, c
" o.nme fqn,\n"
" c.remark rem\n"
" FROM (\n"
- " SELECT id, 'SCHEMA',
DQ(name) FROM schemas\n"
+ " SELECT id, 'SCHEMA',
sys.DQ(name) FROM sys.schemas\n"
"\n"
" UNION ALL\n"
"\n"
- " SELECT t.id, CASE WHEN
ts.table_type_name = 'VIEW' THEN 'VIEW' ELSE 'TABLE' END, FQN(s.name, t.name)\n"
- " FROM schemas s JOIN tables
t ON s.id = t.schema_id JOIN table_types ts ON t.type = ts.table_type_id\n"
+ " SELECT t.id, CASE WHEN
ts.table_type_name = 'VIEW' THEN 'VIEW' ELSE 'TABLE' END, sys.FQN(s.name,
t.name)\n"
+ " FROM sys.schemas s JOIN
sys.tables t ON s.id = t.schema_id JOIN sys.table_types ts ON t.type =
ts.table_type_id\n"
" WHERE NOT s.name <>
'tmp'\n"
"\n"
" UNION ALL\n"
"\n"
- " SELECT c.id, 'COLUMN',
FQN(s.name, t.name) || '.' || DQ(c.name) FROM sys.columns c, sys.tables t,
sys.schemas s WHERE c.table_id = t.id AND t.schema_id = s.id\n"
+ " SELECT c.id, 'COLUMN',
sys.FQN(s.name, t.name) || '.' || sys.DQ(c.name) FROM sys.columns c, sys.tables
t, sys.schemas s WHERE c.table_id = t.id AND t.schema_id = s.id\n"
"\n"
" UNION ALL\n"
"\n"
- " SELECT idx.id, 'INDEX',
FQN(s.name, idx.name) FROM sys.idxs idx, sys._tables t, sys.schemas s WHERE
idx.table_id = t.id AND t.schema_id = s.id\n"
+ " SELECT idx.id, 'INDEX',
sys.FQN(s.name, idx.name) FROM sys.idxs idx, sys._tables t, sys.schemas s WHERE
idx.table_id = t.id AND t.schema_id = s.id\n"
"\n"
" UNION ALL\n"
"\n"
- " SELECT seq.id, 'SEQUENCE',
FQN(s.name, seq.name) FROM sys.sequences seq, schemas s WHERE seq.schema_id =
s.id\n"
+ " SELECT seq.id, 'SEQUENCE',
sys.FQN(s.name, seq.name) FROM sys.sequences seq, sys.schemas s WHERE
seq.schema_id = s.id\n"
"\n"
" UNION ALL\n"
"\n"
- " SELECT f.id,
ft.function_type_keyword, FQN(s.name, f.name) FROM functions f, function_types
ft, schemas s WHERE f.type = ft.function_type_id AND f.schema_id = s.id\n"
+ " SELECT f.id,
ft.function_type_keyword, sys.FQN(s.name, f.name) FROM sys.functions f,
sys.function_types ft, sys.schemas s WHERE f.type = ft.function_type_id AND
f.schema_id = s.id\n"
"\n"
" ) AS o(id, tpe, nme)\n"
- " JOIN comments c ON c.id =
o.id;\n"
+ " JOIN sys.comments c ON
c.id = o.id;\n"
"\n"
"CREATE VIEW
sys.fully_qualified_functions AS\n"
" WITH fqn(id, tpe, sig, num) AS\n"
@@ -2748,7 +2748,7 @@ sql_update_default(Client c, mvc *sql, c
" s.name || '.' ||
f.name || '(' || group_concat(describe_type(a.type, a.type_digits,
a.type_scale), ',') OVER (PARTITION BY f.id ORDER BY a.number) || ')'\n"
" END,\n"
" a.number\n"
- " FROM schemas s,
sys.function_types ft, functions f LEFT JOIN args a ON f.id = a.func_id\n"
+ " FROM sys.schemas s,
sys.function_types ft, sys.functions f LEFT JOIN sys.args a ON f.id =
a.func_id\n"
" WHERE s.id= f.schema_id AND
f.type = ft.function_type_id\n"
" )\n"
" SELECT\n"
@@ -2780,7 +2780,7 @@ sql_update_default(Client c, mvc *sql, c
" g.name g_nme,\n"
" p.grantable grantable\n"
" FROM\n"
- " privileges p LEFT JOIN\n"
+ " sys.privileges p LEFT JOIN\n"
" (\n"
" SELECT t.id, s.name || '.' ||
t.name , 'TABLE'\n"
" from sys.schemas s,
sys.tables t where s.id = t.schema_id\n"
@@ -2789,7 +2789,7 @@ sql_update_default(Client c, mvc *sql, c
" FROM sys.schemas s,
sys.tables t, sys.columns c where s.id = t.schema_id AND t.id = c.table_id\n"
" UNION ALL\n"
" SELECT f.id, f.nme,
f.tpe\n"
- " FROM
fully_qualified_functions f\n"
+ " FROM
sys.fully_qualified_functions f\n"
" ) o(id, nme, tpe) ON o.id =
p.obj_id,\n"
" sys.privilege_codes pc,\n"
" auths a, auths g\n"
@@ -2841,10 +2841,10 @@ sql_update_default(Client c, mvc *sql, c
" FROM \n"
" (WITH\n"
" tp(\"type\", table_id) AS\n"
- " (SELECT CASE WHEN
(table_partitions.\"type\" & 2) = 2 THEN 'VALUES' ELSE 'RANGE' END,
table_partitions.table_id FROM table_partitions),\n"
+ " (SELECT CASE WHEN
(table_partitions.\"type\" & 2) = 2 THEN 'VALUES' ELSE 'RANGE' END,
table_partitions.table_id FROM sys.table_partitions),\n"
" subq(m_tid, p_mid, \"type\",
m_sch, m_tbl, p_sch, p_tbl) AS\n"
" (SELECT m_t.id, p_m.id,
m_t.\"type\", m_s.name, m_t.name, p_s.name, p_m.name\n"
- " FROM schemas m_s, sys._tables
m_t, dependencies d, schemas p_s, sys._tables p_m\n"
+ " FROM sys.schemas m_s,
sys._tables m_t, sys.dependencies d, sys.schemas p_s, sys._tables p_m\n"
" WHERE m_t.\"type\" IN (3, 6)\n"
" AND m_t.schema_id =
m_s.id\n"
" AND m_s.name <> 'tmp'\n"
@@ -2860,20 +2860,20 @@ sql_update_default(Client c, mvc *sql, c
" subq.p_tbl,\n"
" tp.\"type\" AS p_raw_type,\n"
" CASE WHEN tp.\"type\" =
'VALUES'\n"
- " THEN (SELECT
GROUP_CONCAT(vp.value, ',')FROM value_partitions vp WHERE vp.table_id =
subq.p_mid)\n"
+ " THEN (SELECT
GROUP_CONCAT(vp.value, ',')FROM sys.value_partitions vp WHERE vp.table_id =
subq.p_mid)\n"
" ELSE NULL\n"
" END AS pvalues,\n"
" CASE WHEN tp.\"type\" =
'RANGE'\n"
- " THEN (SELECT minimum FROM
range_partitions rp WHERE rp.table_id = subq.p_mid)\n"
+ " THEN (SELECT minimum FROM
sys.range_partitions rp WHERE rp.table_id = subq.p_mid)\n"
" ELSE NULL\n"
" END AS minimum,\n"
" CASE WHEN tp.\"type\" =
'RANGE'\n"
- " THEN (SELECT maximum FROM
range_partitions rp WHERE rp.table_id = subq.p_mid)\n"
+ " THEN (SELECT maximum FROM
sys.range_partitions rp WHERE rp.table_id = subq.p_mid)\n"
" ELSE NULL\n"
" END AS maximum,\n"
" CASE WHEN tp.\"type\" =
'VALUES'\n"
- " THEN EXISTS(SELECT
vp.value FROM value_partitions vp WHERE vp.table_id = subq.p_mid AND vp.value
IS NULL)\n"
- " ELSE (SELECT rp.with_nulls
FROM range_partitions rp WHERE rp.table_id = subq.p_mid)\n"
+ " THEN EXISTS(SELECT
vp.value FROM sys.value_partitions vp WHERE vp.table_id = subq.p_mid AND
vp.value IS NULL)\n"
+ " ELSE (SELECT rp.with_nulls
FROM sys.range_partitions rp WHERE rp.table_id = subq.p_mid)\n"
" END AS with_nulls\n"
" FROM \n"
" subq LEFT OUTER JOIN tp\n"
@@ -2901,7 +2901,7 @@ sql_update_default(Client c, mvc *sql, c
" s.name sch,\n"
" f.name fun,\n"
" f.func def\n"
- " FROM functions f JOIN schemas s ON
f.schema_id = s.id WHERE s.name <> 'tmp' AND NOT f.system;\n"
+ " FROM sys.functions f JOIN
sys.schemas s ON f.schema_id = s.id WHERE s.name <> 'tmp' AND NOT f.system;\n"
"\n"
"CREATE FUNCTION
sys.describe_columns(schemaName string, tableName string)\n"
" RETURNS TABLE(name string, type
string, digits integer, scale integer, Nulls boolean, cDefault string, number
integer, sqltype string, remark string)\n"
@@ -2969,84 +2969,84 @@ sql_update_default(Client c, mvc *sql, c
"\n"
"CREATE VIEW
sys.dump_table_constraint_type AS\n"
" SELECT\n"
- " 'ALTER TABLE ' || DQ(sch) ||
'.' || DQ(tbl) ||\n"
- " ' ADD CONSTRAINT ' || DQ(con)
|| ' '||\n"
- " tpe || ' (' ||
GROUP_CONCAT(DQ(col), ', ') || ');' stmt\n"
- " FROM describe_constraints GROUP BY
sch, tbl, con, tpe;\n"
+ " 'ALTER TABLE ' || sys.DQ(sch)
|| '.' || sys.DQ(tbl) ||\n"
+ " ' ADD CONSTRAINT ' ||
sys.DQ(con) || ' '||\n"
+ " tpe || ' (' ||
GROUP_CONCAT(sys.DQ(col), ', ') || ');' stmt\n"
+ " FROM sys.describe_constraints
GROUP BY sch, tbl, con, tpe;\n"
"\n"
"CREATE VIEW sys.dump_indices AS\n"
" SELECT\n"
" 'CREATE ' || tpe || ' ' ||\n"
- " DQ(ind) || ' ON ' || DQ(sch)
|| '.' || DQ(tbl) ||\n"
+ " sys.DQ(ind) || ' ON ' ||
sys.DQ(sch) || '.' || sys.DQ(tbl) ||\n"
" '(' || GROUP_CONCAT(col) ||
');' stmt\n"
- " FROM describe_indices GROUP BY
ind, tpe, sch, tbl;\n"
+ " FROM sys.describe_indices GROUP BY
ind, tpe, sch, tbl;\n"
"\n"
"CREATE VIEW sys.dump_column_defaults
AS\n"
- " SELECT 'ALTER TABLE ' || FQN(sch,
tbl) || ' ALTER COLUMN ' || DQ(col) || ' SET DEFAULT ' || def || ';' stmt\n"
- " FROM describe_column_defaults;\n"
+ " SELECT 'ALTER TABLE ' ||
sys.FQN(sch, tbl) || ' ALTER COLUMN ' || sys.DQ(col) || ' SET DEFAULT ' || def
|| ';' stmt\n"
+ " FROM
sys.describe_column_defaults;\n"
"\n"
"CREATE VIEW sys.dump_foreign_keys AS\n"
" SELECT\n"
- " 'ALTER TABLE ' || DQ(fk_s) ||
'.'|| DQ(fk_t) || ' ADD CONSTRAINT ' || DQ(fk) || ' ' ||\n"
- " 'FOREIGN KEY(' ||
GROUP_CONCAT(DQ(fk_c), ',') ||') ' ||\n"
- " 'REFERENCES ' || DQ(pk_s) ||
'.' || DQ(pk_t) || '(' || GROUP_CONCAT(DQ(pk_c), ',') || ') ' ||\n"
+ " 'ALTER TABLE ' || sys.DQ(fk_s)
|| '.'|| sys.DQ(fk_t) || ' ADD CONSTRAINT ' || sys.DQ(fk) || ' ' ||\n"
+ " 'FOREIGN KEY(' ||
GROUP_CONCAT(sys.DQ(fk_c), ',') ||') ' ||\n"
+ " 'REFERENCES ' || sys.DQ(pk_s)
|| '.' || sys.DQ(pk_t) || '(' || GROUP_CONCAT(sys.DQ(pk_c), ',') || ') ' ||\n"
" 'ON DELETE ' || on_delete || '
ON UPDATE ' || on_update ||\n"
" ';' stmt\n"
- " FROM describe_foreign_keys GROUP
BY fk_s, fk_t, pk_s, pk_t, fk, on_delete, on_update;\n"
+ " FROM sys.describe_foreign_keys
GROUP BY fk_s, fk_t, pk_s, pk_t, fk, on_delete, on_update;\n"
"\n"
"CREATE VIEW sys.dump_partition_tables
AS\n"
" SELECT\n"
- " ALTER_TABLE(m_sch, m_tbl) || '
ADD TABLE ' || FQN(p_sch, p_tbl) ||\n"
+ " ALTER_TABLE(m_sch, m_tbl) || '
ADD TABLE ' || sys.FQN(p_sch, p_tbl) ||\n"
" CASE \n"
" WHEN tpe = 'VALUES' THEN '
AS PARTITION IN (' || pvalues || ')'\n"
- " WHEN tpe = 'RANGE' THEN '
AS PARTITION FROM ' || ifthenelse(minimum IS NOT NULL, SQ(minimum), 'RANGE
MINVALUE') || ' TO ' || ifthenelse(maximum IS NOT NULL, SQ(maximum), 'RANGE
MAXVALUE')\n"
+ " WHEN tpe = 'RANGE' THEN '
AS PARTITION FROM ' || ifthenelse(minimum IS NOT NULL, sys.SQ(minimum), 'RANGE
MINVALUE') || ' TO ' || ifthenelse(maximum IS NOT NULL, sys.SQ(maximum), 'RANGE
MAXVALUE')\n"
" WHEN tpe = 'FOR NULLS'
THEN ' AS PARTITION FOR NULL VALUES'\n"
" ELSE '' --'READ ONLY'\n"
" END ||\n"
" CASE WHEN tpe in ('VALUES',
'RANGE') AND with_nulls THEN ' WITH NULL VALUES' ELSE '' END ||\n"
" ';' stmt\n"
- " FROM describe_partition_tables;\n"
+ " FROM
sys.describe_partition_tables;\n"
"\n"
"CREATE VIEW sys.dump_sequences AS\n"
" SELECT\n"
- " 'CREATE SEQUENCE ' || FQN(sch,
seq) || ' AS BIGINT ' ||\n"
+ " 'CREATE SEQUENCE ' ||
sys.FQN(sch, seq) || ' AS BIGINT ' ||\n"
" CASE WHEN \"s\" <> 0 THEN
'START WITH ' || \"rs\" ELSE '' END ||\n"
" CASE WHEN \"inc\" <> 1 THEN '
INCREMENT BY ' || \"inc\" ELSE '' END ||\n"
" CASE WHEN \"mi\" <> 0 THEN '
MINVALUE ' || \"mi\" ELSE '' END ||\n"
" CASE WHEN \"ma\" <> 0 THEN '
MAXVALUE ' || \"ma\" ELSE '' END ||\n"
" CASE WHEN \"cache\" <> 1 THEN
' CACHE ' || \"cache\" ELSE '' END ||\n"
" CASE WHEN \"cycle\" THEN '
CYCLE' ELSE '' END || ';' stmt\n"
- " FROM describe_sequences;\n"
+ " FROM sys.describe_sequences;\n"
"\n"
"CREATE VIEW sys.dump_start_sequences
AS\n"
" SELECT\n"
" 'UPDATE sys.sequences seq SET
start = ' || s ||\n"
- " ' WHERE name = ' || SQ(seq)
||\n"
- " ' AND schema_id = (SELECT s.id
FROM sys.schemas s WHERE s.name = ' || SQ(sch) || ');' stmt\n"
- " FROM describe_sequences;\n"
+ " ' WHERE name = ' ||
sys.SQ(seq) ||\n"
+ " ' AND schema_id = (SELECT s.id
FROM sys.schemas s WHERE s.name = ' || sys.SQ(sch) || ');' stmt\n"
+ " FROM sys.describe_sequences;\n"
"\n"
"CREATE VIEW sys.dump_functions AS\n"
- " SELECT f.o o, schema_guard(f.sch,
f.fun, f.def) stmt FROM describe_functions f;\n"
+ " SELECT f.o o, schema_guard(f.sch,
f.fun, f.def) stmt FROM sys.describe_functions f;\n"
"\n"
"CREATE VIEW sys.dump_tables AS\n"
" SELECT\n"
" t.o o,\n"
" CASE\n"
" WHEN t.typ <> 'VIEW'
THEN\n"
- " 'CREATE ' || t.typ ||
' ' || FQN(t.sch, t.tab) || t.col || t.opt || ';'\n"
+ " 'CREATE ' || t.typ ||
' ' || sys.FQN(t.sch, t.tab) || t.col || t.opt || ';'\n"
" ELSE\n"
" t.opt\n"
" END stmt\n"
- " FROM describe_tables t;\n"
+ " FROM sys.describe_tables t;\n"
"\n"
"CREATE VIEW sys.dump_triggers AS\n"
- " SELECT schema_guard(sch, tab, def)
stmt FROM describe_triggers;\n"
+ " SELECT schema_guard(sch, tab, def)
stmt FROM sys.describe_triggers;\n"
"\n"
"CREATE VIEW sys.dump_comments AS\n"
- " SELECT 'COMMENT ON ' || c.tpe || '
' || c.fqn || ' IS ' || SQ(c.rem) || ';' stmt FROM describe_comments c;\n"
+ " SELECT 'COMMENT ON ' || c.tpe || '
' || c.fqn || ' IS ' || sys.SQ(c.rem) || ';' stmt FROM sys.describe_comments
c;\n"
"\n"
"CREATE VIEW
sys.dump_user_defined_types AS\n"
- " SELECT 'CREATE TYPE ' ||
FQN(sch, sql_tpe) || ' EXTERNAL NAME ' || DQ(ext_tpe) || ';' stmt FROM
sys.describe_user_defined_types;\n"
+ " SELECT 'CREATE TYPE ' ||
sys.FQN(sch, sql_tpe) || ' EXTERNAL NAME ' || sys.DQ(ext_tpe) || ';' stmt FROM
sys.describe_user_defined_types;\n"
"\n"
"CREATE VIEW sys.dump_privileges AS\n"
" SELECT\n"
@@ -3055,21 +3055,21 @@ sql_update_default(Client c, mvc *sql, c
" WHEN dp.o_tpe =
'GLOBAL' THEN\n"
" '0,'\n"
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list