You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by an...@apache.org on 2016/09/11 20:23:01 UTC

[1/2] incubator-trafodion git commit: jira TRAFODION-1755 mxosrvr crashes during explain using EXPLAIN_STMT syntax

Repository: incubator-trafodion
Updated Branches:
  refs/heads/master 35342a4b9 -> 9e8c75fc7


jira TRAFODION-1755 mxosrvr crashes during explain using EXPLAIN_STMT syntax

mxosrvr crashes when using the explain_stmt option
select * from table(explain(null, 'EXPLAIN_STMT=<stmt>'));


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

Branch: refs/heads/master
Commit: 036347428361379dede91d861f7f639516292a0d
Parents: 35342a4
Author: Anoop Sharma <an...@esgyn.com>
Authored: Sat Sep 10 20:06:03 2016 +0000
Committer: Anoop Sharma <an...@esgyn.com>
Committed: Sat Sep 10 20:06:03 2016 +0000

----------------------------------------------------------------------
 core/sql/executor/ExExeUtilCli.cpp |  8 +++++---
 core/sql/executor/ExExplain.cpp    | 11 +++++++----
 core/sql/sqlci/SqlCmd.cpp          |  6 ++++--
 3 files changed, 16 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/03634742/core/sql/executor/ExExeUtilCli.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilCli.cpp b/core/sql/executor/ExExeUtilCli.cpp
index d456ede..1e989fb 100644
--- a/core/sql/executor/ExExeUtilCli.cpp
+++ b/core/sql/executor/ExExeUtilCli.cpp
@@ -626,9 +626,10 @@ Lng32 ExeCliInterface::setupExplainData(SQLMODULE_ID * module,
   // get explain fragment.
   explainDataLen_ = 50000; // start with 50K bytes
   Int32 retExplainLen = 0;
-  explainData_ = new(getHeap()) char[explainDataLen_];
+  explainData_ = new(getHeap()) char[explainDataLen_+1];
   retcode = SQL_EXEC_GetExplainData(stmt,
-                                    explainData_, explainDataLen_, &retExplainLen
+                                    explainData_, explainDataLen_+1, 
+                                    &retExplainLen
                                     );
   if (retcode == -CLI_GENCODE_BUFFER_TOO_SMALL)
     {
@@ -638,7 +639,8 @@ Lng32 ExeCliInterface::setupExplainData(SQLMODULE_ID * module,
       explainData_ = new(getHeap()) char[explainDataLen_ + 1];
 
       retcode = SQL_EXEC_GetExplainData(stmt,
-                                        explainData_, explainDataLen_, &retExplainLen
+                                        explainData_, explainDataLen_+1, 
+                                        &retExplainLen
                                         );
     }
   

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/03634742/core/sql/executor/ExExplain.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExplain.cpp b/core/sql/executor/ExExplain.cpp
index c0b5d0c..cb29821 100644
--- a/core/sql/executor/ExExplain.cpp
+++ b/core/sql/executor/ExExplain.cpp
@@ -1651,9 +1651,10 @@ short ExExplainTcb::getExplainData(
   // data stored is explain repos header followed by actual explain tdb data.
   Int32 storedExplLen = sizeof(ExplainReposInfo) + fragLen;
   Lng32 encodedFragLen = str_encoded_len(storedExplLen);
-  *ret_explain_len = encodedFragLen  + 1 /*null terminator*/;
+  *ret_explain_len = encodedFragLen;
   
-  if ((! explain_ptr) || (explain_buf_len < *ret_explain_len))
+  if ((! explain_ptr) || 
+      (explain_buf_len < (*ret_explain_len + 1/*null terminator*/)))
     {
       cliRC = -CLI_GENCODE_BUFFER_TOO_SMALL;
 
@@ -1671,6 +1672,8 @@ short ExExplainTcb::getExplainData(
 
   // encode it before returning
   str_encode(explain_ptr, encodedFragLen, storedExplData, storedExplLen);
+
+  // null terminate explain fragment
   explain_ptr[encodedFragLen] = 0;
 
   NADELETEBASIC(storedExplData, heap);
@@ -1738,9 +1741,9 @@ short ExExplainTcb::getExplainFromRepos(char * qid, Lng32 qidLen)
   if (vi->get(0, ptr, len))
     goto label_error2;
   
-  explainFragLen_ = str_decoded_len(len-1); // remove trailing null terminator
+  explainFragLen_ = str_decoded_len(len); // remove trailing null terminator
   explainFrag_ = new(getHeap()) char[explainFragLen_];
-  if (str_decode(explainFrag_, explainFragLen_, ptr, len-1) < 0)
+  if (str_decode(explainFrag_, explainFragLen_, ptr, len) < 0)
     {
       diagsArea = pEntryDown->getAtp()->getDiagsArea();
       ExRaiseSqlError(getGlobals()->getDefaultHeap(), 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/03634742/core/sql/sqlci/SqlCmd.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlci/SqlCmd.cpp b/core/sql/sqlci/SqlCmd.cpp
index c21531c..be0fc05 100644
--- a/core/sql/sqlci/SqlCmd.cpp
+++ b/core/sql/sqlci/SqlCmd.cpp
@@ -715,7 +715,8 @@ short SqlCmd::updateRepos(SqlciEnv * sqlci_env, SQLSTMT_ID * stmt, char * queryI
   Int32 retExplainLen = 0;
   char * explainData = new char[explainDataLen + 1];
   retcode = SQL_EXEC_GetExplainData(stmt,
-                                    explainData, explainDataLen, &retExplainLen
+                                    explainData, explainDataLen+1, 
+                                    &retExplainLen
                                     );
   if (retcode == -CLI_GENCODE_BUFFER_TOO_SMALL)
     {
@@ -726,7 +727,8 @@ short SqlCmd::updateRepos(SqlciEnv * sqlci_env, SQLSTMT_ID * stmt, char * queryI
 
       SqlCmd::clearCLIDiagnostics();
       retcode = SQL_EXEC_GetExplainData(stmt,
-                                        explainData, explainDataLen, &retExplainLen
+                                        explainData, explainDataLen+1, 
+                                        &retExplainLen
                                         );
     }
   


[2/2] incubator-trafodion git commit: Merge [TRAFODION-1755] PR-694 mxosrvr crashes during explain

Posted by an...@apache.org.
Merge [TRAFODION-1755] PR-694 mxosrvr crashes during explain


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

Branch: refs/heads/master
Commit: 9e8c75fc794961fae39310924833c1ddb82e09d6
Parents: 35342a4 0363474
Author: Anoop Sharma <an...@esgyn.com>
Authored: Sun Sep 11 20:22:46 2016 +0000
Committer: Anoop Sharma <an...@esgyn.com>
Committed: Sun Sep 11 20:22:46 2016 +0000

----------------------------------------------------------------------
 core/sql/executor/ExExeUtilCli.cpp |  8 +++++---
 core/sql/executor/ExExplain.cpp    | 11 +++++++----
 core/sql/sqlci/SqlCmd.cpp          |  6 ++++--
 3 files changed, 16 insertions(+), 9 deletions(-)
----------------------------------------------------------------------