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

Reply via email to