[
https://issues.apache.org/jira/browse/TRAFODION-1444?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14693829#comment-14693829
]
ASF GitHub Bot commented on TRAFODION-1444:
-------------------------------------------
Github user selvaganesang commented on a diff in the pull request:
https://github.com/apache/incubator-trafodion/pull/52#discussion_r36884193
--- Diff: core/sql/exp/ExpHbaseInterface.cpp ---
@@ -797,178 +734,149 @@ Lng32 ExpHbaseInterface_JNI::getRowsOpen(
}
Lng32 ExpHbaseInterface_JNI::deleteRow(
- HbaseStr &tblName,
- HbaseStr& row,
+ HbaseStr tblName,
+ HbaseStr row,
const LIST(HbaseStr) *columns,
NABoolean noXn,
const int64_t timestamp)
{
- HTableClient_JNI *htc = client_->getHTableClient((NAHeap *)heap_,
tblName.val, useTRex_, hbs_);
- if (htc == NULL)
- {
- retCode_ = HBC_ERROR_GET_HTC_EXCEPTION;
- return HBASE_OPEN_ERROR;
- }
-
-
-
+ HTableClient_JNI *htc;
+ bool asyncOperation = false;
Int64 transID;
+
if (noXn)
transID = 0;
else
transID = getTransactionIDFromContext();
- retCode_ = htc->deleteRow(transID, row, columns, timestamp);
-
-
-
- client_->releaseHTableClient(htc);
-
- if (retCode_ != HBC_OK)
+ retCode_ = client_->deleteRow((NAHeap *)heap_, tblName.val, hbs_,
useTRex_, transID, row, columns, timestamp, asyncOperation, &htc);
+ if (retCode_ != HBC_OK) {
+ asyncHtc_ = NULL;
return -HBASE_ACCESS_ERROR;
- else
+ }
+ else {
+ asyncHtc_ = htc;
return HBASE_ACCESS_SUCCESS;
+ }
}
//
//----------------------------------------------------------------------------
Lng32 ExpHbaseInterface_JNI::deleteRows(
- HbaseStr &tblName,
+ HbaseStr tblName,
short rowIDLen,
- HbaseStr &rowIDs,
+ HbaseStr rowIDs,
NABoolean noXn,
const int64_t timestamp)
{
- HTableClient_JNI* htc = client_->getHTableClient((NAHeap *)heap_,
tblName.val, useTRex_, hbs_);
- if (htc == NULL)
- {
- retCode_ = HBC_ERROR_GET_HTC_EXCEPTION;
- return HBASE_OPEN_ERROR;
- }
-
-
+ HTableClient_JNI *htc;
+ bool asyncOperation = false;
Int64 transID;
+
if (noXn)
transID = 0;
else
transID = getTransactionIDFromContext();
-
-
- retCode_ = htc->deleteRows(transID, rowIDLen, rowIDs, timestamp);
-
-
-
- client_->releaseHTableClient(htc);
-
- if (retCode_ != HBC_OK)
+ retCode_ = client_->deleteRows((NAHeap *)heap_, tblName.val, hbs_,
useTRex_, transID, rowIDLen, rowIDs,timestamp, asyncOperation, &htc);
+ if (retCode_ != HBC_OK) {
+ asyncHtc_ = NULL;
return -HBASE_ACCESS_ERROR;
- else
+ }
+ else {
+ asyncHtc_ = htc;
return HBASE_ACCESS_SUCCESS;
+ }
}
//----------------------------------------------------------------------------
Lng32 ExpHbaseInterface_JNI::checkAndDeleteRow(
HbaseStr &tblName,
- HbaseStr& row,
+ HbaseStr& rowID,
HbaseStr& columnToCheck,
- HbaseStr& colValToCheck,
+ HbaseStr& columnValToCheck,
NABoolean noXn,
const int64_t timestamp)
{
- HTableClient_JNI* htc = client_->getHTableClient((NAHeap *)heap_,
tblName.val, useTRex_, hbs_);
- if (htc == NULL)
- {
- retCode_ = HBC_ERROR_GET_HTC_EXCEPTION;
- return HBASE_OPEN_ERROR;
- }
-
+ HTableClient_JNI *htc;
+ bool asyncOperation = false;
Int64 transID;
if (noXn)
transID = 0;
else
transID = getTransactionIDFromContext();
- HTC_RetCode rc = htc->checkAndDeleteRow(transID, row, columnToCheck,
colValToCheck,
- timestamp);
-
- client_->releaseHTableClient(htc);
-
- if (rc == HTC_ERROR_CHECKANDDELETE_ROW_NOTFOUND)
+ retCode_ = client_->checkAndDeleteRow((NAHeap *)heap_, tblName.val,
hbs_, useTRex_, transID, rowID, columnToCheck,
+ columnValToCheck,timestamp, asyncOperation, &htc);
+ if (retCode_ == HBC_ERROR_CHECKANDDELETEROW_NOTFOUND) {
+ asyncHtc_ = NULL;
return HBASE_ROW_NOTFOUND_ERROR;
-
- retCode_ = rc;
-
- if (retCode_ != HBC_OK)
+ } else
+ if (retCode_ != HBC_OK) {
+ asyncHtc_ = NULL;
return -HBASE_ACCESS_ERROR;
- else
+ }
+ else {
+ asyncHtc_ = htc;
return HBASE_ACCESS_SUCCESS;
+ }
}
//
//----------------------------------------------------------------------------
Lng32 ExpHbaseInterface_JNI::insertRow(
- HbaseStr &tblName,
- HbaseStr &rowID,
- HbaseStr &row,
+ HbaseStr tblName,
+ HbaseStr rowID,
+ HbaseStr row,
NABoolean noXn,
const int64_t timestamp,
NABoolean asyncOperation)
{
- HTableClient_JNI *htc = client_->getHTableClient((NAHeap *)heap_,
tblName.val, useTRex_, hbs_);
- if (htc == NULL) {
- retCode_ = HBC_ERROR_GET_HTC_EXCEPTION;
- return HBASE_OPEN_ERROR;
- }
-
- Int64 transID;
+ HTableClient_JNI *htc;
--- End diff --
Not needed. htc used as a output parameter and the insertRow method below
initializes it null or htc for asnyc operation when it is success.
> Reduce the path length for IUD operations in Trafodion in the hbase client
> layer
> --------------------------------------------------------------------------------
>
> Key: TRAFODION-1444
> URL: https://issues.apache.org/jira/browse/TRAFODION-1444
> Project: Apache Trafodion
> Issue Type: Improvement
> Components: sql-exe
> Affects Versions: 2.0-incubating
> Reporter: Selvaganesan Govindarajan
> Assignee: Selvaganesan Govindarajan
> Original Estimate: 96h
> Remaining Estimate: 96h
>
> There are 3 JNI to java transitions for insert, update, delete,
> checkAndInsert, checkAndUpdate and checkAndDelete operations. It can be done
> with one jni transition and reduced memory allocation.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)