[ 
https://issues.apache.org/jira/browse/TRAFODION-2231?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15687575#comment-15687575
 ] 

ASF GitHub Bot commented on TRAFODION-2231:
-------------------------------------------

Github user selvaganesang commented on a diff in the pull request:

    https://github.com/apache/incubator-trafodion/pull/725#discussion_r89186340
  
    --- Diff: core/sqf/src/tm/tmddlrequests.cpp ---
    @@ -34,55 +34,76 @@ using namespace std;
     * Signature: ([B)V
     */
     
    -JNIEXPORT jint JNICALL 
Java_org_apache_hadoop_hbase_client_transactional_RMInterface_createTableReq
    -  (JNIEnv *pp_env, jobject pv_object, jbyteArray pv_tableDescriptor, 
jobjectArray pv_keys, jint pv_numSplits, jint pv_keyLength, jlong pv_transid, 
jbyteArray pv_tblname){
    +JNIEXPORT jstring JNICALL 
Java_org_apache_hadoop_hbase_client_transactional_RMInterface_createTableReq
    +  (JNIEnv *pp_env, jobject pv_object, jbyteArray pv_tableDescriptor, 
jobjectArray pv_keys, jint pv_numSplits, jint pv_keyLength, jlong pv_transid, 
jbyteArray pv_tblname)
    +{
     
    -   char la_tbldesc[TM_MAX_DDLREQUEST_STRING];
    -   char la_tblname[TM_MAX_DDLREQUEST_STRING];
    -   char* str_key;
    +   char *la_err_str = 0;
    +   int la_err_len = 0;
    +   char* str_key = 0;
        str_key = new char[TM_MAX_DDLREQUEST_STRING];
        char** la_keys;
        la_keys = new char *[TM_MAX_DDLREQUEST_STRING];
        int lv_error = FEOK;
     
        int lv_tblname_len = pp_env->GetArrayLength(pv_tblname);
    -   if(lv_tblname_len > TM_MAX_DDLREQUEST_STRING) {
    -      cout << "Table name length is larger than max allowed" << endl;
    +   if(lv_tblname_len > TM_MAX_DDLREQUEST_STRING)
    +   {
    +     jstring lv_err_str = pp_env->NewStringUTF("Table name length is 
larger than max allowed");
    +     return lv_err_str;
        }
    -   else {
    -      int lv_tbldesc_length = pp_env->GetArrayLength(pv_tableDescriptor);
    -      memset(la_tbldesc, 0, lv_tbldesc_length);
    -      jbyte *lp_tbldesc = pp_env->GetByteArrayElements(pv_tableDescriptor, 
0);
    -      memcpy(la_tbldesc, lp_tbldesc, lv_tbldesc_length);
     
    -      memset(la_tblname, 0, lv_tblname_len < TM_MAX_DDLREQUEST_STRING ? 
lv_tblname_len : TM_MAX_DDLREQUEST_STRING);
    -      jbyte *lp_tblname = pp_env->GetByteArrayElements(pv_tblname, 0);
    -      memcpy(la_tblname, lp_tblname, lv_tblname_len < 
TM_MAX_DDLREQUEST_STRING ? lv_tblname_len : TM_MAX_DDLREQUEST_STRING -1 );
    +   int lv_tbldesc_length = pp_env->GetArrayLength(pv_tableDescriptor);
    +   jbyte *lp_tbldesc = pp_env->GetByteArrayElements(pv_tableDescriptor, 0);
    +   jbyte *lp_tblname = pp_env->GetByteArrayElements(pv_tblname, 0);
    +  
    +   long lv_transid = (long) pv_transid;
     
    -      long lv_transid = (long) pv_transid;
    +   // Keys for Salted Tables
    +   int lv_numSplits = (int) pv_numSplits;
    +   int lv_keyLength = (int) pv_keyLength;
     
    -      // Keys for Salted Tables
    -      int lv_numSplits = (int) pv_numSplits;
    -      int lv_keyLength = (int) pv_keyLength;
    +   for(int i=0; i<lv_numSplits; i++)
    +   {
    +     jbyteArray jba_keyarray = 
(jbyteArray)(pp_env->GetObjectArrayElement((jobjectArray)pv_keys, i));
    +     int lv_key_len = pp_env->GetArrayLength(jba_keyarray);
    +     pp_env->GetByteArrayRegion(jba_keyarray, 0, lv_key_len, 
(jbyte*)str_key);
    --- End diff --
    
    str_key needs to be pre-allocated. Consider moving directly to la_keys[i]. 
Otherwise this would lead to memory corruption
    



> DDL create/drop detailed error string is not propagated
> -------------------------------------------------------
>
>                 Key: TRAFODION-2231
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-2231
>             Project: Apache Trafodion
>          Issue Type: Bug
>          Components: dtm
>            Reporter: Prashanth Vasudev
>            Assignee: Prashanth Vasudev
>             Fix For: 2.1-incubating
>
>
> TRAFODION-2148 takes care of reporting error code in failure scenario, 
> however the cause/error string or stack trace is missing for additional info.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to