Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-18670

Prevent DROP DATABASE If Other Data Exists

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.3.2, 3.0.0
    • None
    • HiveServer2
    • None

    Description

      A user is not able to drop a database if it has tables under it unless they include the CASCADE keyword to their DROP DATABASE statement.

      https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-DropTable

      I would like to propose that, if hive.mapred.mode is set to 'strict', Hive also checks for other data before dropping the database.

      For example, if the database is stored within HDFS, then Hive should check if there exists other data, not even necessarily related to Hive, within the database's HDFS directory, before dropping.

      The examples are:

      Example 1
      /hive/my_database
      /hive/my_database/my_table
      
      -- Does not succeed because 'my_table' exists
      > DROP DATABASE my_database;
      
      -- Succeeds and removes the root directory /hive/my_database
      > DROP DATABASE my_database CASCADE;
      
      Example 2
      /hive/my_database
      /hive/my_database/my_important_file.txt
      
      -- Succeeds because no tables exist, but I just lost my "important" file
      > DROP DATABASE my_database;
      

      This "feature" is just to prevent people from shooting themselves in the foot, even if they shouldn't be using Hive space for storing unrelated data.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              belugabehr David Mollitor
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: