@@ -118,7 +118,7 @@ void CArrowChunkIterator::initColumnConverters()
118118
119119 ArrowArrayView* array = m_ipcArrowArrayViewVec[m_currentBatchIndex]->children [i];
120120
121- ArrowStringView snowflakeLogicalType;
121+ struct ArrowStringView snowflakeLogicalType = ArrowCharView ( nullptr ) ;
122122 const char * metadata = m_ipcArrowSchema->children [i]->metadata ;
123123 returnCode = ArrowMetadataGetValue (metadata, ArrowCharView (" logicalType" ), &snowflakeLogicalType);
124124 SF_CHECK_ARROW_RC (returnCode, " [Snowflake Exception] error getting 'logicalType' from Arrow metadata, error code: %d" , returnCode);
@@ -131,17 +131,17 @@ void CArrowChunkIterator::initColumnConverters()
131131 {
132132 case SnowflakeType::Type::FIXED:
133133 {
134- ArrowStringView scaleString;
135- ArrowStringView precisionString;
134+ struct ArrowStringView scaleString = ArrowCharView ( nullptr ) ;
135+ struct ArrowStringView precisionString = ArrowCharView ( nullptr ) ;
136136 int scale = 0 ;
137137 int precision = 38 ;
138138 if (metadata != nullptr ) {
139139 returnCode = ArrowMetadataGetValue (metadata, ArrowCharView (" scale" ), &scaleString);
140140 SF_CHECK_ARROW_RC (returnCode, " [Snowflake Exception] error getting 'scale' from Arrow metadata, error code: %d" , returnCode);
141141 returnCode = ArrowMetadataGetValue (metadata, ArrowCharView (" precision" ), &precisionString);
142142 SF_CHECK_ARROW_RC (returnCode, " [Snowflake Exception] error getting 'precision' from Arrow metadata, error code: %d" , returnCode);
143- scale = std::stoi (scaleString.data );
144- precision = std::stoi (precisionString.data );
143+ scale = std::stoi (std::string ( scaleString.data , scaleString. size_bytes ) );
144+ precision = std::stoi (std::string ( precisionString.data , precisionString. size_bytes ) );
145145 }
146146
147147 switch (columnSchemaView.type )
@@ -271,10 +271,10 @@ void CArrowChunkIterator::initColumnConverters()
271271 {
272272 int scale = 9 ;
273273 if (metadata != nullptr ) {
274- ArrowStringView scaleString;
274+ struct ArrowStringView scaleString = ArrowCharView ( nullptr ) ;
275275 returnCode = ArrowMetadataGetValue (metadata, ArrowCharView (" scale" ), &scaleString);
276276 SF_CHECK_ARROW_RC (returnCode, " [Snowflake Exception] error getting 'scale' from Arrow metadata, error code: %d" , returnCode);
277- scale = std::stoi (scaleString.data );
277+ scale = std::stoi (std::string ( scaleString.data , scaleString. size_bytes ) );
278278 }
279279 switch (columnSchemaView.type )
280280 {
@@ -305,10 +305,10 @@ void CArrowChunkIterator::initColumnConverters()
305305 {
306306 int scale = 9 ;
307307 if (metadata != nullptr ) {
308- ArrowStringView scaleString;
308+ struct ArrowStringView scaleString = ArrowCharView ( nullptr ) ;
309309 returnCode = ArrowMetadataGetValue (metadata, ArrowCharView (" scale" ), &scaleString);
310310 SF_CHECK_ARROW_RC (returnCode, " [Snowflake Exception] error getting 'scale' from Arrow metadata, error code: %d" , returnCode);
311- scale = std::stoi (scaleString.data );
311+ scale = std::stoi (std::string ( scaleString.data , scaleString. size_bytes ) );
312312 }
313313 switch (columnSchemaView.type )
314314 {
@@ -364,10 +364,10 @@ void CArrowChunkIterator::initColumnConverters()
364364 {
365365 int scale = 9 ;
366366 if (metadata != nullptr ) {
367- ArrowStringView scaleString;
367+ struct ArrowStringView scaleString = ArrowCharView ( nullptr ) ;
368368 returnCode = ArrowMetadataGetValue (metadata, ArrowCharView (" scale" ), &scaleString);
369369 SF_CHECK_ARROW_RC (returnCode, " [Snowflake Exception] error getting 'scale' from Arrow metadata, error code: %d" , returnCode);
370- scale = std::stoi (scaleString.data );
370+ scale = std::stoi (std::string ( scaleString.data , scaleString. size_bytes ) );
371371 }
372372 switch (columnSchemaView.type )
373373 {
@@ -403,17 +403,17 @@ void CArrowChunkIterator::initColumnConverters()
403403
404404 case SnowflakeType::Type::TIMESTAMP_TZ:
405405 {
406- ArrowStringView scaleString;
407- ArrowStringView byteLengthString;
406+ struct ArrowStringView scaleString = ArrowCharView ( nullptr ) ;
407+ struct ArrowStringView byteLengthString = ArrowCharView ( nullptr ) ;
408408 int scale = 9 ;
409409 int byteLength = 16 ;
410410 if (metadata != nullptr ) {
411411 returnCode = ArrowMetadataGetValue (metadata, ArrowCharView (" scale" ), &scaleString);
412412 SF_CHECK_ARROW_RC (returnCode, " [Snowflake Exception] error getting 'scale' from Arrow metadata, error code: %d" , returnCode);
413413 returnCode = ArrowMetadataGetValue (metadata, ArrowCharView (" byteLength" ), &byteLengthString);
414414 SF_CHECK_ARROW_RC (returnCode, " [Snowflake Exception] error getting 'byteLength' from Arrow metadata, error code: %d" , returnCode);
415- scale = std::stoi (scaleString.data );
416- byteLength = std::stoi (byteLengthString.data );
415+ scale = std::stoi (std::string ( scaleString.data , scaleString. size_bytes ) );
416+ byteLength = std::stoi (std::string ( byteLengthString.data , byteLengthString. size_bytes ) );
417417 }
418418 switch (byteLength)
419419 {
0 commit comments