Changeset: 0bbc2610da54 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0bbc2610da54
Modified Files:
        buildtools/autogen/scripts/sql2c.py
        sql/backends/monet5/sql_scenario.c
        sql/scripts/09_like.sql.c
        sql/scripts/10_math.sql.c
        sql/scripts/11_times.sql.c
        sql/scripts/12_url.sql.c
        sql/scripts/13_date.sql.c
        sql/scripts/14_inet.sql.c
        sql/scripts/15_querylog.sql.c
        sql/scripts/16_tracelog.sql.c
        sql/scripts/17_temporal.sql.c
        sql/scripts/18_index.sql.c
        sql/scripts/20_vacuum.sql.c
        sql/scripts/21_dependency_views.sql.c
        sql/scripts/22_clients.sql.c
        sql/scripts/23_skyserver.sql.c
        sql/scripts/25_debug.sql.c
        sql/scripts/26_sysmon.sql.c
        sql/scripts/27_rejects.sql.c
        sql/scripts/39_analytics.sql.c
        sql/scripts/39_analytics_hge.sql.c
        sql/scripts/40_json.sql.c
        sql/scripts/40_json_hge.sql.c
        sql/scripts/41_md5sum.sql.c
        sql/scripts/45_uuid.sql.c
        sql/scripts/46_profiler.sql.c
        sql/scripts/51_sys_schema_extension.sql.c
        sql/scripts/60_wlcr.sql.c
        sql/scripts/75_storagemodel.sql.c
        sql/scripts/80_statistics.sql.c
        sql/scripts/99_system.sql.c
Branch: translate-scripts
Log Message:

Commit at the end of the sql scripts only.


diffs (truncated from 576 to 300 lines):

