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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list