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

    • Sub-task
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 1.2.0, 2.0.0
    • None
    • Transactions
    • 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

            Unassigned Unassigned
            ekoifman Eugene Koifman
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated: