This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch branch-3.0 in repository https://gitbox.apache.org/repos/asf/doris.git
commit 03688135d8afa95d8de6449f91c410861433f8aa Author: morrySnow <101034200+morrys...@users.noreply.github.com> AuthorDate: Mon Sep 2 14:36:27 2024 +0800 [opt](Nereids) add job, analyze, load and cancel statements syntax (#40203) --- .../antlr4/org/apache/doris/nereids/DorisParser.g4 | 171 ++++++++++++++++++--- .../apache/doris/analysis/AlterJobStatusStmt.java | 2 +- .../org/apache/doris/analysis/AnalyzeDBStmt.java | 2 +- .../org/apache/doris/analysis/AnalyzeTblStmt.java | 2 +- .../doris/analysis/CancelAlterSystemStmt.java | 2 +- .../doris/analysis/CancelAlterTableStmt.java | 2 +- .../apache/doris/analysis/CancelBackupStmt.java | 2 +- .../doris/analysis/CancelCloudWarmUpStmt.java | 2 +- .../apache/doris/analysis/CancelExportStmt.java | 2 +- .../apache/doris/analysis/CancelJobTaskStmt.java | 2 +- .../org/apache/doris/analysis/CancelLoadStmt.java | 2 +- .../org/apache/doris/analysis/CleanLabelStmt.java | 2 +- .../apache/doris/analysis/CleanProfileStmt.java | 2 +- .../apache/doris/analysis/CleanQueryStatsStmt.java | 2 +- .../org/apache/doris/analysis/CreateJobStmt.java | 2 +- .../doris/analysis/CreateRoutineLoadStmt.java | 2 +- .../apache/doris/analysis/ImportColumnsStmt.java | 2 +- .../apache/doris/analysis/ImportDeleteOnStmt.java | 2 +- .../apache/doris/analysis/ImportSequenceStmt.java | 2 +- .../org/apache/doris/analysis/ImportWhereStmt.java | 2 +- .../apache/doris/analysis/KillAnalysisJobStmt.java | 2 +- .../java/org/apache/doris/analysis/LoadStmt.java | 2 +- .../doris/analysis/PauseRoutineLoadStmt.java | 2 +- .../apache/doris/analysis/PauseSyncJobStmt.java | 2 +- .../apache/doris/analysis/RefreshCatalogStmt.java | 2 +- .../org/apache/doris/analysis/RefreshDbStmt.java | 2 +- .../org/apache/doris/analysis/RefreshLdapStmt.java | 2 +- .../apache/doris/analysis/RefreshTableStmt.java | 2 +- .../doris/analysis/ResumeRoutineLoadStmt.java | 2 +- .../apache/doris/analysis/ResumeSyncJobStmt.java | 2 +- .../apache/doris/analysis/ShowCreateLoadStmt.java | 2 +- .../doris/analysis/ShowCreateRoutineLoadStmt.java | 2 +- .../apache/doris/analysis/ShowRoutineLoadStmt.java | 2 +- .../doris/analysis/ShowRoutineLoadTaskStmt.java | 2 +- .../apache/doris/analysis/StopRoutineLoadStmt.java | 2 +- .../org/apache/doris/analysis/StopSyncJobStmt.java | 2 +- .../java/org/apache/doris/analysis/SyncStmt.java | 2 +- .../org/apache/doris/analysis/UnifiedLoadStmt.java | 2 +- .../doris/nereids/parser/LogicalPlanBuilder.java | 5 +- .../nereids/trees/plans/commands/LoadCommand.java | 4 +- 40 files changed, 194 insertions(+), 60 deletions(-) diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 index c2feafe97f2..013c508b52b 100644 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 @@ -70,6 +70,11 @@ unsupportedStatement | unsupportedAdminStatement | unsupportedTransactionStatement | unsupportedRecoverStatement + | unsupportedCancelStatement + | unsupportedJobStatement + | unsupportedCleanStatement + | unsupportedRefreshStatement + | unsupportedLoadStatement | unsupportedOtherStatement ; @@ -121,14 +126,11 @@ supportedDmlStatement partitionSpec? tableAlias (USING relations)? whereClause? #delete - | LOAD LABEL lableName=identifier + | LOAD LABEL lableName=multipartIdentifier LEFT_PAREN dataDescs+=dataDesc (COMMA dataDescs+=dataDesc)* RIGHT_PAREN (withRemoteStorageSystem)? - (PROPERTIES LEFT_PAREN properties=propertyItemList RIGHT_PAREN)? + propertyClause? (commentSpec)? #load - | LOAD mysqlDataDesc - (PROPERTIES LEFT_PAREN properties=propertyItemList RIGHT_PAREN)? - (commentSpec)? #mysqlLoad | EXPORT TABLE tableName=multipartIdentifier (PARTITION partition=identifierList)? (whereClause)? @@ -200,6 +202,130 @@ lockTable (READ (LOCAL)? | (LOW_PRIORITY)? WRITE) ; +unsupportedLoadStatement + : LOAD mysqlDataDesc + (PROPERTIES LEFT_PAREN properties=propertyItemList RIGHT_PAREN)? + (commentSpec)? #mysqlLoad + | CREATE SYNC label=multipartIdentifier + LEFT_PAREN channelDescriptions RIGHT_PAREN + FROM BINLOG LEFT_PAREN propertyItemList RIGHT_PAREN + properties=propertyClause? #createDataSyncJob + | STOP SYNC JOB name=multipartIdentifier #stopDataSyncJob + | RESUME SYNC JOB name=multipartIdentifier #resumeDataSyncJob + | PAUSE SYNC JOB name=multipartIdentifier #pauseDataSyncJob + | CREATE ROUTINE LOAD label=multipartIdentifier (ON table=identifier)? + (WITH (APPEND | DELETE | MERGE))? + (loadProperty (COMMA loadProperty)*)? propertyClause? FROM type=identifier + LEFT_PAREN customProperties=propertyItemList RIGHT_PAREN + commentSpec? #createRoutineLoadJob + | PAUSE ROUTINE LOAD FOR label=multipartIdentifier #pauseRoutineLoad + | PAUSE ALL ROUTINE LOAD #pauseAllRoutineLoad + | RESUME ROUTINE LOAD FOR label=multipartIdentifier #resumeRoutineLoad + | RESUME ALL ROUTINE LOAD #resumeAllRoutineLoad + | STOP ROUTINE LOAD FOR label=multipartIdentifier #stopRoutineLoad + | SHOW ALL? ROUTINE LOAD ((FOR label=multipartIdentifier) | wildWhere?) #showRoutineLoad + | SHOW ROUTINE LOAD TASK ((FROM | IN) database=identifier)? wildWhere? #showRoutineLoadTask + | SHOW ALL? CREATE ROUTINE LOAD FOR label=multipartIdentifier #showCreateRoutineLoad + | SHOW CREATE LOAD FOR label=multipartIdentifier #showCreateLoad + | SYNC #sync + | importSequenceStatement #importSequenceStatementAlias + | importPrecedingFilterStatement #importPrecedingFilterStatementAlias + | importWhereStatement #importWhereStatementAlias + | importDeleteOnStatement #importDeleteOnStatementAlias + | importColumnsStatement #importColumnsStatementAlias + ; + +loadProperty + : COLUMNS TERMINATED BY STRING_LITERAL #separator + | importColumnsStatement #importColumns + | importPrecedingFilterStatement #importPrecedingFilter + | importWhereStatement #importWhere + | importDeleteOnStatement #importDeleteOn + | importSequenceStatement #importSequence + | partitionSpec #importPartitions + ; + +importSequenceStatement + : ORDER BY identifier + ; + +importDeleteOnStatement + : DELETE ON booleanExpression + ; + +importWhereStatement + : WHERE booleanExpression + ; + +importPrecedingFilterStatement + : PRECEDING FILTER booleanExpression + ; + +importColumnsStatement + : COLUMNS LEFT_PAREN importColumnDesc (COMMA importColumnDesc)* RIGHT_PAREN + ; + +importColumnDesc + : name=identifier (EQ booleanExpression)? + | LEFT_PAREN name=identifier (EQ booleanExpression)? RIGHT_PAREN + ; + +channelDescriptions + : channelDescription (COMMA channelDescription)* + ; + +channelDescription + : FROM source=multipartIdentifier INTO destination=multipartIdentifier + partitionSpec? columnList=identifierList? + ; + +unsupportedRefreshStatement + : REFRESH TABLE name=multipartIdentifier #refreshTable + | REFRESH DATABASE name=multipartIdentifier propertyClause? #refreshDatabase + | REFRESH CATALOG name=identifier propertyClause? #refreshCatalog + | REFRESH LDAP (ALL | (FOR user=identifierOrText)) #refreshLdap + ; + +unsupportedCleanStatement + : CLEAN LABEL label=identifier? (FROM | IN) database=identifier #cleanLabel + | CLEAN ALL PROFILE #cleanAllProfile + | CLEAN QUERY STATS ((FOR database=identifier) + | ((FROM | IN) table=multipartIdentifier)) #cleanQueryStats + | CLEAN ALL QUERY STATS #cleanAllQueryStats + ; + +unsupportedJobStatement + : CREATE JOB label=multipartIdentifier ON SCHEDULE + ( + (EVERY timeInterval=INTEGER_VALUE timeUnit=identifier + (STARTS (startTime=STRING_LITERAL | CURRENT_TIMESTAMP))? + (ENDS endsTime=STRING_LITERAL)?) + | + (AT (atTime=STRING_LITERAL | CURRENT_TIMESTAMP))) + commentSpec? + DO statement #createJob + | PAUSE JOB wildWhere? #pauseJob + | DROP JOB (IF EXISTS)? wildWhere? #dropJob + | RESUME JOB wildWhere? #resumeJob + | CANCEL TASK wildWhere? #cancelJobTask + ; + +unsupportedCancelStatement + : CANCEL LOAD ((FROM | IN) database=identifier)? wildWhere? #cancelLoad + | CANCEL EXPORT ((FROM | IN) database=identifier)? wildWhere? #cancelExport + | CANCEL ALTER TABLE (ROLLUP | (MATERIALIZED VIEW) | COLUMN) + FROM tableName=multipartIdentifier (LEFT_PAREN jobIds+=INTEGER_VALUE + (COMMA jobIds+=INTEGER_VALUE)* RIGHT_PAREN)? #cancelAlterTable + | CANCEL BUILD INDEX ON tableName=multipartIdentifier + (LEFT_PAREN jobIds+=INTEGER_VALUE + (COMMA jobIds+=INTEGER_VALUE)* RIGHT_PAREN)? #cancelBuildIndex + | CANCEL DECOMMISSION BACKEND hostPorts+=STRING_LITERAL + (COMMA hostPorts+=STRING_LITERAL)* #cancelDecommisionBackend + | CANCEL BACKUP ((FROM | IN) database=identifier)? #cancelBackup + | CANCEL RESTORE ((FROM | IN) database=identifier)? #cancelRestore + | CANCEL WARM UP JOB wildWhere? #cancelWarmUp + ; + unsupportedRecoverStatement : RECOVER DATABASE name=identifier id=INTEGER_VALUE? (AS alias=identifier)? #recoverDatabase | RECOVER TABLE name=multipartIdentifier @@ -421,7 +547,11 @@ unsupportedDropStatement ; unsupportedStatsStatement - : ALTER TABLE name=multipartIdentifier SET STATS + : ANALYZE TABLE name=multipartIdentifier partitionSpec? + columns=identifierList? (WITH analyzeProperties)* propertyClause? #analyzeTable + | ANALYZE DATABASE name=multipartIdentifier + (WITH analyzeProperties)* propertyClause? #analyzeDatabase + | ALTER TABLE name=multipartIdentifier SET STATS LEFT_PAREN propertyItemList RIGHT_PAREN partitionSpec? #alterTableStats | ALTER TABLE name=multipartIdentifier (INDEX indexName=identifier)? MODIFY COLUMN columnName=identifier @@ -431,6 +561,19 @@ unsupportedStatsStatement | DROP CACHED STATS tableName=multipartIdentifier #dropCachedStats | DROP EXPIRED STATS #dropExpiredStats | DROP ANALYZE JOB INTEGER_VALUE #dropAanalyzeJob + | KILL ANALYZE jobId=INTEGER_VALUE #killAnalyzeJob + ; + +analyzeProperties + : SYNC + | INCREMENTAL + | FULL + | SQL + | HISTOGRAM + | (SAMPLE ((ROWS rows=INTEGER_VALUE) | (PERCENT percent=INTEGER_VALUE)) ) + | (BUCKETS bucket=INTEGER_VALUE) + | (PERIOD periodInSecond=INTEGER_VALUE) + | (CRON crontabExpr=STRING_LITERAL) ; unsupportedCreateStatement @@ -470,10 +613,6 @@ unsupportedCreateStatement (ACTIONS LEFT_PAREN workloadPolicyActions RIGHT_PAREN)? properties=propertyClause? #createWorkloadPolicy | CREATE ENCRYPTKEY (IF NOT EXISTS)? multipartIdentifier AS STRING_LITERAL #createEncryptkey - | CREATE SYNC dbName=identifier DOT jobName=identifierOrText - LEFT_PAREN channelDescriptions RIGHT_PAREN - FROM BINLOG LEFT_PAREN propertyItemList RIGHT_PAREN - properties=propertyClause? #createDataSyncJob | CREATE SQL_BLOCK_RULE (IF NOT EXISTS)? name=identifier properties=propertyClause? #createSqlBlockRule | CREATE STORAGE POLICY (IF NOT EXISTS)? @@ -483,15 +622,6 @@ unsupportedCreateStatement | CREATE STAGE (IF NOT EXISTS)? name=identifier properties=propertyClause? #createStage ; -channelDescriptions - : channelDescription (COMMA channelDescription)* - ; - -channelDescription - : FROM source=multipartIdentifier INTO destination=multipartIdentifier - partitionSpec? columnList=identifierList? - ; - workloadPolicyActions : workloadPolicyAction (COMMA workloadPolicyAction)* ; @@ -646,6 +776,7 @@ dataDesc (COLUMNS TERMINATED BY comma=STRING_LITERAL)? (LINES TERMINATED BY separator=STRING_LITERAL)? (FORMAT AS format=identifierOrText)? + (COMPRESS_TYPE AS compressType=identifierOrText)? (columns=identifierList)? (columnsFromPath=colFromPath)? (columnMapping=colMappingList)? @@ -791,7 +922,7 @@ resourceDesc ; mysqlDataDesc - : DATA (LOCAL booleanValue)? + : DATA LOCAL? INFILE filePath=STRING_LITERAL INTO TABLE tableName=multipartIdentifier (PARTITION partition=identifierList)? diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterJobStatusStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterJobStatusStmt.java index 3dd2a9f27fa..a73d19b9ceb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterJobStatusStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterJobStatusStmt.java @@ -24,7 +24,7 @@ import org.apache.doris.job.common.JobStatus; import com.google.common.base.Strings; import lombok.Getter; -public class AlterJobStatusStmt extends DdlStmt { +public class AlterJobStatusStmt extends DdlStmt implements NotFallbackInParser { private Expr expr; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeDBStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeDBStmt.java index ac880a39d02..17c65ea57ef 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeDBStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeDBStmt.java @@ -24,7 +24,7 @@ import org.apache.doris.common.AnalysisException; import org.apache.doris.common.UserException; import org.apache.doris.datasource.CatalogIf; -public class AnalyzeDBStmt extends AnalyzeStmt { +public class AnalyzeDBStmt extends AnalyzeStmt implements NotFallbackInParser { private final String ctlName; private final String dbName; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeTblStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeTblStmt.java index 270c41d71bf..db98f6af706 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeTblStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeTblStmt.java @@ -78,7 +78,7 @@ import java.util.stream.Collectors; * - 'sample.rows' = '1000' * - 'num.buckets' = 10 */ -public class AnalyzeTblStmt extends AnalyzeStmt { +public class AnalyzeTblStmt extends AnalyzeStmt implements NotFallbackInParser { // The properties passed in by the user through "with" or "properties('K', 'V')" private final TableName tableName; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterSystemStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterSystemStmt.java index 9cfde8da4b3..1895549140c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterSystemStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterSystemStmt.java @@ -32,7 +32,7 @@ import lombok.Getter; import java.util.List; -public class CancelAlterSystemStmt extends CancelStmt { +public class CancelAlterSystemStmt extends CancelStmt implements NotFallbackInParser { protected List<String> params; @Getter diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterTableStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterTableStmt.java index 7dac7c28ff1..10f1d121d79 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterTableStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterTableStmt.java @@ -34,7 +34,7 @@ import java.util.stream.Collectors; /* * CANCEL ALTER COLUMN|ROLLUP FROM db_name.table_name */ -public class CancelAlterTableStmt extends CancelStmt { +public class CancelAlterTableStmt extends CancelStmt implements NotFallbackInParser { private AlterType alterType; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelBackupStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelBackupStmt.java index 54e9ba8b8ce..06c1d09972c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelBackupStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelBackupStmt.java @@ -28,7 +28,7 @@ import org.apache.doris.qe.ConnectContext; import com.google.common.base.Strings; -public class CancelBackupStmt extends CancelStmt { +public class CancelBackupStmt extends CancelStmt implements NotFallbackInParser { private String dbName; private boolean isRestore; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelCloudWarmUpStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelCloudWarmUpStmt.java index c46a1c18e78..51a2b729be0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelCloudWarmUpStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelCloudWarmUpStmt.java @@ -21,7 +21,7 @@ import org.apache.doris.analysis.BinaryPredicate.Operator; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.Config; -public class CancelCloudWarmUpStmt extends CancelStmt { +public class CancelCloudWarmUpStmt extends CancelStmt implements NotFallbackInParser { private Expr whereClause; private long jobId; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelExportStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelExportStmt.java index 039443becd6..63448cf35a0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelExportStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelExportStmt.java @@ -33,7 +33,7 @@ import lombok.Getter; * CANCEL EXPORT [FROM db] * WHERE [LABEL = "export_label" | LABEL like "label_pattern" | STATE = "PENDING/IN_QUEUE/EXPORTING"] **/ -public class CancelExportStmt extends DdlStmt { +public class CancelExportStmt extends DdlStmt implements NotFallbackInParser { private static final ImmutableSet<String> SUPPORT_COLUMNS = new ImmutableSet.Builder<String>() .add("label") diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelJobTaskStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelJobTaskStmt.java index 841e43a8257..80bcc9a3fe4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelJobTaskStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelJobTaskStmt.java @@ -25,7 +25,7 @@ import org.apache.doris.common.UserException; import lombok.Getter; -public class CancelJobTaskStmt extends DdlStmt { +public class CancelJobTaskStmt extends DdlStmt implements NotFallbackInParser { @Getter private String jobName; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelLoadStmt.java index dad9a0ccd2d..1371e308675 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelLoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelLoadStmt.java @@ -34,7 +34,7 @@ import java.util.Set; * syntax: * CANCEL LOAD [FROM db] WHERE load_label (= "xxx" | LIKE "xxx") **/ -public class CancelLoadStmt extends DdlStmt { +public class CancelLoadStmt extends DdlStmt implements NotFallbackInParser { private static final Set<String> SUPPORT_COLUMNS = Sets.newTreeSet(String.CASE_INSENSITIVE_ORDER); diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanLabelStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanLabelStmt.java index 84de16c4e6a..8864a760914 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanLabelStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanLabelStmt.java @@ -31,7 +31,7 @@ import com.google.common.base.Strings; * CLEAN LABEL FROM db; * CLEAN LABEL my_label FROM db; */ -public class CleanLabelStmt extends DdlStmt { +public class CleanLabelStmt extends DdlStmt implements NotFallbackInParser { private String db; private String label; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanProfileStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanProfileStmt.java index 02a562a328b..e365b459aff 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanProfileStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanProfileStmt.java @@ -27,7 +27,7 @@ import org.apache.doris.qe.ConnectContext; /** * CLEAN ALL PROFILE; */ -public class CleanProfileStmt extends DdlStmt { +public class CleanProfileStmt extends DdlStmt implements NotFallbackInParser { public CleanProfileStmt() { } diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanQueryStatsStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanQueryStatsStmt.java index c0964f796e3..6bf384b7c73 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanQueryStatsStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanQueryStatsStmt.java @@ -33,7 +33,7 @@ import org.apache.commons.lang3.StringUtils; * CLEAN DATABASE QUERY STATS FROM db; * CLEAN TABLE QUERY STATS FROM db.table; */ -public class CleanQueryStatsStmt extends DdlStmt { +public class CleanQueryStatsStmt extends DdlStmt implements NotFallbackInParser { private String dbName; private TableName tableName; private Scope scope; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateJobStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateJobStmt.java index 8a8db0a3d1e..b9d42b249b2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateJobStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateJobStmt.java @@ -61,7 +61,7 @@ import java.util.HashSet; * WEEK | SECOND } */ @Slf4j -public class CreateJobStmt extends DdlStmt { +public class CreateJobStmt extends DdlStmt implements NotFallbackInParser { @Getter private StatementBase doStmt; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRoutineLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRoutineLoadStmt.java index 1648d943ae4..a16259dcdb9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRoutineLoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRoutineLoadStmt.java @@ -87,7 +87,7 @@ import java.util.function.Predicate; type of routine load: KAFKA */ -public class CreateRoutineLoadStmt extends DdlStmt { +public class CreateRoutineLoadStmt extends DdlStmt implements NotFallbackInParser { private static final Logger LOG = LogManager.getLogger(CreateRoutineLoadStmt.class); // routine load properties diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportColumnsStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportColumnsStmt.java index c8f6d6eef73..a67931e9491 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportColumnsStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportColumnsStmt.java @@ -19,7 +19,7 @@ package org.apache.doris.analysis; import java.util.List; -public class ImportColumnsStmt extends StatementBase { +public class ImportColumnsStmt extends StatementBase implements NotFallbackInParser { private List<ImportColumnDesc> columns; public ImportColumnsStmt(List<ImportColumnDesc> columns) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportDeleteOnStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportDeleteOnStmt.java index 22db97455ab..a1424056375 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportDeleteOnStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportDeleteOnStmt.java @@ -17,7 +17,7 @@ package org.apache.doris.analysis; -public class ImportDeleteOnStmt extends StatementBase { +public class ImportDeleteOnStmt extends StatementBase implements NotFallbackInParser { private Expr expr; public ImportDeleteOnStmt(Expr expr) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportSequenceStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportSequenceStmt.java index 01addb9af57..52063c5a1fd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportSequenceStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportSequenceStmt.java @@ -17,7 +17,7 @@ package org.apache.doris.analysis; -public class ImportSequenceStmt extends StatementBase { +public class ImportSequenceStmt extends StatementBase implements NotFallbackInParser { private String sequenceColName; public ImportSequenceStmt(String sequenceColName) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportWhereStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportWhereStmt.java index c4cfaa38e30..1e5e1da1f8c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportWhereStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ImportWhereStmt.java @@ -17,7 +17,7 @@ package org.apache.doris.analysis; -public class ImportWhereStmt extends StatementBase { +public class ImportWhereStmt extends StatementBase implements NotFallbackInParser { private Expr expr; // Only used in load processs to define a "preceding filter" expr private boolean isPreceding; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/KillAnalysisJobStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/KillAnalysisJobStmt.java index 996afb8c8a6..218b77c4fdd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/KillAnalysisJobStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/KillAnalysisJobStmt.java @@ -17,7 +17,7 @@ package org.apache.doris.analysis; -public class KillAnalysisJobStmt extends DdlStmt { +public class KillAnalysisJobStmt extends DdlStmt implements NotFallbackInParser { public final long jobId; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/LoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/LoadStmt.java index 373b320afa1..d2616438d01 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/LoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/LoadStmt.java @@ -85,7 +85,7 @@ import java.util.Map.Entry; // resource_desc: // WITH RESOURCE name // (key3=value3, ...) -public class LoadStmt extends DdlStmt { +public class LoadStmt extends DdlStmt implements NotFallbackInParser { private static final Logger LOG = LogManager.getLogger(LoadStmt.class); public static final String TIMEOUT_PROPERTY = "timeout"; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java index 745b6ecf385..cda61b903e8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java @@ -29,7 +29,7 @@ import com.google.common.base.Strings; syntax: PAUSE ROUTINE LOAD [database.]name */ -public class PauseRoutineLoadStmt extends DdlStmt { +public class PauseRoutineLoadStmt extends DdlStmt implements NotFallbackInParser { private final LabelName labelName; private String db; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseSyncJobStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseSyncJobStmt.java index 14d38a882c3..c66b31be762 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseSyncJobStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseSyncJobStmt.java @@ -24,7 +24,7 @@ import org.apache.doris.common.UserException; // // syntax: // PAUSE SYNC JOB [db.]jobName -public class PauseSyncJobStmt extends DdlStmt { +public class PauseSyncJobStmt extends DdlStmt implements NotFallbackInParser { private JobName jobName; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshCatalogStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshCatalogStmt.java index 7f72a25b7b7..3cada53b4cf 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshCatalogStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshCatalogStmt.java @@ -33,7 +33,7 @@ import java.util.Map; * RefreshCatalogStmt * Manually refresh the catalog metadata. */ -public class RefreshCatalogStmt extends DdlStmt { +public class RefreshCatalogStmt extends DdlStmt implements NotFallbackInParser { private static final String INVALID_CACHE = "invalid_cache"; private final String catalogName; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshDbStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshDbStmt.java index 69b312455a0..19f9d339cfb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshDbStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshDbStmt.java @@ -33,7 +33,7 @@ import org.apache.logging.log4j.Logger; import java.util.Map; -public class RefreshDbStmt extends DdlStmt { +public class RefreshDbStmt extends DdlStmt implements NotFallbackInParser { private static final Logger LOG = LogManager.getLogger(RefreshDbStmt.class); private static final String INVALID_CACHE = "invalid_cache"; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshLdapStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshLdapStmt.java index 81296a4961c..b325d8ae93b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshLdapStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshLdapStmt.java @@ -26,7 +26,7 @@ import org.apache.doris.qe.ConnectContext; import com.google.common.base.Strings; -public class RefreshLdapStmt extends DdlStmt { +public class RefreshLdapStmt extends DdlStmt implements NotFallbackInParser { private boolean isAll; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshTableStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshTableStmt.java index 7d872f70a94..f6ff53a4d12 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshTableStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshTableStmt.java @@ -27,7 +27,7 @@ import org.apache.doris.qe.ConnectContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class RefreshTableStmt extends DdlStmt { +public class RefreshTableStmt extends DdlStmt implements NotFallbackInParser { private static final Logger LOG = LogManager.getLogger(RefreshTableStmt.class); private TableName tableName; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java index e21a6ca53c5..176c3345c9f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java @@ -29,7 +29,7 @@ import com.google.common.base.Strings; syntax: RESUME ROUTINE LOAD [database.]name */ -public class ResumeRoutineLoadStmt extends DdlStmt { +public class ResumeRoutineLoadStmt extends DdlStmt implements NotFallbackInParser { private final LabelName labelName; private String db; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeSyncJobStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeSyncJobStmt.java index 2f401a09112..79aff303f67 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeSyncJobStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeSyncJobStmt.java @@ -24,7 +24,7 @@ import org.apache.doris.common.UserException; // // syntax: // RESUME SYNC JOB [db.]jobName -public class ResumeSyncJobStmt extends DdlStmt { +public class ResumeSyncJobStmt extends DdlStmt implements NotFallbackInParser { private JobName jobName; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowCreateLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowCreateLoadStmt.java index 346fb107c91..fabae023652 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowCreateLoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowCreateLoadStmt.java @@ -28,7 +28,7 @@ import org.apache.doris.qe.ConnectContext; import org.apache.doris.qe.ShowResultSetMetaData; // SHOW CREATE LOAD statement. -public class ShowCreateLoadStmt extends ShowStmt { +public class ShowCreateLoadStmt extends ShowStmt implements NotFallbackInParser { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowCreateRoutineLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowCreateRoutineLoadStmt.java index 7450c08d161..6b93920ae7b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowCreateRoutineLoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowCreateRoutineLoadStmt.java @@ -23,7 +23,7 @@ import org.apache.doris.common.AnalysisException; import org.apache.doris.qe.ShowResultSetMetaData; // SHOW CREATE ROUTINE LOAD statement. -public class ShowCreateRoutineLoadStmt extends ShowStmt { +public class ShowCreateRoutineLoadStmt extends ShowStmt implements NotFallbackInParser { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRoutineLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRoutineLoadStmt.java index 05ce8be6ade..8220eab9458 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRoutineLoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRoutineLoadStmt.java @@ -62,7 +62,7 @@ import java.util.List; show routine load in all of database please use show proc */ -public class ShowRoutineLoadStmt extends ShowStmt { +public class ShowRoutineLoadStmt extends ShowStmt implements NotFallbackInParser { private static final ImmutableList<String> TITLE_NAMES = new ImmutableList.Builder<String>() diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRoutineLoadTaskStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRoutineLoadTaskStmt.java index 570b82d3667..248c0c7a6cf 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRoutineLoadTaskStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRoutineLoadTaskStmt.java @@ -35,7 +35,7 @@ import java.util.List; where expr: JobName=xxx */ -public class ShowRoutineLoadTaskStmt extends ShowStmt { +public class ShowRoutineLoadTaskStmt extends ShowStmt implements NotFallbackInParser { private static final List<String> supportColumn = Arrays.asList("jobname"); private static final ImmutableList<String> TITLE_NAMES = new ImmutableList.Builder<String>() diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/StopRoutineLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/StopRoutineLoadStmt.java index df18979cc7e..b0a340c625c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/StopRoutineLoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/StopRoutineLoadStmt.java @@ -26,7 +26,7 @@ import org.apache.doris.common.UserException; syntax: STOP ROUTINE LOAD [database.]name */ -public class StopRoutineLoadStmt extends DdlStmt { +public class StopRoutineLoadStmt extends DdlStmt implements NotFallbackInParser { private final LabelName labelName; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/StopSyncJobStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/StopSyncJobStmt.java index e58835a26a9..e83b1825852 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/StopSyncJobStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/StopSyncJobStmt.java @@ -24,7 +24,7 @@ import org.apache.doris.common.UserException; // // syntax: // STOP SYNC JOB [db.]jobName -public class StopSyncJobStmt extends DdlStmt { +public class StopSyncJobStmt extends DdlStmt implements NotFallbackInParser { private JobName jobName; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SyncStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/SyncStmt.java index e559b30f420..536d5e6ae66 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SyncStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SyncStmt.java @@ -19,7 +19,7 @@ package org.apache.doris.analysis; import org.apache.doris.common.UserException; -public class SyncStmt extends DdlStmt { +public class SyncStmt extends DdlStmt implements NotFallbackInParser { @Override public void analyze(Analyzer analyzer) throws UserException { diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/UnifiedLoadStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/UnifiedLoadStmt.java index e8d4e513223..996a3334b4d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/UnifiedLoadStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/UnifiedLoadStmt.java @@ -28,7 +28,7 @@ import java.util.Map; * Used for load refactor, as an adapter for original load stmt, will proxy to insert stmt or original load stmt, chosen * by configuration */ -public class UnifiedLoadStmt extends DdlStmt { +public class UnifiedLoadStmt extends DdlStmt implements NotFallbackInParser { private final StatementBase proxyStmt; diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java index cac51c9bb65..061a58a634d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java @@ -1150,7 +1150,10 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> { : Optional.of(ddc.sequenceColumn.identifier().getText()), dataProperties)); } String labelName = ctx.lableName.getText(); - Map<String, String> properties = visitPropertyItemList(ctx.properties); + Map<String, String> properties = Collections.emptyMap(); + if (ctx.propertyClause() != null) { + properties = visitPropertyItemList(ctx.propertyClause().propertyItemList()); + } String commentSpec = ctx.commentSpec() == null ? "''" : ctx.commentSpec().STRING_LITERAL().getText(); String comment = LogicalPlanBuilderAssistant.escapeBackSlash(commentSpec.substring(1, commentSpec.length() - 1)); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/LoadCommand.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/LoadCommand.java index b439c977c94..aed3cb4c1f2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/LoadCommand.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/LoadCommand.java @@ -39,6 +39,7 @@ import org.apache.doris.nereids.analyzer.UnboundSlot; import org.apache.doris.nereids.analyzer.UnboundStar; import org.apache.doris.nereids.analyzer.UnboundTVFRelation; import org.apache.doris.nereids.analyzer.UnboundTableSinkCreator; +import org.apache.doris.nereids.exceptions.MustFallbackException; import org.apache.doris.nereids.trees.expressions.ComparisonPredicate; import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.nereids.trees.expressions.NamedExpression; @@ -126,8 +127,7 @@ public class LoadCommand extends Command implements ForwardWithSync { @Override public void run(ConnectContext ctx, StmtExecutor executor) throws Exception { if (!Config.enable_nereids_load) { - ctx.getSessionVariable().enableFallbackToOriginalPlannerOnce(); - throw new AnalysisException("Fallback to legacy planner temporary."); + throw new MustFallbackException("Fallback to legacy planner temporary."); } this.profile = new Profile( ctx.getSessionVariable().enableProfile, --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org