The dbrename
JavaScript filter
renames database (schemas) using two parameters from the properties file,
the dbsource
and
dbtarget
. Each event is then
processed, and the statement or row based schema information is updated to
dbtarget
when the
dbsource
schema is identified.
Pre-configured filter name |
dbrename
| ||
JavaScript Filter File |
tungsten-replicator/support/filters-javascript/dbrename.js
| ||
Property prefix |
replicator.filter.dbrename
| ||
Stage compatibility |
binlog-to-q
| ||
tpm Option compatibility |
--svc-extractor-filters
| ||
Data compatibility | Any event | ||
Parameters | |||
Parameter | Type | Default | Description |
dbsource
|
string
| (none) | Source table name (database/table to be renamed) |
dbtarget
|
string
| (none) | New database/table name |
To configure the filter you would add the following to your properties:
replicator.filter.dbrename=com.continuent.tungsten.replicator.filter.JavaScriptFilter replicator.filter.dbrename.script=${replicator.home.dir}/samples/extensions/javascript/dbrename.js replicator.filter.dbrename.dbsource=SOURCE replicator.filter.dbrename.dbtarget=TEST
The operation of the filter is straightforward, because the schema name is exposed and settable within the statement and row change objects:
function filter(event) { sourceName = filterProperties.getString("dbsource"); targetName = filterProperties.getString("dbtarget"); data = event.getData(); for(i=0;i<data.size();i++) { d = data.get(i); if(d instanceof com.continuent.tungsten.replicator.dbms.StatementData) { if(d.getDefaultSchema() != null && d.getDefaultSchema().compareTo(sourceName)==0) { d.setDefaultSchema(targetName); } } else if(d instanceof com.continuent.tungsten.replicator.dbms.RowChangeData) { rowChanges = data.get(i).getRowChanges(); for(j=0;j<rowChanges.size();j++) { oneRowChange = rowChanges.get(j); if(oneRowChange.getSchemaName().compareTo(sourceName)==0) { oneRowChange.setSchemaName(targetName); } } } } }