|
| SortedOrderFragmenter (const std::vector< int > chunkKeyPrefix, std::vector< Chunk_NS::Chunk > &chunkVec, Data_Namespace::DataMgr *dataMgr, Catalog_Namespace::Catalog *catalog, const int physicalTableId, const int shard, const size_t maxFragmentRows=DEFAULT_FRAGMENT_ROWS, const size_t maxChunkSize=DEFAULT_MAX_CHUNK_SIZE, const size_t pageSize=DEFAULT_PAGE_SIZE, const size_t maxRows=DEFAULT_MAX_ROWS, const Data_Namespace::MemoryLevel defaultInsertLevel=Data_Namespace::DISK_LEVEL) |
|
| ~SortedOrderFragmenter () override |
|
void | insertData (InsertData &insertDataStruct) override |
| appends data onto the most recently occuring fragment, creating a new one if necessary More...
|
|
void | insertDataNoCheckpoint (InsertData &insertDataStruct) override |
| Given data wrapped in an InsertData struct, inserts it into the correct partitions No locks and checkpoints taken needs to be managed externally. More...
|
|
| SortedOrderFragmenter (SortedOrderFragmenter &&)=default |
|
| SortedOrderFragmenter (const SortedOrderFragmenter &)=delete |
|
SortedOrderFragmenter & | operator= (const SortedOrderFragmenter &)=delete |
|
| InsertOrderFragmenter (const std::vector< int > chunkKeyPrefix, std::vector< Chunk_NS::Chunk > &chunkVec, Data_Namespace::DataMgr *dataMgr, Catalog_Namespace::Catalog *catalog, const int physicalTableId, const int shard, const size_t maxFragmentRows=DEFAULT_FRAGMENT_ROWS, const size_t maxChunkSize=DEFAULT_MAX_CHUNK_SIZE, const size_t pageSize=DEFAULT_PAGE_SIZE, const size_t maxRows=DEFAULT_MAX_ROWS, const Data_Namespace::MemoryLevel defaultInsertLevel=Data_Namespace::DISK_LEVEL) |
|
| ~InsertOrderFragmenter () override |
|
TableInfo | getFragmentsForQuery () override |
| returns (inside QueryInfo) object all ids and row sizes of fragments More...
|
|
void | dropFragmentsToSize (const size_t maxRows) override |
| Will truncate table to less than maxRows by dropping fragments. More...
|
|
void | updateChunkStats (const ColumnDescriptor *cd, std::unordered_map< int, ChunkStats > &stats_map) override |
| Update chunk stats. More...
|
|
int | getFragmenterId () override |
| get fragmenter's id More...
|
|
std::vector< int > | getChunkKeyPrefix () const |
|
std::string | getFragmenterType () override |
| get fragmenter's type (as string More...
|
|
size_t | getNumRows () override |
|
void | setNumRows (const size_t numTuples) override |
|
void | updateColumn (const Catalog_Namespace::Catalog *catalog, const TableDescriptor *td, const ColumnDescriptor *cd, const int fragment_id, const std::vector< uint64_t > &frag_offsets, const std::vector< ScalarTargetValue > &rhs_values, const SQLTypeInfo &rhs_type, const Data_Namespace::MemoryLevel memory_level, UpdelRoll &updel_roll) override |
|
void | updateColumns (const Catalog_Namespace::Catalog *catalog, const TableDescriptor *td, const int fragmentId, const std::vector< TargetMetaInfo > sourceMetaInfo, const std::vector< const ColumnDescriptor * > columnDescriptors, const RowDataProvider &sourceDataProvider, const size_t indexOffFragmentOffsetColumn, const Data_Namespace::MemoryLevel memoryLevel, UpdelRoll &updelRoll) override |
|
void | updateColumn (const Catalog_Namespace::Catalog *catalog, const TableDescriptor *td, const ColumnDescriptor *cd, const int fragment_id, const std::vector< uint64_t > &frag_offsets, const ScalarTargetValue &rhs_value, const SQLTypeInfo &rhs_type, const Data_Namespace::MemoryLevel memory_level, UpdelRoll &updel_roll) override |
|
void | updateColumnMetadata (const ColumnDescriptor *cd, FragmentInfo &fragment, std::shared_ptr< Chunk_NS::Chunk > chunk, const bool null, const double dmax, const double dmin, const int64_t lmax, const int64_t lmin, const SQLTypeInfo &rhs_type, UpdelRoll &updel_roll) override |
|
void | updateMetadata (const Catalog_Namespace::Catalog *catalog, const MetaDataKey &key, UpdelRoll &updel_roll) override |
|
void | compactRows (const Catalog_Namespace::Catalog *catalog, const TableDescriptor *td, const int fragment_id, const std::vector< uint64_t > &frag_offsets, const Data_Namespace::MemoryLevel memory_level, UpdelRoll &updel_roll) override |
|
const std::vector< uint64_t > | getVacuumOffsets (const std::shared_ptr< Chunk_NS::Chunk > &chunk) override |
|
auto | getChunksForAllColumns (const TableDescriptor *td, const FragmentInfo &fragment, const Data_Namespace::MemoryLevel memory_level) |
|
virtual | ~AbstractFragmenter () |
|
Definition at line 22 of file SortedOrderFragmenter.h.
void Fragmenter_Namespace::SortedOrderFragmenter::sortData |
( |
InsertData & |
insertDataStruct | ) |
|
|
protectedvirtual |
Definition at line 198 of file SortedOrderFragmenter.cpp.
References Fragmenter_Namespace::InsertOrderFragmenter::catalog_, CHECK(), CHECK_GT, CHECK_LT, Fragmenter_Namespace::InsertData::columnIds, Fragmenter_Namespace::InsertData::data, Catalog_Namespace::Catalog::getMetadataForColumn(), Catalog_Namespace::Catalog::getMetadataForTable(), Fragmenter_Namespace::InsertData::numRows, Fragmenter_Namespace::InsertOrderFragmenter::physicalTableId_, Fragmenter_Namespace::shuffleByIndexes(), and Fragmenter_Namespace::sortIndexes().
Referenced by insertData(), and insertDataNoCheckpoint().
202 CHECK_GT(table_desc->sortedColumnId, 0);
203 const auto logical_cd =
208 table_desc->sortedColumnId + (logical_cd->columnType.is_geometry() ? 1 : 0));
209 const auto it = std::find(insertDataStruct.columnIds.begin(),
210 insertDataStruct.columnIds.end(),
211 physical_cd->columnId);
212 CHECK(it != insertDataStruct.columnIds.end());
214 std::vector<size_t> indexes(insertDataStruct.numRows);
215 std::iota(indexes.begin(), indexes.end(), 0);
216 const auto dist = std::distance(insertDataStruct.columnIds.begin(), it);
217 CHECK_LT(static_cast<size_t>(dist), insertDataStruct.data.size());
218 sortIndexes(physical_cd, indexes, insertDataStruct.data[dist]);
220 for (
size_t i = 0; i < insertDataStruct.columnIds.size(); ++i) {
222 insertDataStruct.columnIds[i]);
Catalog_Namespace::Catalog * catalog_
void shuffleByIndexes(const ColumnDescriptor *cd, const std::vector< size_t > &indexes, DataBlockPtr &data)
const int physicalTableId_
const ColumnDescriptor * getMetadataForColumn(int tableId, const std::string &colName) const
void sortIndexes(const ColumnDescriptor *cd, std::vector< size_t > &indexes, const DataBlockPtr &data)
const TableDescriptor * getMetadataForTable(const std::string &tableName, const bool populateFragmenter=true) const
Returns a pointer to a const TableDescriptor struct matching the provided tableName.