Navigation Menu

Skip to content

Commit

Permalink
0002396: Provide functionality to not require context table on sqlite
Browse files Browse the repository at this point in the history
for threadsafe data capture
  • Loading branch information
chenson42 committed Sep 25, 2015
1 parent 6ee33ac commit aff9acb
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 26 deletions.
Expand Up @@ -66,7 +66,7 @@
import org.jumpmind.symmetric.db.postgresql.PostgreSqlSymmetricDialect;
import org.jumpmind.symmetric.db.redshift.RedshiftSymmetricDialect;
import org.jumpmind.symmetric.db.sqlanywhere.SqlAnywhereSymmetricDialect;
import org.jumpmind.symmetric.db.sqlite.SqliteSymmetricDialect;
import org.jumpmind.symmetric.db.sqlite.SqliteJdbcSymmetricDialect;
import org.jumpmind.symmetric.service.IParameterService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -149,7 +149,7 @@ public ISymmetricDialect create() {
} else if (platform instanceof InterbaseDatabasePlatform) {
dialect = new InterbaseSymmetricDialect(parameterService, platform);
} else if (platform instanceof SqliteDatabasePlatform) {
dialect = new SqliteSymmetricDialect(parameterService, platform);
dialect = new SqliteJdbcSymmetricDialect(parameterService, platform);
} else {
throw new DbNotSupportedException();
}
Expand Down
@@ -0,0 +1,38 @@
package org.jumpmind.symmetric.db.sqlite;

import java.sql.Connection;
import java.sql.SQLException;

import org.jumpmind.db.platform.IDatabasePlatform;
import org.jumpmind.db.sql.IConnectionCallback;
import org.jumpmind.db.sql.ISqlTransaction;
import org.jumpmind.db.sql.JdbcSqlTransaction;
import org.jumpmind.symmetric.service.IParameterService;

public class SqliteJdbcSymmetricDialect extends SqliteSymmetricDialect {

public SqliteJdbcSymmetricDialect(IParameterService parameterService, IDatabasePlatform platform) {
super(parameterService, platform);
}

@Override
protected void setSqliteFunctionResult(ISqlTransaction transaction, final String name, final String result){
JdbcSqlTransaction trans = (JdbcSqlTransaction)transaction;
trans.executeCallback(new IConnectionCallback<Object>() {
@Override
public Object execute(Connection con) throws SQLException {
org.sqlite.SQLiteConnection unwrapped = ((org.sqlite.SQLiteConnection)((org.apache.commons.dbcp.DelegatingConnection)con).getInnermostDelegate());

org.sqlite.Function.create(unwrapped, name, new org.sqlite.Function() {
@Override
protected void xFunc() throws SQLException {
this.result(result);
}
});

return null;
}
});
}

}
Expand Up @@ -20,14 +20,9 @@
*/
package org.jumpmind.symmetric.db.sqlite;

import java.sql.Connection;
import java.sql.SQLException;

import org.jumpmind.db.model.Table;
import org.jumpmind.db.platform.IDatabasePlatform;
import org.jumpmind.db.sql.IConnectionCallback;
import org.jumpmind.db.sql.ISqlTransaction;
import org.jumpmind.db.sql.JdbcSqlTransaction;
import org.jumpmind.db.sql.SqlException;
import org.jumpmind.db.util.BinaryEncoding;
import org.jumpmind.symmetric.common.ParameterConstants;
Expand Down Expand Up @@ -85,25 +80,9 @@ public void dropRequiredDatabaseObjects() {
public void cleanDatabase() {
}

private void setSqliteFunctionResult(ISqlTransaction transaction, final String name, final String result){
JdbcSqlTransaction trans = (JdbcSqlTransaction)transaction;
trans.executeCallback(new IConnectionCallback<Object>() {
@Override
public Object execute(Connection con) throws SQLException {
org.sqlite.SQLiteConnection unwrapped = ((org.sqlite.SQLiteConnection)((org.apache.commons.dbcp.DelegatingConnection)con).getInnermostDelegate());

org.sqlite.Function.create(unwrapped, name, new org.sqlite.Function() {
@Override
protected void xFunc() throws SQLException {
this.result(result);
}
});

return null;
}
});
}

protected void setSqliteFunctionResult(ISqlTransaction transaction, final String name, final String result) {

}

public void disableSyncTriggers(ISqlTransaction transaction, String nodeId) {
if(StringUtils.isNullOrEmpty(sqliteFunctionToOverride)){
Expand Down

0 comments on commit aff9acb

Please sign in to comment.