diff --git a/src/main/java/com/alibaba/druid/pool/ha/MultiDataSourceStatement.java b/src/main/java/com/alibaba/druid/pool/ha/MultiDataSourceStatement.java index 5857f29b97..35029004ca 100644 --- a/src/main/java/com/alibaba/druid/pool/ha/MultiDataSourceStatement.java +++ b/src/main/java/com/alibaba/druid/pool/ha/MultiDataSourceStatement.java @@ -423,7 +423,7 @@ public class MultiDataSourceStatement extends WrapperAdapter implements Statemen public boolean isPoolable() throws SQLException { return false; } - + @SuppressWarnings("unchecked") @Override public T unwrap(Class iface) throws SQLException { @@ -434,7 +434,7 @@ public class MultiDataSourceStatement extends WrapperAdapter implements Statemen if (iface.isInstance(this)) { return (T) this; } - + if (stmt != null) { return stmt.unwrap(iface); } @@ -442,4 +442,11 @@ public class MultiDataSourceStatement extends WrapperAdapter implements Statemen return null; } + public Boolean isEscapeProcessing() { + return escapeProcessing; + } + + public String getCursorName() { + return cursorName; + } } diff --git a/src/test/java/com/alibaba/druid/bvt/pool/ha/HADataSourceTest.java b/src/test/java/com/alibaba/druid/bvt/pool/ha/HADataSourceTest.java index e71f35bd0d..50c001b916 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/ha/HADataSourceTest.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/ha/HADataSourceTest.java @@ -50,6 +50,14 @@ public class HADataSourceTest extends TestCase { { MultiDataSourceStatement dsStmt = stmt.unwrap(MultiDataSourceStatement.class); Assert.assertTrue(dsStmt.getId() > 0); + + Assert.assertEquals(100, stmt.getMaxFieldSize()); + Assert.assertEquals(201, stmt.getMaxRows()); + Assert.assertEquals(true, dsStmt.isEscapeProcessing().booleanValue()); + Assert.assertEquals(101, stmt.getQueryTimeout()); + Assert.assertEquals("cName", dsStmt.getCursorName()); + Assert.assertEquals(ResultSet.FETCH_REVERSE, stmt.getFetchDirection()); + Assert.assertEquals(202, stmt.getFetchSize()); } ResultSet rs = stmt.executeQuery("SELECT 1"); @@ -63,6 +71,19 @@ public class HADataSourceTest extends TestCase { Assert.assertEquals("cName", mockStmt.getCursorName()); Assert.assertEquals(ResultSet.FETCH_REVERSE, mockStmt.getFetchDirection()); Assert.assertEquals(202, mockStmt.getFetchSize()); + + { + MultiDataSourceStatement dsStmt = stmt.unwrap(MultiDataSourceStatement.class); + Assert.assertTrue(dsStmt.getId() > 0); + + Assert.assertEquals(100, stmt.getMaxFieldSize()); + Assert.assertEquals(201, stmt.getMaxRows()); + Assert.assertEquals(true, dsStmt.isEscapeProcessing().booleanValue()); + Assert.assertEquals(101, stmt.getQueryTimeout()); + Assert.assertEquals("cName", dsStmt.getCursorName()); + Assert.assertEquals(ResultSet.FETCH_REVERSE, stmt.getFetchDirection()); + Assert.assertEquals(202, stmt.getFetchSize()); + } stmt.close();