Changeset: d04b3fd9c31d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d04b3fd9c31d Modified Files: sql/backends/monet5/sql.c sql/backends/monet5/sql.h sql/backends/monet5/sql.mal sql/scripts/85_htm.sql sql/server/sql_mvc.c sql/server/sql_mvc.h sql/storage/sql_storage.h sql/storage/store.c Branch: HTM Log Message:
Added an htmgarbagecollect SQL function uses negative values of keep_persisted_log_files to indicate timestamp constraint diffs (111 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 @@ -426,6 +426,20 @@ SQLforcepersistcommit(Client cntxt, MalB } str +SQLhtmgarbagecollect(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + int *ts = getArgReference_int(stk, pci, 1); + + (void) cntxt; + (void) mb; + + + mvc_htm_garbagecollect(*ts); + + return MAL_SUCCEED; +} + +str SQLshutdown_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { str 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 @@ -73,6 +73,7 @@ sql5_export str SQLabort(Client cntxt, M 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 SQLforcepersistcommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +sql5_export str SQLhtmgarbagecollect(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/backends/monet5/sql.mal b/sql/backends/monet5/sql.mal --- a/sql/backends/monet5/sql.mal +++ b/sql/backends/monet5/sql.mal @@ -64,6 +64,9 @@ comment "Persists the per-committed chan pattern forcepersistcommit(id:lng) :int address SQLforcepersistcommit comment "Persists the per-committed changes."; +pattern htmgarbagecollect(ts:int) :void +address SQLhtmgarbagecollect +comment "Set the maximal live time for the old WAL log files before they are garbagecollected"; pattern catalog(type:int,sname:str,name:str,action:int):void address SQLcatalog diff --git a/sql/scripts/85_htm.sql b/sql/scripts/85_htm.sql --- a/sql/scripts/85_htm.sql +++ b/sql/scripts/85_htm.sql @@ -13,3 +13,5 @@ CREATE PROCEDURE persistcommit(id bigint CREATE PROCEDURE forcepersistcommit(id bigint) EXTERNAL name sql.forcepersistcommit; +CREATE PROCEDURE htmgarbagecollect(ts int) + EXTERNAL name sql.htmgarbagecollect; 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 @@ -385,6 +385,11 @@ mvc_force_persistcommit(lng id) { } int +mvc_htm_garbagecollect(int ts) { + return sql_trans_htm_garbagecollect(ts); +} + +int mvc_abort(mvc *m) { sql_trans *tr = m->session->tr; 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 @@ -143,6 +143,7 @@ extern int mvc_commit(mvc *c, int chain, 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_force_persistcommit(lng id); +extern int mvc_htm_garbagecollect(int ts); extern int mvc_abort(mvc *m); extern int mvc_rollback(mvc *c, int chain, const char *name); extern int mvc_release(mvc *c, const char *name); diff --git a/sql/storage/sql_storage.h b/sql/storage/sql_storage.h --- a/sql/storage/sql_storage.h +++ b/sql/storage/sql_storage.h @@ -340,6 +340,7 @@ extern int sql_trans_commit(sql_trans *t extern int sql_trans_precommit(sql_trans *tr); extern int sql_trans_persistcommit(sql_trans *tr); extern int sql_trans_force_persistcommit(lng id); +extern int sql_trans_htm_garbagecollect(int ts); extern int sql_trans_abort(sql_trans *tr); extern sql_type *sql_trans_create_type(sql_trans *tr, sql_schema * s, const char *sqlname, int digits, int scale, int radix, const char *impl); diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -3576,6 +3576,13 @@ sql_trans_force_persistcommit(lng id) } int +sql_trans_htm_garbagecollect(int ts) +{ + keep_persisted_log_files = ts > 0 ? -ts:ts; + return SQL_OK; +} + +int sql_trans_abort(sql_trans *tr) { int result = LOG_OK; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list