diff --git a/buildtools/autogen/scripts/sql2c.py 
b/buildtools/autogen/scripts/sql2c.py
--- a/buildtools/autogen/scripts/sql2c.py
+++ b/buildtools/autogen/scripts/sql2c.py
@@ -172,12 +172,10 @@ if current_pointer > 0:
 # insert more common stuff
 insert2 = (
 '");\n'
-'\n'
-'\tpos += snprintf(buf + pos, bufsize - pos, "commit;\\n");\n'
-'\n'
-'\tassert(pos < bufsize);\n'
-'\tprintf("#Loading: {0}{1}\\n");\n'
-'\treturn SQLstatementIntern(c, &buf, "install", 1, 0, NULL);\n'
+'\tif (pos >= bufsize)\n'
+'\t\tthrow(SQL, "createdb.{0}", SQLSTATE(42000) "SQL script to install is too 
large");\n'
+'\tprintf("# loading sql script: {0}{1}\\n");\n'
+'\treturn SQLstatementIntern(c, &buf, "createdb.{0}", 1, 0, NULL);\n'
 '}}\n').format(filebasename, split[1])
 
 sql_c_output_file.write(insert2)
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -470,8 +470,8 @@ SQLinit(Client c)
                        SQLnewcatalog = 1;
        }
        if (SQLnewcatalog > 0) {
-               size_t bufsize = 16384;
-               char *buf = GDKmalloc(bufsize);
+               size_t bufsize = 128 * BLOCK;
+               char *buf = GDKmalloc(bufsize), *commit = "commit;\n";
 
                SQLnewcatalog = 0;
                maybeupgrade = 0;
@@ -479,6 +479,8 @@ SQLinit(Client c)
                if (buf == NULL)
                        throw(SQL, "createdb", SQLSTATE(HY001) MAL_MALLOC_FAIL);
 
+               fprintf(stdout, "# SQL catalog created, loading sql scripts 
once\n");
+
                if ((msg = install_sql_scripts(c, buf, bufsize)) != 
MAL_SUCCEED) {
                        MT_lock_unset(&sql_contextLock);
                        GDKfree(buf);
@@ -493,6 +495,10 @@ SQLinit(Client c)
 #endif
 
                GDKfree(buf);
+               if ((msg = SQLstatementIntern(c, &commit, "sql.init", 1, 0, 
NULL)) != MAL_SUCCEED) {
+                       MT_lock_unset(&sql_contextLock);
+                       return msg;
+               }
                if (m->sa)
                        sa_destroy(m->sa);
                m->sa = NULL;
diff --git a/sql/scripts/09_like.sql.c b/sql/scripts/09_like.sql.c
--- a/sql/scripts/09_like.sql.c
+++ b/sql/scripts/09_like.sql.c
@@ -26,10 +26,8 @@ sql_install_09_like(Client c, char *buf,
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, " create filter function \"like\"(val 
string, pat string, esc string) external name algebra.\"like\"; create filter 
function \"ilike\"(val string, pat string, esc string) external name 
algebra.\"ilike\"; create filter function \"like\"(val string, pat string) 
external name algebra.\"like\"; create filter function \"ilike\"(val string, 
pat string) external name algebra.\"ilike\"; grant execute on filter function 
\"like\" (string, string, string) to public; grant execute on filter function 
\"ilike\" (string, string, string) to public; grant execute on filter function 
\"like\" (string, string) to public; grant execute on filter function \"ilike\" 
(string, string) to public;");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 09_like.sql\n");
-       return SQLstatementIntern(c, &buf, "install", 1, 0, NULL);
+       if (pos >= bufsize)
+               throw(SQL, "createdb.09_like", SQLSTATE(42000) "SQL script to 
install is too large");
+       printf("# loading sql script: 09_like.sql\n");
+       return SQLstatementIntern(c, &buf, "createdb.09_like", 1, 0, NULL);
 }
diff --git a/sql/scripts/10_math.sql.c b/sql/scripts/10_math.sql.c
--- a/sql/scripts/10_math.sql.c
+++ b/sql/scripts/10_math.sql.c
@@ -26,10 +26,8 @@ sql_install_10_math(Client c, char *buf,
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, " CREATE FUNCTION degrees(r double) 
RETURNS double RETURN r*180/pi(); CREATE FUNCTION radians(d double) RETURNS 
double RETURN d*pi()/180; grant execute on function degrees to public; grant 
execute on function radians to public;");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 10_math.sql\n");
-       return SQLstatementIntern(c, &buf, "install", 1, 0, NULL);
+       if (pos >= bufsize)
+               throw(SQL, "createdb.10_math", SQLSTATE(42000) "SQL script to 
install is too large");
+       printf("# loading sql script: 10_math.sql\n");
+       return SQLstatementIntern(c, &buf, "createdb.10_math", 1, 0, NULL);
 }
diff --git a/sql/scripts/11_times.sql.c b/sql/scripts/11_times.sql.c
--- a/sql/scripts/11_times.sql.c
+++ b/sql/scripts/11_times.sql.c
@@ -26,10 +26,8 @@ sql_install_11_times(Client c, char *buf
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, "  create procedure times() external name 
sql.times; grant execute on procedure times to public;");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 11_times.sql\n");
-       return SQLstatementIntern(c, &buf, "install", 1, 0, NULL);
+       if (pos >= bufsize)
+               throw(SQL, "createdb.11_times", SQLSTATE(42000) "SQL script to 
install is too large");
+       printf("# loading sql script: 11_times.sql\n");
+       return SQLstatementIntern(c, &buf, "createdb.11_times", 1, 0, NULL);
 }
diff --git a/sql/scripts/12_url.sql.c b/sql/scripts/12_url.sql.c
--- a/sql/scripts/12_url.sql.c
+++ b/sql/scripts/12_url.sql.c
@@ -26,10 +26,8 @@ sql_install_12_url(Client c, char *buf, 
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, " CREATE TYPE url EXTERNAL NAME url; 
CREATE function getAnchor( theUrl url ) RETURNS STRING EXTERNAL NAME 
url.\"getAnchor\"; GRANT EXECUTE ON FUNCTION getAnchor(url) TO PUBLIC; CREATE 
function getBasename(theUrl url) RETURNS STRING EXTERNAL NAME 
url.\"getBasename\"; GRANT EXECUTE ON FUNCTION getBasename(url) TO PUBLIC; 
CREATE function getContent(theUrl url) RETURNS STRING EXTERNAL NAME 
url.\"getContent\"; GRANT EXECUTE ON FUNCTION getContent(url) TO PUBLIC; CREATE 
function getContext(theUrl url) RETURNS STRING EXTERNAL NAME 
url.\"getContext\"; GRANT EXECUTE ON FUNCTION getContext(url) TO PUBLIC; CREATE 
function getDomain(theUrl url) RETURNS STRING EXTERNAL NAME url.\"getDomain\"; 
GRANT EXECUTE ON FUNCTION getDomain(url) TO PUBLIC; CREATE function 
getExtension(theUrl url) RETURNS STRING EXTERNAL NAME url.\"getExtension\"; 
GRANT EXECUTE ON FUNCTION getExtension(url) TO PUBLIC; CREATE function 
getFile(theUrl url) RETURNS STRING EXTERNAL NAME url.\"getFile
 \"; GRANT EXECUTE ON FUNCTION getFile(url) TO PUBLIC; CREATE function 
getHost(theUrl url) RETURNS STRING EXTERNAL NAME url.\"getHost\"; GRANT EXECUTE 
ON FUNCTION getHost(url) TO PUBLIC; CREATE function getPort(theUrl url) RETURNS 
STRING EXTERNAL NAME url.\"getPort\"; GRANT EXECUTE ON FUNCTION getPort(url) TO 
PUBLIC; CREATE function getProtocol(theUrl url) RETURNS STRING EXTERNAL NAME 
url.\"getProtocol\"; GRANT EXECUTE ON FUNCTION getProtocol(url) TO PUBLIC; 
CREATE function getQuery(theUrl url) RETURNS STRING EXTERNAL NAME 
url.\"getQuery\"; GRANT EXECUTE ON FUNCTION getQuery(url) TO PUBLIC; CREATE 
function getUser(theUrl url) RETURNS STRING EXTERNAL NAME url.\"getUser\"; 
GRANT EXECUTE ON FUNCTION getUser(url) TO PUBLIC; CREATE function 
getRobotURL(theUrl url) RETURNS STRING EXTERNAL NAME url.\"getRobotURL\"; GRANT 
EXECUTE ON FUNCTION getRobotURL(url) TO PUBLIC; CREATE function isaURL(theUrl 
url) RETURNS BOOL EXTERNAL NAME url.\"isaURL\"; GRANT EXECUTE ON FUNCTION 
isaURL(url) TO PUBLI
 C; CREATE function newurl(protocol STRING, hostname STRING, \"port\" INT, file 
STRING) RETURNS url EXTERNAL NAME url.\"new\"; GRANT EXECUTE ON FUNCTION 
newurl(STRING, STRING, INT, STRING) TO PUBLIC; CREATE function newurl(protocol 
STRING, hostname STRING, file STRING) RETURNS url EXTERNAL NAME url.\"new\"; 
GRANT EXECUTE ON FUNCTION newurl(STRING, STRING, STRING) TO PUBLIC;");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 12_url.sql\n");
-       return SQLstatementIntern(c, &buf, "install", 1, 0, NULL);
+       if (pos >= bufsize)
+               throw(SQL, "createdb.12_url", SQLSTATE(42000) "SQL script to 
install is too large");
+       printf("# loading sql script: 12_url.sql\n");
+       return SQLstatementIntern(c, &buf, "createdb.12_url", 1, 0, NULL);
 }
diff --git a/sql/scripts/13_date.sql.c b/sql/scripts/13_date.sql.c
--- a/sql/scripts/13_date.sql.c
+++ b/sql/scripts/13_date.sql.c
@@ -26,10 +26,8 @@ sql_install_13_date(Client c, char *buf,
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, " create function str_to_date(s string, 
format string) returns date external name mtime.\"str_to_date\"; create 
function date_to_str(d date, format string) returns string external name 
mtime.\"date_to_str\"; create function str_to_time(s string, format string) 
returns time external name mtime.\"str_to_time\"; create function time_to_str(d 
time, format string) returns string external name mtime.\"time_to_str\"; create 
function str_to_timestamp(s string, format string) returns timestamp external 
name mtime.\"str_to_timestamp\"; create function timestamp_to_str(d timestamp, 
format string) returns string external name mtime.\"timestamp_to_str\"; grant 
execute on function str_to_date to public; grant execute on function 
date_to_str to public; grant execute on function str_to_time to public; grant 
execute on function time_to_str to public; grant execute on function 
str_to_timestamp to public; grant execute on function timestamp_to_str to 
public;");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 13_date.sql\n");
-       return SQLstatementIntern(c, &buf, "install", 1, 0, NULL);
+       if (pos >= bufsize)
+               throw(SQL, "createdb.13_date", SQLSTATE(42000) "SQL script to 
install is too large");
+       printf("# loading sql script: 13_date.sql\n");
+       return SQLstatementIntern(c, &buf, "createdb.13_date", 1, 0, NULL);
 }
diff --git a/sql/scripts/14_inet.sql.c b/sql/scripts/14_inet.sql.c
--- a/sql/scripts/14_inet.sql.c
+++ b/sql/scripts/14_inet.sql.c
@@ -26,10 +26,8 @@ sql_install_14_inet(Client c, char *buf,
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, " CREATE TYPE inet EXTERNAL NAME inet; 
CREATE FUNCTION \"broadcast\" (p inet) RETURNS inet EXTERNAL NAME 
inet.\"broadcast\"; GRANT EXECUTE ON FUNCTION \"broadcast\"(inet) TO PUBLIC; 
CREATE FUNCTION \"host\" (p inet) RETURNS clob EXTERNAL NAME inet.\"host\"; 
GRANT EXECUTE ON FUNCTION \"host\"(inet) TO PUBLIC; CREATE FUNCTION \"masklen\" 
(p inet) RETURNS int EXTERNAL NAME inet.\"masklen\"; GRANT EXECUTE ON FUNCTION 
\"masklen\"(inet) TO PUBLIC; CREATE FUNCTION \"setmasklen\" (p inet, mask int) 
RETURNS inet EXTERNAL NAME inet.\"setmasklen\"; GRANT EXECUTE ON FUNCTION 
\"setmasklen\"(inet, int) TO PUBLIC; CREATE FUNCTION \"netmask\" (p inet) 
RETURNS inet EXTERNAL NAME inet.\"netmask\"; GRANT EXECUTE ON FUNCTION 
\"netmask\"(inet) TO PUBLIC; CREATE FUNCTION \"hostmask\" (p inet) RETURNS inet 
EXTERNAL NAME inet.\"hostmask\"; GRANT EXECUTE ON FUNCTION \"hostmask\"(inet) 
TO PUBLIC; CREATE FUNCTION \"network\" (p inet) RETURNS inet EXTERNAL NAME 
inet.\"network\"; 
 GRANT EXECUTE ON FUNCTION \"network\"(inet) TO PUBLIC; CREATE FUNCTION 
\"text\" (p inet) RETURNS clob EXTERNAL NAME inet.\"text\"; GRANT EXECUTE ON 
FUNCTION \"text\"(inet) TO PUBLIC; CREATE FUNCTION \"abbrev\" (p inet) RETURNS 
clob EXTERNAL NAME inet.\"abbrev\"; GRANT EXECUTE ON FUNCTION \"abbrev\"(inet) 
TO PUBLIC; CREATE FUNCTION \"left_shift\"(i1 inet, i2 inet) RETURNS boolean 
EXTERNAL NAME inet.\"<<\"; GRANT EXECUTE ON FUNCTION \"left_shift\"(inet, inet) 
TO PUBLIC; CREATE FUNCTION \"right_shift\"(i1 inet, i2 inet) RETURNS boolean 
EXTERNAL NAME inet.\">>\"; GRANT EXECUTE ON FUNCTION \"right_shift\"(inet, 
inet) TO PUBLIC; CREATE FUNCTION \"left_shift_assign\"(i1 inet, i2 inet) 
RETURNS boolean EXTERNAL NAME inet.\"<<=\"; GRANT EXECUTE ON FUNCTION 
\"left_shift_assign\"(inet, inet) TO PUBLIC; CREATE FUNCTION 
\"right_shift_assign\"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME 
inet.\">>=\"; GRANT EXECUTE ON FUNCTION \"right_shift_assign\"(inet, inet) TO 
PUBLIC;");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 14_inet.sql\n");
-       return SQLstatementIntern(c, &buf, "install", 1, 0, NULL);
+       if (pos >= bufsize)
+               throw(SQL, "createdb.14_inet", SQLSTATE(42000) "SQL script to 
install is too large");
+       printf("# loading sql script: 14_inet.sql\n");
+       return SQLstatementIntern(c, &buf, "createdb.14_inet", 1, 0, NULL);
 }
