From f75ea3f7f101f67089a4874b750c58e8a3f24b39 Mon Sep 17 00:00:00 2001 From: Liu Ming Date: Mon, 6 Aug 2018 00:30:29 -0400 Subject: [PATCH 1/2] [TRAFODION-3173] enhance ExeCliInterface fetchAllRows to save the data type --- core/sql/executor/ExExeUtilCli.cpp | 26 ++++++++++++++++++++++++-- core/sql/executor/ExExeUtilCli.h | 3 +++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/core/sql/executor/ExExeUtilCli.cpp b/core/sql/executor/ExExeUtilCli.cpp index d10ef194df..d39f21b805 100644 --- a/core/sql/executor/ExExeUtilCli.cpp +++ b/core/sql/executor/ExExeUtilCli.cpp @@ -64,6 +64,13 @@ void OutputInfo::insert(Lng32 index, char * data, Lng32 len) len_[index] = len; } +void OutputInfo::insert(Lng32 index, char * data, Lng32 len, Lng32 type, Lng32 *indOffset , Lng32 *varOffset ) +{ + data_[index] = data; + len_[index] = len; + type_[index] = type; +} + char * OutputInfo::get(Lng32 index) { if (index < numEntries_) @@ -84,6 +91,19 @@ short OutputInfo::get(Lng32 index, char* &data, Lng32 &len) return -1; } +short OutputInfo::get(Lng32 index, char* &data, Lng32 &len, Lng32 &type, Lng32 *indOffset , Lng32 *varOffset ) +{ + if (index < numEntries_) + { + data = data_[index]; + len = len_[index]; + type = type_[index]; + return 0; + } + + return -1; +} + void OutputInfo::dealloc(CollHeap * heap) { for (Int32 i = 0; i < numEntries_; i++) @@ -1278,8 +1298,9 @@ short ExeCliInterface::fetchAllRows(Queue * &infoList, { char * ptr; Lng32 len; + Lng32 type; + getAttributes(j+1, FALSE, type, len, NULL, NULL); getPtrAndLen(j+1, ptr, len); - NABoolean nullTerminate = DFS2REC::is8bitCharacter(outputAttrs_[j].fsDatatype_); @@ -1301,7 +1322,8 @@ short ExeCliInterface::fetchAllRows(Queue * &infoList, if (nullTerminate) r[len] = 0; } - oi->insert(j, r, len); +//comehere add type + oi->insert(j, r, len, type); } infoList->insert(oi); diff --git a/core/sql/executor/ExExeUtilCli.h b/core/sql/executor/ExExeUtilCli.h index 62fff82669..09eb41ed1b 100644 --- a/core/sql/executor/ExExeUtilCli.h +++ b/core/sql/executor/ExExeUtilCli.h @@ -33,13 +33,16 @@ class OutputInfo void dealloc(CollHeap * heap); void insert(Lng32 index, char * data); void insert(Lng32 index, char * data, Lng32 len); + void insert(Lng32 index, char * data, Lng32 len,Lng32 type,Lng32 *indOffset = NULL, Lng32 *varOffset = NULL); char * get(Lng32 index); short get(Lng32 index, char* &data, Lng32 &len); + short get(Lng32 index, char* &data, Lng32 &len, Lng32 &type,Lng32 *indOffset, Lng32 *varOffset); private: Lng32 numEntries_; char * data_[MAX_OUTPUT_ENTRIES]; Lng32 len_[MAX_OUTPUT_ENTRIES]; + Lng32 type_[MAX_OUTPUT_ENTRIES]; }; class ExeCliInterface : public NABasicObject From 966657d9ba43639dc9739976ba41c35e5aec59ad Mon Sep 17 00:00:00 2001 From: Liu Ming Date: Mon, 6 Aug 2018 02:41:13 -0400 Subject: [PATCH 2/2] remove debug info --- core/sql/executor/ExExeUtilCli.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/core/sql/executor/ExExeUtilCli.cpp b/core/sql/executor/ExExeUtilCli.cpp index d39f21b805..2a0b9e1981 100644 --- a/core/sql/executor/ExExeUtilCli.cpp +++ b/core/sql/executor/ExExeUtilCli.cpp @@ -1322,7 +1322,6 @@ short ExeCliInterface::fetchAllRows(Queue * &infoList, if (nullTerminate) r[len] = 0; } -//comehere add type oi->insert(j, r, len, type); }