DTStack / DTStack/flinkStreamSQL

create view中语法问题

未关闭
#305 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Java
星标
2k
派生
913
PR 合并指标
30 天内没有已合并 PR

描述


> CREATE VIEW viewName [ (columnName[ , columnName]*) ];
> INSERT INTO viewName queryStatement;

的语法使用临时表,会报错。

我的sql用例如下:
```
CREATE TABLE MyTable(
name varchar,
channel varchar,
pv INT,
xctime bigint,
CHARACTER_LENGTH(channel) AS timeLeng
)WITH(
type ='kafka10',
bootstrapServers ='hw-bd-01:9092',
zookeeperQuorum ='hw-bd-01:2181/kafka',
offsetReset ='earliest',
topic ='zxh_test',
parallelism ='1',
topicIsPattern='false'
);

create view MyView1 (
name varchar,
pv INT,
channel varchar
);

insert into MyView1 select name,pv+100 as pv,channel from MyTable;

CREATE TABLE MyResult(
name VARCHAR,
channel varchar,
cnt INT
)WITH(
type ='console',
parallelism ='1'
);

insert
into
MyResult
select
name,
channel,
pv+2000 as cnt
from
MyView1 where name='zhou';
```
报错的内容为:
```
Exception in thread "main" java.lang.RuntimeException: create view MyView1 ( name varchar, pv INT, channel varchar ):Syntax does not support,the format of SQL like insert into tb1 select * from tb2.
at com.dtstack.flink.sql.parser.SqlParser.parseSql(SqlParser.java:95)
at com.dtstack.flink.sql.exec.ExecuteProcessHelper.getStreamExecution(ExecuteProcessHelper.java:153)
at com.dtstack.flink.sql.Main.main(Main.java:42)
at com.dtstack.flink.sql.launcher.LauncherMain.main(LauncherMain.java:138)
```

修改方法:
将CreateTmpTableParser类中的
`private static final String EMPTY_STR = "(?i)^\\screate\\s+view\\s+(\\S+)\\s*\\((.+)\\)$";`
改为
`private static final String EMPTY_STR = "(?i)^\\s*create\\s+view\\s+(\\S+)\\s*\\((.+)\\)$";`
即可

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。