Changeset: 37cd06388c46 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/37cd06388c46
Modified Files:
        clients/Tests/MAL-signatures-hge.test
        clients/Tests/MAL-signatures.test
        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
        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
        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
        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
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/emptydb/Tests/check.stable.out
        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
        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
        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
        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.int128
Branch: default
Log Message:

Implemented upgrade code for recent changes.


diffs (truncated from 3145 to 300 lines):

diff --git a/clients/Tests/MAL-signatures-hge.test 
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -50965,7 +50965,7 @@ TXTSIMmaxlevenshtein;
 Levenshtein distance with variable costs but up to a MAX
 txtsim
 maxlevenshteinjoin
-command txtsim.maxlevenshteinjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit, X_7:any) (X_8:bat[:oid], 
X_9:bat[:oid]) 
+command txtsim.maxlevenshteinjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:int], 
X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit) (X_8:bat[:oid], 
X_9:bat[:oid]) 
 TXTSIMmaxlevenshteinjoin;
 (empty)
 txtsim
diff --git a/clients/Tests/MAL-signatures.test 
b/clients/Tests/MAL-signatures.test
--- a/clients/Tests/MAL-signatures.test
+++ b/clients/Tests/MAL-signatures.test
@@ -39290,7 +39290,7 @@ TXTSIMmaxlevenshtein;
 Levenshtein distance with variable costs but up to a MAX
 txtsim
 maxlevenshteinjoin
