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