确认
当前程序版本
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;
正确的应该是这样的