diff --git a/sql/scripts/15_querylog.sql.c b/sql/scripts/15_querylog.sql.c
--- a/sql/scripts/15_querylog.sql.c
+++ b/sql/scripts/15_querylog.sql.c
@@ -26,10 +26,8 @@ sql_install_15_querylog(Client c, char *
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, "  create function sys.querylog_catalog() 
returns table( id oid, owner string, defined timestamp, query string, pipe 
string, \"plan\" string,             mal int,                optimize bigint ) 
external name sql.querylog_catalog;  create function sys.querylog_calls() 
returns table( id oid,              \"start\" timestamp,            \"stop\" 
timestamp,             arguments string,               tuples bigint,          
run bigint,             ship bigint,            cpu int,                io int  
) external name sql.querylog_calls; create view sys.querylog_catalog as select 
* from sys.querylog_catalog(); create view sys.querylog_calls as select * from 
sys.querylog_calls(); create view sys.querylog_history as select qd.*, 
ql.\"start\",ql.\"stop\", ql.arguments, ql.tuples, ql.run, ql.ship, ql.cpu, 
ql.io from sys.querylog_catalog() qd, sys.querylog_calls() ql where qd.id = 
ql.id and qd.owner = user; create procedure sys.querylog_empty() external name 
sql.querylog_empty; create procedure sys.querylog_enable() external name 
sql.querylog_enable; create procedure sys.
 querylog_enable(threshold smallint) external name 
sql.querylog_enable_threshold; create procedure sys.querylog_disable() external 
name sql.querylog_disable;");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 15_querylog.sql\n");
-       return SQLstatementIntern(c, &buf, "install", 1, 0, NULL);
+       if (pos >= bufsize)
+               throw(SQL, "createdb.15_querylog", SQLSTATE(42000) "SQL script 
to install is too large");
+       printf("# loading sql script: 15_querylog.sql\n");
+       return SQLstatementIntern(c, &buf, "createdb.15_querylog", 1, 0, NULL);
 }
diff --git a/sql/scripts/16_tracelog.sql.c b/sql/scripts/16_tracelog.sql.c
--- a/sql/scripts/16_tracelog.sql.c
+++ b/sql/scripts/16_tracelog.sql.c
@@ -26,10 +26,8 @@ sql_install_16_tracelog(Client c, char *
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, " create function sys.tracelog() returns 
table ( event integer,           clk varchar(20),                pc 
varchar(50),         thread int,             ticks bigint,           rrsMB 
bigint,           vmMB bigint,            reads bigint,           writes 
bigint,          minflt bigint,          majflt bigint,          nvcsw bigint,  
         stmt string             ) external name sql.dump_trace; create view 
sys.tracelog as select * from sys.tracelog();");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 16_tracelog.sql\n");
-       return SQLstatementIntern(c, &buf, "install", 1, 0, NULL);
+       if (pos >= bufsize)
+               throw(SQL, "createdb.16_tracelog", SQLSTATE(42000) "SQL script 
to install is too large");
+       printf("# loading sql script: 16_tracelog.sql\n");
+       return SQLstatementIntern(c, &buf, "createdb.16_tracelog", 1, 0, NULL);
 }
diff --git a/sql/scripts/17_temporal.sql.c b/sql/scripts/17_temporal.sql.c
--- a/sql/scripts/17_temporal.sql.c
+++ b/sql/scripts/17_temporal.sql.c
@@ -26,10 +26,8 @@ sql_install_17_temporal(Client c, char *
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, " create function sys.\"epoch\"(sec 
BIGINT) returns TIMESTAMP external name timestamp.\"epoch\"; create function 
sys.\"epoch\"(sec INT) returns TIMESTAMP external name timestamp.\"epoch\"; 
create function sys.\"epoch\"(ts TIMESTAMP) returns INT external name 
timestamp.\"epoch\"; create function sys.\"epoch\"(ts TIMESTAMP WITH TIME ZONE) 
returns INT external name timestamp.\"epoch\"; grant execute on function 
sys.\"epoch\" (BIGINT) to public; grant execute on function sys.\"epoch\" (INT) 
to public; grant execute on function sys.\"epoch\" (TIMESTAMP) to public; grant 
execute on function sys.\"epoch\" (TIMESTAMP WITH TIME ZONE) to public;");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 17_temporal.sql\n");
-       return SQLstatementIntern(c, &buf, "install", 1, 0, NULL);
+       if (pos >= bufsize)
+               throw(SQL, "createdb.17_temporal", SQLSTATE(42000) "SQL script 
to install is too large");
+       printf("# loading sql script: 17_temporal.sql\n");
+       return SQLstatementIntern(c, &buf, "createdb.17_temporal", 1, 0, NULL);
 }
diff --git a/sql/scripts/18_index.sql.c b/sql/scripts/18_index.sql.c
--- a/sql/scripts/18_index.sql.c
+++ b/sql/scripts/18_index.sql.c
@@ -26,10 +26,8 @@ sql_install_18_index(Client c, char *buf
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, "  create procedure 
sys.createorderindex(sys string, tab string, col string) external name 
sql.createorderindex; create procedure sys.droporderindex(sys string, tab 
string, col string) external name sql.droporderindex; ");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 18_index.sql\n");
-       return SQLstatementIntern(c, &buf, "install", 1, 0, NULL);
+       if (pos >= bufsize)
+               throw(SQL, "createdb.18_index", SQLSTATE(42000) "SQL script to 
install is too large");
+       printf("# loading sql script: 18_index.sql\n");
+       return SQLstatementIntern(c, &buf, "createdb.18_index", 1, 0, NULL);
 }
diff --git a/sql/scripts/20_vacuum.sql.c b/sql/scripts/20_vacuum.sql.c
--- a/sql/scripts/20_vacuum.sql.c
+++ b/sql/scripts/20_vacuum.sql.c
@@ -26,10 +26,8 @@ sql_install_20_vacuum(Client c, char *bu
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, "   create procedure shrink(sys string, 
tab string) external name sql.shrink; create procedure reuse(sys string, tab 
string) external name sql.reuse; create procedure vacuum(sys string, tab 
string) external name sql.vacuum; ");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 20_vacuum.sql\n");
-       return SQLstatementIntern(c, &buf, "install", 1, 0, NULL);
+       if (pos >= bufsize)
+               throw(SQL, "createdb.20_vacuum", SQLSTATE(42000) "SQL script to 
install is too large");
+       printf("# loading sql script: 20_vacuum.sql\n");
+       return SQLstatementIntern(c, &buf, "createdb.20_vacuum", 1, 0, NULL);
 }
diff --git a/sql/scripts/21_dependency_views.sql.c 
b/sql/scripts/21_dependency_views.sql.c
--- a/sql/scripts/21_dependency_views.sql.c
+++ b/sql/scripts/21_dependency_views.sql.c
@@ -26,10 +26,8 @@ sql_install_21_dependency_views(Client c
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, "  CREATE VIEW sys.ids (id, name, 
schema_id, table_id, table_name, obj_type, sys_table) AS SELECT id, name, 
cast(null as int) as schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'author' AS obj_type, 'sys.auths' AS sys_table 
FROM sys.auths UNION ALL SELECT id, name, cast(null as int) as schema_id, 
cast(null as int) as table_id, cast(null as varchar(124)) as table_name, 
'schema', 'sys.schemas' FROM sys.schemas UNION ALL SELECT id, name, schema_id, 
id as table_id, name as table_name, case when type = 1 then 'view' else 'table' 
end, 'sys._tables' FROM sys._tables UNION ALL SELECT id, name, schema_id, id as 
table_id, name as table_name, case when type = 1 then 'view' else 'table' end, 
'tmp._tables' FROM tmp._tables UNION ALL SELECT c.id, c.name, t.schema_id, 
c.table_id, t.name as table_name, 'column', 'sys._columns' FROM sys._columns c 
JOIN sys._tables t ON c.table_id = t.id UNION ALL SELECT c.id, c.name, 
t.schema_id, c.t
 able_id, t.name as table_name, 'column', 'tmp._columns' FROM tmp._columns c 
