-
Notifications
You must be signed in to change notification settings - Fork 6.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
批量执行Update返回值不准确 #180
Comments
这个我接了,能告诉我一个切入点吗? |
有没有重现代码? |
@githublaohu 这个主要是PreparedStatementExecutor.executeBatch的方法的返回值不准确。 此时批量执行两次
测试返回值应该是[2,2] 但实际可能是[1,1,2]。因为sjdbc会把同一个表的批量执行放到一个preparedstatement中,所以[1,2] [4,6]是一个preparedstatement(order_0), [1,2]是另一个prepared statement(order_1) |
好的,收到,我先把环境搭建好。 @hanahmily |
我看了, PreparedStatementExecutor.executeBatch 到执行 sql语句,应该不是PreparedStatementExecutor.executeBatch的错,而是 路由生成sql的问题吧。 |
executeBatch 使用多线程执行,是不是会有问题, |
PreparedStatement的batch的语句是预编译的,所以不会查询a是查询,b是添加。batch操作针对的是一个语句的,但是参数不同。这个问题的点应该是没错的。您可以再仔细看看 |
看了,把 PreparedStatement 的 executeBatch 后面的所有都看完了。 |
好的,想好改造思路后,在这里回复一下,咱们讨论好方案再动手。谢谢 |
不好意思,终于忙过来了, |
问题已经找到,是rote分sql。 |
批量执行Update 返回执行条数不准确。返回数据的行数是真实的SQL执行,但按照
JDBC
的规范应该返回逻辑SQL的执行。目前在特定条件返回的数组会多。The text was updated successfully, but these errors were encountered: