You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by se...@apache.org on 2016/05/11 21:57:55 UTC
[1/2] incubator-trafodion git commit: [TRAFODION-1955] JNI
optimization at the time of compilation Additional changes and bug fix
Removed ByteArrayList JNI class
Repository: incubator-trafodion
Updated Branches:
refs/heads/master f05875519 -> dcfc8e6aa
[TRAFODION-1955] JNI optimization at the time of compilation
Additional changes and bug fix
Removed ByteArrayList JNI class
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/faf00a0f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/faf00a0f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/faf00a0f
Branch: refs/heads/master
Commit: faf00a0fcb8438774ef00ed82a1625af902b224e
Parents: cf755be
Author: selvaganesang <se...@esgyn.com>
Authored: Tue May 10 23:49:57 2016 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Tue May 10 23:49:57 2016 +0000
----------------------------------------------------------------------
core/sql/executor/HBaseClient_JNI.cpp | 223 +--------------------------
core/sql/executor/HBaseClient_JNI.h | 70 +--------
core/sql/sqlcomp/CmpSeabaseDDLtable.cpp | 3 +-
3 files changed, 7 insertions(+), 289 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/faf00a0f/core/sql/executor/HBaseClient_JNI.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/HBaseClient_JNI.cpp b/core/sql/executor/HBaseClient_JNI.cpp
index 46e413c..c4ec9a5 100644
--- a/core/sql/executor/HBaseClient_JNI.cpp
+++ b/core/sql/executor/HBaseClient_JNI.cpp
@@ -27,225 +27,6 @@
#include "QRLogger.h"
#include <signal.h>
#include "pthread.h"
-// ===========================================================================
-// ===== Class ByteArrayList
-// ===========================================================================
-
-JavaMethodInit* ByteArrayList::JavaMethods_ = NULL;
-jclass ByteArrayList::javaClass_ = 0;
-bool ByteArrayList::javaMethodsInitialized_ = false;
-pthread_mutex_t ByteArrayList::javaMethodsInitMutex_ = PTHREAD_MUTEX_INITIALIZER;
-
-
-static const char* const balErrorEnumStr[] =
-{
- "JNI NewStringUTF() in add() for writing." // BAL_ERROR_ADD_PARAM
- ,"Java exception in add() for writing." // BAL_ERROR_ADD_EXCEPTION
- ,"Java exception in get() for reading." // BAL_ERROR_GET_EXCEPTION
-};
-
-//////////////////////////////////////////////////////////////////////////////
-//
-//////////////////////////////////////////////////////////////////////////////
-char* ByteArrayList::getErrorText(BAL_RetCode errEnum)
-{
- if (errEnum < (BAL_RetCode)JOI_LAST)
- return JavaObjectInterface::getErrorText((JOI_RetCode)errEnum);
- else
- return (char*)balErrorEnumStr[errEnum-BAL_FIRST-1];
-}
-
-//////////////////////////////////////////////////////////////////////////////
-//
-//////////////////////////////////////////////////////////////////////////////
-ByteArrayList::~ByteArrayList()
-{
-// QRLogger::log(CAT_JNI_TOP, LL_DEBUG, "ByteArrayList destructor called.");
-}
-
-//////////////////////////////////////////////////////////////////////////////
-//
-//////////////////////////////////////////////////////////////////////////////
-BAL_RetCode ByteArrayList::init()
-{
- static char className[]="org/trafodion/sql/ByteArrayList";
- BAL_RetCode rc;
-
- if (isInitialized())
- return BAL_OK;
-
- if (javaMethodsInitialized_)
- return (BAL_RetCode)JavaObjectInterface::init(className, javaClass_, JavaMethods_, (Int32)JM_LAST, javaMethodsInitialized_);
- else
- {
- pthread_mutex_lock(&javaMethodsInitMutex_);
- if (javaMethodsInitialized_)
- {
- pthread_mutex_unlock(&javaMethodsInitMutex_);
- return (BAL_RetCode)JavaObjectInterface::init(className, javaClass_, JavaMethods_, (Int32)JM_LAST, javaMethodsInitialized_);
- }
- JavaMethods_ = new JavaMethodInit[JM_LAST];
-
- JavaMethods_[JM_CTOR ].jm_name = "<init>";
- JavaMethods_[JM_CTOR ].jm_signature = "()V";
- JavaMethods_[JM_ADD ].jm_name = "addElement";
- JavaMethods_[JM_ADD ].jm_signature = "([B)V";
- JavaMethods_[JM_GET ].jm_name = "getElement";
- JavaMethods_[JM_GET ].jm_signature = "(I)[B";
- JavaMethods_[JM_GETSIZE ].jm_name = "getSize";
- JavaMethods_[JM_GETSIZE ].jm_signature = "()I";
- JavaMethods_[JM_GETENTRYSIZE].jm_name = "getEntrySize";
- JavaMethods_[JM_GETENTRYSIZE].jm_signature = "(I)I";
- JavaMethods_[JM_GETENTRY ].jm_name = "getEntry";
- JavaMethods_[JM_GETENTRY].jm_signature = "(I)[B";
-
- rc = (BAL_RetCode)JavaObjectInterface::init(className, javaClass_, JavaMethods_, (Int32)JM_LAST, javaMethodsInitialized_);
- javaMethodsInitialized_ = TRUE;
- pthread_mutex_unlock(&javaMethodsInitMutex_);
- }
- return rc;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-//
-//////////////////////////////////////////////////////////////////////////////
-BAL_RetCode ByteArrayList::add(const Text& t)
-{
-// QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "ByteArrayList::add(%s) called.", t.data());
-
- int len = t.size();
- jbyteArray jba_t = jenv_->NewByteArray(len);
- if (jba_t == NULL)
- {
- GetCliGlobals()->setJniErrorStr(getErrorText(BAL_ERROR_ADD_PARAM));
- return BAL_ERROR_ADD_PARAM;
- }
- jenv_->SetByteArrayRegion(jba_t, 0, len, (const jbyte*)t.data());
-
- // void add(byte[]);
- jenv_->CallVoidMethod(javaObj_, JavaMethods_[JM_ADD].methodID, jba_t);
- jenv_->DeleteLocalRef(jba_t);
- if (jenv_->ExceptionCheck())
- {
- getExceptionDetails();
- logError(CAT_SQL_HBASE, __FILE__, __LINE__);
- return BAL_ERROR_ADD_EXCEPTION;
- }
- return BAL_OK;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-//
-//////////////////////////////////////////////////////////////////////////////
-BAL_RetCode ByteArrayList::add(const TextVec& vec)
-{
- for (std::vector<Text>::const_iterator it = vec.begin() ; it != vec.end(); ++it)
- {
- Text str(*it);
- add(str);
- }
-
- return BAL_OK;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-//
-//////////////////////////////////////////////////////////////////////////////
-BAL_RetCode ByteArrayList::addElement(const char* data, int keyLength)
-{
- Text str(data, keyLength);
- add(str);
- return BAL_OK;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-//
-//////////////////////////////////////////////////////////////////////////////
-Text* ByteArrayList::get(Int32 i)
-{
- // byte[] get(i);
- jbyteArray jba_val = static_cast<jbyteArray>(jenv_->CallObjectMethod(javaObj_, JavaMethods_[JM_GET].methodID, i));
- if (jenv_->ExceptionCheck())
- {
- getExceptionDetails();
- logError(CAT_SQL_HBASE, __FILE__, __LINE__);
- return NULL;
- }
-
- if (jba_val == NULL)
- return NULL;
-
- jbyte* p_val = jenv_->GetByteArrayElements(jba_val, 0);
- int len = jenv_->GetArrayLength(jba_val);
- Text* val = new (heap_) Text((char*)p_val, len);
- jenv_->ReleaseByteArrayElements(jba_val, p_val, JNI_ABORT);
- jenv_->DeleteLocalRef(jba_val);
-
- return val;
-}
-
-Int32 ByteArrayList::getSize()
-{
- Int32 len = jenv_->CallIntMethod(javaObj_, JavaMethods_[JM_GETSIZE].methodID);
- if (jenv_->ExceptionCheck())
- {
- getExceptionDetails();
- logError(CAT_SQL_HBASE, __FILE__, __LINE__);
- return 0;
- }
- return len;
-}
-
-Int32 ByteArrayList::getEntrySize(Int32 i)
-{
- jint jidx = i;
-
- Int32 len =
- jenv_->CallIntMethod(javaObj_, JavaMethods_[JM_GETENTRYSIZE].methodID, jidx);
-
- if (jenv_->ExceptionCheck())
- {
- getExceptionDetails();
- logError(CAT_SQL_HBASE, __FILE__, __LINE__);
- return 0;
- }
- return len;
-}
-
-
-char* ByteArrayList::getEntry(Int32 i, char* buf, Int32 bufLen, Int32& datalen)
-{
- datalen = 0;
-
- jint jidx = i;
-
- jbyteArray jBuffer = static_cast<jbyteArray>
- (jenv_->CallObjectMethod(javaObj_, JavaMethods_[JM_GETENTRY].methodID, jidx));
-
- if (jenv_->ExceptionCheck())
- {
- getExceptionDetails();
- logError(CAT_SQL_HBASE, __FILE__, __LINE__);
- return NULL;
- }
-
- if (jBuffer != NULL) {
-
- datalen = jenv_->GetArrayLength(jBuffer);
-
- if (datalen > bufLen)
- // call setJniErrorStr?
- return NULL;
-
- jenv_->GetByteArrayRegion(jBuffer, 0, datalen, (jbyte*)buf);
-
- jenv_->DeleteLocalRef(jBuffer);
- }
-
- return buf;
-}
-
-
//
// ===========================================================================
// ===== Class HBaseClient_JNI
@@ -317,6 +98,7 @@ static const char* const hbcErrorEnumStr[] =
,"Java exception in checkAndDeleteRow()."
,"Row not found in checkAndDeleteRow()."
,"Preparing parameters for getKeys()."
+ ,"Preparing parameters for listAll()."
,"Preparing parameters for getRegionStats()."
};
@@ -1390,7 +1172,7 @@ NAArray<HbaseStr>* HBaseClient_JNI::listAll(NAHeap *heap, const char* pattern)
jstring js_pattern = jenv_->NewStringUTF(pattern);
if (js_pattern == NULL)
{
- GetCliGlobals()->setJniErrorStr(getErrorText(HBC_ERROR_DROP_PARAM));
+ GetCliGlobals()->setJniErrorStr(getErrorText(HBC_ERROR_LISTALL));
jenv_->PopLocalFrame(NULL);
return NULL;
}
@@ -3496,6 +3278,7 @@ NAArray<HbaseStr>* HBaseClient_JNI::getKeys(Int32 funcIndex, NAHeap *heap, const
return NULL;
}
jboolean j_useTRex = useTRex;
+ tsRecentJMFromJNI = JavaMethods_[funcIndex].jm_full_name;
jarray j_keyArray=
(jarray)jenv_->CallObjectMethod(javaObj_, JavaMethods_[funcIndex].methodID, js_tblName, j_useTRex);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/faf00a0f/core/sql/executor/HBaseClient_JNI.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/HBaseClient_JNI.h b/core/sql/executor/HBaseClient_JNI.h
index dbb454c..83f3447 100644
--- a/core/sql/executor/HBaseClient_JNI.h
+++ b/core/sql/executor/HBaseClient_JNI.h
@@ -72,78 +72,13 @@ public :
};
// ===========================================================================
-// ===== The ByteArrayList class implements access to the Java
-// ===== ByteArrayList class.
-// ===========================================================================
-
-typedef enum {
- BAL_OK = JOI_OK
- ,BAL_FIRST = JOI_LAST
- ,BAL_ERROR_ADD_PARAM = BAL_FIRST
- ,BAL_ERROR_ADD_EXCEPTION
- ,BAL_ERROR_GET_EXCEPTION
- ,BAL_LAST
-} BAL_RetCode;
-
-class ByteArrayList : public JavaObjectInterface
-{
-public:
- ByteArrayList(NAHeap *heap, jobject jObj = NULL)
- : JavaObjectInterface(heap, jObj)
- {}
-
- // Destructor
- virtual ~ByteArrayList();
-
- // Initialize JVM and all the JNI configuration.
- // Must be called.
- BAL_RetCode init();
-
- BAL_RetCode add(const Text& str);
-
- // Add a Text vector.
- BAL_RetCode add(const TextVec& vec);
-
- BAL_RetCode addElement(const char * data, int keyLength);
-
- // Get a Text element
- Text* get(Int32 i);
-
- // Get the error description.
- virtual char* getErrorText(BAL_RetCode errEnum);
-
- Int32 getSize();
- Int32 getEntrySize(Int32 i);
- char* getEntry(Int32 i, char* buf, Int32 bufLen, Int32& dataLen);
-
-
-private:
- enum JAVA_METHODS {
- JM_CTOR = 0,
- JM_ADD,
- JM_GET,
- JM_GETSIZE,
- JM_GETENTRY,
- JM_GETENTRYSIZE,
- JM_LAST
- };
-
- static jclass javaClass_;
- static JavaMethodInit* JavaMethods_;
- static bool javaMethodsInitialized_;
- // this mutex protects both JaveMethods_ and javaClass_ initialization
- static pthread_mutex_t javaMethodsInitMutex_;
-};
-
-
-// ===========================================================================
// ===== The HTableClient class implements access to the Java
// ===== HTableClient class.
// ===========================================================================
typedef enum {
HTC_OK = JOI_OK
- ,HTC_FIRST = BAL_LAST
+ ,HTC_FIRST = JOI_LAST
,HTC_DONE = HTC_FIRST
,HTC_DONE_RESULT = 1000
,HTC_DONE_DATA
@@ -167,8 +102,6 @@ typedef enum {
,HTC_ERROR_EXISTS_EXCEPTION
,HTC_ERROR_COPROC_AGGR_PARAM
,HTC_ERROR_COPROC_AGGR_EXCEPTION
- ,HTC_ERROR_COPROC_AGGR_GET_RESULT_PARAM
- ,HTC_ERROR_COPROC_AGGR_GET_RESULT_EXCEPTION
,HTC_ERROR_GRANT_PARAM
,HTC_ERROR_GRANT_EXCEPTION
,HTC_ERROR_REVOKE_PARAM
@@ -465,6 +398,7 @@ typedef enum {
,HBC_ERROR_CHECKANDDELETEROW_EXCEPTION
,HBC_ERROR_CHECKANDDELETEROW_NOTFOUND
,HBC_ERROR_GETKEYS
+ ,HBC_ERROR_LISTALL
,HBC_ERROR_REGION_STATS
,HBC_LAST
} HBC_RetCode;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/faf00a0f/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp b/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
index b1f0bdf..57e4c48 100644
--- a/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
+++ b/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
@@ -10979,7 +10979,8 @@ desc_struct* assembleDescs(NAArray<HbaseStr >* keyArray, populateFuncT func, NAM
for (Int32 i=entries-1; i>=0; i-- ) {
len = keyArray->at(i).len;
if ( len > 0 ) {
- buf = keyArray->at(i).val;
+ buf = new (heap) char[len];
+ memcpy(buf, keyArray->at(i).val, len);
} else
buf = NULL;
[2/2] incubator-trafodion git commit: Merge [TRAFODION-1955] PR-477
JNI optimization
Posted by se...@apache.org.
Merge [TRAFODION-1955] PR-477 JNI optimization
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/dcfc8e6a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/dcfc8e6a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/dcfc8e6a
Branch: refs/heads/master
Commit: dcfc8e6aad6097bc19348d3c4fbd440ad5ab3d14
Parents: f058755 faf00a0
Author: selvaganesang <se...@apache.org>
Authored: Wed May 11 21:50:24 2016 +0000
Committer: selvaganesang <se...@apache.org>
Committed: Wed May 11 21:50:24 2016 +0000
----------------------------------------------------------------------
core/sql/executor/HBaseClient_JNI.cpp | 223 +--------------------------
core/sql/executor/HBaseClient_JNI.h | 70 +--------
core/sql/sqlcomp/CmpSeabaseDDLtable.cpp | 3 +-
3 files changed, 7 insertions(+), 289 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/dcfc8e6a/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
----------------------------------------------------------------------