JOIN tmp._tables t ON c.table_id = t.id UNION ALL SELECT k.id, k.name, 
t.schema_id, k.table_id, t.name as table_name, 'key', 'sys.keys' FROM sys.keys 
k JOIN sys._tables t ON k.table_id = t.id UNION ALL SELECT k.id, k.name, 
t.schema_id, k.table_id, t.name as table_name, 'key', 'tmp.keys' FROM tmp.keys 
k JOIN tmp._tables t ON k.table_id = t.id UNION ALL SELECT i.id, i.name, 
t.schema_id, i.table_id, t.name as table_name, 'index', 'sys.idxs' FROM 
sys.idxs i JOIN sys._tables t ON i.table_id = t.id UNION ALL SELECT i.id, 
i.name, t.schema_id, i.table_id, t.name as table_name, 'index', 'tmp.idxs' FROM 
tmp.idxs i JOIN tmp._tables t ON i.table_id = t.id UNION ALL SELECT g.id, 
g.name, t.schema_id, g.table_id, t.name as table_name, 'trigger', 
'sys.triggers' FROM sys.triggers g JOIN sys._tables t ON g.table_id = t.id 
UNION ALL SELECT g.id, g.name, t.schema_id, g.table_id, t.name as table_name, 
'trigger', 'tmp.triggers' F
 ROM tmp.triggers g JOIN tmp._tables t ON g.table_id = t.id UNION ALL SELECT 
id, name, schema_id, cast(null as int) as table_id, cast(null as varchar(124)) 
as table_name, case when type = 2 then 'procedure' else 'function' end, 
'sys.functions' FROM sys.functions UNION ALL SELECT a.id, a.name, f.schema_id, 
cast(null as int) as table_id, cast(null as varchar(124)) as table_name, case 
when f.type = 2 then 'procedure arg' else 'function arg' end, 'sys.args' FROM 
sys.args a JOIN sys.functions f ON a.func_id = f.id UNION ALL SELECT id, name, 
schema_id, cast(null as int) as table_id, cast(null as varchar(124)) as 
table_name, 'sequence', 'sys.sequences' FROM sys.sequences UNION ALL SELECT id, 
sqlname, schema_id, cast(null as int) as table_id, cast(null as varchar(124)) 
as table_name, 'type', 'sys.types' FROM sys.types WHERE id > 2000  ORDER BY id; 
  GRANT SELECT ON sys.ids TO PUBLIC; CREATE TABLE sys.dependency_types ( 
dependency_type_id SMALLINT NOT NULL PRIMARY KEY, dependency_type_name VA
 RCHAR(15) NOT NULL UNIQUE); INSERT INTO sys.dependency_types 
(dependency_type_id, dependency_type_name) VALUES (1, 'SCHEMA'), (2, 'TABLE'), 
(3, 'COLUMN'), (4, 'KEY'), (5, 'VIEW'), (6, 'USER'), (7, 'FUNCTION'), (8, 
'TRIGGER'), (9, 'OWNER'), (10, 'INDEX'), (11, 'FKEY'), (12, 'SEQUENCE'), (13, 
'PROCEDURE'), (14, 'BE_DROPPED'), (15, 'TYPE'); ALTER TABLE 
sys.dependency_types SET READ ONLY; GRANT SELECT ON sys.dependency_types TO 
PUBLIC; CREATE VIEW sys.dependencies_vw AS SELECT d.id, i1.obj_type, i1.name, 
d.depend_id as used_by_id, i2.obj_type as used_by_obj_type, i2.name as 
used_by_name, d.depend_type, dt.dependency_type_name FROM sys.dependencies d 
JOIN sys.ids i1 ON d.id = i1.id JOIN sys.ids i2 ON d.depend_id = i2.id JOIN 
sys.dependency_types dt ON d.depend_type = dt.dependency_type_id ORDER BY id, 
depend_id; GRANT SELECT ON sys.dependencies_vw TO PUBLIC;  CREATE VIEW 
sys.dependency_owners_on_schemas AS SELECT a.name AS owner_name, s.id AS 
schema_id, s.name AS schema_name, CAST(1 AS s
 mallint) AS depend_type FROM sys.schemas AS s, sys.auths AS a WHERE s.owner = 
a.id ORDER BY a.name, s.name; GRANT SELECT ON sys.dependency_owners_on_schemas 
TO PUBLIC;   CREATE VIEW sys.dependency_columns_on_keys AS SELECT t.schema_id 
AS table_schema_id, t.id AS table_id, t.name AS table_name, c.id AS column_id, 
c.name AS column_name, k.id AS key_id, k.name AS key_name, CAST(kc.nr +1 AS 
int) AS key_col_nr, CAST(k.type AS smallint) AS key_type, CAST(4 AS smallint) 
AS depend_type FROM sys.columns AS c, sys.objects AS kc, sys.keys AS k, 
sys.tables AS t WHERE k.table_id = c.table_id AND c.table_id = t.id AND kc.id = 
k.id AND kc.name = c.name AND k.type IN (0, 1) ORDER BY t.schema_id, t.name, 
c.name, k.type, k.name, kc.nr; GRANT SELECT ON sys.dependency_columns_on_keys 
TO PUBLIC; CREATE VIEW sys.dependency_tables_on_views AS SELECT t.schema_id AS 
table_schema_id, t.id AS table_id, t.name AS table_name, v.schema_id AS 
view_schema_id, v.id AS view_id, v.name AS view_name, dep.depend_type A
 S depend_type FROM sys.tables AS t, sys.tables AS v, sys.dependencies AS dep 
