Changeset: 8d0d2eb50794 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8d0d2eb50794
Added Files:
sql/test/Users/Tests/grantAndRevokeUserLoggedIN.Bug-3476.SQL.py
sql/test/Users/Tests/grantAndRevokeUserLoggedIN.Bug-3476.stable.err
sql/test/Users/Tests/grantAndRevokeUserLoggedIN.Bug-3476.stable.out
Removed Files:
sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.SQL.py
sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.stable.err
sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.stable.out
Modified Files:
clients/Tests/exports.stable.out
gdk/gdk.h
gdk/gdk_batop.c
gdk/gdk_private.h
gdk/gdk_project.c
gdk/gdk_qsort.c
gdk/gdk_select.c
gdk/gdk_ssort_impl.h
sql/backends/monet5/sql_upgrades.c
sql/server/rel_schema.c
sql/storage/store.c
sql/test/Users/Tests/All
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: default
Log Message:
Merge with Mar2018 branch.
diffs (truncated from 1289 to 300 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -253,8 +253,8 @@ gdk_return GDKmmapfile(str buffer, size_
int GDKms(void);
int GDKnr_threads;
void GDKprepareExit(void);
-void GDKqsort(void *h, void *t, const void *base, size_t n, int hs, int ts,
int tpe);
-void GDKqsort_rev(void *h, void *t, const void *base, size_t n, int hs, int
ts, int tpe);
+void GDKqsort(void *restrict h, void *restrict t, const void *restrict base,
size_t n, int hs, int ts, int tpe);
+void GDKqsort_rev(void *restrict h, void *restrict t, const void *restrict
base, size_t n, int hs, int ts, int tpe);
void *GDKrealloc(void *pold, size_t size)
__attribute__((__warn_unused_result__));
void GDKregister(MT_Id pid);
gdk_return GDKreleasemmap(void *ptr, size_t size, size_t id, str *msg);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1467,8 +1467,8 @@ gdk_export gdk_return BATsort(BAT **sort
__attribute__ ((__warn_unused_result__));
-gdk_export void GDKqsort(void *h, void *t, const void *base, size_t n, int hs,
int ts, int tpe);
-gdk_export void GDKqsort_rev(void *h, void *t, const void *base, size_t n, int
hs, int ts, int tpe);
+gdk_export void GDKqsort(void *restrict h, void *restrict t, const void
*restrict base, size_t n, int hs, int ts, int tpe);
+gdk_export void GDKqsort_rev(void *restrict h, void *restrict t, const void
*restrict base, size_t n, int hs, int ts, int tpe);
#define BATtordered(b) ((b)->ttype == TYPE_void || (b)->tsorted)
#define BATtrevordered(b) (((b)->ttype == TYPE_void &&
is_oid_nil((b)->tseqbase)) || (b)->trevsorted)
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -1278,7 +1278,7 @@ BATordered_rev(BAT *b)
* stable sort can produce an error (not enough memory available),
* "quick" sort does not produce errors */
static gdk_return
-do_sort(void *h, void *t, const void *base, size_t n, int hs, int ts, int tpe,
+do_sort(void *restrict h, void *restrict t, const void *restrict base, size_t
n, int hs, int ts, int tpe,
int reverse, int stable)
{
if (n <= 1) /* trivially sorted */
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -141,10 +141,10 @@ void BBPdump(void); /* never called: fo
__hidden gdk_return GDKsave(int farmid, const char *nme, const char *ext, void
*buf, size_t size, storage_t mode, int dosync)
__attribute__((__warn_unused_result__))
__attribute__((__visibility__("hidden")));
-__hidden gdk_return GDKssort_rev(void *h, void *t, const void *base, size_t n,
int hs, int ts, int tpe)
+__hidden gdk_return GDKssort_rev(void *restrict h, void *restrict t, const
void *restrict base, size_t n, int hs, int ts, int tpe)
__attribute__((__warn_unused_result__))
__attribute__((__visibility__("hidden")));
-__hidden gdk_return GDKssort(void *h, void *t, const void *base, size_t n, int
hs, int ts, int tpe)
+__hidden gdk_return GDKssort(void *restrict h, void *restrict t, const void
*restrict base, size_t n, int hs, int ts, int tpe)
__attribute__((__warn_unused_result__))
__attribute__((__visibility__("hidden")));
__hidden gdk_return GDKunlink(int farmid, const char *dir, const char *nme,
const char *extension)
diff --git a/gdk/gdk_project.c b/gdk/gdk_project.c
--- a/gdk/gdk_project.c
+++ b/gdk/gdk_project.c
@@ -400,14 +400,15 @@ BATproject(BAT *l, BAT *r)
/* Calculate a chain of BATproject calls.
* The argument is a NULL-terminated array of BAT pointers.
- * This function is equivalent to a sequence of calls
+ * This function is equivalent (apart from reference counting) to a
+ * sequence of calls
* bn = BATproject(bats[0], bats[1]);
* bn = BATproject(bn, bats[2]);
* ...
* bn = BATproject(bn, bats[n-1]);
* return bn;
* where none of the intermediates are actually produced (and bats[n]==NULL).
- * Note that all BATs except the last must be oid/void tailed.
+ * Note that all BATs except the last must have type oid/void.
*/
BAT *
BATprojectchain(BAT **bats)
diff --git a/gdk/gdk_qsort.c b/gdk/gdk_qsort.c
--- a/gdk/gdk_qsort.c
+++ b/gdk/gdk_qsort.c
@@ -311,7 +311,7 @@ struct qsort_t {
/* the interface functions */
void
-GDKqsort(void *h, void *t, const void *base, size_t n, int hs, int ts, int tpe)
+GDKqsort(void *restrict h, void *restrict t, const void *restrict base, size_t
n, int hs, int ts, int tpe)
{
struct qsort_t buf;
@@ -365,7 +365,7 @@ GDKqsort(void *h, void *t, const void *b
}
void
-GDKqsort_rev(void *h, void *t, const void *base, size_t n, int hs, int ts, int
tpe)
+GDKqsort_rev(void *restrict h, void *restrict t, const void *restrict base,
size_t n, int hs, int ts, int tpe)
{
struct qsort_t buf;
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -1621,7 +1621,8 @@ BATselect(BAT *b, BAT *s, const void *tl
bn->tsorted = 1;
bn->trevsorted = bn->batCount <= 1;
bn->tkey = 1;
- bn->tseqbase = (bn->tdense = bn->batCount <= 1)
!= 0 ? 0 : oid_nil;
+ bn->tdense = bn->batCount <= 1;
+ bn->tseqbase = bn->tdense ? bn->batCount == 0 ?
0 : * (oid *) Tloc(bn, 0) : oid_nil;
bn->tnil = 0;
bn->tnonil = 1;
if (s) {
diff --git a/gdk/gdk_ssort_impl.h b/gdk/gdk_ssort_impl.h
--- a/gdk/gdk_ssort_impl.h
+++ b/gdk/gdk_ssort_impl.h
@@ -797,7 +797,7 @@ do_ssort(MergeState *ms, ssize_t nremain
* the actual key is found at that offset (MonetDB var-sized
* atoms). */
gdk_return
-GDKssortimpl(void *h, void *t, const void *heap, size_t nitems,
+GDKssortimpl(void *restrict h, void *restrict t, const void *restrict heap,
size_t nitems,
int hs, int ts, int tpe)
{
char temp;
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
@@ -867,7 +867,7 @@ sql_update_jul2017_sp3(Client c, mvc *sq
tab = find_sql_table(sys, "functions");
col = find_sql_column(tab, "name");
rid = table_funcs.column_find_row(sql->session->tr, col,
"sys_update_schemas", NULL);
- if (rid == oid_nil) {
+ if (is_oid_nil(rid)) {
err = sql_fix_system_tables(c, sql);
if (err != NULL)
return err;
@@ -877,7 +877,7 @@ sql_update_jul2017_sp3(Client c, mvc *sq
tab = find_sql_table(sys, "triggers");
col = find_sql_column(tab, "name");
rid = table_funcs.column_find_row(sql->session->tr, col,
"system_update_schemas", NULL);
- if (rid == oid_nil) {
+ if (is_oid_nil(rid)) {
char *schema = stack_get_string(sql, "current_schema");
size_t bufsize = 1024, pos = 0;
char *buf = GDKmalloc(bufsize);
@@ -973,6 +973,8 @@ sql_update_mar2018(Client c, mvc *sql)
buf = GDKmalloc(bufsize);
if (buf== NULL)
throw(SQL, "sql_update_mar2018", SQLSTATE(HY001)
MAL_MALLOC_FAIL);
+ s = mvc_bind_schema(sql, "sys");
+
pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
/* 21_dependency_views.sql */
@@ -1253,7 +1255,6 @@ sql_update_mar2018(Client c, mvc *sql)
);
/* 25_debug.sql */
- s = mvc_bind_schema(sql, "sys");
t = mvc_bind_table(sql, s, "environment");
t->system = 0;
pos += snprintf(buf + pos, bufsize - pos,
@@ -1296,7 +1297,6 @@ sql_update_mar2018(Client c, mvc *sql)
"insert into sys.systemfunctions (select id from
sys.functions where name = 'corr' and schema_id = (select id from sys.schemas
where name = 'sys') and id not in (select function_id from
sys.systemfunctions));\n");
/* 51_sys_schema_extensions.sql */
- s = mvc_bind_schema(sql, "sys");
t = mvc_bind_table(sql, s, "privilege_codes");
t->system = 0;
pos += snprintf(buf + pos, bufsize - pos,
@@ -1505,7 +1505,7 @@ sql_update_mar2018(Client c, mvc *sql)
"INSERT INTO sys.systemfunctions\n"
"SELECT id FROM sys.functions\n"
"WHERE schema_id = (SELECT id FROM sys.schemas WHERE
name = 'sys')\n"
- "AND name IN ('comment_on', 'function_type_keyword',
'no_op');\n"
+ "AND name IN ('function_type_keyword', 'no_op');\n"
"ALTER TABLE sys.keywords SET READ WRITE;\n"
"INSERT INTO sys.keywords VALUES ('COMMENT'),
('CONTINUE'), ('START'), ('TRUNCATE');\n"
"-- ALTER TABLE sys.keywords SET READ ONLY;\n"
@@ -1524,6 +1524,121 @@ sql_update_mar2018(Client c, mvc *sql)
return err; /* usually MAL_SUCCEED */
}
+#ifdef HAVE_NETCDF
+static str
+sql_update_mar2018_netcdf(Client c, mvc *sql)
+{
+ size_t bufsize = 1000, pos = 0;
+ char *buf, *err;
+ char *schema;
+
+ schema = stack_get_string(sql, "current_schema");
+ buf = GDKmalloc(bufsize);
+ if (buf== NULL)
+ throw(SQL, "sql_update_mar2018_netcdf", SQLSTATE(HY001)
MAL_MALLOC_FAIL);
+
+ pos += snprintf(buf + pos, bufsize - pos, "set schema sys;\n");
+
+ /* 74_netcdf.sql */
+ pos += snprintf(buf + pos, bufsize - pos,
+ "grant select on sys.netcdf_files to public;\n"
+ "grant select on sys.netcdf_dims to public;\n"
+ "grant select on sys.netcdf_vars to public;\n"
+ "grant select on sys.netcdf_vardim to public;\n"
+ "grant select on sys.netcdf_attrs to public;\n"
+ "grant execute on procedure
sys.netcdf_attach(varchar(256)) to public;\n"
+ "grant execute on procedure
sys.netcdf_importvar(integer, varchar(256)) to public;\n");
+
+ if (schema)
+ pos += snprintf(buf + pos, bufsize - pos, "set schema
\"%s\";\n", schema);
+
+ assert(pos < bufsize);
+ printf("Running database upgrade commands:\n%s\n", buf);
+ err = SQLstatementIntern(c, &buf, "update", 1, 0, NULL);
+ GDKfree(buf);
+ return err; /* usually MAL_SUCCEED */
+}
+#endif /* HAVE_NETCDF */
+
+#ifdef HAVE_SAMTOOLS
+static str
+sql_update_mar2018_samtools(Client c, mvc *sql)
+{
+ size_t bufsize = 2000, pos = 0;
+ char *buf, *err;
+ char *schema;
+ sql_schema *s = mvc_bind_schema(sql, "bam");
+
+ if (s == NULL)
+ return MAL_SUCCEED;
+
+ schema = stack_get_string(sql, "current_schema");
+ buf = GDKmalloc(bufsize);
+ if (buf== NULL)
+ throw(SQL, "sql_update_mar2018_samtools", SQLSTATE(HY001)
MAL_MALLOC_FAIL);
+
+ pos += snprintf(buf + pos, bufsize - pos, "set schema sys;\n");
+
+ /* 85_bam.sql */
+ list *l = sa_list(sql->sa);
+ sql_subtype tpi, tps;
+ sql_find_subtype(&tpi, "int", 0, 0);
+ sql_find_subtype(&tps, "clob", 0, 0);
+ list_append(l, &tpi);
+ list_append(l, &tps);
+ list_append(l, &tpi);
+ list_append(l, &tps);
+ if (sql_bind_func_(sql->sa, s, "seq_char", l, F_FUNC) == NULL) {
+ pos += snprintf(buf + pos, bufsize - pos,
+ "CREATE FUNCTION bam.seq_char(ref_pos INT,
alg_seq STRING, alg_pos INT, alg_cigar STRING)\n"
+ "RETURNS CHAR(1) EXTERNAL NAME bam.seq_char;\n"
+ "insert into sys.systemfunctions (select id from
sys.functions where name in ('seq_char') and schema_id = (select id from
sys.schemas where name = 'bam') and id not in (select function_id from
sys.systemfunctions));\n");
+ }
+ sql_find_subtype(&tpi, "smallint", 0, 0);
+ if (sql_bind_func3(sql->sa, s, "bam_loader_repos", &tps, &tpi, &tpi,
F_PROC) != NULL) {
+ pos += snprintf(buf + pos, bufsize - pos,
+ "drop procedure bam.bam_loader_repos(string,
smallint, smallint);\n"
+ "drop procedure bam.bam_loader_files(string,
smallint, smallint);\n"
+ "delete from systemfunctions where function_id
not in (select id from functions);\n");
+ }
+ if (sql_bind_func(sql->sa, s, "bam_loader_repos", &tps, &tpi, F_PROC)
== NULL) {
+ pos += snprintf(buf + pos, bufsize - pos,
+ "CREATE PROCEDURE
bam.bam_loader_repos(bam_repos STRING, dbschema SMALLINT)\n"
+ "EXTERNAL NAME bam.bam_loader_repos;\n"
+ "CREATE PROCEDURE
bam.bam_loader_files(bam_files STRING, dbschema SMALLINT)\n"
+ "EXTERNAL NAME bam.bam_loader_files;\n"
+ "insert into sys.systemfunctions (select id from
sys.functions where name in ('bam_loader_repos', 'bam_loader_files') and
schema_id = (select id from sys.schemas where name = 'bam') and id not in
(select function_id from sys.systemfunctions));\n");
+ }
+
+ pos += snprintf(buf + pos, bufsize - pos,
+ "GRANT SELECT ON bam.files TO PUBLIC;\n"
+ "GRANT SELECT ON bam.sq TO PUBLIC;\n"
+ "GRANT SELECT ON bam.rg TO PUBLIC;\n"
+ "GRANT SELECT ON bam.pg TO PUBLIC;\n"
+ "GRANT SELECT ON bam.export TO PUBLIC;\n"
+ "GRANT EXECUTE ON FUNCTION bam.bam_flag(SMALLINT,
STRING) TO PUBLIC;\n"
+ "GRANT EXECUTE ON FUNCTION bam.reverse_seq(STRING) TO
PUBLIC;\n"
+ "GRANT EXECUTE ON FUNCTION bam.reverse_qual(STRING) TO
PUBLIC;\n"
+ "GRANT EXECUTE ON FUNCTION bam.seq_length(STRING) TO
PUBLIC;\n"
+ "GRANT EXECUTE ON FUNCTION bam.seq_char(INT, STRING,
INT, STRING) TO PUBLIC;\n"
+ "GRANT EXECUTE ON PROCEDURE
bam.bam_loader_repos(STRING, SMALLINT) TO PUBLIC;\n"
+ "GRANT EXECUTE ON PROCEDURE
bam.bam_loader_files(STRING, SMALLINT) TO PUBLIC;\n"
+ "GRANT EXECUTE ON PROCEDURE bam.bam_loader_file(STRING,
SMALLINT) TO PUBLIC;\n"
+ "GRANT EXECUTE ON PROCEDURE bam.bam_drop_file(BIGINT,
SMALLINT) TO PUBLIC;\n"
+ "GRANT EXECUTE ON PROCEDURE bam.sam_export(STRING) TO
PUBLIC;\n"
+ "GRANT EXECUTE ON PROCEDURE bam.bam_export(STRING) TO
PUBLIC;\n");
+
+ if (schema)
+ pos += snprintf(buf + pos, bufsize - pos, "set schema
\"%s\";\n", schema);
+
+ assert(pos < bufsize);
+ printf("Running database upgrade commands:\n%s\n", buf);
+ err = SQLstatementIntern(c, &buf, "update", 1, 0, NULL);
+ GDKfree(buf);
+ return err; /* usually MAL_SUCCEED */
+}
+#endif /* HAVE_SAMTOOLS */
+
void
SQLupgrades(Client c, mvc *m)
{
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list