-command txtsim.maxlevenshteinjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit, X_7:any) (X_8:bat[:oid], 
X_9:bat[:oid]) 
+command txtsim.maxlevenshteinjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:int], 
X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit) (X_8:bat[:oid], 
X_9:bat[:oid]) 
 TXTSIMmaxlevenshteinjoin;
 (empty)
 txtsim
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
@@ -5485,16 +5485,117 @@ sql_update_default(Client c, mvc *sql, s
           the query in bound to. */
        sql_subtype t1, t2;
        sql_find_subtype(&t1, "bigint", 64, 0);
-       sql_find_subtype(&t2, "clob", 0, 0);
+       sql_find_subtype(&t2, "varchar", 0, 0);
        if (!sql_bind_func(sql, "sys", "pause", &t1, &t2, F_PROC, true)) {
                sql->session->status = 0; /* if the function was not found 
clean the error */
                sql->errstr[0] = '\0';
+               const char *query =
+                       "create function sys.queue(username string) returns 
table(\"tag\" bigint, \"sessionid\" int, \"username\" string, \"started\" 
timestamp, \"status\" string, \"query\" string, \"finished\" timestamp, 
\"maxworkers\" int, \"footprint\" int) external name sysmon.queue;\n"
+                       "create procedure sys.pause(tag bigint, username 
string) external name sysmon.pause;\n"
+                       "create procedure sys.resume(tag bigint, username 
string) external name sysmon.resume;\n"
+                       "create procedure sys.stop(tag bigint, username string) 
external name sysmon.stop;\n"
+                       "update sys.functions set system = true where system <> 
true and mod = 'sysmon' and name in ('stop', 'pause', 'resume', 'queue');\n";
+               printf("Running database upgrade commands:\n%s\n", query);
+               err = SQLstatementIntern(c, query, "update", true, false, NULL);
+       }
+
+       /* sys.settimeout and sys.setsession where removed */
+       if (sql_bind_func(sql, "sys", "settimeout", &t1, NULL, F_PROC, true)) {
+               const char *query =
+                       "drop procedure sys.settimeout(bigint) cascade;\n"
+                       "drop procedure sys.settimeout(bigint, bigint) 
cascade;\n"
+                       "drop procedure sys.setsession(bigint) cascade;\n";
+               printf("Running database upgrade commands:\n%s\n", query);
+               err = SQLstatementIntern(c, query, "update", true, false, NULL);
+       }
+       sql->session->status = 0; /* if the function was not found clean the 
error */
+       sql->errstr[0] = '\0';
+
+       if (!sql_bind_func(sql, "sys", "levenshtein", &t2, &t2, F_FUNC, true)) {
+               sql->session->status = 0; /* if the function was not found 
clean the error */
+               sql->errstr[0] = '\0';
                pos = snprintf(buf, bufsize,
-                                          "create function sys.queue(username 
string) returns table(\"tag\" bigint, \"sessionid\" int, \"username\" string, 
\"started\" timestamp, \"status\" string, \"query\" string, \"finished\" 
timestamp, \"maxworkers\" int, \"footprint\" int) external name sysmon.queue;\n"
-                                          "create procedure sys.pause(tag 
bigint, username string) external name sysmon.pause;\n"
-                                          "create procedure sys.resume(tag 
bigint, username string) external name sysmon.resume;\n"
-                                          "create procedure sys.stop(tag 
bigint, username string) external name sysmon.stop;\n"
-                                          "update sys.functions set system = 
true where system <> true and mod = 'sysmon' and name in ('stop', 'pause', 
'resume', 'queue');\n");
+                                          "create function sys.levenshtein(x 
string, y string)\n"
+                                          "returns int external name 
txtsim.levenshtein;\n"
+                                          "grant execute on function 
levenshtein(string, string) to public;\n"
+                                          "create function sys.levenshtein(x 
string, y string, insdel int, rep int)\n"
+                                          "returns int external name 
txtsim.levenshtein;\n"
+                                          "grant execute on function 
levenshtein(string, string, int, int) to public;\n"
+                                          "create function sys.levenshtein(x 
string, y string, insdel int, rep int, trans int)\n"
+                                          "returns int external name 
txtsim.levenshtein;\n"
+                                          "grant execute on function 
levenshtein(string, string, int, int, int) to public;\n"
+                                          "create filter function 
sys.maxlevenshtein(x string, y string, k int)\n"
+                                          "external name 
txtsim.\"maxlevenshtein\";\n"
+                                          "create filter function 
sys.maxlevenshtein(x string, y string, k int, insdel int, rep int)\n"
+                                          "external name 
txtsim.\"maxlevenshtein\";\n"
+                                          "create filter function 
minjarowinkler(x string, y string, threshold double)\n"
+                                          "external name 
txtsim.\"minjarowinkler\";\n"
+                                          "create function 
sys.dameraulevenshtein(x string, y string)\n"
+                                          "returns int external name 
txtsim.dameraulevenshtein;\n"
+                                          "grant execute on function 
dameraulevenshtein(string, string) to public;\n"
+                                          "create function 
sys.dameraulevenshtein(x string, y string, insdel int, rep int, trans int)\n"
+                                          "returns int external name 
txtsim.dameraulevenshtein;\n"
+                                          "grant execute on function 
dameraulevenshtein(string, string, int, int, int) to public;\n"
+                                          "create function sys.editdistance(x 
string, y string)\n"
+                                          "returns int external name 
txtsim.editdistance;\n"
+                                          "grant execute on function 
editdistance(string, string) to public;\n"
+                                          "create function sys.editdistance2(x 
string, y string)\n"
+                                          "returns int external name 
txtsim.editdistance2;\n"
+                                          "grant execute on function 
editdistance2(string, string) to public;\n"
+                                          "create function sys.soundex(x 
string)\n"
+                                          "returns string external name 
txtsim.soundex;\n"
+                                          "grant execute on function 
soundex(string) to public;\n"
+                                          "create function sys.difference(x 
string, y string)\n"
+                                          "returns int external name 
txtsim.stringdiff;\n"
+                                          "grant execute on function 
difference(string, string) to public;\n"
+                                          "create function 
sys.qgramnormalize(x string)\n"
+                                          "returns string external name 
txtsim.qgramnormalize;\n"
+                                          "grant execute on function 
qgramnormalize(string) to public;\n"
+                                          "create function sys.similarity(x 
string, y string)\n"
+                                          "returns double external name 
txtsim.similarity;\n"
+                                          "grant execute on function 
similarity(string, string) to public;\n"
+
+                                          "create function asciify(x string)\n"
+                                          "returns string external name 
str.\"asciify\";\n"
+                                          "create function sys.startswith(x 
string, y string)\n"
+                                          "returns boolean external name 
str.\"startsWith\";\n"
+                                          "grant execute on function 
startswith(string, string) to public;\n"
+                                          "create function sys.startswith(x 
string, y string, icase boolean)\n"
+                                          "returns boolean external name 
str.\"startsWith\";\n"
+                                          "grant execute on function 
startswith(string, string, boolean) to public;\n"
+                                          "create filter function 
sys.startswith(x string, y string)\n"
+                                          "external name str.\"startsWith\";\n"
+                                          "create filter function 
sys.startswith(x string, y string, icase boolean)\n"
+                                          "external name str.\"startsWith\";\n"
+                                          "create function sys.endswith(x 
string, y string)\n"
+                                          "returns boolean external name 
str.\"endsWith\";\n"
+                                          "grant execute on function 
endswith(string, string) to public;\n"
+                                          "create function sys.endswith(x 
string, y string, icase boolean)\n"
+                                          "returns boolean external name 
str.\"endsWith\";\n"
+                                          "grant execute on function 
endswith(string, string, boolean) to public;\n"
+                                          "create filter function 
sys.endswith(s1 string, s2 string)\n"
+                                          "external name str.\"endsWith\";\n"
+                                          "create filter function 
sys.endswith(s1 string, s2 string, icase boolean)\n"
+                                          "external name str.\"endsWith\";\n"
+                                          "create function sys.contains(x 
string, y string)\n"
+                                          "returns boolean external name 
str.\"contains\";\n"
+                                          "grant execute on function 
contains(string, string) to public;\n"
+                                          "create function sys.contains(x 
string, y string, icase boolean)\n"
+                                          "returns boolean external name 
str.\"contains\";\n"
+                                          "grant execute on function 
contains(string, string, boolean) to public;\n"
+                                          "create filter function 
sys.contains(x string, y string)\n"
+                                          "external name str.\"contains\";\n"
+                                          "create filter function 
sys.contains(x string, y string, icase boolean)\n"
+                                          "external name str.\"contains\";\n"
+
+                                          "update sys.functions set system = 
true where system <> true and name in ('levenshtein', 'dameraulevenshtein', 
'editdistance', 'editdistance2', 'soundex', 'difference', 'qgramnormalize', 
'similarity') and schema_id = 2000 and type = %d;\n"
+                                          "update sys.functions set system = 
true where system <> true and name in ('maxlevenshtein', 'minjarowinkler') and 
schema_id = 2000 and type = %d;\n"
+                                          "update sys.functions set system = 
true where system <> true and name in ('asciify', 'startswith', 'endswith', 
'contains') and schema_id = 2000 and type = %d;\n"
+                                          "update sys.functions set system = 
true where system <> true and name in ('startswith', 'endswith', 'contains') 
and schema_id = 2000 and type = %d;\n"
+
+                                          "delete from sys.triggers where name 
= 'system_update_tables' and table_id = 2067;\n",
+                                          F_FUNC, F_FILT, F_FUNC, F_FILT);
+               assert(pos < bufsize);
                printf("Running database upgrade commands:\n%s\n", buf);
                err = SQLstatementIntern(c, buf, "update", true, false, NULL);
        }
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
@@ -600,3 +600,86 @@ create procedure sys.resume(tag bigint, 
 create procedure sys.stop(tag bigint, username string) external name 
sysmon.stop;
 update sys.functions set system = true where system <> true and mod = 'sysmon' 
and name in ('stop', 'pause', 'resume', 'queue');
 
+Running database upgrade commands:
+drop procedure sys.settimeout(bigint) cascade;
+drop procedure sys.settimeout(bigint, bigint) cascade;
+drop procedure sys.setsession(bigint) cascade;
+
+Running database upgrade commands:
+create function sys.levenshtein(x string, y string)
+returns int external name txtsim.levenshtein;
+grant execute on function levenshtein(string, string) to public;
+create function sys.levenshtein(x string, y string, insdel int, rep int)
+returns int external name txtsim.levenshtein;
+grant execute on function levenshtein(string, string, int, int) to public;
+create function sys.levenshtein(x string, y string, insdel int, rep int, trans 
int)
+returns int external name txtsim.levenshtein;
+grant execute on function levenshtein(string, string, int, int, int) to public;
+create filter function sys.maxlevenshtein(x string, y string, k int)
+external name txtsim."maxlevenshtein";
+create filter function sys.maxlevenshtein(x string, y string, k int, insdel 
int, rep int)
+external name txtsim."maxlevenshtein";
+create filter function minjarowinkler(x string, y string, threshold double)
+external name txtsim."minjarowinkler";
+create function sys.dameraulevenshtein(x string, y string)
+returns int external name txtsim.dameraulevenshtein;
+grant execute on function dameraulevenshtein(string, string) to public;
+create function sys.dameraulevenshtein(x string, y string, insdel int, rep 
int, trans int)
+returns int external name txtsim.dameraulevenshtein;
+grant execute on function dameraulevenshtein(string, string, int, int, int) to 
public;
+create function sys.editdistance(x string, y string)
+returns int external name txtsim.editdistance;
+grant execute on function editdistance(string, string) to public;
+create function sys.editdistance2(x string, y string)
+returns int external name txtsim.editdistance2;
+grant execute on function editdistance2(string, string) to public;
+create function sys.soundex(x string)
+returns string external name txtsim.soundex;
+grant execute on function soundex(string) to public;
+create function sys.difference(x string, y string)
+returns int external name txtsim.stringdiff;
+grant execute on function difference(string, string) to public;
+create function sys.qgramnormalize(x string)
+returns string external name txtsim.qgramnormalize;
+grant execute on function qgramnormalize(string) to public;
+create function sys.similarity(x string, y string)
+returns double external name txtsim.similarity;
+grant execute on function similarity(string, string) to public;
+create function asciify(x string)
+returns string external name str."asciify";
+create function sys.startswith(x string, y string)
+returns boolean external name str."startsWith";
+grant execute on function startswith(string, string) to public;
+create function sys.startswith(x string, y string, icase boolean)
+returns boolean external name str."startsWith";
+grant execute on function startswith(string, string, boolean) to public;
+create filter function sys.startswith(x string, y string)
+external name str."startsWith";
+create filter function sys.startswith(x string, y string, icase boolean)
+external name str."startsWith";
+create function sys.endswith(x string, y string)
+returns boolean external name str."endsWith";
+grant execute on function endswith(string, string) to public;
+create function sys.endswith(x string, y string, icase boolean)
+returns boolean external name str."endsWith";
+grant execute on function endswith(string, string, boolean) to public;
+create filter function sys.endswith(s1 string, s2 string)
+external name str."endsWith";
+create filter function sys.endswith(s1 string, s2 string, icase boolean)
+external name str."endsWith";
+create function sys.contains(x string, y string)
+returns boolean external name str."contains";
+grant execute on function contains(string, string) to public;
+create function sys.contains(x string, y string, icase boolean)
+returns boolean external name str."contains";
+grant execute on function contains(string, string, boolean) to public;
+create filter function sys.contains(x string, y string)
+external name str."contains";
+create filter function sys.contains(x string, y string, icase boolean)
+external name str."contains";
+update sys.functions set system = true where system <> true and name in 
('levenshtein', 'dameraulevenshtein', 'editdistance', 'editdistance2', 
'soundex', 'difference', 'qgramnormalize', 'similarity') and schema_id = 2000 
and type = 1;
+update sys.functions set system = true where system <> true and name in 
('maxlevenshtein', 'minjarowinkler') and schema_id = 2000 and type = 4;
+update sys.functions set system = true where system <> true and name in 
('asciify', 'startswith', 'endswith', 'contains') and schema_id = 2000 and type 
= 1;
+update sys.functions set system = true where system <> true and name in 
('startswith', 'endswith', 'contains') and schema_id = 2000 and type = 4;
+delete from sys.triggers where name = 'system_update_tables' and table_id = 
2067;
+
diff --git a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out 
b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
--- a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
+++ b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
@@ -600,3 +600,86 @@ create procedure sys.resume(tag bigint, 
 create procedure sys.stop(tag bigint, username string) external name 
sysmon.stop;
 update sys.functions set system = true where system <> true and mod = 'sysmon' 
and name in ('stop', 'pause', 'resume', 'queue');
 
+Running database upgrade commands:
+drop procedure sys.settimeout(bigint) cascade;
+drop procedure sys.settimeout(bigint, bigint) cascade;
+drop procedure sys.setsession(bigint) cascade;
+
+Running database upgrade commands:
+create function sys.levenshtein(x string, y string)
+returns int external name txtsim.levenshtein;
+grant execute on function levenshtein(string, string) to public;
+create function sys.levenshtein(x string, y string, insdel int, rep int)
+returns int external name txtsim.levenshtein;
+grant execute on function levenshtein(string, string, int, int) to public;
+create function sys.levenshtein(x string, y string, insdel int, rep int, trans 
int)
+returns int external name txtsim.levenshtein;
+grant execute on function levenshtein(string, string, int, int, int) to public;
+create filter function sys.maxlevenshtein(x string, y string, k int)
+external name txtsim."maxlevenshtein";
+create filter function sys.maxlevenshtein(x string, y string, k int, insdel 
int, rep int)
+external name txtsim."maxlevenshtein";
+create filter function minjarowinkler(x string, y string, threshold double)
+external name txtsim."minjarowinkler";
+create function sys.dameraulevenshtein(x string, y string)
+returns int external name txtsim.dameraulevenshtein;
+grant execute on function dameraulevenshtein(string, string) to public;
+create function sys.dameraulevenshtein(x string, y string, insdel int, rep 
int, trans int)
+returns int external name txtsim.dameraulevenshtein;
+grant execute on function dameraulevenshtein(string, string, int, int, int) to 
public;
+create function sys.editdistance(x string, y string)
+returns int external name txtsim.editdistance;
+grant execute on function editdistance(string, string) to public;
+create function sys.editdistance2(x string, y string)
+returns int external name txtsim.editdistance2;
+grant execute on function editdistance2(string, string) to public;
+create function sys.soundex(x string)
+returns string external name txtsim.soundex;
+grant execute on function soundex(string) to public;
+create function sys.difference(x string, y string)
+returns int external name txtsim.stringdiff;
+grant execute on function difference(string, string) to public;
+create function sys.qgramnormalize(x string)
+returns string external name txtsim.qgramnormalize;
+grant execute on function qgramnormalize(string) to public;
+create function sys.similarity(x string, y string)
+returns double external name txtsim.similarity;
+grant execute on function similarity(string, string) to public;
+create function asciify(x string)
+returns string external name str."asciify";
+create function sys.startswith(x string, y string)
+returns boolean external name str."startsWith";
+grant execute on function startswith(string, string) to public;
+create function sys.startswith(x string, y string, icase boolean)
+returns boolean external name str."startsWith";
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to