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