Changeset: 4f12063f3573 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4f12063f3573
Added Files:
sql/backends/monet5/UDF/capi/Tests/capi14.sql
sql/backends/monet5/UDF/capi/Tests/capi14.stable.err
sql/backends/monet5/UDF/capi/Tests/capi14.stable.out
sql/test/BugTracker-2018/Tests/multiple-count.Bug-6599.sql
sql/test/BugTracker-2018/Tests/multiple-count.Bug-6599.stable.err
sql/test/BugTracker-2018/Tests/multiple-count.Bug-6599.stable.out
sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-not-in.Bug-6594.sql
sql/test/BugTracker-2018/Tests/temp-table-performance.Bug-6577.sql
sql/test/Tests/copy-from-compressed.csv.bz2
sql/test/Tests/copy-from-compressed.csv.gz
sql/test/Tests/copy-from-compressed.csv.raw
sql/test/Tests/copy-from-compressed.csv.xz
sql/test/Tests/copy-from-compressed.sql.in
sql/test/Tests/copy-from-compressed.stable.err
sql/test/Tests/copy-from-compressed.stable.out
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.reqtests
sql/test/emptydb-upgrade-chain/Tests/upgrade.reqtests
sql/test/emptydb-upgrade-hge/Tests/upgrade.reqtests
sql/test/emptydb-upgrade/Tests/upgrade.reqtests
Removed Files:
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64
Modified Files:
clients/mapiclient/dump.c
clients/mapiclient/mclient.c
clients/mapiclient/msqldump.h
clients/odbc/driver/SQLColumnPrivileges.c
clients/odbc/driver/SQLTablePrivileges.c
common/stream/stream.c
configure.ag
sql/backends/monet5/UDF/capi/Tests/All
sql/backends/monet5/UDF/capi/capi.c
sql/backends/monet5/sql_upgrades.c
sql/scripts/21_dependency_functions.sql
sql/server/sql_mvc.c
sql/storage/bat/bat_logger.c
sql/test/BugTracker-2018/Tests/All
sql/test/Tests/All
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.int128
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
testing/Mtest.py.in
Branch: data-vaults
Log Message:
Merge with default
diffs (truncated from 2895 to 300 lines):
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -15,6 +15,16 @@
#include <ctype.h>
#include "msqldump.h"
+static const char *
+get_compat_clause(Mapi mid)
+{
+ static const char *compat_clause = NULL;
+ if (!compat_clause) {
+ compat_clause = get_with_comments_as_clause(mid);
+ }
+ return compat_clause;
+}
+
static void
quoted_print(stream *f, const char *s, bool singleq)
{
@@ -790,15 +800,17 @@ describe_table(Mapi mid, const char *sch
hashge = has_hugeint(mid);
- maxquerylen = 512 + strlen(tname) + strlen(schema);
+ maxquerylen = 5120 + strlen(tname) + strlen(schema);
query = malloc(maxquerylen);
snprintf(query, maxquerylen,
+ "%s\n"
"SELECT t.name, t.query, t.type, c.remark "
- "FROM sys.schemas s, sys._tables t LEFT OUTER JOIN
sys.comments c ON t.id = c.id "
+ "FROM sys.schemas s, sys._tables t LEFT OUTER JOIN comments c
ON t.id = c.id "
"WHERE s.name = '%s' AND "
"t.schema_id = s.id AND "
"t.name = '%s'",
+ get_compat_clause(mid),
schema, tname);
if ((hdl = mapi_query(mid, query)) == NULL || mapi_error(mid))
@@ -937,7 +949,10 @@ describe_table(Mapi mid, const char *sch
if (cnt)
mnstr_printf(toConsole, ");\n");
snprintf(query, maxquerylen,
- "SELECT i.name, c.remark FROM sys.idxs i, sys.comments
c WHERE i.id = c.id AND i.table_id = (SELECT id FROM sys._tables WHERE
schema_id = (select id FROM sys.schemas WHERE name = '%s') AND name = '%s')
ORDER BY i.name", schema, tname);
+ "%s\n"
+ "SELECT i.name, c.remark FROM sys.idxs i, comments c
WHERE i.id = c.id AND i.table_id = (SELECT id FROM sys._tables WHERE schema_id
= (select id FROM sys.schemas WHERE name = '%s') AND name = '%s') ORDER BY
i.name",
+ get_compat_clause(mid),
+ schema, tname);
if ((hdl = mapi_query(mid, query)) == NULL || mapi_error(mid))
goto bailout;
while (mapi_fetch_row(hdl) != 0) {
@@ -950,13 +965,16 @@ describe_table(Mapi mid, const char *sch
}
snprintf(query, maxquerylen,
- "SELECT col.name, com.remark FROM sys._columns col,
sys.comments com WHERE col.id = com.id AND col.table_id = (SELECT id FROM
sys._tables WHERE schema_id = (SELECT id FROM sys.schemas WHERE name = '%s')
AND name = '%s') ORDER BY number", schema, tname);
+ "%s\n"
+ "SELECT col.name, com.remark FROM sys._columns col,
comments com WHERE col.id = com.id AND col.table_id = (SELECT id FROM
sys._tables WHERE schema_id = (SELECT id FROM sys.schemas WHERE name = '%s')
AND name = '%s') ORDER BY number",
+ get_compat_clause(mid),
+ schema, tname);
if ((hdl = mapi_query(mid, query)) == NULL || mapi_error(mid))
goto bailout;
while (mapi_fetch_row(hdl) != 0) {
comment_on(toConsole, "COLUMN", schema, tname,
- mapi_fetch_field(hdl, 0),
- mapi_fetch_field(hdl, 1));
+ mapi_fetch_field(hdl, 0),
+ mapi_fetch_field(hdl, 1));
}
mapi_close_handle(hdl);
hdl = NULL;
@@ -1015,10 +1033,11 @@ describe_sequence(Mapi mid, const char *
schema = sname;
}
- maxquerylen = 512 + strlen(tname) + strlen(schema);
+ maxquerylen = 5120 + strlen(tname) + strlen(schema);
query = malloc(maxquerylen);
snprintf(query, maxquerylen,
+ "%s\n"
"SELECT s.name, "
"seq.name, "
"get_value_for(s.name,seq.name), "
@@ -1027,12 +1046,13 @@ describe_sequence(Mapi mid, const char *
"seq.\"increment\", "
"seq.\"cycle\", "
"rem.\"remark\" "
- "FROM sys.sequences seq LEFT OUTER JOIN sys.comments rem ON
seq.id = rem.id, "
+ "FROM sys.sequences seq LEFT OUTER JOIN comments rem ON seq.id
= rem.id, "
"sys.schemas s "
"WHERE s.id = seq.schema_id AND "
"s.name = '%s' AND "
"seq.name = '%s' "
"ORDER BY s.name,seq.name",
+ get_compat_clause(mid),
schema, tname);
if ((hdl = mapi_query(mid, query)) == NULL || mapi_error(mid))
@@ -1095,15 +1115,17 @@ int
describe_schema(Mapi mid, const char *sname, stream *toConsole)
{
MapiHdl hdl = NULL;
- char schemas[256];
+ char schemas[5120];
- snprintf(schemas, 256,
+ snprintf(schemas, sizeof(schemas),
+ "%s\n"
"SELECT s.name, a.name, c.remark "
"FROM sys.auths a, "
- "sys.schemas s LEFT OUTER JOIN sys.comments c ON s.id =
c.id "
+ "sys.schemas s LEFT OUTER JOIN comments c ON s.id = c.id "
"WHERE s.\"authorization\" = a.id AND "
"s.name = '%s' "
"ORDER BY s.name",
+ get_compat_clause(mid),
sname);
if ((hdl = mapi_query(mid, schemas)) == NULL || mapi_error(mid)) {
@@ -1161,7 +1183,7 @@ dump_table_data(Mapi mid, const char *sc
schema = sname;
}
- maxquerylen = 512 + strlen(tname) + strlen(schema);
+ maxquerylen = 5120 + strlen(tname) + strlen(schema);
query = malloc(maxquerylen);
snprintf(query, maxquerylen,
@@ -1308,7 +1330,7 @@ dump_table(Mapi mid, const char *schema,
static int
dump_function_comment(Mapi mid, stream *toConsole, const char *id)
{
- int len = 1000;
+ int len = 5120;
char *query = malloc(len);
MapiHdl hdl = NULL;
int hashge;
@@ -1317,6 +1339,7 @@ dump_function_comment(Mapi mid, stream *
return 1;
snprintf(query, len,
+ "%s\n"
"SELECT \n"
" coalesce(function_type_keyword, '') AS category,\n"
" s.name AS schema,\n"
@@ -1327,12 +1350,14 @@ dump_function_comment(Mapi mid, stream *
" CASE RANK() OVER (PARTITION BY f.id ORDER BY p.number
DESC) WHEN 1 THEN c.remark ELSE NULL END AS remark,\n"
" ROW_NUMBER() OVER (ORDER BY f.id, p.number) AS line\n"
"FROM sys.functions f\n"
- "JOIN sys.comments c ON f.id = c.id\n"
+ "JOIN comments c ON f.id = c.id\n"
"JOIN sys.schemas s ON f.schema_id = s.id\n"
"LEFT OUTER JOIN sys.function_types ft ON f.type =
ft.function_type_id\n"
"LEFT OUTER JOIN sys.args p ON f.id = p.func_id AND p.inout =
1\n"
"WHERE f.id = %s\n"
- "ORDER BY line;", id);
+ "ORDER BY line;",
+ get_compat_clause(mid),
+ id);
hashge = has_hugeint(mid);
hdl = mapi_query(mid, query);
@@ -1394,18 +1419,26 @@ static int
dump_function(Mapi mid, stream *toConsole, const char *fid, int hashge)
{
MapiHdl hdl;
- size_t qlen = 400 + strlen(fid);
+ size_t qlen = 5120 + strlen(fid);
char *query = malloc(qlen);
+ char *q, *end_q;
const char *sep;
- char *ffunc, *flkey;
+ char *ffunc = NULL, *flkey = NULL;
const char *sname, *fname, *ftkey;
int flang, ftype;
if (!query)
return 1;
- snprintf(query, qlen, "SELECT f.id, f.func, f.language, f.type, s.name,
f.name, ft.function_type_keyword, fl.language_keyword FROM sys.functions f JOIN
sys.schemas s ON f.schema_id = s.id JOIN sys.function_types ft ON f.type =
ft.function_type_id LEFT OUTER JOIN sys.function_languages fl ON f.language =
fl.language_id WHERE f.id = %s", fid);
- hdl = mapi_query(mid, query);
+ q = query;
+ end_q = query + qlen;
+ q += snprintf(q, q - end_q, "%s\n", get_compat_clause(mid));
+ q += snprintf(q, q - end_q, "SELECT f.id, f.func, f.language, f.type,
s.name, f.name, function_type_keyword, language_keyword FROM sys.functions f
JOIN sys.schemas s ON f.schema_id = s.id JOIN function_types ft ON f.type =
ft.function_type_id LEFT OUTER JOIN function_languages fl ON f.language =
fl.language_id WHERE f.id = %s;", fid);
+ if ((hdl = mapi_query(mid, query)) == NULL || mapi_error(mid)) {
+ free(query);
+ return 1;
+ }
+
if (mapi_fetch_row(hdl) == 0) {
free(query);
mapi_close_handle(hdl);
@@ -1444,8 +1477,12 @@ dump_function(Mapi mid, stream *toConsol
mnstr_printf(toConsole, "(");
snprintf(query, qlen, "SELECT a.name, a.type, a.type_digits,
a.type_scale, a.inout FROM sys.args a, sys.functions f WHERE a.func_id = f.id
AND f.id = %s ORDER BY a.inout DESC, a.number", fid);
mapi_close_handle(hdl);
- hdl = mapi_query(mid, query);
- free(query);
+ if ((hdl = mapi_query(mid, query)) == NULL || mapi_error(mid)) {
+ free(query);
+ free(ffunc);
+ free(flkey);
+ return 1;
+ }
sep = "";
while (mapi_fetch_row(hdl) != 0) {
const char *aname = mapi_fetch_field(hdl, 0);
@@ -1492,6 +1529,7 @@ dump_function(Mapi mid, stream *toConsol
}
mnstr_printf(toConsole, "\n%s\n", ffunc);
free(ffunc);
+ free(query);
return 0;
}
@@ -1529,7 +1567,7 @@ dump_functions(Mapi mid, stream *toConso
wantSystem = 0;
}
- len = 500 + (sname ? strlen(sname) : 0) + (fname ? strlen(fname) : 0);
+ len = 5120 + (sname ? strlen(sname) : 0) + (fname ? strlen(fname) : 0);
query = malloc(len);
if (query == NULL) {
if (to_free)
@@ -1537,13 +1575,14 @@ dump_functions(Mapi mid, stream *toConso
return 1;
}
q = query;
- end_q = q + len;
+ end_q = query + len;
+ q += snprintf(q, end_q - q, "%s\n", get_compat_clause(mid));
q += snprintf(q, end_q - q,
"SELECT s.id, s.name, f.id, LENGTH(rem.remark) AS remark_len "
"FROM sys.schemas s "
"JOIN sys.functions f ON s.id = f.schema_id "
- "LEFT OUTER JOIN sys.comments rem ON f.id = rem.id "
+ "LEFT OUTER JOIN comments rem ON f.id = rem.id "
"WHERE f.language > 0 ");
if (sname)
q += snprintf(q, end_q - q, "AND s.name = '%s' ", sname);
@@ -1694,34 +1733,15 @@ dump_database(Mapi mid, stream *toConsol
"ORDER BY s.name, f.name, a.name, g.name, p.grantable";
const char *schemas =
"SELECT s.name, a.name, rem.remark "
- "FROM sys.schemas s LEFT OUTER JOIN sys.comments rem ON s.id =
rem.id, "
+ "FROM sys.schemas s LEFT OUTER JOIN comments rem ON s.id =
rem.id, "
"sys.auths a "
"WHERE s.\"authorization\" = a.id AND "
"s.system = FALSE "
"ORDER BY s.name";
- /* alternative, but then need to handle NULL in second column:
- SELECT "s"."name", "a"."name"
- FROM "sys"."schemas" "s"
- LEFT OUTER JOIN "sys"."auths" "a"
- ON "s"."authorization" = "a"."id" AND
- "s"."system" = FALSE
- ORDER BY "s"."name"
-
- This may be needed after a sequence:
-
- CREATE USER "voc" WITH PASSWORD 'voc' NAME 'xxx' SCHEMA "sys";
- CREATE SCHEMA "voc" AUTHORIZATION "voc";
- ALTER USER "voc" SET SCHEMA "voc";
- DROP USER "voc";
-
- In this case, the authorization value for voc in the
- schemas table has no corresponding value in the auths table
- anymore.
- */
const char *sequences1 =
"SELECT sch.name,seq.name, rem.remark "
"FROM sys.schemas sch, "
- "sys.sequences seq LEFT OUTER JOIN sys.comments rem ON
seq.id = rem.id "
+ "sys.sequences seq LEFT OUTER JOIN comments rem ON seq.id
= rem.id "
"WHERE sch.id = seq.schema_id "
"ORDER BY sch.name,seq.name";
const char *sequences2 =
@@ -1751,14 +1771,14 @@ dump_database(Mapi mid, stream *toConsol
/* we must dump views, functions and triggers in order of
* creation since they can refer to each other */
const char *views_functions_triggers =
- "WITH vft (sname, name, id, query, remark) AS ("
+ ", vft (sname, name, id, query, remark) AS ("
"SELECT s.name AS sname, "
"t.name AS name, "
"t.id AS id, "
"t.query AS query, "
"rem.remark AS remark "
"FROM sys.schemas s, "
- "sys._tables t LEFT OUTER JOIN sys.comments rem ON
t.id = rem.id "
+ "sys._tables t LEFT OUTER JOIN comments rem ON
t.id = rem.id "
"WHERE t.type = 1 AND "
"t.system = FALSE AND "
"s.id = t.schema_id AND "
@@ -1788,9 +1808,17 @@ dump_database(Mapi mid, stream *toConsol
"SELECT id, sname, name, query, remark FROM vft ORDER BY id";
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list