@@ -337,7 +337,9 @@ void ArrowStorage::fetchVarLenArrayData(const TableData& table,
337337 }
338338}
339339
340- TableFragmentsInfo ArrowStorage::getTableMetadata (int db_id, int table_id) const {
340+ std::shared_ptr<const TableFragmentsInfo> ArrowStorage::getTableMetadata (
341+ int db_id,
342+ int table_id) const {
341343 mapd_shared_lock<mapd_shared_mutex> data_lock (data_mutex_);
342344 CHECK_EQ (db_id, db_id_);
343345 CHECK_EQ (tables_.count (table_id), (size_t )1 );
@@ -349,11 +351,11 @@ TableFragmentsInfo ArrowStorage::getTableMetadata(int db_id, int table_id) const
349351 return getEmptyTableMetadata (table_id);
350352 }
351353
352- TableFragmentsInfo res;
353- res. setPhysicalNumTuples (table.row_count );
354+ std::shared_ptr< TableFragmentsInfo> res = std::make_shared<TableFragmentsInfo>() ;
355+ res-> setPhysicalNumTuples (table.row_count );
354356 for (size_t frag_idx = 0 ; frag_idx < table.fragments .size (); ++frag_idx) {
355357 auto & frag = table.fragments [frag_idx];
356- auto & frag_info = res. fragments .emplace_back ();
358+ auto & frag_info = res-> fragments .emplace_back ();
357359 frag_info.fragmentId = static_cast <int >(frag_idx + 1 );
358360 frag_info.physicalTableId = table_id;
359361 frag_info.setPhysicalNumTuples (frag.row_count );
@@ -364,23 +366,24 @@ TableFragmentsInfo ArrowStorage::getTableMetadata(int db_id, int table_id) const
364366 frag_info.setChunkMetadata (columnId (col_idx), frag.metadata [col_idx]);
365367 }
366368 }
367- res. setTableStats (table.table_stats );
369+ res-> setTableStats (table.table_stats );
368370 return res;
369371}
370372
371- TableFragmentsInfo ArrowStorage::getEmptyTableMetadata (int table_id) const {
372- TableFragmentsInfo res;
373- res.setPhysicalNumTuples (0 );
373+ std::shared_ptr<TableFragmentsInfo> ArrowStorage::getEmptyTableMetadata (
374+ int table_id) const {
375+ std::shared_ptr<TableFragmentsInfo> res = std::make_shared<TableFragmentsInfo>();
376+ res->setPhysicalNumTuples (0 );
374377
375378 // Executor requires dummy empty fragment for empty tables
376- FragmentInfo& empty_frag = res. fragments .emplace_back ();
379+ FragmentInfo& empty_frag = res-> fragments .emplace_back ();
377380 empty_frag.fragmentId = 0 ;
378381 empty_frag.setPhysicalNumTuples (0 );
379382 empty_frag.deviceIds .push_back (0 ); // Data_Namespace::DISK_LEVEL
380383 empty_frag.deviceIds .push_back (0 ); // Data_Namespace::CPU_LEVEL
381384 empty_frag.deviceIds .push_back (0 ); // Data_Namespace::GPU_LEVEL
382385 empty_frag.physicalTableId = table_id;
383- res. fragments .push_back (empty_frag);
386+ res-> fragments .push_back (empty_frag);
384387
385388 return res;
386389}
@@ -828,8 +831,6 @@ void ArrowStorage::refragmentTable(TableData& table,
828831 meta->fillChunkStats (computeStats (
829832 col_arr->Slice (frag.offset , frag.row_count * elems_count), col_type));
830833 } else {
831- int32_t min = 0 ;
832- int32_t max = -1 ;
833834 meta->fillChunkStats (0 , -1 , /* has_nulls=*/ true );
834835 }
835836 frag.metadata [col_idx] = meta;
0 commit comments