diff --git a/src/main/java/com/alibaba/druid/pool/DruidPooledConnection.java b/src/main/java/com/alibaba/druid/pool/DruidPooledConnection.java index 47842a2cf6..978d33a4a3 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidPooledConnection.java +++ b/src/main/java/com/alibaba/druid/pool/DruidPooledConnection.java @@ -830,6 +830,13 @@ public class DruidPooledConnection extends PoolableWrapper implements javax.sql. @Override public void setReadOnly(boolean readOnly) throws SQLException { checkState(); + + boolean useLocalSessionState = holder.getDataSource().isUseLocalSessionState(); + if (useLocalSessionState) { + if (readOnly == holder.isUnderlyingReadOnly()) { + return; + } + } conn.setReadOnly(readOnly); holder.setUnderlyingReadOnly(readOnly); @@ -859,6 +866,13 @@ public class DruidPooledConnection extends PoolableWrapper implements javax.sql. @Override public void setTransactionIsolation(int level) throws SQLException { checkState(); + + boolean useLocalSessionState = holder.getDataSource().isUseLocalSessionState(); + if (useLocalSessionState) { + if (level == holder.getUnderlyingTransactionIsolation()) { + return; + } + } conn.setTransactionIsolation(level); holder.setUnderlyingTransactionIsolation(level); @@ -902,6 +916,13 @@ public class DruidPooledConnection extends PoolableWrapper implements javax.sql. @Override public void setHoldability(int holdability) throws SQLException { checkState(); + + boolean useLocalSessionState = holder.getDataSource().isUseLocalSessionState(); + if (useLocalSessionState) { + if (holdability == holder.getUnderlyingHoldability()) { + return; + } + } conn.setHoldability(holdability); holder.setUnderlyingHoldability(holdability);