Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

create view中语法问题

Abierto
#305 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
1/5
Tiempo estimado
Menos de una hora
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
java, sql

Línea de trabajo

Comienza en CreateTmpTableParser, en el patrón EMPTY_STR, y luego sigue cómo SqlParser gestiona la sentencia CREATE VIEW proporcionada. Reproduce el ejemplo de SQL y verifica que se aceptan los espacios en blanco iniciales antes de CREATE VIEW y que las sentencias INSERT posteriores se analizan correctamente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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

Lenguaje dominante
Java
Estrellas
2k
Forks
913
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de DTStack/flinkStreamSQL

Todos los issues de DTStack/flinkStreamSQL

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.