From e302d98150d85a69ae08aba4cbf025c3bf032344 Mon Sep 17 00:00:00 2001 From: Parth Chandra Date: Thu, 21 Aug 2014 22:22:15 -0700 Subject: DRILL-1303 - Fix Drill Client assertion on getting bad metadata --- contrib/native/client/example/querySubmitter.cpp | 4 ++-- contrib/native/client/src/include/drill/recordBatch.hpp | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'contrib') diff --git a/contrib/native/client/example/querySubmitter.cpp b/contrib/native/client/example/querySubmitter.cpp index f886e819f..7154ddaf8 100644 --- a/contrib/native/client/example/querySubmitter.cpp +++ b/contrib/native/client/example/querySubmitter.cpp @@ -66,7 +66,7 @@ Drill::status_t QueryResultsListener(void* ctx, Drill::RecordBatch* b, Drill::Dr if(bTestCancel){ return Drill::QRY_FAILURE; }else{ - return Drill::QRY_SUCCESS ; + return Drill::QRY_SUCCESS ; } }else{ std::cerr<< "ERROR: " << err->msg << std::endl; @@ -334,7 +334,7 @@ int main(int argc, char* argv[]) { if(bTestCancel && row%100==1){ pRecIter->cancel(); printf("Application canceled the query.\n"); - } + } } if(ret!=Drill::QRY_NO_MORE_DATA && ret!=Drill::QRY_CANCEL){ std::cerr<< pRecIter->getError() << std::endl; diff --git a/contrib/native/client/src/include/drill/recordBatch.hpp b/contrib/native/client/src/include/drill/recordBatch.hpp index 1c89cea2a..de652029f 100644 --- a/contrib/native/client/src/include/drill/recordBatch.hpp +++ b/contrib/native/client/src/include/drill/recordBatch.hpp @@ -72,6 +72,7 @@ class SlicedByteBuf{ public: //TODO: check the size and offset parameters. What is the largest they can be? SlicedByteBuf(const ByteBuf_t b, size_t offset, size_t length){ + assert(length>0); this->m_buffer=b; this->m_start=offset; this->m_end=offset+length-1; @@ -80,9 +81,10 @@ class SlicedByteBuf{ // Carve a sliced buffer out of another sliced buffer SlicedByteBuf(const SlicedByteBuf& sb, size_t offset, size_t length){ + assert(length>0); this->m_buffer=sb.m_buffer; this->m_start=sb.m_start+offset; - this->m_end=sb.m_start+offset+length; + this->m_end=sb.m_start+offset+length-1; this->m_length=length; } @@ -652,7 +654,7 @@ class DECLSPEC_DRILL_CLIENT ValueVectorVarWidth:public ValueVectorBase{ ValueVectorVarWidth(SlicedByteBuf *b, size_t rowCount):ValueVectorBase(b, rowCount){ size_t offsetEnd = (rowCount+1)*sizeof(uint32_t); this->m_pOffsetArray= new SlicedByteBuf(*b, 0, offsetEnd); - this->m_pData= new SlicedByteBuf(*b, offsetEnd, b->getLength()); + this->m_pData= new SlicedByteBuf(*b, offsetEnd, b->getLength()-offsetEnd); } ~ValueVectorVarWidth(){ delete this->m_pOffsetArray; -- cgit v1.2.3