morrySnow commented on code in PR #23635:
URL: https://github.com/apache/doris/pull/23635#discussion_r1312477413


##########
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java:
##########
@@ -17,67 +17,337 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
-import org.apache.doris.analysis.Analyzer;
 import org.apache.doris.analysis.BrokerDesc;
-import org.apache.doris.analysis.ExportStmt;
-import org.apache.doris.analysis.PartitionNames;
+import org.apache.doris.analysis.LoadStmt;
+import org.apache.doris.analysis.OutFileClause;
+import org.apache.doris.analysis.Separator;
+import org.apache.doris.analysis.StorageBackend;
 import org.apache.doris.analysis.TableName;
-import org.apache.doris.analysis.TableRef;
+import org.apache.doris.analysis.UserIdentity;
+import org.apache.doris.catalog.BrokerMgr;
+import org.apache.doris.catalog.Database;
+import org.apache.doris.catalog.Env;
+import org.apache.doris.catalog.Partition;
+import org.apache.doris.catalog.Table;
+import org.apache.doris.common.AnalysisException;
+import org.apache.doris.common.Config;
+import org.apache.doris.common.DdlException;
+import org.apache.doris.common.ErrorCode;
+import org.apache.doris.common.ErrorReport;
+import org.apache.doris.common.FeNameFormat;
+import org.apache.doris.common.UserException;
+import org.apache.doris.common.util.PropertyAnalyzer;
+import org.apache.doris.common.util.Util;
+import org.apache.doris.load.ExportJob;
+import org.apache.doris.mysql.privilege.PrivPredicate;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
-import org.apache.doris.nereids.util.Utils;
+import org.apache.doris.nereids.util.RelationUtil;
 import org.apache.doris.qe.ConnectContext;
+import org.apache.doris.qe.SessionVariable;
 import org.apache.doris.qe.StmtExecutor;
