Skip to content

Commit 18000f7

Browse files
committed
add local cache
1 parent f0730f4 commit 18000f7

19 files changed

+253
-52
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,5 @@ build/
3131

3232
### VS Code ###
3333
.vscode/
34-
*.db
34+
*.db
35+
dbstream

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.codingapi.dbstream</groupId>
66
<artifactId>dbstream-driver</artifactId>
7-
<version>1.0.1</version>
7+
<version>1.0.2</version>
88

99
<url>https://github.com/codingapi/dbstream-driver</url>
1010
<name>dbstream-driver</name>

src/main/java/com/codingapi/dbstream/DBStreamContext.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.codingapi.dbstream.provider.DefaultDBTableSupportProvider;
77
import com.codingapi.dbstream.scanner.DBMetaContext;
88
import com.codingapi.dbstream.scanner.DBMetaData;
9+
import com.codingapi.dbstream.scanner.DbTable;
910
import com.codingapi.dbstream.stream.DBEventContext;
1011
import com.codingapi.dbstream.stream.DBEventPusher;
1112
import lombok.Getter;
@@ -42,14 +43,14 @@ public void addListener(SQLExecuteListener sqlExecuteListener) {
4243
/**
4344
* 是否支持SQL 拦截代理分析
4445
* @param info 数据库连接信息
45-
* @param tableName 数据库名称
46+
* @param dbTable 数据库表信息
4647
* @return 是否支持
4748
*/
48-
public boolean support(Properties info, String tableName) {
49+
public boolean support(Properties info, DbTable dbTable) {
4950
if (dbTableSupportProvider == null) {
5051
this.dbTableSupportProvider = new DefaultDBTableSupportProvider();
5152
}
52-
return dbTableSupportProvider.support(info, tableName);
53+
return dbTableSupportProvider.support(info, dbTable);
5354
}
5455

5556

src/main/java/com/codingapi/dbstream/driver/DBStreamProxyDriver.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,16 @@ public class DBStreamProxyDriver implements Driver {
2727

2828
@Override
2929
public Connection connect(String url, Properties info) throws SQLException {
30+
if(this.driver==null){
31+
this.acceptsURL(url);
32+
}
3033
Connection connection = driver.connect(url, info);
3134
info.setProperty(DBMetaData.KEY_JDBC_URL, url);
3235
String jdbcKey = info.getProperty(DBMetaData.KEY_JDBC_KEY);
3336
DBMetaData metaData = DBMetaContext.getInstance().getMetaData(jdbcKey);
3437
if (metaData == null) {
35-
DBScanner scanner = new DBScanner(connection);
36-
metaData = scanner.loadMetadata(info);
38+
DBScanner scanner = new DBScanner(connection,info);
39+
metaData = scanner.loadMetadata();
3740
DBMetaContext.getInstance().update(metaData);
3841
}
3942
return new ConnectionProxy(connection, metaData);

src/main/java/com/codingapi/dbstream/interceptor/SQLExecuteState.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,8 @@ public String getTransactionKey() {
171171
public List<Map<String, Object>> query(String sql, List<Object> params) throws SQLException {
172172
PreparedStatement preparedStatement = connection.prepareStatement(sql);
173173
for (int i = 0; i < params.size(); i++) {
174-
preparedStatement.setObject(i + 1, params.get(i));
174+
Object param = params.get(i);
175+
preparedStatement.setObject(i + 1,param);
175176
}
176177
ResultSet resultSet = preparedStatement.executeQuery();
177178
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();

src/main/java/com/codingapi/dbstream/listener/SQLDeleteExecuteListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void before(SQLExecuteState executeState) throws SQLException {
2929
Delete delete = (Delete) parserStatement;
3030
Table table = delete.getTable();
3131
DbTable dbTable = executeState.getDbTable(table.getName());
32-
if (dbTable != null && DBStreamContext.getInstance().support(executeState.getDriverProperties(), dbTable.getName())) {
32+
if (dbTable != null && DBStreamContext.getInstance().support(executeState.getDriverProperties(), dbTable)) {
3333
DeleteDBEventParser dataParser = new DeleteDBEventParser(executeState, delete, table, dbTable);
3434
dataParser.prepare();
3535
threadLocal.set(dataParser);

src/main/java/com/codingapi/dbstream/listener/SQLInsertExecuteListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void before(SQLExecuteState executeState) throws SQLException {
2929
Insert insert = (Insert) parserStatement;
3030
Table table = insert.getTable();
3131
DbTable dbTable = executeState.getDbTable(table.getName());
32-
if (dbTable != null && DBStreamContext.getInstance().support(executeState.getDriverProperties(), dbTable.getName())) {
32+
if (dbTable != null && DBStreamContext.getInstance().support(executeState.getDriverProperties(), dbTable)) {
3333
InsertDBEventParser dataParser = new InsertDBEventParser(executeState, insert, table, dbTable);
3434
dataParser.prepare();
3535
threadLocal.set(dataParser);

src/main/java/com/codingapi/dbstream/listener/SQLUpdateExecuteListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void before(SQLExecuteState executeState) throws SQLException {
2929
Update update = (Update) parserStatement;
3030
Table table = update.getTable();
3131
DbTable dbTable = executeState.getDbTable(table.getName());
32-
if (dbTable != null && DBStreamContext.getInstance().support(executeState.getDriverProperties(), dbTable.getName())) {
32+
if (dbTable != null && DBStreamContext.getInstance().support(executeState.getDriverProperties(), dbTable)) {
3333
UpdateDBEventParser dataParser = new UpdateDBEventParser(executeState, update, table, dbTable);
3434
dataParser.prepare();
3535
threadLocal.set(dataParser);
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.codingapi.dbstream.provider;
22

3+
import com.codingapi.dbstream.scanner.DbTable;
4+
35
import java.util.Properties;
46

57
/**
68
* 数据库表支持判断
79
*/
810
public interface DBTableSupportProvider {
911

10-
boolean support(Properties info,String tableName);
12+
boolean support(Properties info, DbTable dbTable);
1113
}
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
package com.codingapi.dbstream.provider;
22

3+
import com.codingapi.dbstream.scanner.DbTable;
4+
35
import java.util.Properties;
46

57
public class DefaultDBTableSupportProvider implements DBTableSupportProvider {
68

79
@Override
8-
public boolean support(Properties info, String tableName) {
9-
return true;
10+
public boolean support(Properties info, DbTable dbTable) {
11+
if(dbTable.hasColumns() && dbTable.hasPrimaryKeys()) {
12+
return true;
13+
}
14+
return false;
1015
}
1116
}

0 commit comments

Comments
 (0)