Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

create view中语法问题

Aberta
#305 3 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
1/5
Tempo estimado
Menos de uma hora
Facilidade para iniciantes
45/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Estagnada
Stack de tecnologia
java, sql

Direção de pesquisa

Comece em CreateTmpTableParser, no padrão EMPTY_STR, e então acompanhe como SqlParser lida com a instrução CREATE VIEW fornecida. Reproduza o exemplo de SQL e verifique se os espaços em branco iniciais antes de CREATE VIEW são aceitos e se as instruções INSERT subsequentes são analisadas com sucesso.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

用

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*\\((.+)\\)$";
即可

Linguagem predominante
Java
Estrelas
2k
Forks
913
Métricas de merge de PRs
Nenhum PR com merge em 30d

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de DTStack/flinkStreamSQL

Todas as issues de DTStack/flinkStreamSQL

Issues semelhantes

Mais issues de Java

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.