WHERE t.id = dep.id AND v.id = dep.depend_id AND dep.depend_type = 5 AND t.type 
NOT IN (1, 11) AND v.type IN (1, 11) ORDER BY t.schema_id, t.name, v.schema_id, 
v.name; GRANT SELECT ON sys.dependency_tables_on_views TO PUBLIC; CREATE VIEW 
sys.dependency_views_on_views AS SELECT v1.schema_id AS view1_schema_id, v1.id 
AS view1_id, v1.name AS view1_name, v2.schema_id AS view2_schema_id, v2.id AS 
view2_id, v2.name AS view2_name, dep.depend_type AS depend_type FROM sys.tables 
AS v1, sys.tables AS v2, sys.dependencies AS dep WHERE v1.id = dep.id AND v2.id 
= dep.depend_id AND dep.depend_type = 5 AND v1.type IN (1, 11) AND v2.type IN 
(1, 11) ORDER BY v1.schema_id, v1.name, v2.schema_id, v2.name; GRANT SELECT ON 
sys.dependency_views_on_views TO PUBLIC; CREATE VIEW 
sys.dependency_columns_on_views AS SELECT t.schema_id AS table_schema_id, t.id 
AS table_id, t.name AS table_name, c.id AS column_id, c.name AS column_name,
  v.schema_id AS view_schema_id, v.id AS view_id, v.name AS view_name, 
dep.depend_type AS depend_type FROM sys.columns AS c, sys.tables AS v, 
sys.tables AS t, sys.dependencies AS dep WHERE c.id = dep.id AND v.id = 
dep.depend_id AND c.table_id = t.id AND dep.depend_type = 5 AND v.type IN (1, 
11) ORDER BY t.schema_id, t.name, c.name, v.name; GRANT SELECT ON 
sys.dependency_columns_on_views TO PUBLIC; CREATE VIEW 
sys.dependency_functions_on_views AS SELECT f.schema_id AS function_schema_id, 
f.id AS function_id, f.name AS function_name, v.schema_id AS view_schema_id, 
v.id AS view_id, v.name AS view_name, dep.depend_type AS depend_type FROM 
sys.functions AS f, sys.tables AS v, sys.dependencies AS dep WHERE f.id = 
dep.id AND v.id = dep.depend_id AND dep.depend_type = 5 AND v.type IN (1, 11) 
ORDER BY f.schema_id, f.name, v.schema_id, v.name; GRANT SELECT ON 
sys.dependency_functions_on_views TO PUBLIC; CREATE VIEW 
sys.dependency_schemas_on_users AS SELECT s.id AS schema_id, s.name AS schema_n
 ame, u.name AS user_name, CAST(6 AS smallint) AS depend_type FROM sys.users AS 
u, sys.schemas AS s WHERE u.default_schema = s.id ORDER BY s.name, u.name; 
GRANT SELECT ON sys.dependency_schemas_on_users TO PUBLIC; CREATE VIEW 
sys.dependency_tables_on_functions AS SELECT t.schema_id AS table_schema_id, 
t.id AS table_id, t.name AS table_name, f.name AS function_name, f.type AS 
function_type, dep.depend_type AS depend_type FROM sys.functions AS f, 
sys.tables AS t, sys.dependencies AS dep WHERE t.id = dep.id AND f.id = 
dep.depend_id AND dep.depend_type = 7 AND f.type <> 2 AND t.type NOT IN (1, 11) 
ORDER BY t.name, t.schema_id, f.name, f.id; GRANT SELECT ON 
sys.dependency_tables_on_functions TO PUBLIC; CREATE VIEW 
sys.dependency_views_on_functions AS SELECT v.schema_id AS view_schema_id, v.id 
AS view_id, v.name AS view_name, f.name AS function_name, f.type AS 
function_type, dep.depend_type AS depend_type 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 f.type <> 2 AND v.type 
IN (1, 11) ORDER BY v.name, v.schema_id, f.name, f.id; GRANT SELECT ON 
sys.dependency_views_on_functions TO PUBLIC; CREATE VIEW 
sys.dependency_columns_on_functions AS SELECT c.table_id, c.id AS column_id, 
c.name, f.id AS function_id, f.name AS function_name, f.type AS function_type, 
dep.depend_type AS depend_type 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 AND f.type <> 2 ORDER BY c.name, c.table_id, f.name, f.id; 
GRANT SELECT ON sys.dependency_columns_on_functions TO PUBLIC; CREATE VIEW 
sys.dependency_functions_on_functions AS SELECT f1.schema_id, f1.id AS 
function_id, f1.name AS function_name, f1.type AS function_type, f2.schema_id 
AS used_in_function_schema_id, f2.id AS used_in_function_id, f2.name AS 
used_in_function_name, f2.type AS used_in_function_type, dep.depend_type AS 
depend_type 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 AND f2.type <> 2 ORDER BY f1.name, f1.id, 
f2.name, f2.id; GRANT SELECT ON sys.dependency_functions_on_functions TO 
PUBLIC; CREATE VIEW sys.dependency_tables_on_triggers AS (SELECT t.schema_id AS 
table_schema_id, t.id AS table_id, t.name AS table_name, tri.id AS trigger_id, 
tri.name AS trigger_name, CAST(8 AS smallint) AS depend_type FROM sys.tables AS 
t, sys.triggers AS tri WHERE tri.table_id = t.id) UNION (SELECT t.schema_id AS 
table_schema_id, t.id AS table_id, t.name AS table_name, tri.id AS trigger_id, 
tri.name AS trigger_name, dep.depend_type AS depend_type FROM sys.tables AS t, 
sys.triggers AS tri, sys.dependencies AS dep WHERE dep.id = t.id AND 
dep.depend_id = tri.id AND dep.depend_type = 8) ORDER BY table_schema_id, 
table_name, trigger_name; GRANT SELECT ON sys.dependency_tables_on_triggers TO 
PUBLIC; CREATE VIEW sys.dependency_columns_on_triggers AS SELECT t.s
 chema_id AS table_schema_id, t.id AS table_id, t.name AS table_name, tri.id AS 
