-
Notifications
You must be signed in to change notification settings - Fork 8.6k
Closed
Description
dbtype: doris
dbversion: 1.2.7
druid verion: 1.2.22
error sql:
SELECT CONCAT(date_id, ' ', e1, e2) hour_minute1
from (select 1 k1) AS t,
(SELECT date_id FROM dim_date
WHERE date_id between date_format(DATE_SUB(20240513, INTERVAL 7 DAY), 'yyyy-MM-dd') AND date_format(20240513, 'yyyy-MM-dd')) dd
lateral VIEW explode(['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23']) tmp1 as e1
lateral VIEW explode([':00:00', ':30:00']) tmp2 AS e2
testcase code:
-- 步骤1:先创建一个时间维表,用于上述sql执行
CREATE TABLE `dim_date` (
`date_id` varchar(30) NULL
) ENGINE=OLAP
UNIQUE KEY(`date_id`)
COMMENT '时间维表'
DISTRIBUTED BY HASH(`date_id`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 3",
"in_memory" = "false",
"storage_format" = "V2",
"enable_unique_key_merge_on_write" = "true",
"light_schema_change" = "true",
"disable_auto_compaction" = "false"
);
-- 步骤2:随便插入一些日期,日期格式为 2024-05-13
INSERT INTO dim_date
(date_id)
VALUES
('2024-05-10'),
('2024-05-11'),
('2024-05-12'),
('2024-05-13');
-- 步骤3:执行上述error sql解析
String sql = "上述error sql";
SQLSelectStatement sqlSelectStatement = (SQLSelectStatement) SQLUtils.parseStatements(sql, "mysql").get(0);
error info:
Exception in thread "main" com.alibaba.druid.sql.parser.ParserException: ERROR. pos 263, line 5, column 22, token [
at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:1314)
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlExprParser.primary(MySqlExprParser.java:527)
at com.alibaba.druid.sql.parser.SQLExprParser.expr(SQLExprParser.java:109)
at com.alibaba.druid.sql.parser.SQLExprParser.exprList(SQLExprParser.java:2231)
at com.alibaba.druid.sql.parser.SQLExprParser.methodRest(SQLExprParser.java:1877)
at com.alibaba.druid.sql.parser.SQLExprParser.primaryRest(SQLExprParser.java:1647)
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlExprParser.primaryRest(MySqlExprParser.java:751)
at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:1354)
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlExprParser.primary(MySqlExprParser.java:492)
at com.alibaba.druid.sql.parser.SQLSelectParser.parseLateralView(SQLSelectParser.java:2017)
at com.alibaba.druid.sql.parser.SQLSelectParser.parseTableSourceRest(SQLSelectParser.java:1886)
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlSelectParser.parseTableSourceRest(MySqlSelectParser.java:820)
at com.alibaba.druid.sql.parser.SQLSelectParser.parseTableSourceRest(SQLSelectParser.java:1445)
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlSelectParser.parseTableSourceRest(MySqlSelectParser.java:820)
at com.alibaba.druid.sql.parser.SQLSelectParser.parseTableSourceRest(SQLSelectParser.java:1875)
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlSelectParser.parseTableSourceRest(MySqlSelectParser.java:820)
at com.alibaba.druid.sql.parser.SQLSelectParser.parseTableSourceRest(SQLSelectParser.java:1445)
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlSelectParser.parseTableSourceRest(MySqlSelectParser.java:820)
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlSelectParser.parseTableSource(MySqlSelectParser.java:446)
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlSelectParser.parseFrom(MySqlSelectParser.java:99)
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlSelectParser.query(MySqlSelectParser.java:247)
at com.alibaba.druid.sql.parser.SQLSelectParser.select(SQLSelectParser.java:62)
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseSelect(MySqlStatementParser.java:112)
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:233)
at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:600)
at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:594)
at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:617)
at com.fcbox.nebula.util.SqlParser.getSqlLimit(SqlParser.java:298)
at com.fcbox.nebula.util.SqlParser.main(SqlParser.java:1781)
true case:
-- 用array替代[]数组写法即可
SELECT CONCAT(date_id, ' ', e1, e2) hour_minute1
from (select 1 k1) AS t,
(SELECT date_id FROM dim_date
WHERE date_id between date_format(DATE_SUB(20240513, INTERVAL 7 DAY), 'yyyy-MM-dd') AND date_format(20240513, 'yyyy-MM-dd')) dd
lateral VIEW explode(array('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23')) tmp1 as e1
lateral VIEW explode(array(':00:00', ':30:00')) tmp2 AS e2
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels