DTStack / DTStack/flinkStreamSQL

create view中语法问题

オープン
#305 コメント 3 件 リアクション 0 件 担当者 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 を短くまとめたダイジェスト。