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

Final fixes.


diffs (112 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
@@ -214,7 +214,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
@@ -168,17 +168,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
@@ -549,7 +549,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:
@@ -685,7 +685,24 @@ 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);
+
+               
+               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");
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to