Changeset: 251ff8b9f36d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=251ff8b9f36d Modified Files: sql/backends/monet5/sql.c sql/backends/monet5/sql.h sql/backends/monet5/sql.mal sql/include/sql_catalog.h sql/server/sql_mvc.c sql/server/sql_mvc.h Branch: HTM Log Message:
Ensure that HTM transaction id can be passed to the lower layers diffs (127 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -341,7 +341,7 @@ SQLabort(Client cntxt, MalBlkPtr mb, Mal } str -SQLprecommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +SQLprecommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, long id) { mvc *sql = NULL; str msg; @@ -357,7 +357,7 @@ SQLprecommit(Client cntxt, MalBlkPtr mb, if (sql->session->auto_commit != 0) throw(SQL, "sql.trans", "2DM30!PRECOMMIT: not allowed in auto commit mode"); - result = mvc_precommit(sql, 0, 0); + result = mvc_precommit(sql, 0, 0, id); if (result < 0) { throw(SQL, "sql.trans", "2D000!PRECOMMIT: failed"); } @@ -365,7 +365,7 @@ SQLprecommit(Client cntxt, MalBlkPtr mb, } str -SQLpersistcommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +SQLpersistcommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, long id) { mvc *sql = NULL; str msg; @@ -381,7 +381,7 @@ SQLpersistcommit(Client cntxt, MalBlkPtr if (sql->session->auto_commit != 0) throw(SQL, "sql.trans", "2DM30!PERSISTCOMMIT: not allowed in auto commit mode"); - result = mvc_persistcommit(sql, 0, 0); + result = mvc_persistcommit(sql, 0, 0, id); if (result < 0) { throw(SQL, "sql.trans", "2D000!PERSISTCOMMIT: failed"); } diff --git a/sql/backends/monet5/sql.h b/sql/backends/monet5/sql.h --- a/sql/backends/monet5/sql.h +++ b/sql/backends/monet5/sql.h @@ -70,8 +70,8 @@ sql5_export str SQLmvc(Client cntxt, Mal sql5_export str SQLtransaction(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); sql5_export str SQLcommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); sql5_export str SQLabort(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -sql5_export str SQLprecommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -sql5_export str SQLpersistcommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +sql5_export str SQLprecommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, long id); +sql5_export str SQLpersistcommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, long id); sql5_export str SQLshutdown_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); sql5_export str SQLtransaction2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); sql5_export str SQLcatalog(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); diff --git a/sql/backends/monet5/sql.mal b/sql/backends/monet5/sql.mal --- a/sql/backends/monet5/sql.mal +++ b/sql/backends/monet5/sql.mal @@ -55,10 +55,10 @@ pattern abort() address SQLabort comment "Trigger the abort operation for a MAL block"; -pattern precommit() +pattern precommit(id:lng) address SQLprecommit comment "Pre-commit changes, writing them only to the WAL."; -pattern persistcommit() +pattern persistcommit(id:lng) address SQLpersistcommit comment "Persists per-commited changes, writing them to certain BATs."; diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h --- a/sql/include/sql_catalog.h +++ b/sql/include/sql_catalog.h @@ -209,7 +209,9 @@ typedef struct sql_trans { sql_allocator *sa; /* transaction allocator */ struct sql_trans *parent; /* multilevel transaction support */ - backend_stack stk; + backend_stack stk; + + long htm_id; /* global transation id provided by the CoherentPaaS HTM */ } sql_trans; typedef struct sql_schema { 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 @@ -300,8 +300,11 @@ mvc_commit(mvc *m, int chain, const char } int -mvc_precommit(mvc *m, int chain, const char *name) { +mvc_precommit(mvc *m, int chain, const char *name, long id) { sql_trans *tr = m->session->tr; + // set CPaaS HTM id + tr->htm_id = id; + int result = SQL_OK;//, wait = 0; if ((result = mvc_commit_prepare(m, chain, name, tr)) != SQL_OK) { @@ -330,9 +333,12 @@ mvc_precommit(mvc *m, int chain, const c } int -mvc_persistcommit(mvc *m, int chain, const char *name) { +mvc_persistcommit(mvc *m, int chain, const char *name, long id) { /* used the parent, since we semi-rolled forward in mvc_commit_prepare */ sql_trans *tr = m->session->tr->parent; + // set CPaaS HTM id + tr->htm_id = id; + int result = SQL_OK;//, wait = 0; store_lock(); diff --git a/sql/server/sql_mvc.h b/sql/server/sql_mvc.h --- a/sql/server/sql_mvc.h +++ b/sql/server/sql_mvc.h @@ -145,8 +145,8 @@ extern void mvc_trans(mvc *c); extern int mvc_commit_prepare(mvc *m, int chain, const char *name, sql_trans *tr); extern void mvc_commit_finish(mvc *m, int chain, const char *name); extern int mvc_commit(mvc *c, int chain, const char *name); -extern int mvc_precommit(mvc *m, int chain, const char *name); -extern int mvc_persistcommit(mvc *m, int chain, const char *name); +extern int mvc_precommit(mvc *m, int chain, const char *name, long id); +extern int mvc_persistcommit(mvc *m, int chain, const char *name, long id); extern int mvc_rollback(mvc *c, int chain, const char *name); extern int mvc_release(mvc *c, const char *name); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list