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 摘要。