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

lzljs3620320 pushed a commit to branch release-0.6
in repository https://gitbox.apache.org/repos/asf/incubator-paimon.git

commit b83b680539a41f3b912465f1a53744a056965fe3
Author: hehuiyuan <[email protected]>
AuthorDate: Mon Dec 25 15:12:06 2023 +0800

    [core]  auto-create should be false when using create table sql (#2538)
---
 .../java/org/apache/paimon/catalog/AbstractCatalog.java     | 13 +++++++++++++
 .../java/org/apache/paimon/catalog/CatalogTestBase.java     |  9 +++++++++
 2 files changed, 22 insertions(+)

diff --git 
a/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java 
b/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java
index 516dc6376..33c216cbb 100644
--- a/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java
+++ b/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java
@@ -18,6 +18,7 @@
 
 package org.apache.paimon.catalog;
 
+import org.apache.paimon.CoreOptions;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.factories.FactoryUtil;
 import org.apache.paimon.fs.FileIO;
@@ -178,6 +179,7 @@ public abstract class AbstractCatalog implements Catalog {
         checkNotSystemTable(identifier, "createTable");
         validateIdentifierNameCaseInsensitive(identifier);
         validateFieldNameCaseInsensitive(schema.rowType().getFieldNames());
+        validateAutoCreateClose(schema.options());
 
         if (!databaseExists(identifier.getDatabaseName())) {
             throw new DatabaseNotExistException(identifier.getDatabaseName());
@@ -429,4 +431,15 @@ public abstract class AbstractCatalog implements Catalog {
     private void validateFieldNameCaseInsensitive(List<String> fieldNames) {
         validateCaseInsensitive(caseSensitive(), "Field", fieldNames);
     }
+
+    private void validateAutoCreateClose(Map<String, String> options) {
+        checkArgument(
+                !Boolean.valueOf(
+                        options.getOrDefault(
+                                CoreOptions.AUTO_CREATE.key(),
+                                
CoreOptions.AUTO_CREATE.defaultValue().toString())),
+                String.format(
+                        "The value of %s property should be %s.",
+                        CoreOptions.AUTO_CREATE.key(), Boolean.FALSE));
+    }
 }
diff --git 
a/paimon-core/src/test/java/org/apache/paimon/catalog/CatalogTestBase.java 
b/paimon-core/src/test/java/org/apache/paimon/catalog/CatalogTestBase.java
index 1548ddcc3..517160204 100644
--- a/paimon-core/src/test/java/org/apache/paimon/catalog/CatalogTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/catalog/CatalogTestBase.java
@@ -18,6 +18,7 @@
 
 package org.apache.paimon.catalog;
 
+import org.apache.paimon.CoreOptions;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.options.CatalogOptions;
@@ -263,6 +264,14 @@ public abstract class CatalogTestBase {
                         .partitionKeys("pk1", "pk2")
                         .primaryKey("pk1", "pk2", "pk3")
                         .build();
+
+        // Create table throws Exception when auto-create = true.
+        schema.options().put(CoreOptions.AUTO_CREATE.key(), 
Boolean.TRUE.toString());
+        assertThatExceptionOfType(IllegalArgumentException.class)
+                .isThrownBy(() -> catalog.createTable(identifier, schema, 
false))
+                .withMessage("The value of auto-create property should be 
false.");
+        schema.options().remove(CoreOptions.AUTO_CREATE.key());
+
         catalog.createTable(identifier, schema, false);
         boolean exists = catalog.tableExists(identifier);
         assertThat(exists).isTrue();

Reply via email to