@@ -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