Issue 1:
When only use shardingsphere ： sharding is OK （only choise one db and one table）

When only use shardingsphere with seata ： sharding is ERROR（Scan all db and table） like

15:16:15.370 INFO [main] ShardingSphere-SQL - Actual SQL: bookshelf_0 ::: SELECT * FROM shelf_book_key_0 LIMIT 1

15:16:15.370 INFO [main] ShardingSphere-SQL - Actual SQL: bookshelf_0 ::: SELECT * FROM shelf_book_key_1 LIMIT 1

15:16:15.370 INFO [main] ShardingSphere-SQL - Actual SQL: bookshelf_0 ::: SELECT * FROM shelf_book_key_2 LIMIT 1

15:16:15.370 INFO [main] ShardingSphere-SQL - Actual SQL: bookshelf_0 ::: SELECT * FROM shelf_book_key_3 LIMIT 1

15:16:15.370 INFO [main] ShardingSphere-SQL - Actual SQL: bookshelf_0 ::: SELECT * FROM shelf_book_key_4 LIMIT 1

15:16:15.370 INFO [main] ShardingSphere-SQL - Actual SQL: bookshelf_0 ::: SELECT * FROM shelf_book_key_5 LIMIT 1

15:16:15.370 INFO [main] ShardingSphere-SQL - Actual SQL: bookshelf_0 ::: SELECT * FROM shelf_book_key_6 LIMIT 1

15:16:15.370 INFO [main] ShardingSphere-SQL - Actual SQL: bookshelf_0 ::: SELECT * FROM shelf_book_key_7 LIMIT 1

15:16:15.370 INFO [main] ShardingSphere-SQL - Actual SQL: bookshelf_0 ::: SELECT * FROM shelf_book_key_8 LIMIT 1

15:16:15.370 INFO [main] ShardingSphere-SQL - Actual SQL: bookshelf_0 ::: SELECT * FROM shelf_book_key_9 LIMIT 1

15:16:15.371 INFO [main] ShardingSphere-SQL - Actual SQL: bookshelf_0 ::: SELECT * FROM shelf_book_key_10 LIMIT 1

......

sharding-transaction-base-seata-at It doesn't help.

<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-namespace</artifactId>
<version>4.1.1</version>
</dependency>

<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-transaction-base-seata-at</artifactId>
<version>4.1.2</version>
</dependency>

notice ：4.1.2 is my version be used for fix SeataATShardingTransactionManager can't read seata.conf

<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>

Issue 2:
two kind of oracle batch insert didn't work.

version

<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
<version>5.1.1</version>

testcase

def "testOracleInsertAll"(){
when: "insert all case 1"
def insert_all_sql = """
insert all into t_user( usename ) values ( ? ) select 1 from dual
"""
prepareStatement(insert_all_sql)
then:
thrown NullPointerException

when: "insert all case 2"
def insert_all_sql2 = """
insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE)
select ?, ?, ?, 1 from dual union all
select ?, ?, ?, 1 from dual
"""
prepareStatement(insert_all_sql2)
then:
thrown ClassCastException
}

private void prepareStatement(def sql) {
try (def connection = sqlSessionFactory.openSession().getConnection()) {
connection.prepareStatement(sql)
}
}

detail of exception

Caused by: java.lang.NullPointerException
at org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext.<init>(InsertStatementContext.java:94)
at org.apache.shardingsphere.infra.binder.SQLStatementContextFactory.getDMLStatementContext(SQLStatementContextFactory.java:155)
at org.apache.shardingsphere.infra.binder.SQLStatementContextFactory.newInstance(SQLStatementContextFactory.java:129)
at org.apache.shardingsphere.infra.binder.SQLStatementContextFactory.newInstance(SQLStatementContextFactory.java:114)
at org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.<init>(ShardingSpherePreparedStatement.java:181)
at org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.<init>(ShardingSpherePreparedStatement.java:149)
at org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection.prepareStatement(ShardingSphereConnection.java:80)

Caused by: java.lang.ClassCastException: class org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.ParameterMarkerExpressionSegment cannot be cast to class org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.LiteralExpressionSegment (org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.ParameterMarkerExpressionSegment and org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.LiteralExpressionSegment are in unnamed module of loader 'app')
at org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor.createProjection(OracleDMLStatementSQLVisitor.java:754)
at org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor.visitSelectProjection(OracleDMLStatementSQLVisitor.java:700)
at org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor.visitSelectProjection(OracleDMLStatementSQLVisitor.java:162)
at org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser$SelectProjectionContext.accept(OracleStatementParser.java:10829)
at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:18)
at org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor.visitSelectList(OracleDMLStatementSQLVisitor.java:670)
at org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor.visitSelectList(OracleDMLStatementSQLVisitor.java:162)
at org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser$SelectListContext.accept(OracleStatementParser.java:10507)
at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:18)
at org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor.visitQueryBlock(OracleDMLStatementSQLVisitor.java:503)
at org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor.visitQueryBlock(OracleDMLStatementSQLVisitor.java:162)
at org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser$QueryBlockContext.accept(OracleStatementParser.java:4790)
at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:18)
at org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor.visitSelectSubquery(OracleDMLStatementSQLVisitor.java:488)
at org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor.visitSelectSubquery(OracleDMLStatementSQLVisitor.java:162)
at org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser$SelectSubqueryContext.accept(OracleStatementParser.java:4501)
at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:18)
at org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor.visitInsertSingleTable(OracleDMLStatementSQLVisitor.java:188)
at org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor.visitInsertSingleTable(OracleDMLStatementSQLVisitor.java:162)
at org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser$InsertSingleTableContext.accept(OracleStatementParser.java:1548)
at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:18)
at org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor.visitInsert(OracleDMLStatementSQLVisitor.java:173)
at org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl.OracleDMLStatementSQLVisitor.visitInsert(OracleDMLStatementSQLVisitor.java:162)
at org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser$InsertContext.accept(OracleStatementParser.java:1469)
at org.apache.shardingsphere.sql.parser.api.SQLVisitorEngine.visit(SQLVisitorEngine.java:55)
at org.apache.shardingsphere.infra.parser.sql.SQLStatementParserExecutor.parse(SQLStatementParserExecutor.java:48)
at org.apache.shardingsphere.infra.parser.cache.SQLStatementCacheLoader.load(SQLStatementCacheLoader.java:41)
at org.apache.shardingsphere.infra.parser.cache.SQLStatementCacheLoader.load(SQLStatementCacheLoader.java:30)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3533)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2282)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2159)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
... 11 more