Skip to content

Commit 1f14df8

Browse files
committed
Provide a fix for preparedStatementCache
1 parent 0694b35 commit 1f14df8

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

src/main/java/org/avaje/datasource/delegate/ConnectionDelegator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
public class ConnectionDelegator implements Connection {
99

1010
private final Connection delegate;
11+
12+
protected String currentSchema;
1113

1214
public ConnectionDelegator(Connection delegate) {
1315
this.delegate = delegate;
@@ -23,6 +25,7 @@ public Connection getDelegate() {
2325
@Override
2426
public void setSchema(String schema) throws SQLException {
2527
delegate.setSchema(schema);
28+
currentSchema = schema;
2629
}
2730

2831
@Override

src/main/java/org/avaje/datasource/pool/PooledConnection.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -363,15 +363,21 @@ void returnPreparedStatement(ExtendedPreparedStatement pstmt) {
363363
* This will try to use a cache of PreparedStatements.
364364
*/
365365
public PreparedStatement prepareStatement(String sql, int returnKeysFlag) throws SQLException {
366-
String cacheKey = sql + returnKeysFlag;
367-
return prepareStatement(sql, true, returnKeysFlag, cacheKey);
366+
StringBuilder cacheKey = new StringBuilder(sql.length() + 50);
367+
cacheKey.append(sql);
368+
cacheKey.append(':').append(currentSchema);
369+
cacheKey.append(':').append(returnKeysFlag);
370+
return prepareStatement(sql, true, returnKeysFlag, cacheKey.toString());
368371
}
369372

370373
/**
371374
* This will try to use a cache of PreparedStatements.
372375
*/
373376
public PreparedStatement prepareStatement(String sql) throws SQLException {
374-
return prepareStatement(sql, false, 0, sql);
377+
StringBuilder cacheKey = new StringBuilder(sql.length() + 50);
378+
cacheKey.append(sql);
379+
cacheKey.append(':').append(currentSchema);
380+
return prepareStatement(sql, false, 0, cacheKey.toString());
375381
}
376382

377383
/**

0 commit comments

Comments
 (0)