[prev in list] [next in list] [prev in thread] [next in thread] 

List:       monetdb-checkins
Subject:    MonetDB: default - merged with Nov2019
From:       Niels Nes <commits+niels=cwi.nl () monetdb ! org>
Date:       2019-09-30 17:00:49
Message-ID: hg.8c6f69eb184f.1569862849.6315528441665844383 () monetdb-vm0 ! spin-off ! cwi ! nl
[Download RAW message or body]

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic