确认

  • [ ] 我使用的版本是最新版, 并且使用插件确认过项目里无依赖版本冲突
  • [x] 我已经在 issue 中搜索过, 确认问题没有被提出过
  • [x] 我已经修改标题, 将标题中的 描述 替换为遇到的问题

当前程序版本

3.5.5

问题描述

原来的

生成错误的

多租户插件 在 WITH RECURSIVE 中会增加租户的条件查询

详细堆栈日志


Comment From: miemieYaho

目标sql是怎样?你的插件配置在哪里?

Comment From: KongZouXiang

@miemieYaho 第一张图是xml的sql,第二张图就是目标sql

Comment From: KongZouXiang

Comment From: miemieYaho

图二你不是说错误的吗?你觉得正确的sql是怎么样?别发图了,用markdown格式

Comment From: KongZouXiang

WITH RECURSIVE date_series AS ( SELECT DATE(FROM_UNIXTIME(? / 1000)) AS task_date UNION ALL SELECT DATE_ADD(task_date, INTERVAL 1 DAY) FROM date_series WHERE task_date < DATE(FROM_UNIXTIME(? / 1000)) AND tenant_id = 203 ) SELECT ds.task_date, COALESCE(COUNT(wt.id), 0) AS task_count FROM date_series ds LEFT JOIN work_task wt ON ds.task_date = DATE(FROM_UNIXTIME(wt.task_start_time / 1000)) AND wt.task_start_time BETWEEN ? AND ? AND wt.tenant_id = 203 WHERE ds.tenant_id = 203 GROUP BY ds.task_date ORDER BY ds.task_date;

是这样的,这个sql是增加多租户插件后最终执行的sql,理论上在WITH RECURSIVE的表不应该增加 tenant_id = 203

Comment From: KongZouXiang

WITH RECURSIVE date_series AS ( SELECT DATE(FROM_UNIXTIME(? / 1000)) AS task_date UNION ALL SELECT DATE_ADD(task_date, INTERVAL 1 DAY) FROM date_series WHERE task_date < DATE(FROM_UNIXTIME(? / 1000)) ) SELECT ds.task_date, COALESCE(COUNT(wt.id), 0) AS task_count FROM date_series ds LEFT JOIN work_task wt ON ds.task_date = DATE(FROM_UNIXTIME(wt.task_start_time / 1000)) AND wt.task_start_time BETWEEN ? AND ? AND wt.tenant_id = 203 GROUP BY ds.task_date ORDER BY ds.task_date; 正确的应该是这样的