Changeset: 8c6f69eb184f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8c6f69eb184f Modified Files: sql/server/sql_privileges.c sql/server/sql_privileges.h sql/storage/store.c sql/test/LSST/Tests/dbQuery036.stable.err sql/test/Tests/marcin3.stable.err Branch: default Log Message:
merged with Nov2019 diffs (92 lines): diff --git a/sql/server/sql_privileges.c b/sql/server/sql_privileges.c --- a/sql/server/sql_privileges.c +++ b/sql/server/sql_privileges.c @@ -466,6 +466,25 @@ table_privs(mvc *m, sql_table *t, int pr } int +column_privs(mvc *m, sql_column *c, int priv) +{ + /* only SELECT and UPDATE privileges for columns are available */ + /* temporary tables are owned by the session user, so does it's columns */ + if (c->t->persistence == SQL_DECLARED_TABLE || + (!c->t->system && c->t->persistence != SQL_PERSIST) || + (priv == PRIV_SELECT && (c->t->persistence != SQL_PERSIST || c->t->commit_action))) + return 1; + if (admin_privs(m->user_id) || admin_privs(m->role_id) || + (c->t->s && (m->user_id == c->t->s->auth_id || m->role_id == c->t->s->auth_id)) || + sql_privilege(m, m->user_id, c->base.id, priv, 0) == priv || + sql_privilege(m, m->role_id, c->base.id, priv, 0) == priv || + sql_privilege(m, ROLE_PUBLIC, c->base.id, priv, 0) == priv) { + return 1; + } + return 0; +} + +int execute_priv(mvc *m, sql_func *f) { int priv = PRIV_EXECUTE; @@ -827,7 +846,6 @@ sql_rename_user(mvc *sql, char *olduser, if (backend_rename_user(sql, olduser, newuser) == FALSE) throw(SQL,"sql.rename_user", SQLSTATE(M1M05) "%s", sql->errstr); return NULL; - } int diff --git a/sql/server/sql_privileges.h b/sql/server/sql_privileges.h --- a/sql/server/sql_privileges.h +++ b/sql/server/sql_privileges.h @@ -26,7 +26,7 @@ extern int mvc_set_schema(mvc *m, char * extern int global_privs(mvc *m, int privs); extern int mvc_schema_privs(mvc *m, sql_schema *t); extern int table_privs(mvc *m, sql_table *t, int privs); - +extern int column_privs(mvc *m, sql_column *c, int privs); extern int execute_priv(mvc *m, sql_func *f); extern int sql_privilege(mvc *m, sqlid auth_id, sqlid obj_id, int privs, int sub); @@ -45,4 +45,5 @@ extern char * sql_create_user(mvc *sql, extern char * sql_drop_user(mvc *sql, char *user); extern char * sql_alter_user(mvc *sql, char *user, char *passwd, char enc, char *schema, char *oldpasswd); extern char * sql_rename_user(mvc *sql, char *olduser, char *newuser); + #endif /*_SQL_PRIV_H_ */ diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -2136,7 +2136,8 @@ flusher_should_run(void) bool my_flush_now = (bool) ATOMIC_XCG(&flusher.flush_now, 0); if (my_flush_now) reason_to = "user request"; - else if (ATOMIC_GET(&store_nr_active) > 0) + + if (ATOMIC_GET(&store_nr_active) > 0) reason_not_to = "awaiting idle time"; if (!flusher.enabled && !my_flush_now) diff --git a/sql/test/LSST/Tests/dbQuery036.stable.err b/sql/test/LSST/Tests/dbQuery036.stable.err --- a/sql/test/LSST/Tests/dbQuery036.stable.err +++ b/sql/test/LSST/Tests/dbQuery036.stable.err @@ -85,7 +85,7 @@ QUERY = SELECT ROUND(uMag-gMag,0) AS UG AND (uMag+gMag+rMag+iMag+zMag+yMag) < 150 -- exclude bogus magnitudes (== 999) GROUP BY UG, GR, RI, IZ, ZY HAVING pop > 500 -- Common bucktes have 500 or more members, so delete them -ERROR = !SELECT: cannot use non GROUP BY column 'pop' in query results without an aggregate function +ERROR = !SELECT: identifier 'pop' unknown CODE = 42000 # 05:57:35 > diff --git a/sql/test/Tests/marcin3.stable.err b/sql/test/Tests/marcin3.stable.err --- a/sql/test/Tests/marcin3.stable.err +++ b/sql/test/Tests/marcin3.stable.err @@ -21,7 +21,7 @@ ERROR = !SELECT: cannot use non GROUP BY CODE = 42000 MAPI = (monetdb) /var/tmp/mtest-26937/.s.monetdb.35713 QUERY = select id, cast(sum(val) as bigint) AS valsum from nutki group by id having valsum>3; -ERROR = !SELECT: cannot use non GROUP BY column 'valsum' in query results without an aggregate function +ERROR = !SELECT: identifier 'valsum' unknown CODE = 42000 # 21:15:41 > _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list