hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alan Gates (JIRA)" <>
Subject [jira] [Commented] (HIVE-10242) ACID: insert overwrite prevents create table command
Date Mon, 13 Apr 2015 11:42:12 GMT


Alan Gates commented on HIVE-10242:

Why is the templeton stuff in this patch?  I suspect it doesn't belong here.

TxnHandler, in the LockInfo constructor.  If you're going to add defaults for those switch
cases they should throw errors rather than return null.

Why did you change the fields in LockInfo to final?  It's fine, I'm just curious.

Why make a new class LockTypeComparator?  This is in the tight loop of determining locks,
so we want it to go as fast as we can.  Rather than requiring an object creation and function
call every time through this it's better to inline that code.

I don't understand the changes to DbLockManager.  What is the purpose of the changes here.

> ACID: insert overwrite prevents create table command
> ----------------------------------------------------
>                 Key: HIVE-10242
>                 URL:
>             Project: Hive
>          Issue Type: Bug
>          Components: Transactions
>    Affects Versions: 1.0.0
>            Reporter: Eugene Koifman
>            Assignee: Eugene Koifman
>         Attachments: HIVE-10242.2.patch, HIVE-10242.3.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

View raw message