From 13f6ad479fdb2c5c03d9025d6ce6551055b470b2 Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 15 Apr 2013 17:16:20 +0800 Subject: [PATCH] support useLocalSessionState config, default is true --- .../druid/pool/DruidPooledConnection.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) 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);