sql语句不支持

方便更快捷的说明问题,可以按需填写(可删除)

使用环境:

ss5.0、springboot,引入ss之后sql无法正常运行。

场景、问题:

SELECT dd.FullDateAlternateKey dataTime, IFNULL(rr.innum,0) innum, IFNULL(rr.jkl,0.00) jkl
FROM dimdate dd
LEFT JOIN
(SELECT SUM(rsd.innum) innum,ROUND(SUM(rsd.innum)/SUM(rsd.area),2) jkl,rsd.datatime datatime
FROM report_site_day rsd
LEFT JOIN site_relation sr ON sr.childId=rsd.relationId
LEFT JOIN project_status ps ON rsd.relationId=ps.site_id
LEFT JOIN site_all_info sai ON rsd.relationId=sai.SiteId
LEFT JOIN privilege_userssite AS pu ON pu.sitekey = sai.siteid
LEFT JOIN userinsmallprogram AS us ON us.userid = pu.userid
WHERE
us.openid = ?
AND sr.id =?
AND ps.status=1
AND rsd.dataTime BETWEEN ? AND ?
GROUP BY rsd.datatime
)rr
ON dd.FullDateAlternateKey=rr.datatime
WHERE dd.FullDateAlternateKey BETWEEN ? AND ?
ORDER BY dd.FullDateAlternateKey ASC

已进行操作:

官方文档介绍 CASE WHEN 和 UNION、UNION ALL不支持

现状:报错截图

@liuzhu

LEFT JOIN
(SELECT SUM(rsd.innum) innum,ROUND(SUM(rsd.innum)/SUM(rsd.area),2) jkl,rsd.datatime datatime
FROM report_site_day rsd

不支持子查询内部的聚合函数。另外,咱们论坛支持 markdown,建议格式化下。

1 个赞

哦哦,好的,我再多问一句,有什么办法可以快速的判断 sql是否支持?
官方文档介绍的太含蓄了。

@liuzhu 参考官方文档 SQL 使用规范,不支持的以及实验性支持的 SQL,特别关注下,如果不开启 federation,实验性支持的语句也是不支持的。刚刚这个语句就在这个范围内,所以先仔细看下文档。

federation 已经开启了。我看到官方不支持的sql有两处。
不支持1

@strongduanmu 不支持的 SQL 解析引擎能直接输出不支持这种异常吗,或者通过 preview 命令进行检测

最好是能输出什么地方不支持。

还有这一句,感觉挺简单的,程序运行也是报错。

SELECT 
  site.sitename AS NAME,
  IFNULL(rsd.innum, 0) AS VALUE 
FROM
  `report_site_day` rsd 
  RIGHT JOIN 
    (SELECT 
      sr.id,
      sai.sitename 
    FROM
      site_relation sr 
      INNER JOIN site_all_info sai 
        ON sr.ChildId = sai.siteid 
    WHERE sr.parent300 = 'QBGC' 
      AND sr.parent400 IS NULL 
      AND sr.parent500 IS NULL 
      AND sr.parent600 IS NULL 
      AND sai.type = 700) site 
    ON site.id = rsd.relationid 
    AND rsd.datatime = '2021-11-19' 
ORDER BY rsd.innum DESC

这个有报错信息吗?我看解析是可以支持的

@menghaoran 目前解析不支持会抛出异常 throw new SQLParsingException("You have an error in your SQL syntax");,具体的异常信息 antlr 里面有,但是普通用户看不懂,所以现在没有返回给用户 @lizhu

报这个问题 Cause: java.sql.SQLException: Error while preparing statement

@strongduanmu : 还有这一句,也是报异常。Cause: java.sql.SQLException: Error while preparing statement

看下异常堆栈,是不是 calcite 报的异常,calcite 也存在一些解析的问题。另外提醒下,federation 查询还是实验性的功能,在生产上使用需要谨慎。

哦哦,请问什么时候federation查询什么时候可以有稳定的版本?

感谢关注,federation 执行引擎还有很多优化工作,可以及时关注官网及论坛的动态。

好的,了解,有计划时间吗?这样的话我们心里也有个预期。

京ICP备2021015875号