trigger_id, tri.name AS trigger_name, c.id AS column_id, c.name AS column_name, 
dep.depend_type AS depend_type FROM sys.tables AS t, sys.columns AS c, 
sys.triggers AS tri, sys.dependencies AS dep WHERE dep.id = c.id AND 
dep.depend_id = tri.id AND c.table_id = t.id AND dep.depend_type = 8 ORDER BY 
t.schema_id, t.name, tri.name, c.name; GRANT SELECT ON 
sys.dependency_columns_on_triggers TO PUBLIC; CREATE VIEW 
sys.dependency_functions_on_triggers AS SELECT f.schema_id AS 
function_schema_id, f.id AS function_id, f.name AS function_name, f.type AS 
function_type, tri.id AS trigger_id, tri.name AS trigger_name, tri.table_id AS 
trigger_table_id, dep.depend_type AS depend_type FROM sys.functions AS f, 
sys.triggers AS tri, sys.dependencies AS dep WHERE dep.id = f.id AND 
dep.depend_id = tri.id AND dep.depend_type = 8 ORDER BY f.schema_id, f.name, 
tri.name; GRANT SELECT ON sys.dependency_functions_on_triggers TO PUBL
 IC;  CREATE VIEW sys.dependency_tables_on_indexes AS SELECT t.schema_id AS 
table_schema_id, t.id AS table_id, t.name AS table_name, i.id AS index_id, 
i.name AS index_name, i.type AS index_type, CAST(10 AS smallint) AS depend_type 
FROM sys.tables AS t, sys.idxs AS i WHERE i.table_id = t.id  AND (i.table_id, 
i.name) NOT IN (SELECT k.table_id, k.name FROM sys.keys k) ORDER BY 
t.schema_id, t.name, i.name; GRANT SELECT ON sys.dependency_tables_on_indexes 
TO PUBLIC; CREATE VIEW sys.dependency_columns_on_indexes AS SELECT c.id AS 
column_id, c.name AS column_name, t.id AS table_id, t.name AS table_name, 
t.schema_id, i.id AS index_id, i.name AS index_name, i.type AS index_type, 
CAST(ic.nr +1 AS INT) AS seq_nr, CAST(10 AS smallint) AS depend_type FROM 
sys.tables AS t, sys.columns AS c, sys.objects AS ic, sys.idxs AS i WHERE 
ic.name = c.name AND ic.id = i.id AND c.table_id = i.table_id AND c.table_id = 
t.id  AND (i.table_id, i.name) NOT IN (SELECT k.table_id, k.name FROM sys.keys 
k) ORDER BY c
 .name, t.name, t.schema_id, i.name, ic.nr; GRANT SELECT ON 
sys.dependency_columns_on_indexes TO PUBLIC; CREATE VIEW 
sys.dependency_tables_on_foreignkeys AS SELECT t.schema_id AS table_schema_id, 
t.id AS table_id, t.name AS table_name, fk.name AS fk_name, CAST(k.type AS 
smallint) AS key_type, CAST(11 AS smallint) AS depend_type FROM sys.tables AS 
t, sys.keys AS k, sys.keys AS fk WHERE fk.rkey = k.id and k.table_id = t.id 
ORDER BY t.schema_id, t.name, fk.name; GRANT SELECT ON 
sys.dependency_tables_on_foreignkeys TO PUBLIC; CREATE VIEW 
sys.dependency_keys_on_foreignkeys AS SELECT k.table_id AS key_table_id, k.id 
AS key_id, k.name AS key_name, fk.table_id AS fk_table_id, fk.id AS fk_id, 
fk.name AS fk_name, CAST(k.type AS smallint) AS key_type, CAST(11 AS smallint) 
AS depend_type FROM sys.keys AS k, sys.keys AS fk WHERE k.id = fk.rkey ORDER BY 
k.name, fk.name; GRANT SELECT ON sys.dependency_keys_on_foreignkeys TO PUBLIC;  
CREATE VIEW sys.dependency_tables_on_procedures AS SELECT t.schema
 _id AS table_schema_id, t.id AS table_id, t.name AS table_name, p.id AS 
procedure_id, p.name AS procedure_name, p.type AS procedure_type, 
dep.depend_type AS depend_type FROM sys.functions AS p, sys.tables AS t, 
sys.dependencies AS dep WHERE t.id = dep.id AND p.id = dep.depend_id AND 
dep.depend_type = 13 AND p.type = 2 AND t.type NOT IN (1, 11) ORDER BY t.name, 
t.schema_id, p.name, p.id; GRANT SELECT ON sys.dependency_tables_on_procedures 
TO PUBLIC; CREATE VIEW sys.dependency_views_on_procedures AS SELECT v.schema_id 
AS view_schema_id, v.id AS view_id, v.name AS view_name, p.id AS procedure_id, 
p.name AS procedure_name, p.type AS procedure_type, dep.depend_type AS 
depend_type FROM sys.functions AS p, sys.tables AS v, sys.dependencies AS dep 
WHERE v.id = dep.id AND p.id = dep.depend_id AND dep.depend_type = 13 AND 
p.type = 2 AND v.type IN (1, 11) ORDER BY v.name, v.schema_id, p.name, p.id; 
GRANT SELECT ON sys.dependency_views_on_procedures TO PUBLIC; CREATE VIEW 
sys.dependency_columns
 _on_procedures AS SELECT c.table_id, c.id AS column_id, c.name AS column_name, 
p.id AS procedure_id, p.name AS procedure_name, p.type AS procedure_type, 
dep.depend_type AS depend_type FROM sys.functions AS p, sys.columns AS c, 
sys.dependencies AS dep WHERE c.id = dep.id AND p.id = dep.depend_id AND 
dep.depend_type = 13 AND p.type = 2 ORDER BY c.name, c.table_id, p.name, p.id; 
GRANT SELECT ON sys.dependency_columns_on_procedures TO PUBLIC; CREATE VIEW 
sys.dependency_functions_on_procedures AS SELECT f.schema_id AS 
function_schema_id, f.id AS function_id, f.name AS function_name, f.type AS 
function_type, p.schema_id AS procedure_schema_id, p.id AS procedure_id, p.name 
AS procedure_name, p.type AS procedure_type, dep.depend_type AS depend_type 
FROM sys.functions AS p, sys.functions AS f, sys.dependencies AS dep WHERE f.id 
= dep.id AND p.id = dep.depend_id AND dep.depend_type = 13 AND p.type = 2 ORDER 
BY p.name, p.id, f.name, f.id; GRANT SELECT ON 
sys.dependency_functions_on_procedures 
 TO PUBLIC;  CREATE VIEW sys.dependency_columns_on_types AS SELECT t.schema_id 
