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

ACID: insert overwrite prevents create table command

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.0.0
    • Fix Version/s: 1.2.0
    • Component/s: Transactions
    • Labels:
      None

      Description

      1. insert overwirte table DB.T1 select ... from T2: this takes X lock on DB.T1 and S lock on T2.
      X lock makes sense because we don't want anyone reading T1 while it's overwritten. S lock on T2 prevents if from being dropped while the query is in progress.
      2. create table DB.T3: takes S lock on DB.
      This S lock gets blocked by X lock on T1. S lock prevents the DB from being dropped while create table is executed.

      If the insert statement is long running, this blocks DDL ops on the same database. This is a usability issue.
      There is no good reason why X lock on a table within a DB and S lock on DB should be in conflict.

      (this is different from a situation where X lock is on a partition and S lock is on the table to which this partition belongs. Here it makes sense. Basically there is no SQL way to address all tables in a DB but you can easily refer to all partitions of a table)

        Attachments

        1. HIVE-10242.patch
          23 kB
          Eugene Koifman
        2. HIVE-10242.2.patch
          38 kB
          Eugene Koifman
        3. HIVE-10242.3.patch
          38 kB
          Eugene Koifman
        4. HIVE-10242.4.patch
          39 kB
          Eugene Koifman

          Issue Links

            Activity

              People

              • Assignee:
                ekoifman Eugene Koifman
                Reporter:
                ekoifman Eugene Koifman
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: