Skip to main content
Common Reference

ReplDBMSEvent Objects

The base object from which all of the data about replication can be obtained is the ReplDBMSEvent class. The class contains all of the information about each event, including the global transaction ID and statement or row data.

The interface to the underlying information is through a series of methods that provide the embedded information or data structures, described in the table below.

MethodDescription
getAppliedLatency()Returns the latency of the embedded event.
getData(),Returns an array of the DBMSData objects within the event
getDBMSEvent(),Returns the original DBMSEvent object
getEpochNumber()Get the Epoch number of the stored event.
getEventId()Returns the native event ID.
getExtractedTstamp()Returns the timestamp of the event.
getFragno()Returns the fragment ID.
getLastFrag()Returns true if the fragment is the last fragment in the event.
getSeqno()Returns the native sequence number.
getShardId()Returns the shard ID for the event.
getSourceId()Returns the source ID of the event.
setShardId()Sets the shard ID for the event, which can be used by the filter to set the shard.

The primary method used is getData(), which returns an array of the individual DBMSData objects contained in the event:

function filter(event)
{
data = event.getData();

if(data != null)
{

for (i = 0; i < data.size(); i++)
{
change = data.get(i);
...

Access to the underlying array structure uses the get() method to request individual objects from the array. The size() method returns the length of the array.

Removing or Adding Data Changes

Individual DBMSData objects can be removed from the replication stream by using the remove() method, supplying the index of the object to remove:

data.remove(1);

The add() method can be used to add new data changes into the stream. For example, data can be duplicated across tables by creating and adding a new version of the event, for example:

if(d.getDefaultSchema() != null &amp;&amp;
d.getDefaultSchema().compareTo(sourceName)==0)
{
newStatement = new
com.continuent.tungsten.replicator.dbms.StatementData(d.getQuery(),
null,
targetName);
data.add(data.size(),newStatement);
}

The above code looks for statements within the sourceName schema and creates a copy of each statement into the targetName schema.

The first argument to add() is the index position to add the statement. Zero (0) indicates before any existing changes, while using size() on the array effectively adds the new statement change at the end of the array.

Updating the Shard ID

The setShardId() method can also be used to set the shard ID within an event. This can be used in filters where the shard ID is updated by examining the schema or table being updated within the embedded SQL or row data. An example of this is provided in the shardbytable filters.