Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

create view中语法问题

Offen
#305 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
1/5
Geschätzter Aufwand
Unter einer Stunde
Anfängerfreundlichkeit
45/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Veraltet
Tech-Stack
java, sql

Rechercherichtung

Beginnen Sie in CreateTmpTableParser beim EMPTY_STR-Muster und verfolgen Sie dann, wie SqlParser die bereitgestellte CREATE VIEW-Anweisung verarbeitet. Reproduzieren Sie das SQL-Beispiel und verifizieren Sie, dass führender Leerraum vor CREATE VIEW akzeptiert wird und dass die nachfolgenden INSERT-Anweisungen erfolgreich geparst werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

用

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

Vorherrschende Sprache
Java
Sterne
2k
Forks
913
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus DTStack/flinkStreamSQL

Alle Issues in DTStack/flinkStreamSQL

Ähnliche Issues

Weitere Issues zu Java

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.