Эх сурвалжийг харах

HUE-5215 [metastore] Add skip trash option when dropping table from metastore

krish 9 жил өмнө
parent
commit
9fdeb1e

+ 5 - 2
apps/beeswax/src/beeswax/server/dbms.py

@@ -517,14 +517,17 @@ class HiveServer2Dbms(object):
     return self.execute_query(query, design)
 
 
-  def drop_tables(self, database, tables, design):
+  def drop_tables(self, database, tables, design, skip_trash=False):
     hql = []
 
     for table in tables:
       if table.is_view:
         hql.append("DROP VIEW `%s`.`%s`" % (database, table.name,))
       else:
-        hql.append("DROP TABLE `%s`.`%s`" % (database, table.name,))
+        drop_query = "DROP TABLE `%s`.`%s`" % (database, table.name,)
+        drop_query += skip_trash and " PURGE" or ""
+        hql.append(drop_query)
+
     query = hql_query(';'.join(hql), database)
     design.data = query.dumps()
     design.save()

+ 5 - 0
apps/metastore/src/metastore/templates/metastore.mako

@@ -515,6 +515,11 @@ ${ assist.assistPanel() }
           <a href="#" class="close" data-dismiss="modal">&times;</a>
           <h3 id="dropTableMessage">${_('Do you really want to drop the selected table(s)?')}</h3>
         </div>
+        <div class="modal-body">
+          <label class="checkbox" style="display: inline-block; margin-top: 5px">
+            <input type="checkbox" name="skip_trash" /> ${ _('skip trash? (Enable to delete tables in encryption zone)') }
+          </label>
+        </div>
         <div class="modal-footer">
           <input type="button" class="btn" data-dismiss="modal" value="${_('No')}" />
           <input type="submit" class="btn btn-danger" value="${_('Yes')}"/>

+ 2 - 1
apps/metastore/src/metastore/views.py

@@ -362,10 +362,11 @@ def drop_table(request, database):
   if request.method == 'POST':
     tables = request.POST.getlist('table_selection')
     tables_objects = [db.get_table(database, table) for table in tables]
+    skip_trash = request.POST.get('skip_trash') == 'on'
     try:
       # Can't be simpler without an important refactoring
       design = SavedQuery.create_empty(app_name='beeswax', owner=request.user, data=hql_query('').dumps())
-      query_history = db.drop_tables(database, tables_objects, design)
+      query_history = db.drop_tables(database, tables_objects, design, skip_trash=skip_trash)
       url = reverse('beeswax:watch_query_history', kwargs={'query_history_id': query_history.id}) + '?on_success_url=' + reverse('metastore:show_tables', kwargs={'database': database})
       return redirect(url)
     except Exception, ex: