public interface HiveTxnManager
HiveTxnManagerImpl
rather than
implementing this directly.Modifier and Type | Method and Description |
---|---|
void |
acquireLocks(QueryPlan plan,
Context ctx,
String username)
Acquire all of the locks needed by a query.
|
void |
acquireLocks(QueryPlan plan,
Context ctx,
String username,
Driver.LockedDriverState lDrvState)
Acquire all of the locks needed by a query.
|
void |
closeTxnManager()
This call closes down the transaction manager.
|
void |
commitTxn()
Commit the current transaction.
|
boolean |
getAutoCommit()
This behaves exactly as
https://docs.oracle.com/javase/6/docs/api/java/sql/Connection.html#getAutoCommit()
|
long |
getCurrentTxnId()
if
isTxnOpen() , returns the currently active transaction ID |
HiveLockManager |
getLockManager()
Get the lock manager.
|
String |
getTxnManagerName()
Get the name for currently installed transaction manager.
|
ValidTxnList |
getValidTxns()
Get the transactions that are currently valid.
|
int |
getWriteIdAndIncrement()
Should be though of more as a unique write operation ID in a given txn (at QueryPlan level).
|
void |
heartbeat()
Send a heartbeat to the transaction management storage so other Hive
clients know that the transaction and locks held by this client are
still valid.
|
boolean |
isTxnOpen() |
int |
lockDatabase(Hive hiveDB,
LockDatabaseDesc lockDb)
This function is called to lock the database when explicit lock command is
issued on a database.
|
int |
lockTable(Hive hiveDB,
LockTableDesc lockTbl)
This function is called to lock the table when explicit lock command is
issued on a table.
|
long |
openTxn(Context ctx,
String user)
Open a new transaction.
|
void |
releaseLocks(List<HiveLock> hiveLocks)
Release specified locks.
|
void |
rollbackTxn()
Abort the current transaction.
|
void |
setAutoCommit(boolean autoCommit)
This behaves exactly as
https://docs.oracle.com/javase/6/docs/api/java/sql/Connection.html#setAutoCommit(boolean)
|
boolean |
supportsAcid()
Indicate whether this transaction manager supports ACID operations
|
boolean |
supportsExplicitLock()
Indicate whether this lock manager supports the use of
lock
database or lock table . |
int |
unlockDatabase(Hive hiveDB,
UnlockDatabaseDesc unlockDb)
This function is called to unlock the database when explicit unlock command
is issued on a database.
|
int |
unlockTable(Hive hiveDB,
UnlockTableDesc unlockTbl)
This function is called to unlock the table when explicit unlock command is
issued on a table.
|
boolean |
useNewShowLocksFormat()
Indicate whether this transaction manager returns information about locks in the new format
for show locks or the old one.
|
long openTxn(Context ctx, String user) throws LockException
ctx
- Context for this queryuser
- Hive user who is opening this transaction.LockException
- if a transaction is already open.HiveLockManager getLockManager() throws LockException
LockException
- if there is an issue obtaining the lock manager.void acquireLocks(QueryPlan plan, Context ctx, String username) throws LockException
openTxn(Context, String)
.
A list of acquired locks will be stored in the
Context
object and can be retrieved
via Context.getHiveLocks()
.plan
- query planctx
- Context for this queryusername
- name of the user for this queryLockException
- if there is an error getting the locks. Use HiveException.getCanonicalErrorMsg()
to get more info on how to handle the exception.void acquireLocks(QueryPlan plan, Context ctx, String username, Driver.LockedDriverState lDrvState) throws LockException
#openTxn(String)
.
A list of acquired locks will be stored in the
Context
object and can be retrieved
via Context.getHiveLocks()
.plan
- query planctx
- Context for this queryusername
- name of the user for this querylDrvState
- the state to inform if the query cancelled or notLockException
- if there is an error getting the locksvoid releaseLocks(List<HiveLock> hiveLocks) throws LockException
supportsAcid() == true
,
will track locks internally and ignore this parameterhiveLocks
- The list of locks to be released.LockException
void commitTxn() throws LockException
acquireLocks(org.apache.hadoop.hive.ql.QueryPlan,
org.apache.hadoop.hive.ql.Context, java.lang.String)
.LockException
- if there is no current transaction or the
transaction has already been committed or aborted.void rollbackTxn() throws LockException
acquireLocks(org.apache.hadoop.hive.ql.QueryPlan,
org.apache.hadoop.hive.ql.Context, java.lang.String)
.LockException
- if there is no current transaction or the
transaction has already been committed or aborted.void heartbeat() throws LockException
LockException
- If current transaction exists or the transaction
has already been committed or aborted.ValidTxnList getValidTxns() throws LockException
ValidTxnList
object is a thrift object and can
be passed to the processing
tasks for use in the reading the data. This call should be made once up
front by the planner and should never be called on the backend,
as this will violate the isolation level semantics.LockException
String getTxnManagerName()
void closeTxnManager()
boolean supportsExplicitLock()
lock
database
or lock table
.int lockTable(Hive hiveDB, LockTableDesc lockTbl) throws HiveException
hiveDB
- an object to communicate with the metastorelockTbl
- table locking info, such as table name, locking modeHiveException
int unlockTable(Hive hiveDB, UnlockTableDesc unlockTbl) throws HiveException
hiveDB
- an object to communicate with the metastoreunlockTbl
- table unlocking info, such as table nameHiveException
int lockDatabase(Hive hiveDB, LockDatabaseDesc lockDb) throws HiveException
hiveDB
- an object to communicate with the metastorelockDb
- database locking info, such as database name, locking modeHiveException
int unlockDatabase(Hive hiveDB, UnlockDatabaseDesc unlockDb) throws HiveException
hiveDB
- an object to communicate with the metastoreunlockDb
- database unlocking info, such as database nameHiveException
boolean useNewShowLocksFormat()
boolean supportsAcid()
void setAutoCommit(boolean autoCommit) throws LockException
LockException
boolean getAutoCommit()
boolean isTxnOpen()
long getCurrentTxnId()
isTxnOpen()
, returns the currently active transaction IDint getWriteIdAndIncrement()
Copyright © 2021 The Apache Software Foundation. All rights reserved.