Răsfoiți Sursa

HUE-2854 [metastore] Delete databases with tables

krish 9 ani în urmă
părinte
comite
4a05026

+ 1 - 1
apps/beeswax/src/beeswax/server/dbms.py

@@ -522,7 +522,7 @@ class HiveServer2Dbms(object):
     hql = []
     hql = []
 
 
     for database in databases:
     for database in databases:
-      hql.append("DROP DATABASE `%s`" % database)
+      hql.append("DROP DATABASE `%s` CASCADE" % database)
     query = hql_query(';'.join(hql), database)
     query = hql_query(';'.join(hql), database)
     design.data = query.dumps()
     design.data = query.dumps()
     design.save()
     design.save()

+ 11 - 1
apps/metastore/src/metastore/templates/metastore.mako

@@ -325,7 +325,17 @@ ${ assist.assistPanel() }
           ${ csrf_token(request) | n,unicode }
           ${ csrf_token(request) | n,unicode }
           <div class="modal-header">
           <div class="modal-header">
             <a href="#" class="close" data-dismiss="modal">&times</a>
             <a href="#" class="close" data-dismiss="modal">&times</a>
-            <h3 id="dropDatabaseMessage">${ _('Do you really want to delete the database(s)?') }</h3>
+            <div class="alert-message block-message warning">${ _('Warning: This will drop all tables and objects within the database.') }</div>
+            </br>
+            <h3 id="dropDatabaseMessage">${ _('Do you really want to delete the following database(s)?') }</h3>
+            <ul data-bind="foreach: selectedDatabases">
+              <li>
+                <span data-bind="text: name"></span>
+                <!-- ko if: $data.tables().length > 0 -->
+                    (<span data-bind="text: $data.tables().length"></span> tables)
+                <!-- /ko -->
+              </li>
+            </ul>
           </div>
           </div>
           <div class="modal-footer">
           <div class="modal-footer">
             <input type="button" class="btn" data-dismiss="modal" value="${_('No')}">
             <input type="button" class="btn" data-dismiss="modal" value="${_('No')}">

+ 6 - 0
apps/metastore/src/metastore/tests.py

@@ -259,6 +259,12 @@ class TestMetastoreWithHadoop(BeeswaxSampleProvider):
       resp = _make_query(self.client, hql)
       resp = _make_query(self.client, hql)
       resp = wait_for_query_to_finish(self.client, resp, max=30.0)
       resp = wait_for_query_to_finish(self.client, resp, max=30.0)
 
 
+      # Add a table to db1
+      hql = "CREATE TABLE " + "`" + db1 + "`." + "`test_drop_1` (a int);"
+      resp = _make_query(self.client, hql, database=db1)
+      resp = wait_for_query_to_finish(self.client, resp, max=30.0)
+      assert_equal(resp.status_code, 200)
+
       # Drop them
       # Drop them
       resp = self.client.get('/metastore/databases/drop', follow=True)
       resp = self.client.get('/metastore/databases/drop', follow=True)
       assert_true('want to delete' in resp.content, resp.content)
       assert_true('want to delete' in resp.content, resp.content)