Changeset: 5a782f5831b6 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5a782f5831b6 Modified Files: sql/backends/monet5/sql.c sql/backends/monet5/sql.h sql/include/sql_catalog.h sql/server/sql_mvc.c sql/server/sql_mvc.h Branch: HTM Log Message:
Export result set for pre/persist commit procedures While there fix passing the global HTM id lng value diffs (134 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 @@ -342,14 +342,13 @@ SQLabort(Client cntxt, MalBlkPtr mb, Mal } str -SQLprecommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, long id) +SQLprecommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { mvc *sql = NULL; str msg; int result; - backend *b = NULL; - wrd nr; - str *w = getArgReference_str(stk, pci, 3); + backend *b = cntxt->sqlcontext; + lng *id = getArgReference_lng(stk, pci, 1); if ((msg = getSQLContext(cntxt, mb, &sql, NULL)) != NULL) return msg; @@ -360,28 +359,25 @@ SQLprecommit(Client cntxt, MalBlkPtr mb, throw(SQL, "sql.precommit", "precommit not allowed in auto commit mode"); /* execute the precommit */ - result = mvc_precommit(sql, 0, 0, id); + result = mvc_precommit(sql, 0, 0, *id); if (result < 0) { throw(SQL, "sql.precommit", "failed"); } /* get the result set */ - nr = *getArgReference_wrd(stk, pci, 2); - b = cntxt->sqlcontext; - if (mvc_export_affrows(b, b->out, nr, *w)) + if (mvc_export_affrows(b, b->out, 1, "")) throw(SQL, "sql.precommit", "failed - could not get affected rows"); return msg; } str -SQLpersistcommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, long id) +SQLpersistcommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { mvc *sql = NULL; str msg; int result; - backend *b = NULL; - wrd nr; - str *w = getArgReference_str(stk, pci, 3); + backend *b = cntxt->sqlcontext; + lng *id = getArgReference_lng(stk, pci, 1); if ((msg = getSQLContext(cntxt, mb, &sql, NULL)) != NULL) return msg; @@ -392,15 +388,13 @@ SQLpersistcommit(Client cntxt, MalBlkPtr throw(SQL, "sql.persistcommit", "persistcommit not allowed in auto commit mode"); /* execute the persistcommit */ - result = mvc_persistcommit(sql, 0, 0, id); + result = mvc_persistcommit(sql, 0, 0, *id); if (result < 0) { throw(SQL, "sql.persistcommit", "failed"); } /* get the result set */ - nr = *getArgReference_wrd(stk, pci, 2); - b = cntxt->sqlcontext; - if (mvc_export_affrows(b, b->out, nr, *w)) + if (mvc_export_affrows(b, b->out, 1, "")) throw(SQL, "sql.persistcommit", "failed - could not get affected rows"); return msg; } 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, long id); -sql5_export str SQLpersistcommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, long id); +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 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/include/sql_catalog.h b/sql/include/sql_catalog.h --- a/sql/include/sql_catalog.h +++ b/sql/include/sql_catalog.h @@ -211,7 +211,7 @@ typedef struct sql_trans { struct sql_trans *parent; /* multilevel transaction support */ backend_stack stk; - long htm_id; /* global transation id provided by the CoherentPaaS HTM */ + lng 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 @@ -302,7 +302,7 @@ mvc_commit(mvc *m, int chain, const char } int -mvc_precommit(mvc *m, int chain, const char *name, long id) { +mvc_precommit(mvc *m, int chain, const char *name, lng id) { int result = SQL_OK;//, wait = 0; sql_trans *tr = m->session->tr; // set CPaaS HTM id @@ -334,7 +334,7 @@ mvc_precommit(mvc *m, int chain, const c } int -mvc_persistcommit(mvc *m, int chain, const char *name, long id) { +mvc_persistcommit(mvc *m, int chain, const char *name, lng id) { int result = SQL_OK;//, wait = 0; sql_trans *tr = m->session->tr; // set CPaaS HTM id 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 @@ -138,8 +138,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, long id); -extern int mvc_persistcommit(mvc *m, int chain, const char *name, long id); +extern int mvc_precommit(mvc *m, int chain, const char *name, lng id); +extern int mvc_persistcommit(mvc *m, int chain, const char *name, lng 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