Skip to content
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

JOIN 查询同一张表多次,副表数据错乱bug #781

Open
gxmanito opened this issue Nov 27, 2024 · 7 comments
Open

JOIN 查询同一张表多次,副表数据错乱bug #781

gxmanito opened this issue Nov 27, 2024 · 7 comments

Comments

@gxmanito
Copy link

Description

APIJSON Version/APIJSON 版本号
6.3.0

Database Type & Version/数据库类型及版本号
mysql8

如图,JOIN 查询同一张表多次,副表数据错乱bug,explain执行计划打印的SQL是对的,但是副表的数据不对

image

@gxmanito gxmanito changed the title [xxx] JOIN 查询同一张表多次,副表数据错乱bug JOIN 查询同一张表多次,副表数据错乱bug Nov 27, 2024
@TommyLemon
Copy link
Collaborator

断点调试下 AbstractSQLExecutor.execute 中对 JOIN 查到 ResultSet 后分离 主、副 表数据的处理
https://github.com/Tencent/APIJSON/blob/master/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java#L390-L584

如果这里没问题,也可能是后面对 User:a 生成的缓存 SQL 与对 User:b 生成的缓存 SQL 一致,导致 AbstractSQLExecuto.getCacheItem 取错了

@TommyLemon
Copy link
Collaborator

也可以先升级到 7.0.3/6.4.3 等更高版本后试试

@TommyLemon
Copy link
Collaborator

也可以先把驼峰转换去掉后试试还有没有同样问题,看看是不是自己的改动导致

@gxmanito
Copy link
Author

gxmanito commented Dec 2, 2024

也可以先升级到 7.0.3/6.4.3 等更高版本后试试

升级版本暂时不能升级的

@gxmanito
Copy link
Author

gxmanito commented Dec 2, 2024

也可以先把驼峰转换去掉后试试还有没有同样问题,看看是不是自己的改动导致

驼峰转换去除后还是有问题的

@gxmanito
Copy link
Author

gxmanito commented Dec 2, 2024

断点调试下 AbstractSQLExecutor.execute 中对 JOIN 查到 ResultSet 后分离 主、副 表数据的处理 https://github.com/Tencent/APIJSON/blob/master/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java#L390-L584

如果这里没问题,也可能是后面对 User:a 生成的缓存 SQL 与对 User:b 生成的缓存 SQL 一致,导致 AbstractSQLExecuto.getCacheItem 取错了

是缓存取错了,但是暂时没有太好的方案处理,如果去掉缓存会导致n+1查询

@TommyLemon
Copy link
Collaborator

把具体的相关代码调试截屏发出来,这样纯文本的一问一答很低效,我也没时间去猜各种可能

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants