You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2021/09/24 02:35:50 UTC
[incubator-doris] branch master updated: [Bug] Fix bug that DROP
SCHEMA will forcibly database (#6729)
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 a52104f [Bug] Fix bug that DROP SCHEMA will forcibly database (#6729)
a52104f is described below
commit a52104fe40e82fd4f7e7690df1b80890e99379d5
Author: Mingyu Chen <mo...@gmail.com>
AuthorDate: Fri Sep 24 10:35:40 2021 +0800
[Bug] Fix bug that DROP SCHEMA will forcibly database (#6729)
---
fe/fe-core/src/main/cup/sql_parser.cup | 4 +--
.../java/org/apache/doris/catalog/DropDbTest.java | 32 +++++++++++++++++++++-
2 files changed, 33 insertions(+), 3 deletions(-)
diff --git a/fe/fe-core/src/main/cup/sql_parser.cup b/fe/fe-core/src/main/cup/sql_parser.cup
index c8d28a4..6d4f703 100644
--- a/fe/fe-core/src/main/cup/sql_parser.cup
+++ b/fe/fe-core/src/main/cup/sql_parser.cup
@@ -1950,9 +1950,9 @@ drop_stmt ::=
{:
RESULT = new DropDbStmt(ifExists, db, force);
:}
- | KW_DROP KW_SCHEMA opt_force:force opt_if_exists:ifExists ident:db
+ | KW_DROP KW_SCHEMA opt_if_exists:ifExists ident:db opt_force:force
{:
- RESULT = new DropDbStmt(ifExists, db, !force);
+ RESULT = new DropDbStmt(ifExists, db, force);
:}
/* cluster */
| KW_DROP KW_CLUSTER opt_if_exists:ifExists ident:cluster
diff --git a/fe/fe-core/src/test/java/org/apache/doris/catalog/DropDbTest.java b/fe/fe-core/src/test/java/org/apache/doris/catalog/DropDbTest.java
index 0a97a1d..ca2f1cb 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/catalog/DropDbTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/catalog/DropDbTest.java
@@ -49,12 +49,14 @@ public class DropDbTest {
// create database
String createDbStmtStr1 = "create database test1;";
String createDbStmtStr2 = "create database test2;";
+ String createDbStmtStr3 = "create database test3;";
String createTablleStr1 = "create table test1.tbl1(k1 int, k2 bigint) duplicate key(k1) "
+ "distributed by hash(k2) buckets 1" + " properties('replication_num' = '1');";
String createTablleStr2 = "create table test2.tbl1" + "(k1 int, k2 bigint)" + " duplicate key(k1) "
+ "distributed by hash(k2) buckets 1 " + "properties('replication_num' = '1');";
createDb(createDbStmtStr1);
createDb(createDbStmtStr2);
+ createDb(createDbStmtStr3);
createTable(createTablleStr1);
createTable(createTablleStr2);
}
@@ -89,8 +91,8 @@ public class DropDbTest {
String dropDbSql = "drop database test1";
dropDb(dropDbSql);
db = Catalog.getCurrentCatalog().getDbNullable("default_cluster:test1");
- List<Replica> replicaList = Catalog.getCurrentCatalog().getTabletInvertedIndex().getReplicasByTabletId(tabletId);
Assert.assertNull(db);
+ List<Replica> replicaList = Catalog.getCurrentCatalog().getTabletInvertedIndex().getReplicasByTabletId(tabletId);
Assert.assertEquals(1, replicaList.size());
String recoverDbSql = "recover database test1";
RecoverDbStmt recoverDbStmt = (RecoverDbStmt) UtFrameUtils.parseAndAnalyzeStmt(recoverDbSql, connectContext);
@@ -101,6 +103,19 @@ public class DropDbTest {
table = (OlapTable) db.getTableOrMetaException("tbl1");
Assert.assertNotNull(table);
Assert.assertEquals("tbl1", table.getName());
+
+ dropDbSql = "drop schema test1";
+ dropDb(dropDbSql);
+ db = Catalog.getCurrentCatalog().getDbNullable("default_cluster:test1");
+ Assert.assertNull(db);
+ Catalog.getCurrentCatalog().recoverDatabase(recoverDbStmt);
+ db = Catalog.getCurrentCatalog().getDbNullable("default_cluster:test1");
+ Assert.assertNotNull(db);
+
+ dropDbSql = "drop schema if exists test1";
+ dropDb(dropDbSql);
+ db = Catalog.getCurrentCatalog().getDbNullable("default_cluster:test1");
+ Assert.assertNull(db);
}
@Test
@@ -120,5 +135,20 @@ public class DropDbTest {
ExceptionChecker.expectThrowsWithMsg(DdlException.class,
"Unknown database 'default_cluster:test2'",
() -> Catalog.getCurrentCatalog().recoverDatabase(recoverDbStmt));
+
+ dropDbSql = "drop schema test3 force";
+ db = Catalog.getCurrentCatalog().getDbOrMetaException("default_cluster:test3");
+ Assert.assertNotNull(db);
+ dropDb(dropDbSql);
+ db = Catalog.getCurrentCatalog().getDbNullable("default_cluster:test3");
+ Assert.assertNull(db);
+ recoverDbSql = "recover database test3";
+ RecoverDbStmt recoverDbStmt2 = (RecoverDbStmt) UtFrameUtils.parseAndAnalyzeStmt(recoverDbSql, connectContext);
+ ExceptionChecker.expectThrowsWithMsg(DdlException.class,
+ "Unknown database 'default_cluster:test3'",
+ () -> Catalog.getCurrentCatalog().recoverDatabase(recoverDbStmt2));
+
+ dropDbSql = "drop schema if exists test3 force";
+ dropDb(dropDbSql);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org