You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Alan Gates (JIRA)" <ji...@apache.org> on 2014/10/14 20:27:38 UTC

[jira] [Updated] (HIVE-8459) DbLockManager locking table in addition to partitions

     [ https://issues.apache.org/jira/browse/HIVE-8459?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alan Gates updated HIVE-8459:
-----------------------------
    Description: 
Queries and operations on partitioned tables are generating locks on the whole table when they should only be locking the partition.  For example:

{code}
select count(*) from concur_orc_tab_part where ds = 'today';
{code}

This should only be locking the partition ds='today'.  But instead:
{code}
mysql> select * from HIVE_LOCKS;
+----------------+----------------+----------+---------+---------------------+--------------+---------------+--------------+-------------------+----------------+---------+--------------------+
| HL_LOCK_EXT_ID | HL_LOCK_INT_ID | HL_TXNID | HL_DB   | HL_TABLE            | HL_PARTITION | HL_LOCK_STATE | HL_LOCK_TYPE | HL_LAST_HEARTBEAT | HL_ACQUIRED_AT | HL_USER | HL_HOST            |
+----------------+----------------+----------+---------+---------------------+--------------+---------------+--------------+-------------------+----------------+---------+--------------------+
|            428 |              1 |        0 | default | concur_orc_tab_part | NULL         | a             | r            |     1413311172000 |  1413311171000 | hive    | node-1.example.com |
|            428 |              2 |        0 | default | concur_orc_tab_part | ds=today     | a             | r            |     1413311172000 |  1413311171000 | hive    | node-1.example.com |
+----------------+----------------+----------+---------+---------------------+--------------+---------------+--------------+-------------------+----------------+---------+--------------------+
{code}

  was:
Queries and operations on partitioned tables are generating locks on the whole table when they should only be locking the partition.  For example:

{code}
insert into table concur_orc_tab_part partition (ds='today') values ('fred flintstone', 43, 1.95);
{code}

This should only be locking the partition ds='today'.  But instead:
{code}
mysql> select * from HIVE_LOCKS;
+----------------+----------------+----------+---------+-----------------------+--------------+---------------+--------------+-------------------+----------------+---------+--------------------+
| HL_LOCK_EXT_ID | HL_LOCK_INT_ID | HL_TXNID | HL_DB   | HL_TABLE              | HL_PARTITION | HL_LOCK_STATE | HL_LOCK_TYPE | HL_LAST_HEARTBEAT | HL_ACQUIRED_AT | HL_USER | HL_HOST            |
+----------------+----------------+----------+---------+-----------------------+--------------+---------------+--------------+-------------------+----------------+---------+--------------------+
|            425 |              1 |      204 | default | values__tmp__table__1 | NULL         | a             | r            |     1413310740000 |  1413310738000 | hive    | node-1.example.com |
|            425 |              2 |      204 | default | concur_orc_tab_part   | ds=today     | a             | r            |     1413310740000 |  1413310738000 | hive    | node-1.example.com |
+----------------+----------------+----------+---------+-----------------------+--------------+---------------+--------------+-------------------+----------------+---------+--------------------+
{code}


> DbLockManager locking table in addition to partitions
> -----------------------------------------------------
>
>                 Key: HIVE-8459
>                 URL: https://issues.apache.org/jira/browse/HIVE-8459
>             Project: Hive
>          Issue Type: Bug
>          Components: Locking
>    Affects Versions: 0.14.0
>            Reporter: Alan Gates
>            Assignee: Alan Gates
>            Priority: Critical
>
> Queries and operations on partitioned tables are generating locks on the whole table when they should only be locking the partition.  For example:
> {code}
> select count(*) from concur_orc_tab_part where ds = 'today';
> {code}
> This should only be locking the partition ds='today'.  But instead:
> {code}
> mysql> select * from HIVE_LOCKS;
> +----------------+----------------+----------+---------+---------------------+--------------+---------------+--------------+-------------------+----------------+---------+--------------------+
> | HL_LOCK_EXT_ID | HL_LOCK_INT_ID | HL_TXNID | HL_DB   | HL_TABLE            | HL_PARTITION | HL_LOCK_STATE | HL_LOCK_TYPE | HL_LAST_HEARTBEAT | HL_ACQUIRED_AT | HL_USER | HL_HOST            |
> +----------------+----------------+----------+---------+---------------------+--------------+---------------+--------------+-------------------+----------------+---------+--------------------+
> |            428 |              1 |        0 | default | concur_orc_tab_part | NULL         | a             | r            |     1413311172000 |  1413311171000 | hive    | node-1.example.com |
> |            428 |              2 |        0 | default | concur_orc_tab_part | ds=today     | a             | r            |     1413311172000 |  1413311171000 | hive    | node-1.example.com |
> +----------------+----------------+----------+---------+---------------------+--------------+---------------+--------------+-------------------+----------------+---------+--------------------+
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)