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]