You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by su...@apache.org on 2017/11/10 05:41:12 UTC

[1/2] incubator-trafodion git commit: [TRAFODION-2801] select count(*) with cqd hbase_coprocessors 'off' and cqd traf_table_snapshot_scan 'latest' fail

Repository: incubator-trafodion
Updated Branches:
  refs/heads/master d8208546b -> 89433fbab


[TRAFODION-2801] select count(*) with cqd hbase_coprocessors 'off'
and cqd traf_table_snapshot_scan 'latest' fail

Changed to pass two more arrays references - familyArray and QualifierArray
from Java to JNI to extract the family and the qualifier names correctly
on the native side


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/c4fe7987
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/c4fe7987
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/c4fe7987

Branch: refs/heads/master
Commit: c4fe798711a18b9e78a0dad80b85705f1f89ac66
Parents: d820854
Author: selvaganesang <se...@esgyn.com>
Authored: Thu Nov 9 22:23:29 2017 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Thu Nov 9 22:23:29 2017 +0000

----------------------------------------------------------------------
 core/sql/executor/HBaseClient_JNI.cpp           | 176 +++++++++++++------
 core/sql/executor/HBaseClient_JNI.h             |  13 +-
 .../executor/org_trafodion_sql_HTableClient.h   |   4 +-
 .../java/org/trafodion/sql/HTableClient.java    |  24 ++-
 4 files changed, 152 insertions(+), 65 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/c4fe7987/core/sql/executor/HBaseClient_JNI.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/HBaseClient_JNI.cpp b/core/sql/executor/HBaseClient_JNI.cpp
index 78c4289..c181b41 100644
--- a/core/sql/executor/HBaseClient_JNI.cpp
+++ b/core/sql/executor/HBaseClient_JNI.cpp
@@ -3239,6 +3239,7 @@ static const char* const htcErrorEnumStr[] =
  ,"Async Hbase Operation not yet complete."
  ,"Java exception in setWriteToWal()."
  ,"Java exception in setWriteBufferSize()."
+ ,"Java exception in prepareForNextCell()."
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -4312,7 +4313,8 @@ JNIEXPORT jint JNICALL Java_org_trafodion_sql_HTableClient_setResultInfo
         jintArray jKvQualLen, jintArray jKvQualOffset,
         jintArray jKvFamLen, jintArray jKvFamOffset, 
         jlongArray jTimestamp, 
-        jobjectArray jKvBuffer, jobjectArray jRowIDs,
+        jobjectArray jKvBuffer, 
+        jobjectArray jKvFamArray, jobjectArray jkvQualArray, jobjectArray jRowIDs,
         jintArray jKvsPerRow, jint numCellsReturned, jint numRowsReturned)
 {
    HTableClient_JNI *htc = (HTableClient_JNI *)jniObject;
@@ -4321,7 +4323,8 @@ JNIEXPORT jint JNICALL Java_org_trafodion_sql_HTableClient_setResultInfo
       htc->setJavaObject(jobj);
    htc->setResultInfo(jKvValLen, jKvValOffset,
                 jKvQualLen, jKvQualOffset, jKvFamLen, jKvFamOffset,
-                jTimestamp, jKvBuffer, jRowIDs, jKvsPerRow, numCellsReturned, numRowsReturned);  
+                jTimestamp, jKvBuffer, jKvFamArray, jkvQualArray,
+                jRowIDs, jKvsPerRow, numCellsReturned, numRowsReturned);  
    return 0;
 }
 
@@ -4348,7 +4351,8 @@ void HTableClient_JNI::setResultInfo( jintArray jKvValLen, jintArray jKvValOffse
         jintArray jKvQualLen, jintArray jKvQualOffset,
         jintArray jKvFamLen, jintArray jKvFamOffset,
         jlongArray jTimestamp, 
-        jobjectArray jKvBuffer, jobjectArray jRowIDs,
+        jobjectArray jKvBuffer, 
+        jobjectArray jKvFamArray, jobjectArray jKvQualArray, jobjectArray jRowIDs,
         jintArray jKvsPerRow, jint numCellsReturned, jint numRowsReturned)
 {
    if (numRowsReturned_ > 0)
@@ -4393,6 +4397,16 @@ void HTableClient_JNI::setResultInfo( jintArray jKvValLen, jintArray jKvValOffse
          if (jenv_->ExceptionCheck())
             exceptionFound = TRUE;
       }
+      if (! exceptionFound) {
+         jKvFamArray_ = (jobjectArray)jenv_->NewGlobalRef(jKvFamArray);
+         if (jenv_->ExceptionCheck())
+            exceptionFound = TRUE;
+      }
+      if (! exceptionFound) {
+         jKvQualArray_ = (jobjectArray)jenv_->NewGlobalRef(jKvQualArray);
+         if (jenv_->ExceptionCheck())
+            exceptionFound = TRUE;
+      }
    }
    if (! exceptionFound) {
       jRowIDs_ = (jobjectArray)jenv_->NewGlobalRef(jRowIDs);
@@ -4449,6 +4463,14 @@ void HTableClient_JNI::cleanupResultInfo()
       jenv_->DeleteGlobalRef(jKvBuffer_);
       jKvBuffer_ = NULL;
    }
+   if (jKvFamArray_ != NULL) {
+      jenv_->DeleteGlobalRef(jKvFamArray_);
+      jKvFamArray_ = NULL;
+   }
+   if (jKvQualArray_ != NULL) {
+      jenv_->DeleteGlobalRef(jKvQualArray_);
+      jKvQualArray_ = NULL;
+   }
    if (jRowIDs_ != NULL) {
       jenv_->DeleteGlobalRef(jRowIDs_);
       jRowIDs_ = NULL;
@@ -4458,6 +4480,16 @@ void HTableClient_JNI::cleanupResultInfo()
       jenv_->DeleteGlobalRef(jba_kvBuffer_);
       jba_kvBuffer_ = NULL;
    }
+   if (jba_kvFamArray_ != NULL)
+   {
+      jenv_->DeleteGlobalRef(jba_kvFamArray_);
+      jba_kvFamArray_ = NULL;
+   }
+   if (jba_kvQualArray_ != NULL)
+   {
+      jenv_->DeleteGlobalRef(jba_kvQualArray_);
+      jba_kvQualArray_ = NULL;
+   }
    if (p_rowID_ != NULL)
    {
       jenv_->ReleaseByteArrayElements(jba_rowID_, p_rowID_, JNI_ABORT);
@@ -4474,6 +4506,7 @@ void HTableClient_JNI::cleanupResultInfo()
    return;
 }
 
+
 HTC_RetCode HTableClient_JNI::nextRow()
 {
     HTC_RetCode retCode;
@@ -4598,52 +4631,106 @@ void HTableClient_JNI::getResultInfo()
     prevRowCellNum_ = 0;
 }
 
-HTC_RetCode HTableClient_JNI::getColName(int colNo,
-              char **outColName, 
-              short &colNameLen,
-              Int64 &timestamp)
+HTC_RetCode HTableClient_JNI::prepareForNextCell(int idx)
 {
-    jint kvsPerRow = p_kvsPerRow_[currentRowNum_];
-    if (kvsPerRow == 0 || colNo >= kvsPerRow)
+    jobject kvBufferObj;
+
+    if (jba_kvFamArray_ != NULL)
     {
-       *outColName == NULL;
-       timestamp = 0;
-       return HTC_OK;
+       jenv_->DeleteGlobalRef(jba_kvFamArray_);
+       jba_kvFamArray_ = NULL;
     }
-    int idx = prevRowCellNum_ + colNo;
-    ex_assert((idx < numCellsReturned_), "Buffer overflow");
-    jint kvQualLen = p_kvQualLen_[idx];
-    jint kvQualOffset = p_kvQualOffset_[idx];
-    jint kvFamLen = p_kvFamLen_[idx];
-    jint kvFamOffset = p_kvFamOffset_[idx];
+    kvBufferObj = jenv_->GetObjectArrayElement(jKvFamArray_, idx);
+    if (jenv_->ExceptionCheck())
+    {
+      getExceptionDetails();
+      logError(CAT_SQL_HBASE, __FILE__, __LINE__);
+      logError(CAT_SQL_HBASE, "HTableClient_JNI::prepareForNextCell()", getLastError());
+      return HTC_PREPARE_FOR_NEXTCELL_EXCEPTION;
+    }
+    jba_kvFamArray_ = (jbyteArray)jenv_->NewGlobalRef(kvBufferObj);
+    if (jenv_->ExceptionCheck())
+    {
+      getExceptionDetails();
+      logError(CAT_SQL_HBASE, __FILE__, __LINE__);
+      logError(CAT_SQL_HBASE, "HTableClient_JNI::prepareForNextCell()", getLastError());
+      return HTC_PREPARE_FOR_NEXTCELL_EXCEPTION;
+    }
+    jenv_->DeleteLocalRef(kvBufferObj);
+
+    if (jba_kvQualArray_ != NULL)
+    {
+       jenv_->DeleteGlobalRef(jba_kvQualArray_);
+       jba_kvQualArray_ = NULL;
+    }
+    kvBufferObj = jenv_->GetObjectArrayElement(jKvQualArray_, idx);
+    if (jenv_->ExceptionCheck())
+    {
+      getExceptionDetails();
+      logError(CAT_SQL_HBASE, __FILE__, __LINE__);
+      logError(CAT_SQL_HBASE, "HTableClient_JNI::prepareForNextCell()", getLastError());
+      return HTC_PREPARE_FOR_NEXTCELL_EXCEPTION;
+    }
+    jba_kvQualArray_ = (jbyteArray)jenv_->NewGlobalRef(kvBufferObj);
+    if (jenv_->ExceptionCheck())
+    {
+      getExceptionDetails();
+      logError(CAT_SQL_HBASE, __FILE__, __LINE__);
+      logError(CAT_SQL_HBASE, "HTableClient_JNI::prepareForNextCell()", getLastError());
+      return HTC_PREPARE_FOR_NEXTCELL_EXCEPTION;
+    }
+    jenv_->DeleteLocalRef(kvBufferObj);
 
-    // clean the kvBuffer of the previous column
-    // And get the kvBuffer for the current column
     if (jba_kvBuffer_ != NULL)
     {
        jenv_->DeleteGlobalRef(jba_kvBuffer_);
        jba_kvBuffer_ = NULL;
     }
-    jobject kvBufferObj;
     kvBufferObj = jenv_->GetObjectArrayElement(jKvBuffer_, idx);
     if (jenv_->ExceptionCheck())
     {
       getExceptionDetails();
       logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-      logError(CAT_SQL_HBASE, "HTableClient_JNI::getColName()", getLastError());
-      return HTC_GET_COLNAME_EXCEPTION;
+      logError(CAT_SQL_HBASE, "HTableClient_JNI::prepareForNextCell()", getLastError());
+      return HTC_PREPARE_FOR_NEXTCELL_EXCEPTION;
     }
-
     jba_kvBuffer_ = (jbyteArray)jenv_->NewGlobalRef(kvBufferObj);
     if (jenv_->ExceptionCheck())
     {
       getExceptionDetails();
       logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-      logError(CAT_SQL_HBASE, "HTableClient_JNI::getColName()", getLastError());
-      return HTC_GET_COLNAME_EXCEPTION;
+      logError(CAT_SQL_HBASE, "HTableClient_JNI::prepareForNextCell()", getLastError());
+      return HTC_PREPARE_FOR_NEXTCELL_EXCEPTION;
     }
     jenv_->DeleteLocalRef(kvBufferObj);
 
+    return HTC_OK;
+}
+
+HTC_RetCode HTableClient_JNI::getColName(int colNo,
+              char **outColName, 
+              short &colNameLen,
+              Int64 &timestamp)
+{
+    HTC_RetCode retcode;
+
+    jint kvsPerRow = p_kvsPerRow_[currentRowNum_];
+    if (kvsPerRow == 0 || colNo >= kvsPerRow)
+    {
+       *outColName == NULL;
+       timestamp = 0;
+       return HTC_OK;
+    }
+    int idx = prevRowCellNum_ + colNo;
+    ex_assert((idx < numCellsReturned_), "Buffer overflow");
+    jint kvQualLen = p_kvQualLen_[idx];
+    jint kvQualOffset = p_kvQualOffset_[idx];
+    jint kvFamLen = p_kvFamLen_[idx];
+    jint kvFamOffset = p_kvFamOffset_[idx];
+
+    if ((retcode = prepareForNextCell(idx)) != HTC_OK)
+       return retcode;
+   
     colNameLen = kvQualLen + kvFamLen + 1; // 1 for ':'
     char * colName;
     if (colNameAllocLen_ == 0  && colNameLen <= INLINE_COLNAME_LEN)
@@ -4659,11 +4746,11 @@ HTC_RetCode HTableClient_JNI::getColName(int colNo,
         }
         colName = colName_; 
     }
-    jenv_->GetByteArrayRegion(jba_kvBuffer_, kvFamOffset, kvFamLen, 
+    jenv_->GetByteArrayRegion(jba_kvFamArray_, kvFamOffset, kvFamLen, 
             (jbyte *)colName);
     colName[kvFamLen] = ':';
     char *temp = colName+ kvFamLen+1;
-    jenv_->GetByteArrayRegion(jba_kvBuffer_, kvQualOffset, kvQualLen, 
+    jenv_->GetByteArrayRegion(jba_kvQualArray_, kvQualOffset, kvQualLen, 
             (jbyte *)temp);
     timestamp = p_timestamp_[idx];
     *outColName = colName;
@@ -4873,33 +4960,8 @@ HTC_RetCode HTableClient_JNI::nextCell(
    jint kvFamLen = p_kvFamLen_[idx];
    jint kvFamOffset = p_kvFamOffset_[idx];
 
-   // clean the kvBuffer of the previous column
-   // And get the kvBuffer for the current column
-
-  if (jba_kvBuffer_ != NULL)
-   {
-       jenv_->DeleteGlobalRef(jba_kvBuffer_);
-       jba_kvBuffer_ = NULL;
-   }
-   jobject kvBufferObj;
-   kvBufferObj = jenv_->GetObjectArrayElement(jKvBuffer_, idx);
-   if (jenv_->ExceptionCheck())
-   {
-      getExceptionDetails();
-      logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-      logError(CAT_SQL_HBASE, "HTableClient_JNI::nextCell()", getLastError());
-      return HTC_NEXTCELL_EXCEPTION;
-   }
-
-   jba_kvBuffer_ = (jbyteArray)jenv_->NewGlobalRef(kvBufferObj);
-   if (jenv_->ExceptionCheck())
-   {
-      getExceptionDetails();
-      logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-      logError(CAT_SQL_HBASE, "HTableClient_JNI::nextCell()", getLastError());
-      return HTC_NEXTCELL_EXCEPTION;
-   }
-   jenv_->DeleteLocalRef(kvBufferObj);
+   if ((retcode = prepareForNextCell(idx)) != HTC_OK)
+       return retcode;
 
    int colNameLen = kvQualLen + kvFamLen + 1; // 1 for ':'
    char * colName;
@@ -4916,13 +4978,13 @@ HTC_RetCode HTableClient_JNI::nextCell(
       }
       colName = colName_;
    }
-   jenv_->GetByteArrayRegion(jba_kvBuffer_, kvFamOffset, kvFamLen,
+   jenv_->GetByteArrayRegion(jba_kvFamArray_, kvFamOffset, kvFamLen,
             (jbyte *)colName);
    colName[kvFamLen] = ':';
    colFamName.val = colName;
    colFamName.len = kvFamLen; 
    char *temp = colName+ kvFamLen+1;
-   jenv_->GetByteArrayRegion(jba_kvBuffer_, kvQualOffset, kvQualLen,
+   jenv_->GetByteArrayRegion(jba_kvQualArray_, kvQualOffset, kvQualLen,
             (jbyte *)temp);
    colQualName.val = temp;
    colQualName.len = kvQualLen;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/c4fe7987/core/sql/executor/HBaseClient_JNI.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/HBaseClient_JNI.h b/core/sql/executor/HBaseClient_JNI.h
index 94e8922..d2f5d2b 100644
--- a/core/sql/executor/HBaseClient_JNI.h
+++ b/core/sql/executor/HBaseClient_JNI.h
@@ -115,6 +115,7 @@ typedef enum {
  ,HTC_ERROR_ASYNC_OPERATION_NOT_COMPLETE
  ,HTC_ERROR_WRITETOWAL_EXCEPTION
  ,HTC_ERROR_WRITEBUFFERSIZE_EXCEPTION
+ ,HTC_PREPARE_FOR_NEXTCELL_EXCEPTION
  ,HTC_LAST
 } HTC_RetCode;
 
@@ -141,6 +142,8 @@ public:
      jKvFamOffset_ = NULL;
      jTimestamp_ = NULL;
      jKvBuffer_ = NULL;
+     jKvFamArray_ = NULL;
+     jKvQualArray_ = NULL;
      jRowIDs_ = NULL;
      jKvsPerRow_ = NULL;
      currentRowNum_ = -1;
@@ -162,6 +165,8 @@ public:
      p_kvQualOffset_ = NULL;
      p_timestamp_ = NULL;
      jba_kvBuffer_ = NULL;
+     jba_kvFamArray_ = NULL;
+     jba_kvQualArray_ = NULL;
      jba_rowID_ = NULL;
      fetchMode_ = UNKNOWN;
      p_rowID_ = NULL;
@@ -205,7 +210,8 @@ public:
         jintArray jKvQualLen, jintArray jKvQualOffset,
         jintArray jKvFamLen, jintArray jKvFamOffset,
         jlongArray jTimestamp, 
-        jobjectArray jKvBuffer, jobjectArray jRowIDs,
+        jobjectArray jKvBuffer, 
+        jobjectArray jKvFamArray, jobjectArray jKvQualArray, jobjectArray jRowIDs,
         jintArray jKvsPerRow, jint numCellsReturned, jint numRowsReturned);
   void getResultInfo();
   void cleanupResultInfo();
@@ -232,6 +238,7 @@ public:
                  HbaseStr &colVal,
                  Int64 &timestamp);
   HTC_RetCode completeAsyncOperation(int timeout, NABoolean *resultArray, short resultArrayLen);
+  HTC_RetCode prepareForNextCell(int idx);
 
   //  HTC_RetCode codeProcAggrGetResult();
 
@@ -299,6 +306,8 @@ private:
   jintArray jKvFamOffset_;
   jlongArray jTimestamp_;
   jobjectArray jKvBuffer_;
+  jobjectArray jKvFamArray_;
+  jobjectArray jKvQualArray_;
   jobjectArray jRowIDs_;
   jintArray jKvsPerRow_;
   jint *p_kvValLen_;
@@ -309,6 +318,8 @@ private:
   jint *p_kvFamOffset_;
   jlong *p_timestamp_;
   jbyteArray jba_kvBuffer_;
+  jbyteArray jba_kvFamArray_;
+  jbyteArray jba_kvQualArray_;
   jbyteArray jba_rowID_;
   jbyte *p_rowID_;
   jint *p_kvsPerRow_;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/c4fe7987/core/sql/executor/org_trafodion_sql_HTableClient.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/org_trafodion_sql_HTableClient.h b/core/sql/executor/org_trafodion_sql_HTableClient.h
index e3c8837..b8cff61 100644
--- a/core/sql/executor/org_trafodion_sql_HTableClient.h
+++ b/core/sql/executor/org_trafodion_sql_HTableClient.h
@@ -16,10 +16,10 @@ extern "C" {
 /*
  * Class:     org_trafodion_sql_HTableClient
  * Method:    setResultInfo
- * Signature: (J[I[I[I[I[I[I[J[[B[[B[III)I
+ * Signature: (J[I[I[I[I[I[I[J[[B[[B[[B[[B[III)I
  */
 JNIEXPORT jint JNICALL Java_org_trafodion_sql_HTableClient_setResultInfo
-  (JNIEnv *, jobject, jlong, jintArray, jintArray, jintArray, jintArray, jintArray, jintArray, jlongArray, jobjectArray, jobjectArray, jintArray, jint, jint);
+  (JNIEnv *, jobject, jlong, jintArray, jintArray, jintArray, jintArray, jintArray, jintArray, jlongArray, jobjectArray, jobjectArray, jobjectArray, jobjectArray, jintArray, jint, jint);
 
 /*
  * Class:     org_trafodion_sql_HTableClient

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/c4fe7987/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
----------------------------------------------------------------------
diff --git a/core/sql/src/main/java/org/trafodion/sql/HTableClient.java b/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
index 12d134c..7dae2b8 100644
--- a/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
+++ b/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
@@ -129,6 +129,8 @@ public class HTableClient {
 	byte[][] kvBuffer = null;
 	byte[][] rowIDs = null;
 	int[] kvsPerRow = null;
+        byte[][] kvFamArray = null;
+        byte[][] kvQualArray = null;
         static ExecutorService executorService = null;
         Future future = null;
 	boolean preFetch = false;
@@ -1242,6 +1244,8 @@ public class HTableClient {
 			kvFamOffset = new int[numTotalCells];
 			kvTimestamp = new long[numTotalCells];
 			kvBuffer = new byte[numTotalCells][];
+                        kvFamArray = new byte[numTotalCells][];
+                        kvQualArray = new byte[numTotalCells][];
 		}
                
 		if (rowIDs == null || (rowIDs != null &&
@@ -1271,6 +1275,8 @@ public class HTableClient {
 				kvFamOffset[cellNum] = kv.getFamilyOffset();
 				kvTimestamp[cellNum] = kv.getTimestamp();
 				kvBuffer[cellNum] = kv.getValueArray();
+                                kvFamArray[cellNum] = kv.getFamilyArray();
+                                kvQualArray[cellNum] = kv.getQualifierArray();
 				colFound = true;
 			}
 		}
@@ -1282,11 +1288,11 @@ public class HTableClient {
 		if (cellsReturned == 0)
 			setResultInfo(jniObject, null, null,
 				null, null, null, null,
-				null, null, rowIDs, kvsPerRow, cellsReturned, rowsReturned);
+				null, null, null, null, rowIDs, kvsPerRow, cellsReturned, rowsReturned);
 		else 
 			setResultInfo(jniObject, kvValLen, kvValOffset,
 				kvQualLen, kvQualOffset, kvFamLen, kvFamOffset,
-				kvTimestamp, kvBuffer, rowIDs, kvsPerRow, cellsReturned, rowsReturned);
+				kvTimestamp, kvBuffer, kvFamArray, kvQualArray, rowIDs, kvsPerRow, cellsReturned, rowsReturned);
 		return rowsReturned;	
 	}		
 	
@@ -1294,6 +1300,7 @@ public class HTableClient {
 			throws IOException {
 		int rowsReturned = 1;
 		int numTotalCells;
+
 		if (numColsInScan == 0)
 			numTotalCells = result.size();
 		else
@@ -1316,6 +1323,8 @@ public class HTableClient {
 			kvFamOffset = new int[numTotalCells];
 			kvTimestamp = new long[numTotalCells];
 			kvBuffer = new byte[numTotalCells][];
+                        kvFamArray = new byte[numTotalCells][];
+                        kvQualArray = new byte[numTotalCells][];
 		}
 		if (rowIDs == null)
 		{
@@ -1342,15 +1351,17 @@ public class HTableClient {
 			kvFamOffset[colNum] = kv.getFamilyOffset();
 			kvTimestamp[colNum] = kv.getTimestamp();
 			kvBuffer[colNum] = kv.getValueArray();
+                        kvFamArray[colNum] = kv.getFamilyArray();
+                        kvQualArray[colNum] = kv.getQualifierArray();
 		}
 		if (numColsReturned == 0)
 			setResultInfo(jniObject, null, null,
 				null, null, null, null,
-				null, null, rowIDs, kvsPerRow, numColsReturned, rowsReturned);
+				null, null, null, null, rowIDs, kvsPerRow, numColsReturned, rowsReturned);
 		else
 			setResultInfo(jniObject, kvValLen, kvValOffset,
 				kvQualLen, kvQualOffset, kvFamLen, kvFamOffset,
-				kvTimestamp, kvBuffer, rowIDs, kvsPerRow, numColsReturned, rowsReturned);
+				kvTimestamp, kvBuffer, kvFamArray, kvQualArray, rowIDs, kvsPerRow, numColsReturned, rowsReturned);
 		return rowsReturned;	
 	}		
 	
@@ -1876,7 +1887,10 @@ public class HTableClient {
 				int[] kvQualLen, int[] kvQualOffset,
 				int[] kvFamLen, int[] kvFamOffset,
   				long[] timestamp, 
-				byte[][] kvBuffer, byte[][] rowIDs,
+				byte[][] kvBuffer, 
+                                byte[][] kvFamArray,
+                                byte[][] kvQualArray,
+                                byte[][] rowIDs,
 				int[] kvsPerRow, int numCellsReturned,
 				int rowsReturned);
 


[2/2] incubator-trafodion git commit: Merge [TRAFODION-2801] PR-1294 select count(*) with cqd hbase_coprocessors off

Posted by su...@apache.org.
Merge [TRAFODION-2801] PR-1294 select count(*) with cqd hbase_coprocessors off


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/89433fba
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/89433fba
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/89433fba

Branch: refs/heads/master
Commit: 89433fbabf03b6a215d87c20aba9320ad451fbee
Parents: d820854 c4fe798
Author: Suresh Subbiah <su...@apache.org>
Authored: Fri Nov 10 05:40:49 2017 +0000
Committer: Suresh Subbiah <su...@apache.org>
Committed: Fri Nov 10 05:40:49 2017 +0000

----------------------------------------------------------------------
 core/sql/executor/HBaseClient_JNI.cpp           | 176 +++++++++++++------
 core/sql/executor/HBaseClient_JNI.h             |  13 +-
 .../executor/org_trafodion_sql_HTableClient.h   |   4 +-
 .../java/org/trafodion/sql/HTableClient.java    |  24 ++-
 4 files changed, 152 insertions(+), 65 deletions(-)
----------------------------------------------------------------------