Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-6405 Support append feature for HCatalog
  3. HIVE-6406

Introduce immutable-table table property and if set, disallow insert-into

    XMLWordPrintableJSON

Details

    • Hide
      This patch introduces a new table property "immutable".

      If we create a table with TBLPROPERTIES("immutable"="true"), then INSERT INTO behaviour into that table will be disallowed if there is any data already present that the INSERT INTO would append to.

      INSERT INTO will still work if it is empty.

      INSERT OVERWRITE behaviour is not modified by this property, since an INSERT OVERWRITE's intent is effectively to drop and re-create.

      The desirability of having an immutable flag for a table is that it allows a table to be flagged to be protected against accidental updates due to a script loading data into it being run multiple times by mistake. With the flag set, the first insert would succeed, and successive inserts would fail, thus resulting in only one set of data in the table, instead of silently succeeding with 4 copies(say) of the data in the table.
      Show
      This patch introduces a new table property "immutable". If we create a table with TBLPROPERTIES("immutable"="true"), then INSERT INTO behaviour into that table will be disallowed if there is any data already present that the INSERT INTO would append to. INSERT INTO will still work if it is empty. INSERT OVERWRITE behaviour is not modified by this property, since an INSERT OVERWRITE's intent is effectively to drop and re-create. The desirability of having an immutable flag for a table is that it allows a table to be flagged to be protected against accidental updates due to a script loading data into it being run multiple times by mistake. With the flag set, the first insert would succeed, and successive inserts would fail, thus resulting in only one set of data in the table, instead of silently succeeding with 4 copies(say) of the data in the table.

    Description

      As part of HIVE-6405's attempt to make HCatalog and Hive behave in similar ways with regards to immutable tables, this is a companion task to introduce the notion of an immutable table, wherein all tables are not immutable by default, and have this be a table property. If this property is set for a table, and we attempt to write to a table that already has data (or a partition), disallow "INSERT INTO" into it from hive(if destination directory is non-empty). This property being set will allow hive to mimic HCatalog's current immutable-table property.

      Attachments

        1. HIVE-6406.patch
          22 kB
          Sushanth Sowmyan
        2. HIVE-6406.3.patch
          21 kB
          Sushanth Sowmyan
        3. HIVE-6406.2.patch
          21 kB
          Sushanth Sowmyan

        Issue Links

          Activity

            People

              sushanth Sushanth Sowmyan
              sushanth Sushanth Sowmyan
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: