[ 
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)

Reply via email to