AS table_schema_id, t.id AS table_id, t.name AS table_name, dt.id AS type_id, 
dt.sqlname AS type_name, c.id AS column_id, c.name AS column_name, 
dep.depend_type AS depend_type FROM sys.tables AS t, sys.columns AS c, 
sys.types AS dt, sys.dependencies AS dep WHERE dep.id = dt.id AND dep.depend_id 
= c.id AND c.table_id = t.id AND dep.depend_type = 15 ORDER BY dt.sqlname, 
t.name, c.name, c.id; GRANT SELECT ON sys.dependency_columns_on_types TO 
PUBLIC; CREATE VIEW sys.dependency_functions_on_types AS SELECT dt.id AS 
type_id, dt.sqlname AS type_name, f.id AS function_id, f.name AS function_name, 
f.type AS function_type, dep.depend_type AS depend_type FROM sys.functions AS 
f, sys.types AS dt, sys.dependencies AS dep WHERE dep.id = dt.id AND 
dep.depend_id = f.id AND dep.depend_type = 15 ORDER BY dt.sqlname, f.name, 
f.id; GRANT SELECT ON sys.dependency_functions_on_types TO PUBLIC; CREATE VIEW 
sys.dependency_args_o
 n_types AS SELECT dt.id AS type_id, dt.sqlname AS type_name, f.id AS 
function_id, f.name AS function_name, a.id AS arg_id, a.name AS arg_name, 
a.number AS arg_nr, dep.depend_type AS depend_type FROM sys.args AS a, 
sys.functions AS f, sys.types AS dt, sys.dependencies AS dep WHERE dep.id = 
dt.id AND dep.depend_id = a.id AND a.func_id = f.id AND dep.depend_type = 15 
ORDER BY dt.sqlname, f.name, a.number, a.name; GRANT SELECT ON 
sys.dependency_args_on_types TO PUBLIC; ");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 21_dependency_views.sql\n");
-       return SQLstatementIntern(c, &buf, "install", 1, 0, NULL);
+       if (pos >= bufsize)
+               throw(SQL, "createdb.21_dependency_views", SQLSTATE(42000) "SQL 
script to install is too large");
+       printf("# loading sql script: 21_dependency_views.sql\n");
+       return SQLstatementIntern(c, &buf, "createdb.21_dependency_views", 1, 
0, NULL);
 }
diff --git a/sql/scripts/22_clients.sql.c b/sql/scripts/22_clients.sql.c
--- a/sql/scripts/22_clients.sql.c
+++ b/sql/scripts/22_clients.sql.c
@@ -26,10 +26,8 @@ sql_install_22_clients(Client c, char *b
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, " create function sys.password_hash 
(username string) returns string external name sql.password; create function 
sys.remote_table_credentials (tablename string) returns table (\"uri\" string, 
\"username\" string, \"hash\" string) external name sql.rt_credentials; create 
function sys.sessions() returns table(\"user\" string, \"login\" timestamp, 
\"sessiontimeout\" bigint, \"lastcommand\" timestamp, \"querytimeout\" bigint, 
\"active\" bool) external name sql.sessions; create view sys.sessions as select 
* from sys.sessions(); create procedure sys.shutdown(delay tinyint) external 
name sql.shutdown; create procedure sys.shutdown(delay tinyint, force bool) 
external name sql.shutdown; create procedure sys.settimeout(\"query\" bigint) 
external name clients.settimeout; create procedure sys.settimeout(\"query\" 
bigint, \"session\" bigint) external name clients.settimeout; create procedure 
sys.setsession(\"timeout\" bigint) external name clients.setsession;");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 22_clients.sql\n");
-       return SQLstatementIntern(c, &buf, "install", 1, 0, NULL);
+       if (pos >= bufsize)
+               throw(SQL, "createdb.22_clients", SQLSTATE(42000) "SQL script 
to install is too large");
+       printf("# loading sql script: 22_clients.sql\n");
+       return SQLstatementIntern(c, &buf, "createdb.22_clients", 1, 0, NULL);
 }
diff --git a/sql/scripts/23_skyserver.sql.c b/sql/scripts/23_skyserver.sql.c
--- a/sql/scripts/23_skyserver.sql.c
+++ b/sql/scripts/23_skyserver.sql.c
@@ -26,10 +26,8 @@ sql_install_23_skyserver(Client c, char 
        size_t pos = 0;
 
        pos += snprintf(buf, bufsize, " CREATE FUNCTION MS_STUFF( s1 
varchar(32), st int, len int, s3 varchar(32)) RETURNS varchar(32) BEGIN DECLARE 
res varchar(32), aux varchar(32); DECLARE ofset int; IF ( st < 0 or st > 
LENGTH(s1)) THEN RETURN ''; END IF; SET ofset = 1; SET res = 
SUBSTRING(s1,ofset,st-1); SET res = res || s3; SET ofset = st + len; SET aux = 
SUBSTRING(s1,ofset,LENGTH(s1)-ofset+1); SET res = res || aux; RETURN res; END; 
grant execute on function MS_STUFF to public; CREATE FUNCTION MS_TRUNC(num 
double, prc int) RETURNS double external name sql.ms_trunc; grant execute on 
function MS_TRUNC to public; CREATE FUNCTION MS_ROUND(num double, prc int, 
truncat int) RETURNS double BEGIN IF (truncat = 0) THEN RETURN ROUND(num, prc); 
ELSE RETURN MS_TRUNC(num, prc); END IF; END; grant execute on function MS_ROUND 
to public; CREATE FUNCTION MS_STR(num float, prc int, truncat int) RETURNS 
string BEGIN RETURN CAST(num as string); END; grant execute on function MS_STR 
to public; CREATE FUNC
 TION alpha(pdec double, pradius double) RETURNS double EXTERNAL NAME 
sql.alpha; grant execute on function alpha to public;");
-
-       pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
-
-       assert(pos < bufsize);
-       printf("#Loading: 23_skyserver.sql\n");
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to