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]

Reply via email to