+import org.apache.doris.qe.VariableMgr;
+
+import com.google.common.base.Splitter;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
+import lombok.Getter;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.UUID;
+import java.util.stream.Collectors;
 
 /**
- * export table
+ * EXPORT statement, export data to dirs by broker.
+ *
+ * syntax:
+ *      EXPORT TABLE table_name [PARTITION (name1[, ...])]
+ *          TO 'export_target_path'
+ *          [PROPERTIES("key"="value")]
+ *          BY BROKER 'broker_name' [( $broker_attrs)]
  */
 public class ExportCommand extends Command implements ForwardWithSync {
+    public static final String PARALLELISM = "parallelism";
+    public static final String LABEL = "label";
+    private static final String DEFAULT_COLUMN_SEPARATOR = "\t";
+    private static final String DEFAULT_LINE_DELIMITER = "\n";
+    private static final String DEFAULT_PARALLELISM = "1";
+    private static final ImmutableSet<String> PROPERTIES_SET = new 
ImmutableSet.Builder<String>()
+            .add(LABEL)
+            .add(PARALLELISM)
+            .add(LoadStmt.EXEC_MEM_LIMIT)
+            .add(LoadStmt.TIMEOUT_PROPERTY)
+            .add(LoadStmt.KEY_IN_PARAM_COLUMNS)
+            .add(LoadStmt.TIMEOUT_PROPERTY)
+            .add(OutFileClause.PROP_MAX_FILE_SIZE)
+            .add(OutFileClause.PROP_DELETE_EXISTING_FILES)
+            .add(PropertyAnalyzer.PROPERTIES_COLUMN_SEPARATOR)
+            .add(PropertyAnalyzer.PROPERTIES_LINE_DELIMITER)
+            .add("format")
+            .build();
+
     private List<String> nameParts;
     private String whereSql;
     private String path;
     private List<String> partitionsNameList;
     private Map<String, String> fileProperties;
     private BrokerDesc brokerDesc;
 
+    // properties
+    private TableName tblName;
+    private String columnSeparator;
+    private String lineDelimiter;
+    private String columns;
+    private String format;
+    private String label;
+    private Integer parallelism;

Review Comment:
   why use `Integer` rather than `int`?



##########
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java:
##########
@@ -17,67 +17,337 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
-import org.apache.doris.analysis.Analyzer;
 import org.apache.doris.analysis.BrokerDesc;
-import org.apache.doris.analysis.ExportStmt;
-import org.apache.doris.analysis.PartitionNames;
+import org.apache.doris.analysis.LoadStmt;
+import org.apache.doris.analysis.OutFileClause;
+import org.apache.doris.analysis.Separator;
+import org.apache.doris.analysis.StorageBackend;
 import org.apache.doris.analysis.TableName;
-import org.apache.doris.analysis.TableRef;
+import org.apache.doris.analysis.UserIdentity;
+import org.apache.doris.catalog.BrokerMgr;
+import org.apache.doris.catalog.Database;
+import org.apache.doris.catalog.Env;
+import org.apache.doris.catalog.Partition;
+import org.apache.doris.catalog.Table;
+import org.apache.doris.common.AnalysisException;
+import org.apache.doris.common.Config;
+import org.apache.doris.common.DdlException;
+import org.apache.doris.common.ErrorCode;
+import org.apache.doris.common.ErrorReport;
+import org.apache.doris.common.FeNameFormat;
+import org.apache.doris.common.UserException;
+import org.apache.doris.common.util.PropertyAnalyzer;
+import org.apache.doris.common.util.Util;
+import org.apache.doris.load.ExportJob;
+import org.apache.doris.mysql.privilege.PrivPredicate;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
-import org.apache.doris.nereids.util.Utils;
+import org.apache.doris.nereids.util.RelationUtil;
 import org.apache.doris.qe.ConnectContext;
+import org.apache.doris.qe.SessionVariable;
 import org.apache.doris.qe.StmtExecutor;
+import org.apache.doris.qe.VariableMgr;
+
+import com.google.common.base.Splitter;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
+import lombok.Getter;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.UUID;
+import java.util.stream.Collectors;
 
 /**
- * export table
+ * EXPORT statement, export data to dirs by broker.
+ *
+ * syntax:
+ *      EXPORT TABLE table_name [PARTITION (name1[, ...])]
+ *          TO 'export_target_path'
+ *          [PROPERTIES("key"="value")]
+ *          BY BROKER 'broker_name' [( $broker_attrs)]
  */
 public class ExportCommand extends Command implements ForwardWithSync {
+    public static final String PARALLELISM = "parallelism";
+    public static final String LABEL = "label";
+    private static final String DEFAULT_COLUMN_SEPARATOR = "\t";
+    private static final String DEFAULT_LINE_DELIMITER = "\n";
+    private static final String DEFAULT_PARALLELISM = "1";
+    private static final ImmutableSet<String> PROPERTIES_SET = new 
ImmutableSet.Builder<String>()
+            .add(LABEL)
+            .add(PARALLELISM)
+            .add(LoadStmt.EXEC_MEM_LIMIT)
+            .add(LoadStmt.TIMEOUT_PROPERTY)
+            .add(LoadStmt.KEY_IN_PARAM_COLUMNS)
+            .add(LoadStmt.TIMEOUT_PROPERTY)
+            .add(OutFileClause.PROP_MAX_FILE_SIZE)
+            .add(OutFileClause.PROP_DELETE_EXISTING_FILES)
+            .add(PropertyAnalyzer.PROPERTIES_COLUMN_SEPARATOR)
+            .add(PropertyAnalyzer.PROPERTIES_LINE_DELIMITER)
+            .add("format")
+            .build();
+
     private List<String> nameParts;
     private String whereSql;
     private String path;
     private List<String> partitionsNameList;
     private Map<String, String> fileProperties;
     private BrokerDesc brokerDesc;
 
+    // properties
+    private TableName tblName;
+    private String columnSeparator;
+    private String lineDelimiter;
+    private String columns;
+    private String format;
+    private String label;
+    private Integer parallelism;
+    private String maxFileSize;
+    private String deleteExistingFiles;
+
+    // session and user identity
+    private SessionVariable sessionVariables;
+    private String qualifiedUser;
+    private UserIdentity userIdentity;
+
+    // Export Job
+    @Getter

Review Comment:
   lombok is forbidden in Nereids



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to