[alibaba/druid]druid 解析sql,如果sql中含有JSON_TABLE函数,会导致解析出来的sql错误

2025-11-11 727 views
0

druid版本:1.2.11 原始sql:SELECT people. FROM t1, JSON_TABLE(json_col, '$.people[]' COLUMNS ( name VARCHAR(40) PATH '$.name', address VARCHAR(100) PATH '$.address') ) people; 问题代码:com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlJSONTableExpr 的 toString()

问题描述:想通过druid解析sql代码实例如下: SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType); final List<SQLStatement> sqlStatements = parser.parseStatementList();

发现当sql中含有 JSON_TABLE 会导致解析后的sql缺少一个逗号,执行时直接抛异常。

回答

1

怀疑问题出现在 com.alibaba.druid.sql.dialect.mysql.visitor.MySqlOutputVisitor#visit(com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlJSONTableExpr)

9

修改代码以后输出正确