Changeset: ea2ea53b04e4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ea2ea53b04e4
Modified Files:
sql/backends/monet5/sql_execute.c
sql/backends/monet5/sql_execute.h
sql/backends/monet5/sql_scenario.c
sql/test/Triggers/Tests/auth-triggers.test
Branch: triggers
Log Message:
wip use SQLrun to run trigger stmt
diffs (77 lines):
diff --git a/sql/backends/monet5/sql_execute.c
b/sql/backends/monet5/sql_execute.c
--- a/sql/backends/monet5/sql_execute.c
+++ b/sql/backends/monet5/sql_execute.c
@@ -284,7 +284,7 @@ SQLsetTrace(Client cntxt, MalBlkPtr mb)
return msg;
}
-static str
+str
SQLrun(Client c, mvc *m)
{
str msg= MAL_SUCCEED;
diff --git a/sql/backends/monet5/sql_execute.h
b/sql/backends/monet5/sql_execute.h
--- a/sql/backends/monet5/sql_execute.h
+++ b/sql/backends/monet5/sql_execute.h
@@ -18,5 +18,6 @@ sql5_export str RAstatement(Client cntxt
sql5_export str RAstatement2(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
sql5_export str RAstatementEnd(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
sql5_export void SQLdestroyResult(res_table *destroy);
+char *SQLrun(Client c, mvc *m);
#endif /* _SQL_EXECUTE_H_ */
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
@@ -232,6 +232,7 @@ SQLepilogue(void *ret)
static str
SQLexecPostLoginTriggers(Client c)
{
+ char *msg = NULL;
backend *be = (backend *) c->sqlcontext;
if (be) {
mvc *m = be->mvc;
@@ -256,14 +257,12 @@ SQLexecPostLoginTriggers(Client c)
r = rel_parse(m, sys, stmt, m_deps);
if (r)
r = sql_processrelation(m, r,
0, 0, 0, 0);
- if (r) {
- list *blist =
rel_dependencies(m, r);
- if (mvc_create_dependencies(m,
blist, t->base.id, TRIGGER_DEPENDENCY)) {
- sa_destroy(m->sa);
- m->sa = sa;
- throw(SQL,
"sql.SQLexecPostLoginTriggers", SQLSTATE(HY013) MAL_MALLOC_FAIL);
- }
- }
+ if (backend_dumpstmt(be,
c->curprg->def, r, 1, 1, NULL) < 0)
+ throw(SQL,
"sql.SQLexecPostLoginTriggers", SQLSTATE(4200) "%s", "generating MAL failed");
+
+ if ((msg = SQLrun(c,m)) != MAL_SUCCEED)
+ return msg;
+
sa_destroy(m->sa);
m->sa = sa;
if (!r) {
@@ -835,7 +834,8 @@ SQLinitClient(Client c, str passwd, str
throw(SQL, "SQLinitClient", SQLSTATE(42000) "Catalogue not
available");
}
if ((msg = SQLprepareClient(c, passwd, challenge, algo)) ==
MAL_SUCCEED) {
- if (c->usermodule && (SQLexecPostLoginTriggers(c) !=
MAL_SUCCEED)) {
+ if (c->usermodule && (c->user != MAL_ADMIN) &&
(SQLexecPostLoginTriggers(c) != MAL_SUCCEED)) {
+ MT_lock_unset(&sql_contextLock);
throw(SQL, "SQLinitClient", SQLSTATE(42000) "Failed to
execute post login triggers");
}
}
diff --git a/sql/test/Triggers/Tests/auth-triggers.test
b/sql/test/Triggers/Tests/auth-triggers.test
--- a/sql/test/Triggers/Tests/auth-triggers.test
+++ b/sql/test/Triggers/Tests/auth-triggers.test
@@ -7,6 +7,9 @@ create user foo with password 'foo' name
statement ok
create trigger foo after login set role bar
+statement ok
+grant bar to foo;
+
@connection(id=1, username=foo, password=foo)
query T rowsort
select current_role
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]