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]