Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-9675 Support START TRANSACTION/COMMIT/ROLLBACK commands
  3. HIVE-14036

prevent insert into acid and non-acid tables in the same txn

    XMLWordPrintableJSON

    Details

    • Type: Sub-task
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 1.2.0, 2.0.0
    • Fix Version/s: None
    • Component/s: Transactions
    • Labels:
      None

      Description

      create table if not exists tab1 (a int, b int) partitioned by (p string) 
          clustered by (a) into 2  buckets stored as orc TBLPROPERTIES('transactional'='true')
      create table if not exists tab_not_acid (a int, b int, p string)
      insert into tab_not_acid values(1,1,'one'),(2,2,'two')
      
      insert into tab1 partition(p) values(3,3,'one'),(4,4,'two')
          //writing both acid and non-acid resources in the same txn
          //tab1 write is a dynamic partition insert
          from tab_not_acid insert into tab1 partition(p)(a,b,p) select a,b,p insert into tab_not_acid(a,b) select a,b where p='two'
      

      Suppose the last insert in the above example is part of a multi-stmt txn which later gets rolled back. There is no way to rollback the write to the tab_not_acid table.

      (In auto-commit mode there is no explicit rollback so this can only fail due to error, which means Move task won't move the files into tables so it's not really an issue)

        Attachments

          Activity

            People

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

              Dates

              • Created:
                Updated: