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

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


The following commit(s) were added to refs/heads/master by this push:
     new f12f32d  [Bug] Support if not exists in create table like stmt (#5368)
f12f32d is described below

commit f12f32da11642c663f0f34f04a8d170f55849d26
Author: xxiao2018 <[email protected]>
AuthorDate: Sun Feb 7 22:41:55 2021 +0800

    [Bug] Support if not exists in create table like stmt (#5368)
    
    Currently we support syntax `create table xx if not exists like xxx`, but 
`if not exists` does not work well.
---
 .../org/apache/doris/analysis/CreateTableLikeStmt.java    |  2 +-
 .../java/org/apache/doris/analysis/CreateTableStmt.java   |  2 ++
 .../src/main/java/org/apache/doris/catalog/Catalog.java   |  1 +
 .../org/apache/doris/catalog/CreateTableLikeTest.java     | 15 +++++++++++++++
 4 files changed, 19 insertions(+), 1 deletion(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableLikeStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableLikeStmt.java
index 11a3908..58f6e54 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableLikeStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableLikeStmt.java
@@ -45,7 +45,7 @@ public class CreateTableLikeStmt extends DdlStmt {
         this.existedTableName = existedTableName;
     }
 
-    public boolean isSetIfNotExists() {
+    public boolean isIfNotExists() {
         return ifNotExists;
     }
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
index 46d0098..7641ac9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
@@ -169,6 +169,8 @@ public class CreateTableStmt extends DdlStmt {
 
     public void addColumnDef(ColumnDef columnDef) { columnDefs.add(columnDef); 
}
 
+    public void setIfNotExists(boolean ifNotExists) { this.ifNotExists = 
ifNotExists; }
+
     public boolean isSetIfNotExists() {
         return ifNotExists;
     }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Catalog.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/Catalog.java
index fa13b4d..c018314 100755
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Catalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Catalog.java
@@ -3018,6 +3018,7 @@ public class Catalog {
             }
             CreateTableStmt parsedCreateTableStmt = (CreateTableStmt) 
SqlParserUtils.parseAndAnalyzeStmt(createTableStmt.get(0), 
ConnectContext.get());
             parsedCreateTableStmt.setTableName(stmt.getTableName());
+            parsedCreateTableStmt.setIfNotExists(stmt.isIfNotExists());
             createTable(parsedCreateTableStmt);
         } catch (UserException e) {
             throw new DdlException("Failed to execute CREATE TABLE LIKE " + 
stmt.getExistedTableName() + ". Reason: " + e.getMessage());
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateTableLikeTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateTableLikeTest.java
index b09c6b4..a0eae7a 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateTableLikeTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateTableLikeTest.java
@@ -218,6 +218,21 @@ public class CreateTableLikeTest {
         String newTblName8 = "testMysqlTbl_like";
         String existedTblName8 = "testMysqlTbl";
         checkCreateMysqlTableLike(createNonOlapTableSql, createTableLikeSql8, 
newDbName8, existedDbName8, newTblName8, existedTblName8);
+
+        // 9. test if not exist
+        String createTableLikeSql9 = "create table test.testMysqlTbl_like like 
test.testMysqlTbl";
+        try {
+            createTableLike(createTableLikeSql9);
+            Assert.fail();
+        } catch (Exception e) {
+            Assert.assertTrue(e.getMessage().contains("already exists"));
+        }
+        createTableLikeSql9 = "create table if not exists 
test.testMysqlTbl_like like test.testMysqlTbl";
+        try {
+            createTableLike(createTableLikeSql9);
+        } catch (Exception e) {
+            Assert.fail(e.getMessage());
+        }
     }
 
     @Test


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

Reply via email to