Changeset: 232b3cb292a3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/232b3cb292a3
Modified Files:
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_profiler.c
        monetdb5/mal/mal_profiler.h
        sql/server/sql_mvc.c
Branch: Jul2021_prof_ext
Log Message:

Final fixes.


diffs (122 lines):

diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c
--- a/monetdb5/mal/mal_client.c
+++ b/monetdb5/mal/mal_client.c
@@ -209,7 +209,7 @@ MCexitClient(Client c)
                lng Tend = GDKusec();
                profilerEvent((struct MalEvent) {0},
                                          (struct NonMalEvent)
-                                         {CLIENT_CONNECTION, c, Tend,  NULL, 
NULL, 0, Tend-(c->session)});
+                                         {CLIENT_END, c, Tend,  NULL, NULL, 0, 
Tend-(c->session)});
        }
        setClientContext(NULL);
 }
@@ -308,6 +308,10 @@ MCinitClient(oid user, bstream *fin, str
                c = MCinitClientRecord(c, user, fin, fout);
        }
        MT_lock_unset(&mal_contextLock);
+
+       profilerEvent((struct MalEvent) {0},
+                                 (struct NonMalEvent)
+                                 {CLIENT_START, c, c->session,  NULL, NULL, 0, 
0});
        return c;
 }
 
diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c
--- a/monetdb5/mal/mal_profiler.c
+++ b/monetdb5/mal/mal_profiler.c
@@ -166,17 +166,17 @@ logadd(struct logbuf *logbuf, const char
 }
 
 static str phase_descriptions[] = {
-       [CLIENT_CONNECTION] = "client_connection",
+       [CLIENT_START]          = "session_start",
+       [CLIENT_END]            = "session_end",
        [TEXT_TO_SQL]           = "text_to_sql",
        [SQL_TO_REL]            = "sql_to_rel",
        [REL_OPT]                       = "rel_opt",
        [REL_TO_MAL]            = "rel_to_mal",
        [MAL_OPT]                       = "mal_opt",
        [MAL_ENGINE]            = "mal_engine",
-       // [TRANSACTION_START]  = "trans_start",
-       // [COMMIT]                     = "trans_commit",
-       // [ROLLBACK]                   = "trans_rollback",
-       [TRANSACTION_END]       = "transaction"
+       [COMMIT]                        = "trans_commit",
+       [ROLLBACK]                      = "trans_rollback",
+       [CONFLICT]                      = "trans_conflict"
 };
 
 static str
diff --git a/monetdb5/mal/mal_profiler.h b/monetdb5/mal/mal_profiler.h
--- a/monetdb5/mal/mal_profiler.h
+++ b/monetdb5/mal/mal_profiler.h
@@ -23,16 +23,16 @@ typedef struct rusage Rusage;
 
 enum event_phase {
        MAL_ENGINE = 0,
-       CLIENT_CONNECTION,
+       CLIENT_START,
+       CLIENT_END,
        TEXT_TO_SQL,
        SQL_TO_REL,
        REL_OPT,
        REL_TO_MAL,
        MAL_OPT,
-       // TRANSACTION_START,
-       // COMMIT,
-       // ROLLBACK,
-       TRANSACTION_END
+       COMMIT,
+       ROLLBACK,
+       CONFLICT
 };
 
 typedef struct NonMalEvent {
diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -544,7 +544,7 @@ mvc_commit(mvc *m, int chain, const char
                        Client  c = getClientContext();
                        profilerEvent((struct MalEvent) {0},
                                                  (struct NonMalEvent)
-                                                 {TRANSACTION_END, c, Tend, 
&ts_start, &m->session->tr->ts, state == SQL_OK ? 0 : 1, 
log_usec?Tend-Tbegin:0});
+                                                 { state == SQL_CONFLICT ? 
CONFLICT : COMMIT , c, Tend, &ts_start, &m->session->tr->ts, state == SQL_ERR, 
log_usec?Tend-Tbegin:0});
                }
                switch (state) {
                        case SQL_ERR:
@@ -649,9 +649,32 @@ mvc_rollback(mvc *m, int chain, const ch
                /* make sure we do not reuse changed data */
                if (!list_empty(tr->changes))
                        tr->status = 1;
-               (void)sql_trans_end(m->session, SQL_ERR);
-               if (chain && sql_trans_begin(m->session) < 0)
-                       msg = createException(SQL, "sql.rollback", 
SQLSTATE(40000) "ROLLBACK: finished successfully, but the session's schema 
could not be found while starting the next transaction");
+
+               
+               lng Tbegin = 0;
+               ulng ts_start = 0;
+               bool log_usec = profilerMode == 0 || m->session->auto_commit;
+               if(profilerStatus > 0) {
+                       if (log_usec) Tbegin = GDKusec();
+                       ts_start = m->session->tr->ts;
+               }
+               (void) sql_trans_end(m->session, SQL_ERR);
+
+               if(profilerStatus > 0) {
+                       lng Tend = GDKusec();
+                       Client  c = getClientContext();
+                       profilerEvent((struct MalEvent) {0},
+                                                 (struct NonMalEvent)
+                                                 { ROLLBACK , c, Tend, 
&ts_start, &m->session->tr->ts, 0, log_usec?Tend-Tbegin:0});
+               }
+               if (chain) {
+                       if (sql_trans_begin(m->session) < 0) {
+                               msg = createException(SQL, "sql.rollback", 
SQLSTATE(40000) "ROLLBACK: finished successfully, but the session's schema 
could not be found while starting the next transaction");
+                               m->session->status = -1;
+                               return msg;
+                       }
+                       m->session->auto_commit = 0; /* disable auto-commit 
while chaining */
+               }
        }
        if (msg == MAL_SUCCEED)
                msg = WLCrollback(m->clientid);
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to