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

Reply via email to