|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.continuent.tungsten.replicator.applier.JdbcApplier
public class JdbcApplier
Implements a DBMS implementation-independent applier. DBMS-specific features must be subclassed. This applier can be used directly by specifying the DBMS driver and full JDBC URL.
| Field Summary | |
|---|---|
protected long |
commitCount
|
protected CommitSeqnoTable |
commitSeqnoTable
|
protected Database |
conn
|
protected java.lang.String |
consistencySelect
|
protected java.lang.String |
consistencyTable
|
protected java.util.HashMap<java.lang.String,java.lang.String> |
currentOptions
|
protected java.lang.String |
currentSchema
|
protected long |
currentTimestamp
|
protected java.lang.String |
driver
|
protected long |
eventCount
|
protected HeartbeatTable |
heartbeatTable
|
protected java.util.regex.Pattern |
ignoreSessionPattern
|
protected java.lang.String |
ignoreSessionVars
|
protected java.lang.String |
lastSessionId
|
protected int |
maxSQLLogLength
Maximum length of SQL string to log in case of an error. |
protected java.lang.String |
metadataSchema
|
protected java.lang.String |
password
|
protected ReplicatorRuntime |
runtime
|
protected java.sql.Statement |
statement
|
protected int |
taskId
|
protected java.lang.String |
url
|
protected java.lang.String |
user
|
| Constructor Summary | |
|---|---|
JdbcApplier()
|
|
| Method Summary | |
|---|---|
protected Column |
addColumn(java.sql.ResultSet rs,
java.lang.String columnName)
Returns a new column definition. |
void |
apply(DBMSEvent event,
ReplDBMSHeader header,
boolean doCommit,
boolean doRollback)
Apply the proffered event to the replication target. |
protected void |
applyLoadDataLocal(LoadDataFileQuery data,
java.io.File temporaryFile)
applyLoadDataLocal executes the LoadDataFileQuery. |
protected void |
applyOneRowChangePrepared(OneRowChange oneRowChange)
|
protected void |
applyRowChangeData(RowChangeData data,
java.util.List<ReplOption> options)
|
protected void |
applyRowIdData(RowIdData data)
|
protected boolean |
applySessionVariables(java.util.List<ReplOption> options)
applyOptionsToStatement adds to the batch queries used to change the connection options, if needed and if possible (if the database support such a feature) |
protected void |
applySetTimestamp(java.lang.Long timestamp)
applySetTimestamp adds to the batch the query used to change the server timestamp, if needed and if possible (if the database support such a feature) |
protected void |
applyStatementData(StatementData data)
|
protected void |
applyUseSchema(java.lang.String schema)
applySetUseSchema adds to the batch the query used to change the current schema where queries should be executed, if needed and if possible (if the database support such a feature) |
protected int |
bindColumnValues(java.sql.PreparedStatement prepStatement,
java.util.ArrayList<OneRowChange.ColumnVal> values,
int startBindLoc,
java.util.ArrayList<OneRowChange.ColumnSpec> specs,
boolean skipNulls)
|
void |
commit()
Commits current open transaction to ensure data applied up to current point are durable. |
void |
configure(PluginContext context)
Complete plug-in configuration. |
protected int |
fillColumnNames(OneRowChange data)
Queries database for column names of a table that OneRowChange is affecting. |
Database |
getDatabase()
|
ReplDBMSHeader |
getLastEvent()
Return header information corresponding to last committed event. |
protected void |
logFailedStatementSQL(java.lang.String sql)
|
protected void |
logFailedStatementSQL(java.lang.String sql,
java.sql.SQLException ex)
Logs SQL into error log stream. |
protected boolean |
needNewSQLStatement(int row,
java.util.ArrayList<java.util.ArrayList<OneRowChange.ColumnVal>> keyValues,
java.util.ArrayList<OneRowChange.ColumnSpec> keySpecs,
java.util.ArrayList<java.util.ArrayList<OneRowChange.ColumnVal>> colValues,
java.util.ArrayList<OneRowChange.ColumnSpec> colSpecs)
|
void |
prepare(PluginContext context)
Prepare plug-in for use. |
protected void |
printColumnSpec(java.lang.StringBuffer stmt,
java.util.ArrayList<OneRowChange.ColumnSpec> cols,
java.util.ArrayList<OneRowChange.ColumnVal> keyValues,
java.util.ArrayList<OneRowChange.ColumnVal> colValues,
com.continuent.tungsten.replicator.applier.JdbcApplier.PrintMode mode,
java.lang.String separator)
|
void |
release(PluginContext context)
Release all resources used by plug-in. |
void |
rollback()
Rolls back any current work. |
void |
setDriver(java.lang.String driver)
|
void |
setGetColumnMetadataFromDB(boolean getColumnInformationFromDB)
|
void |
setIgnoreSessionVars(java.lang.String ignoreSessionVars)
|
protected void |
setObject(java.sql.PreparedStatement prepStatement,
int bindLoc,
OneRowChange.ColumnVal value,
OneRowChange.ColumnSpec columnSpec)
|
void |
setPassword(java.lang.String password)
|
void |
setTaskId(int id)
Sets the ID of the task using this raw applier. |
void |
setUrl(java.lang.String url)
|
void |
setUser(java.lang.String user)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected int taskId
protected ReplicatorRuntime runtime
protected java.lang.String driver
protected java.lang.String url
protected java.lang.String user
protected java.lang.String password
protected java.lang.String ignoreSessionVars
protected java.lang.String metadataSchema
protected java.lang.String consistencyTable
protected java.lang.String consistencySelect
protected Database conn
protected java.sql.Statement statement
protected java.util.regex.Pattern ignoreSessionPattern
protected CommitSeqnoTable commitSeqnoTable
protected HeartbeatTable heartbeatTable
protected java.lang.String lastSessionId
protected java.lang.String currentSchema
protected long currentTimestamp
protected long eventCount
protected long commitCount
protected int maxSQLLogLength
protected java.util.HashMap<java.lang.String,java.lang.String> currentOptions
| Constructor Detail |
|---|
public JdbcApplier()
| Method Detail |
|---|
public void setTaskId(int id)
setTaskId in interface RawApplierid - Task IDRawApplier.setTaskId(int)public void setDriver(java.lang.String driver)
public Database getDatabase()
public void setUrl(java.lang.String url)
public void setUser(java.lang.String user)
public void setPassword(java.lang.String password)
public void setIgnoreSessionVars(java.lang.String ignoreSessionVars)
public void setGetColumnMetadataFromDB(boolean getColumnInformationFromDB)
protected void printColumnSpec(java.lang.StringBuffer stmt,
java.util.ArrayList<OneRowChange.ColumnSpec> cols,
java.util.ArrayList<OneRowChange.ColumnVal> keyValues,
java.util.ArrayList<OneRowChange.ColumnVal> colValues,
com.continuent.tungsten.replicator.applier.JdbcApplier.PrintMode mode,
java.lang.String separator)
keyValues - Is used to identify NULL values, in which case, if the
mode is ASSIGNMENT, "x IS ?" is constructed instead of "x =
?".
protected int fillColumnNames(OneRowChange data)
throws java.sql.SQLException,
ApplierException
data -
java.sql.SQLException
ApplierException
protected Column addColumn(java.sql.ResultSet rs,
java.lang.String columnName)
throws java.sql.SQLException
rs - Metadata resultsetcolumnName - Name of the column to be added
java.sql.SQLException - if an error occurs
protected int bindColumnValues(java.sql.PreparedStatement prepStatement,
java.util.ArrayList<OneRowChange.ColumnVal> values,
int startBindLoc,
java.util.ArrayList<OneRowChange.ColumnSpec> specs,
boolean skipNulls)
throws java.sql.SQLException
java.sql.SQLException
protected void setObject(java.sql.PreparedStatement prepStatement,
int bindLoc,
OneRowChange.ColumnVal value,
OneRowChange.ColumnSpec columnSpec)
throws java.sql.SQLException
java.sql.SQLException
protected void applyRowIdData(RowIdData data)
throws ReplicatorException
ReplicatorException
protected void applyStatementData(StatementData data)
throws ReplicatorException
ReplicatorException
protected void applySetTimestamp(java.lang.Long timestamp)
throws java.sql.SQLException
timestamp - the timestamp to be used
java.sql.SQLException - if an error occurs
protected void applyUseSchema(java.lang.String schema)
throws java.sql.SQLException
schema - the schema to be used
java.sql.SQLException - if an error occurs
protected boolean applySessionVariables(java.util.List<ReplOption> options)
throws java.sql.SQLException
options -
java.sql.SQLExceptionprotected void logFailedStatementSQL(java.lang.String sql)
protected void logFailedStatementSQL(java.lang.String sql,
java.sql.SQLException ex)
sql - the sql statement to be loggedmaxSQLLogLength
protected boolean needNewSQLStatement(int row,
java.util.ArrayList<java.util.ArrayList<OneRowChange.ColumnVal>> keyValues,
java.util.ArrayList<OneRowChange.ColumnSpec> keySpecs,
java.util.ArrayList<java.util.ArrayList<OneRowChange.ColumnVal>> colValues,
java.util.ArrayList<OneRowChange.ColumnSpec> colSpecs)
protected void applyOneRowChangePrepared(OneRowChange oneRowChange)
throws ReplicatorException
ReplicatorException
protected void applyRowChangeData(RowChangeData data,
java.util.List<ReplOption> options)
throws ReplicatorException
ReplicatorException
public void apply(DBMSEvent event,
ReplDBMSHeader header,
boolean doCommit,
boolean doRollback)
throws ReplicatorException,
ConsistencyException
apply in interface RawApplierevent - Event to be applied. If a DBMSEmptyEvent, just mark the
apply position.header - Header data corresponding to eventdoCommit - Boolean flag indicating whether this is the last part of
multi-part eventdoRollback - Boolean flag indicating whether this transaction should
rollback
ReplicatorException - Thrown if applier processing fails
ConsistencyException - Thrown if the applier detects that a
consistency check has failedRawApplier.apply(com.continuent.tungsten.replicator.event.DBMSEvent,
com.continuent.tungsten.replicator.event.ReplDBMSHeader, boolean,
boolean)
public void commit()
throws ReplicatorException,
java.lang.InterruptedException
commit in interface RawApplierReplicatorException - Thrown if applier processing fails
java.lang.InterruptedException - Thrown if the applier is interruptedRawApplier.commit()
public void rollback()
throws java.lang.InterruptedException
rollback in interface RawApplierjava.lang.InterruptedException - Thrown if the applier is interrupted.RawApplier.rollback()
protected void applyLoadDataLocal(LoadDataFileQuery data,
java.io.File temporaryFile)
throws ReplicatorException
data - The LoadDataFileQuery containing the query that has to be
executedtemporaryFile - The file containing data to be loaded
ReplicatorException - if an error occursMySQLApplier.applyLoadDataLocal(LoadDataFileQuery,
File)
public ReplDBMSHeader getLastEvent()
throws ReplicatorException
getLastEvent in interface RawApplierReplicatorException - Thrown if getting sequence number failsRawApplier.getLastEvent()
public void prepare(PluginContext context)
throws ReplicatorException
prepare in interface ReplicatorPluginReplicatorException - Thrown if resource allocation failsReplicatorPlugin.prepare(com.continuent.tungsten.replicator.plugin.PluginContext)
public void configure(PluginContext context)
throws ReplicatorException
configure in interface ReplicatorPluginReplicatorException - Thrown if configuration is incomplete or
failsReplicatorPlugin.configure(com.continuent.tungsten.replicator.plugin.PluginContext)
public void release(PluginContext context)
throws ReplicatorException
release in interface ReplicatorPluginReplicatorException - Thrown if resource deallocation failsReplicatorPlugin.release(com.continuent.tungsten.replicator.plugin.PluginContext)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||