[ https://issues.apache.org/jira/browse/HIVE-10242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14498411#comment-14498411 ]
Eugene Koifman commented on HIVE-10242: --------------------------------------- The fix also logging improvements and a fix to the following situation where a lock (by client3) could be acquired when it should not be. client1: update table T client2: select * from T client3: update table T with all 3 clients executing concurrently and starting in above order, client 3 should be blocked until client1 finishes. > ACID: insert overwrite prevents create table command > ---------------------------------------------------- > > Key: HIVE-10242 > URL: https://issues.apache.org/jira/browse/HIVE-10242 > Project: Hive > Issue Type: Bug > Components: Transactions > Affects Versions: 1.0.0 > Reporter: Eugene Koifman > Assignee: Eugene Koifman > Fix For: 1.2.0 > > Attachments: HIVE-10242.2.patch, HIVE-10242.3.patch, > HIVE-10242.4.patch, HIVE-10242.patch > > > 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) -- This message was sent by Atlassian JIRA (v6.3.4#6332)