Changeset: 3a28e44b2ef8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3a28e44b2ef8
Modified Files:
sql/backends/monet5/sql_upgrades.c
sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb/Tests/check.stable.out.int128
sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
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.int128
Branch: default
Log Message:
Fixed and approved upgrade code for sys.remote_user_info table.
diffs (truncated from 568 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
@@ -5219,7 +5219,7 @@ sql_update_default(Client c, mvc *sql, s
pos = snprintf(buf, bufsize,
"select id from sys.functions where name =
'dump_table_data' and schema_id = 2000 and func like '%% R'')%%';\n");
if ((err = SQLstatementIntern(c, buf, "update", true, false, &output))
== NULL) {
- if ((b = BBPquickdesc(output->cols[0].b)) && BATcount(b) == 0) {
+ if (((b = BBPquickdesc(output->cols[0].b)) && BATcount(b) == 0)
|| find_sql_table(sql->session->tr, s, "remote_user_info") == NULL) {
sql_table *t;
if ((t = mvc_bind_table(sql, s, "describe_tables")) !=
NULL)
t->system = 0;
@@ -5243,11 +5243,20 @@ sql_update_default(Client c, mvc *sql, s
"drop view if exists
sys.dump_create_users cascade;\n"
"drop view if exists
sys.describe_tables cascade;\n"
"drop function if
exists sys.get_remote_table_expressions(string, string) cascade;\n"
+ "drop function if
exists sys.remote_table_credentials(string) cascade;\n"
"drop function if
exists sys.sq(string) cascade;\n");
+ if (find_sql_table(sql->session->tr, s,
"remote_user_info") == NULL) {
+ pos += snprintf(buf + pos, bufsize - pos,
+ "create table
sys.remote_user_info (table_id int, username varchar(1024), password
varchar(256));\n"
+ "create
function sys.decypher (cypher string) returns string external name
sql.decypher;\n"
+ "update
sys.functions set system = true where system <> true and name = 'decypher' and
schema_id = 2000 and type = %d;\n"
+ "update
sys._tables set system = true where system <> true and name =
'remote_user_info' and schema_id = 2000;\n",
+ F_FUNC);
+ }
pos += snprintf(buf + pos, bufsize - pos,
"CREATE FUNCTION sys.SQ
(s STRING) RETURNS STRING BEGIN RETURN '''' || sys.replace(s,'''','''''') ||
''''; END;\n"
"CREATE FUNCTION
sys.get_remote_table_expressions(s STRING, t STRING) RETURNS STRING BEGIN\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"
+ " RETURN SELECT ' ON '
|| sys.SQ(tt.query) || ' WITH USER ' || sys.SQ(username) || ' ENCRYPTED
PASSWORD ' || sys.SQ(sys.decypher(\"password\")) FROM sys.remote_user_info r,
sys._tables tt, sys.schemas ss where tt.name = t and ss.name = s and
tt.schema_id = ss.id and r.table_id = tt.id;\n"
"END;\n"
"CREATE VIEW
sys.describe_tables AS\n"
" SELECT\n"
@@ -5518,40 +5527,31 @@ sql_update_default(Client c, mvc *sql, s
/* remote credentials where moved */
sql_trans *tr = sql->session->tr;
sqlstore *store = tr->store;
- sql_schema *sys = find_sql_schema(tr, "sys");
- sql_table *remote_user_info = find_sql_table(tr, sys, REMOTE_USER_INFO);
+ sql_table *remote_user_info = find_sql_table(tr, s, "remote_user_info");
sql_column *remote_user_info_id = find_sql_column(remote_user_info,
"table_id");
- BAT *rt_key = NULL, *rt_username = NULL, *rt_pwhash = NULL, *rt_deleted
= NULL;
+ BAT *rt_key = NULL, *rt_username = NULL, *rt_pwhash = NULL, *rt_uri =
NULL, *rt_deleted = NULL;
if (!err && store->storage_api.count_col(tr, remote_user_info_id, 0) ==
0 && BBPindex("M5system_auth_rt_key")) {
- pos = 0;
- pos += snprintf(buf + pos, bufsize - pos,
- "drop function
sys.remote_table_credentials (tablename string);\n"
- "create function
sys.decypher (cypher string) returns string external name sql.decypher;\n"
-
- "drop function
sys.get_remote_table_expressions(s STRING, t STRING);\n"
- "CREATE FUNCTION
sys.get_remote_table_expressions(s STRING, t STRING) RETURNS STRING BEGIN\n"
- "\tRETURN SELECT ' ON '
|| sys.SQ(tt.query) || ' WITH USER ' || sys.SQ(username) || ' ENCRYPTED
PASSWORD ' || sys.SQ(sys.decypher(\"password\")) FROM sys.remote_user_info r,
sys._tables tt, sys.schemas ss where tt.name = t and ss.name = s and
tt.schema_id = ss.id and r.table_id = tt.id;\n"
- "END;\n"
- );
- assert(pos < bufsize);
- printf("Running database upgrade commands:\n%s\n", buf);
- err = SQLstatementIntern(c, buf, "update", true, false,
NULL);
- if (err)
- return err;
-
- BAT *rt_key = BATdescriptor(BBPindex("M5system_auth_rt_key"));
- BAT *rt_username =
BATdescriptor(BBPindex("M5system_auth_rt_remoteuser"));
- BAT *rt_pwhash =
BATdescriptor(BBPindex("M5system_auth_rt_hashedpwd"));
- BAT *rt_deleted =
BATdescriptor(BBPindex("M5system_auth_rt_deleted"));
- if (!rt_key || !rt_username || !rt_pwhash || !rt_deleted) /*
cleanup remainders and continue or full stop ? */
+
+ rt_key = BATdescriptor(BBPindex("M5system_auth_rt_key"));
+ rt_uri = BATdescriptor(BBPindex("M5system_auth_rt_uri"));
+ rt_username =
BATdescriptor(BBPindex("M5system_auth_rt_remoteuser"));
+ rt_pwhash =
BATdescriptor(BBPindex("M5system_auth_rt_hashedpwd"));
+ rt_deleted =
BATdescriptor(BBPindex("M5system_auth_rt_deleted"));
+ if (rt_key == NULL || rt_username == NULL || rt_pwhash == NULL
|| rt_uri == NULL || rt_deleted == NULL) {
+ /* cleanup remainders and continue or full stop ? */
+ BBPreclaim(rt_key);
+ BBPreclaim(rt_uri);
+ BBPreclaim(rt_username);
+ BBPreclaim(rt_pwhash);
+ BBPreclaim(rt_deleted);
throw(SQL, __func__, "cannot find M5system_auth bats");
+ }
BATiter ik = bat_iterator(rt_key);
BATiter iu = bat_iterator(rt_username);
BATiter ip = bat_iterator(rt_pwhash);
- for(BUN p = 0; p<BATcount(rt_key); p++ ) {
- oid pos = p;
- if (BUNfnd(rt_deleted, &pos) == BUN_NONE) {
+ for (oid p = 0; p < ik.count; p++) {
+ if (BUNfnd(rt_deleted, &p) == BUN_NONE) {
char *key = GDKstrdup(BUNtvar(ik, p));
char *username = BUNtvar(iu, p);
char *pwhash = BUNtvar(ip, p);
@@ -5569,8 +5569,7 @@ sql_update_default(Client c, mvc *sql, s
char *d = strchr(key, '.');
/* . not found simply skip */
if (d) {
- *d = '\0';
- d++;
+ *d++ = '\0';
sql_schema *s = find_sql_schema(tr,
key);
if (s) {
sql_table *t =
find_sql_table(tr, s, d);
@@ -5595,28 +5594,33 @@ sql_update_default(Client c, mvc *sql, s
bat_iterator_end(&ip);
}
if (!err && rt_key) {
- BAT *rt_uri = BATdescriptor(BBPindex("M5system_auth_rt_uri"));
-
- if (rt_key) {
- BATmode(rt_key, true);
- BBPunfix(rt_key->batCacheid);
- }
- if (rt_username) {
- BATmode(rt_username, true);
- BBPunfix(rt_username->batCacheid);
+ bat rtauthbats[6];
+
+ rtauthbats[0] = 0;
+ rtauthbats[1] = rt_key->batCacheid;
+ rtauthbats[2] = rt_uri->batCacheid;
+ rtauthbats[3] = rt_username->batCacheid;
+ rtauthbats[4] = rt_pwhash->batCacheid;
+ rtauthbats[5] = rt_deleted->batCacheid;
+
+ if (BATmode(rt_key, true) != GDK_SUCCEED ||
+ BBPrename(rt_key, NULL) != 0 ||
+ BATmode(rt_username, true) != GDK_SUCCEED ||
+ BBPrename(rt_username, NULL) != 0 ||
+ BATmode(rt_pwhash, true) != GDK_SUCCEED ||
+ BBPrename(rt_pwhash, NULL) != 0 ||
+ BATmode(rt_uri, true) != GDK_SUCCEED ||
+ BBPrename(rt_uri, NULL) != 0 ||
+ BATmode(rt_deleted, true) != GDK_SUCCEED ||
+ BBPrename(rt_deleted, NULL) != 0 ||
+ TMsubcommit_list(rtauthbats, NULL, 6, getBBPlogno(),
getBBPtransid()) != GDK_SUCCEED) {
+ fprintf(stderr, "Committing removal of old remote
user/password BATs failed\n");
}
- if (rt_pwhash) {
- BATmode(rt_pwhash, true);
- BBPunfix(rt_pwhash->batCacheid);
- }
- if (rt_uri) {
- BATmode(rt_uri, true);
- BBPunfix(rt_uri->batCacheid);
- }
- if (rt_deleted) {
- BATmode(rt_deleted, true);
- BBPunfix(rt_deleted->batCacheid);
- }
+ BBPunfix(rt_key->batCacheid);
+ BBPunfix(rt_username->batCacheid);
+ BBPunfix(rt_pwhash->batCacheid);
+ BBPunfix(rt_uri->batCacheid);
+ BBPunfix(rt_deleted->batCacheid);
}
GDKfree(buf);
diff --git
a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
---
a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++
b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -376,10 +376,15 @@ drop view if exists sys.dump_partition_t
drop view if exists sys.dump_create_users cascade;
drop view if exists sys.describe_tables cascade;
drop function if exists sys.get_remote_table_expressions(string, string)
cascade;
+drop function if exists sys.remote_table_credentials(string) cascade;
drop function if exists sys.sq(string) cascade;
+create table sys.remote_user_info (table_id int, username varchar(1024),
password varchar(256));
+create function sys.decypher (cypher string) returns string external name
sql.decypher;
+update sys.functions set system = true where system <> true and name =
'decypher' and schema_id = 2000 and type = 1;
+update sys._tables set system = true where system <> true and name =
'remote_user_info' and schema_id = 2000;
CREATE FUNCTION sys.SQ (s STRING) RETURNS STRING BEGIN RETURN '''' ||
sys.replace(s,'''','''''') || ''''; END;
CREATE FUNCTION sys.get_remote_table_expressions(s STRING, t STRING) RETURNS
STRING BEGIN
- RETURN SELECT ' ON ' || sys.SQ(uri) || ' WITH USER ' || sys.SQ(username) || '
ENCRYPTED PASSWORD ' || sys.SQ("hash") FROM sys.remote_table_credentials(s
||'.' || t);
+ RETURN SELECT ' ON ' || sys.SQ(tt.query) || ' WITH USER ' || sys.SQ(username)
|| ' ENCRYPTED PASSWORD ' || sys.SQ(sys.decypher("password")) FROM
sys.remote_user_info r, sys._tables tt, sys.schemas ss where tt.name = t and
ss.name = s and tt.schema_id = ss.id and r.table_id = tt.id;
END;
CREATE VIEW sys.describe_tables AS
SELECT
diff --git
a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
@@ -445,10 +445,15 @@ drop view if exists sys.dump_partition_t
drop view if exists sys.dump_create_users cascade;
drop view if exists sys.describe_tables cascade;
drop function if exists sys.get_remote_table_expressions(string, string)
cascade;
+drop function if exists sys.remote_table_credentials(string) cascade;
drop function if exists sys.sq(string) cascade;
+create table sys.remote_user_info (table_id int, username varchar(1024),
password varchar(256));
+create function sys.decypher (cypher string) returns string external name
sql.decypher;
+update sys.functions set system = true where system <> true and name =
'decypher' and schema_id = 2000 and type = 1;
+update sys._tables set system = true where system <> true and name =
'remote_user_info' and schema_id = 2000;
CREATE FUNCTION sys.SQ (s STRING) RETURNS STRING BEGIN RETURN '''' ||
sys.replace(s,'''','''''') || ''''; END;
CREATE FUNCTION sys.get_remote_table_expressions(s STRING, t STRING) RETURNS
STRING BEGIN
- RETURN SELECT ' ON ' || sys.SQ(uri) || ' WITH USER ' || sys.SQ(username) || '
ENCRYPTED PASSWORD ' || sys.SQ("hash") FROM sys.remote_table_credentials(s
||'.' || t);
+ RETURN SELECT ' ON ' || sys.SQ(tt.query) || ' WITH USER ' || sys.SQ(username)
|| ' ENCRYPTED PASSWORD ' || sys.SQ(sys.decypher("password")) FROM
sys.remote_user_info r, sys._tables tt, sys.schemas ss where tt.name = t and
ss.name = s and tt.schema_id = ss.id and r.table_id = tt.id;
END;
CREATE VIEW sys.describe_tables AS
SELECT
diff --git
a/sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
@@ -370,10 +370,15 @@ drop view if exists sys.dump_partition_t
drop view if exists sys.dump_create_users cascade;
drop view if exists sys.describe_tables cascade;
drop function if exists sys.get_remote_table_expressions(string, string)
cascade;
+drop function if exists sys.remote_table_credentials(string) cascade;
drop function if exists sys.sq(string) cascade;
+create table sys.remote_user_info (table_id int, username varchar(1024),
password varchar(256));
+create function sys.decypher (cypher string) returns string external name
sql.decypher;
+update sys.functions set system = true where system <> true and name =
'decypher' and schema_id = 2000 and type = 1;
+update sys._tables set system = true where system <> true and name =
'remote_user_info' and schema_id = 2000;
CREATE FUNCTION sys.SQ (s STRING) RETURNS STRING BEGIN RETURN '''' ||
sys.replace(s,'''','''''') || ''''; END;
CREATE FUNCTION sys.get_remote_table_expressions(s STRING, t STRING) RETURNS
STRING BEGIN
- RETURN SELECT ' ON ' || sys.SQ(uri) || ' WITH USER ' || sys.SQ(username) || '
ENCRYPTED PASSWORD ' || sys.SQ("hash") FROM sys.remote_table_credentials(s
||'.' || t);
+ RETURN SELECT ' ON ' || sys.SQ(tt.query) || ' WITH USER ' || sys.SQ(username)
|| ' ENCRYPTED PASSWORD ' || sys.SQ(sys.decypher("password")) FROM
sys.remote_user_info r, sys._tables tt, sys.schemas ss where tt.name = t and
ss.name = s and tt.schema_id = ss.id and r.table_id = tt.id;
END;
CREATE VIEW sys.describe_tables AS
SELECT
diff --git a/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
@@ -439,10 +439,15 @@ drop view if exists sys.dump_partition_t
drop view if exists sys.dump_create_users cascade;
drop view if exists sys.describe_tables cascade;
drop function if exists sys.get_remote_table_expressions(string, string)
cascade;
+drop function if exists sys.remote_table_credentials(string) cascade;
drop function if exists sys.sq(string) cascade;
+create table sys.remote_user_info (table_id int, username varchar(1024),
password varchar(256));
+create function sys.decypher (cypher string) returns string external name
sql.decypher;
+update sys.functions set system = true where system <> true and name =
'decypher' and schema_id = 2000 and type = 1;
+update sys._tables set system = true where system <> true and name =
'remote_user_info' and schema_id = 2000;
CREATE FUNCTION sys.SQ (s STRING) RETURNS STRING BEGIN RETURN '''' ||
sys.replace(s,'''','''''') || ''''; END;
CREATE FUNCTION sys.get_remote_table_expressions(s STRING, t STRING) RETURNS
STRING BEGIN
- RETURN SELECT ' ON ' || sys.SQ(uri) || ' WITH USER ' || sys.SQ(username) || '
ENCRYPTED PASSWORD ' || sys.SQ("hash") FROM sys.remote_table_credentials(s
||'.' || t);
+ RETURN SELECT ' ON ' || sys.SQ(tt.query) || ' WITH USER ' || sys.SQ(username)
|| ' ENCRYPTED PASSWORD ' || sys.SQ(sys.decypher("password")) FROM
sys.remote_user_info r, sys._tables tt, sys.schemas ss where tt.name = t and
ss.name = s and tt.schema_id = ss.id and r.table_id = tt.id;
END;
CREATE VIEW sys.describe_tables AS
SELECT
diff --git a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -46,10 +46,15 @@ drop view if exists sys.dump_partition_t
drop view if exists sys.dump_create_users cascade;
drop view if exists sys.describe_tables cascade;
drop function if exists sys.get_remote_table_expressions(string, string)
cascade;
+drop function if exists sys.remote_table_credentials(string) cascade;
drop function if exists sys.sq(string) cascade;
+create table sys.remote_user_info (table_id int, username varchar(1024),
password varchar(256));
+create function sys.decypher (cypher string) returns string external name
sql.decypher;
+update sys.functions set system = true where system <> true and name =
'decypher' and schema_id = 2000 and type = 1;
+update sys._tables set system = true where system <> true and name =
'remote_user_info' and schema_id = 2000;
CREATE FUNCTION sys.SQ (s STRING) RETURNS STRING BEGIN RETURN '''' ||
sys.replace(s,'''','''''') || ''''; END;
CREATE FUNCTION sys.get_remote_table_expressions(s STRING, t STRING) RETURNS
STRING BEGIN
- RETURN SELECT ' ON ' || sys.SQ(uri) || ' WITH USER ' || sys.SQ(username) || '
ENCRYPTED PASSWORD ' || sys.SQ("hash") FROM sys.remote_table_credentials(s
||'.' || t);
+ RETURN SELECT ' ON ' || sys.SQ(tt.query) || ' WITH USER ' || sys.SQ(username)
|| ' ENCRYPTED PASSWORD ' || sys.SQ(sys.decypher("password")) FROM
sys.remote_user_info r, sys._tables tt, sys.schemas ss where tt.name = t and
ss.name = s and tt.schema_id = ss.id and r.table_id = tt.id;
END;
CREATE VIEW sys.describe_tables AS
SELECT
diff --git a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
@@ -115,10 +115,15 @@ drop view if exists sys.dump_partition_t
drop view if exists sys.dump_create_users cascade;
drop view if exists sys.describe_tables cascade;
drop function if exists sys.get_remote_table_expressions(string, string)
cascade;
+drop function if exists sys.remote_table_credentials(string) cascade;
drop function if exists sys.sq(string) cascade;
+create table sys.remote_user_info (table_id int, username varchar(1024),
password varchar(256));
+create function sys.decypher (cypher string) returns string external name
sql.decypher;
+update sys.functions set system = true where system <> true and name =
'decypher' and schema_id = 2000 and type = 1;
+update sys._tables set system = true where system <> true and name =
'remote_user_info' and schema_id = 2000;
CREATE FUNCTION sys.SQ (s STRING) RETURNS STRING BEGIN RETURN '''' ||
sys.replace(s,'''','''''') || ''''; END;
CREATE FUNCTION sys.get_remote_table_expressions(s STRING, t STRING) RETURNS
STRING BEGIN
- RETURN SELECT ' ON ' || sys.SQ(uri) || ' WITH USER ' || sys.SQ(username) || '
ENCRYPTED PASSWORD ' || sys.SQ("hash") FROM sys.remote_table_credentials(s
||'.' || t);
+ RETURN SELECT ' ON ' || sys.SQ(tt.query) || ' WITH USER ' || sys.SQ(username)
|| ' ENCRYPTED PASSWORD ' || sys.SQ(sys.decypher("password")) FROM
sys.remote_user_info r, sys._tables tt, sys.schemas ss where tt.name = t and
ss.name = s and tt.schema_id = ss.id and r.table_id = tt.id;
END;
CREATE VIEW sys.describe_tables AS
SELECT
diff --git a/sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
@@ -46,10 +46,15 @@ drop view if exists sys.dump_partition_t
drop view if exists sys.dump_create_users cascade;
drop view if exists sys.describe_tables cascade;
drop function if exists sys.get_remote_table_expressions(string, string)
cascade;
+drop function if exists sys.remote_table_credentials(string) cascade;
drop function if exists sys.sq(string) cascade;
+create table sys.remote_user_info (table_id int, username varchar(1024),
password varchar(256));
+create function sys.decypher (cypher string) returns string external name
sql.decypher;
+update sys.functions set system = true where system <> true and name =
'decypher' and schema_id = 2000 and type = 1;
+update sys._tables set system = true where system <> true and name =
'remote_user_info' and schema_id = 2000;
CREATE FUNCTION sys.SQ (s STRING) RETURNS STRING BEGIN RETURN '''' ||
sys.replace(s,'''','''''') || ''''; END;
CREATE FUNCTION sys.get_remote_table_expressions(s STRING, t STRING) RETURNS
STRING BEGIN
- RETURN SELECT ' ON ' || sys.SQ(uri) || ' WITH USER ' || sys.SQ(username) || '
ENCRYPTED PASSWORD ' || sys.SQ("hash") FROM sys.remote_table_credentials(s
||'.' || t);
+ RETURN SELECT ' ON ' || sys.SQ(tt.query) || ' WITH USER ' || sys.SQ(username)
|| ' ENCRYPTED PASSWORD ' || sys.SQ(sys.decypher("password")) FROM
sys.remote_user_info r, sys._tables tt, sys.schemas ss where tt.name = t and
ss.name = s and tt.schema_id = ss.id and r.table_id = tt.id;
END;
CREATE VIEW sys.describe_tables AS
SELECT
diff --git a/sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]