This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git

commit b882704eaf42c4ffb669532d511e3e0c3c79be1c
Author: Tiewei Fang <43782773+bepppo...@users.noreply.github.com>
AuthorDate: Wed Apr 3 17:12:40 2024 +0800

    [fix](Export) Set the default value of the `data_consistence` property of 
export to `partition` (#32830)
---
 .../java/org/apache/doris/analysis/ExportStmt.java | 18 ++++++------
 .../main/java/org/apache/doris/load/ExportJob.java |  2 +-
 .../trees/plans/commands/ExportCommand.java        | 16 ++++++-----
 .../analysis/ExportToOutfileLogicalPlanTest.java   | 20 +++++++++----
 .../suites/export_p0/test_export_basic.groovy      | 33 ++++++++++++++--------
 .../export_p0/test_export_data_consistency.groovy  |  3 +-
 6 files changed, 57 insertions(+), 35 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ExportStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ExportStmt.java
index b7a3a84a826..681f6345486 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ExportStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ExportStmt.java
@@ -106,7 +106,7 @@ public class ExportStmt extends StatementBase {
     private String maxFileSize;
     private String deleteExistingFiles;
     private String withBom;
-    private String dataConsistency;
+    private String dataConsistency = ExportJob.CONSISTENT_PARTITION;
     private SessionVariable sessionVariables;
 
     private String qualifiedUser;
@@ -365,14 +365,16 @@ public class ExportStmt extends StatementBase {
         this.withBom = properties.getOrDefault(OutFileClause.PROP_WITH_BOM, 
"false");
 
         // data consistency
-        String dataConsistencyStr = properties.get(DATA_CONSISTENCY);
-        if (dataConsistencyStr != null) {
-            if 
(!dataConsistencyStr.equalsIgnoreCase(ExportJob.CONSISTENT_PARTITION)) {
-                throw new UserException("The value of data_consistency is 
invalid, only `partition` is allowed");
+        if (properties.containsKey(DATA_CONSISTENCY)) {
+            String dataConsistencyStr = properties.get(DATA_CONSISTENCY);
+            if 
(ExportJob.CONSISTENT_NONE.equalsIgnoreCase(dataConsistencyStr)) {
+                this.dataConsistency = ExportJob.CONSISTENT_NONE;
+            } else if 
(ExportJob.CONSISTENT_PARTITION.equalsIgnoreCase(dataConsistencyStr)) {
+                this.dataConsistency = ExportJob.CONSISTENT_PARTITION;
+            } else {
+                throw new AnalysisException("The value of data_consistency is 
invalid, please use `"
+                        + ExportJob.CONSISTENT_PARTITION + "`/`" + 
ExportJob.CONSISTENT_NONE + "`");
             }
-            this.dataConsistency = ExportJob.CONSISTENT_PARTITION;
-        } else {
-            this.dataConsistency = ExportJob.CONSISTENT_NONE;
         }
     }
 
diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/ExportJob.java 
b/fe/fe-core/src/main/java/org/apache/doris/load/ExportJob.java
index cc47c641b0c..d0ccf23ae0a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/load/ExportJob.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/load/ExportJob.java
@@ -228,7 +228,7 @@ public class ExportJob implements Writable {
         this.lineDelimiter = "\n";
         this.columns = "";
         this.withBom = "false";
-        this.dataConsistency = "all";
+        this.dataConsistency = CONSISTENT_PARTITION;
     }
 
     public ExportJob(long jobId) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java
index b872f399fad..aed2b3e24db 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java
@@ -313,14 +313,16 @@ public class ExportCommand extends Command implements 
ForwardWithSync {
         exportJob.setUserIdentity(ctx.getCurrentUserIdentity());
 
         // set data consistency
-        String dataConsistencyStr = fileProperties.get(DATA_CONSISTENCY);
-        if (dataConsistencyStr != null) {
-            if 
(!dataConsistencyStr.equalsIgnoreCase(ExportJob.CONSISTENT_PARTITION)) {
-                throw new AnalysisException("The value of data_consistency is 
invalid, only partition is allowed!");
+        if (fileProperties.containsKey(DATA_CONSISTENCY)) {
+            String dataConsistencyStr = fileProperties.get(DATA_CONSISTENCY);
+            if 
(ExportJob.CONSISTENT_NONE.equalsIgnoreCase(dataConsistencyStr)) {
+                exportJob.setDataConsistency(ExportJob.CONSISTENT_NONE);
+            } else if 
(ExportJob.CONSISTENT_PARTITION.equalsIgnoreCase(dataConsistencyStr)) {
+                exportJob.setDataConsistency(ExportJob.CONSISTENT_PARTITION);
+            } else {
+                throw new AnalysisException("The value of data_consistency is 
invalid, please use `"
+                        + ExportJob.CONSISTENT_PARTITION + "`/`" + 
ExportJob.CONSISTENT_NONE + "`");
             }
-            exportJob.setDataConsistency(ExportJob.CONSISTENT_PARTITION);
-        } else {
-            exportJob.setDataConsistency(ExportJob.CONSISTENT_NONE);
         }
 
         // Must copy session variable, because session variable may be changed 
during export job running.
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/analysis/ExportToOutfileLogicalPlanTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/analysis/ExportToOutfileLogicalPlanTest.java
index 633ab0cdd47..43256a14a13 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/analysis/ExportToOutfileLogicalPlanTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/analysis/ExportToOutfileLogicalPlanTest.java
@@ -79,7 +79,10 @@ public class ExportToOutfileLogicalPlanTest extends 
TestWithFeService {
     public void testNormal() throws UserException {
         // The origin export sql
         String exportSql = "EXPORT TABLE testDb.table1\n"
-                + "TO \"file:///tmp/exp_\";";
+                + "TO \"file:///tmp/exp_\" "
+                + "PROPERTIES(\n"
+                + "\"data_consistency\" = \"none\"\n"
+                + ");";
 
         List<Long> currentTablets1 = Arrays.asList(10010L, 10012L, 10014L, 
10016L, 10018L, 10020L, 10022L, 10024L,
                 10026L, 10028L);
@@ -126,7 +129,8 @@ public class ExportToOutfileLogicalPlanTest extends 
TestWithFeService {
         String exportSql = "EXPORT TABLE testDb.table1\n"
                 + "TO \"file:///tmp/exp_\" "
                 + "PROPERTIES(\n"
-                + "\"parallelism\" = \"4\"\n"
+                + "\"parallelism\" = \"4\",\n"
+                + "\"data_consistency\" = \"none\"\n"
                 + ");";
 
         // This export sql should generate 4 array, and there should be 1 
outfile sql in per array.
@@ -180,7 +184,8 @@ public class ExportToOutfileLogicalPlanTest extends 
TestWithFeService {
         String exportSql = "EXPORT TABLE testDb.table1\n"
                 + "TO \"file:///tmp/exp_\" "
                 + "PROPERTIES(\n"
-                + "\"parallelism\" = \"3\"\n"
+                + "\"parallelism\" = \"3\",\n"
+                + "\"data_consistency\" = \"none\"\n"
                 + ");";
 
         // This export sql should generate 4 array, and there should be 1 
outfile sql in per array.
@@ -240,7 +245,8 @@ public class ExportToOutfileLogicalPlanTest extends 
TestWithFeService {
         String exportSql = "EXPORT TABLE testDb.table1 PARTITION (p1)\n"
                 + "TO \"file:///tmp/exp_\" "
                 + "PROPERTIES(\n"
-                + "\"parallelism\" = \"4\"\n"
+                + "\"parallelism\" = \"4\",\n"
+                + "\"data_consistency\" = \"none\"\n"
                 + ");";
 
         // This export sql should generate 4 array, and there should be 1 
outfile sql in per array.
@@ -293,7 +299,8 @@ public class ExportToOutfileLogicalPlanTest extends 
TestWithFeService {
         String exportSql = "EXPORT TABLE testDb.table1 PARTITION (p1, p4)\n"
                 + "TO \"file:///tmp/exp_\" "
                 + "PROPERTIES(\n"
-                + "\"parallelism\" = \"4\"\n"
+                + "\"parallelism\" = \"4\",\n"
+                + "\"data_consistency\" = \"none\"\n"
                 + ");";
 
         // This export sql should generate 4 array, and there should be 1 
outfile sql in per array.
@@ -344,7 +351,8 @@ public class ExportToOutfileLogicalPlanTest extends 
TestWithFeService {
         String exportSql = "EXPORT TABLE testDb.table1 PARTITION (p1)\n"
                 + "TO \"file:///tmp/exp_\" "
                 + "PROPERTIES(\n"
-                + "\"parallelism\" = \"20\"\n"
+                + "\"parallelism\" = \"20\",\n"
+                + "\"data_consistency\" = \"none\"\n"
                 + ");";
 
         // This export sql should generate 10 array because parallelism is 
less than the number of tablets,
diff --git a/regression-test/suites/export_p0/test_export_basic.groovy 
b/regression-test/suites/export_p0/test_export_basic.groovy
index d4cd9329c92..5c736ba264a 100644
--- a/regression-test/suites/export_p0/test_export_basic.groovy
+++ b/regression-test/suites/export_p0/test_export_basic.groovy
@@ -149,7 +149,8 @@ suite("test_export_basic", "p0") {
             PROPERTIES(
                 "label" = "${label}",
                 "format" = "csv",
-                "column_separator"=","
+                "column_separator"=",",
+                "data_consistency" = "none"
             );
         """
         waiting_export.call(db, label)
@@ -214,7 +215,8 @@ suite("test_export_basic", "p0") {
             PROPERTIES(
                 "label" = "${label}",
                 "format" = "csv",
-                "column_separator"=","
+                "column_separator"=",",
+                "data_consistency" = "none"
             );
         """
         waiting_export.call(db, label)
@@ -279,7 +281,8 @@ suite("test_export_basic", "p0") {
             PROPERTIES(
                 "label" = "${label}",
                 "format" = "csv",
-                "column_separator"=","
+                "column_separator"=",",
+                "data_consistency" = "none"
             );
         """
         waiting_export.call(db, label)
@@ -344,7 +347,8 @@ suite("test_export_basic", "p0") {
             PROPERTIES(
                 "label" = "${label}",
                 "format" = "csv",
-                "column_separator"=","
+                "column_separator"=",",
+                "data_consistency" = "none"
             );
         """
         waiting_export.call(db, label)
@@ -411,7 +415,8 @@ suite("test_export_basic", "p0") {
             PROPERTIES(
                 "label" = "${label1}",
                 "format" = "csv",
-                "column_separator"=","
+                "column_separator"=",",
+                "data_consistency" = "none"
             );
         """
         sql """
@@ -420,7 +425,8 @@ suite("test_export_basic", "p0") {
             PROPERTIES(
                 "label" = "${label2}",
                 "format" = "csv",
-                "column_separator"=","
+                "column_separator"=",",
+                "data_consistency" = "none"
             );
         """
         waiting_export.call(db, label1)
@@ -454,7 +460,8 @@ suite("test_export_basic", "p0") {
                 "label" = "${label}",
                 "format" = "csv",
                 "column_separator"=",",
-                "columns" = "id, name"
+                "columns" = "id, name",
+                "data_consistency" = "none"
             );
         """
         waiting_export.call(db, label)
@@ -519,7 +526,8 @@ suite("test_export_basic", "p0") {
                 "label" = "${label}",
                 "format" = "csv",
                 "column_separator"=",",
-                "columns" = "id"
+                "columns" = "id",
+                "data_consistency" = "none"
             );
         """
         waiting_export.call(db, label)
@@ -588,7 +596,8 @@ suite("test_export_basic", "p0") {
             PROPERTIES(
                 "label" = "${label}",
                 "format" = "csv",
-                "column_separator"=","
+                "column_separator"=",",
+                "data_consistency" = "none"
             );
         """
         waiting_export.call(label_db, label)
@@ -601,7 +610,8 @@ suite("test_export_basic", "p0") {
                 PROPERTIES(
                     "label" = "${label}",
                     "format" = "csv",
-                    "column_separator"=","
+                    "column_separator"=",",
+                    "data_consistency" = "none"
                 );
             """
             exception "has already been used"
@@ -625,7 +635,8 @@ suite("test_export_basic", "p0") {
             PROPERTIES(
                 "label" = "${label}",
                 "format" = "csv",
-                "column_separator"=","
+                "column_separator"=",",
+                "data_consistency" = "none"
             );
         """
         waiting_export.call(label_db, label)
diff --git 
a/regression-test/suites/export_p0/test_export_data_consistency.groovy 
b/regression-test/suites/export_p0/test_export_data_consistency.groovy
index 354010a8582..cd19b082802 100644
--- a/regression-test/suites/export_p0/test_export_data_consistency.groovy
+++ b/regression-test/suites/export_p0/test_export_data_consistency.groovy
@@ -150,8 +150,7 @@ suite("test_export_data_consistency", "p0") {
                 "label" = "${label}",
                 "format" = "csv",
                 "column_separator" = ",",
-                "parallelism" = "10",
-                "data_consistency" = "partition"
+                "parallelism" = "10"
             );
         """
         // do insert in parallel


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to