Changeset: 758ac233b3ba for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=758ac233b3ba
Modified Files:
        monetdb5/modules/mal/wlcr.c
        monetdb5/modules/mal/wlcr.h
        monetdb5/modules/mal/wlcr.mal
        sql/backends/monet5/sql_wlcr.c
        sql/backends/monet5/sql_wlcr.h
        sql/backends/monet5/sql_wlcr.mal
        sql/scripts/60_wlcr.sql
Branch: wlcr
Log Message:

Save inspection routines.


diffs (169 lines):

diff --git a/monetdb5/modules/mal/wlcr.c b/monetdb5/modules/mal/wlcr.c
--- a/monetdb5/modules/mal/wlcr.c
+++ b/monetdb5/modules/mal/wlcr.c
@@ -26,11 +26,13 @@
  * against the database. We skip this for the time being.
  *
  * The goal of this module is to ease BACKUP and REPPLICATION of a master 
database 
- * with a time-bounded delay.
+ * with a time-bounded delay. 
  * Such a clone is a database replica that aid in query workload sharing,
  * database versioning, and (re-)partitioning.
  * Tables taken from the master version are not protected against local 
updates.
  * However, any transaction being replay that fails finalizes the cloning 
process.
+ * Furthermore, only persistent tables are considered for replication.
+ * Tables under the 'tmp' schema are ignored.
  *
  * Simplicity and ease of end-user control has been the driving argument here.
  *
@@ -354,6 +356,15 @@ WLCgetmasterclock(Client cntxt, MalBlkPt
        return MAL_SUCCEED;
 }
 
+str 
+WLCgetmastertick(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{      lng *ret = getArgReference_lng(stk,pci,0);
+       (void) cntxt;
+       (void) mb;
+       *ret = wlc_id -1;
+       return MAL_SUCCEED;
+}
+
 /* Changing the drift should have immediate effect
  * It forces a new log file
  */
diff --git a/monetdb5/modules/mal/wlcr.h b/monetdb5/modules/mal/wlcr.h
--- a/monetdb5/modules/mal/wlcr.h
+++ b/monetdb5/modules/mal/wlcr.h
@@ -57,6 +57,7 @@ mal_export str WLCstopmaster(Client cntx
 mal_export str WLCsetmasterdrift(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 mal_export str WLCgetmasterdrift(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 mal_export str WLCgetmasterclock(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+mal_export str WLCgetmastertick(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 mal_export str WLCtransaction(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 mal_export str WLCquery(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 mal_export str WLCcatalog(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
diff --git a/monetdb5/modules/mal/wlcr.mal b/monetdb5/modules/mal/wlcr.mal
--- a/monetdb5/modules/mal/wlcr.mal
+++ b/monetdb5/modules/mal/wlcr.mal
@@ -34,6 +34,10 @@ pattern getmasterclock():str
 address WLCgetmasterclock
 comment "Timestamp of last update transaction";
 
+pattern getmastertick():lng
+address WLCgetmastertick
+comment "Transaction identifier of the last committed transaction";
+
 pattern finish(started:str, user:str, action:str, runtime:int)
 address WLCfinish
 comment "Mark the beginning of the work unit which can be a compound 
transaction";
diff --git a/sql/backends/monet5/sql_wlcr.c b/sql/backends/monet5/sql_wlcr.c
--- a/sql/backends/monet5/sql_wlcr.c
+++ b/sql/backends/monet5/sql_wlcr.c
@@ -235,6 +235,7 @@ WLRprocess(void *arg)
                        } else
                        if( getModuleId(q) == wlrRef && getFunctionId(q) == 
transactionRef ){
                                strncpy(wlr_read, getVarConstant(mb, 
getArg(q,2)).val.sval,26);
+                               wlr_tag = getVarConstant(mb, 
getArg(q,1)).val.lval;
                        }
                        // only re-execute successful transactions.
                        if ( getModuleId(q) == wlrRef && getFunctionId(q) 
==commitRef ){
@@ -250,7 +251,6 @@ WLRprocess(void *arg)
                                        sql->session->level = 0;
                                        (void) mvc_trans(sql);
                                        msg= runMAL(c,mb,0,0);
-                                       wlr_tag++;
                                        WLRsetConfig( );
                                        // ignore warnings
                                        if (msg && strstr(msg,"WARNING"))
@@ -435,23 +435,27 @@ str
 WLRgetreplicaclock(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
        str *ret = getArgReference_str(stk,pci,0);
-       WLRgetMaster();
+
+       (void) cntxt;
+       (void) mb;
+
+       WLRgetConfig();
        if( wlr_read[0])
                *ret= GDKstrdup(wlr_read);
        else *ret= GDKstrdup(str_nil);
-       (void) cntxt;
-       (void) mb;
        return MAL_SUCCEED;
 }
 
 str
-WLRgetreplicabacklog(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+WLRgetreplicatick(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
        lng *ret = getArgReference_lng(stk,pci,0);
+
        (void) cntxt;
        (void) mb;
-       WLRgetMaster();
-       *ret = wlc_id - wlr_tag;
+
+       WLRgetConfig();
+       *ret = wlr_tag;
        return MAL_SUCCEED;
 }
 
diff --git a/sql/backends/monet5/sql_wlcr.h b/sql/backends/monet5/sql_wlcr.h
--- a/sql/backends/monet5/sql_wlcr.h
+++ b/sql/backends/monet5/sql_wlcr.h
@@ -19,7 +19,7 @@ sql5_export str WLRinit(void);
 sql5_export str WLRreplicate(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str WLRstopreplicate(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str WLRgetreplicaclock(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
-sql5_export str WLRgetreplicabacklog(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
+sql5_export str WLRgetreplicatick(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str WLRsetreplicadrift(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str WLRtransaction(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str WLRcatalog(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
diff --git a/sql/backends/monet5/sql_wlcr.mal b/sql/backends/monet5/sql_wlcr.mal
--- a/sql/backends/monet5/sql_wlcr.mal
+++ b/sql/backends/monet5/sql_wlcr.mal
@@ -42,9 +42,9 @@ pattern getreplicaclock():str
 address WLRgetreplicaclock
 comment "Timestamp of last replicated transaction.";
 
-pattern getreplicabacklog():lng
-address WLRgetreplicabacklog
-comment "Number of transactions pending execution";
+pattern getreplicatick():lng
+address WLRgetreplicatick
+comment "Transaction identifier of the last replicated transaction.";
 
 pattern transaction(tid:lng, started:str, user:str)
 address WLRtransaction
diff --git a/sql/scripts/60_wlcr.sql b/sql/scripts/60_wlcr.sql
--- a/sql/scripts/60_wlcr.sql
+++ b/sql/scripts/60_wlcr.sql
@@ -22,6 +22,9 @@ external name wlcr."setmasterdrift";
 create function masterClock() returns string
 external name wlcr."getmasterclock";
 
+create function masterTick() returns integer
+external name wlcr."getmastertick";
+
 -- Replica commands
 create procedure replicate()
 external name wlr.replicate;
@@ -44,12 +47,12 @@ external name wlr.replicate;
 create procedure replicate(dbname string, id bigint)
 external name wlr.replicate;
 
-create procedure replicadrift(duration int)
+create procedure replicadrift(duration integer)
 external name wlr."setreplicadrift";
 
 create function replicaClock() returns string
 external name wlr."getreplicaclock";
 
-create function replicaBacklog() returns integer
-external name wlr."getreplicabacklog";
+create function replicaTick() returns integer
+external name wlr."getreplicatick";
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to