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 11a3908c33..58f6e54b9e 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 46d009801b..7641ac96e5 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 fa13b4d3f4..c0183148b3 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 b09c6b40f9..a0eae7aada 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