data: Improved injection performance with batched insertions
* add InsertBatchStatement inserting any number as multiples * switched Storage injection interface to containers
This commit is contained in:
@@ -20,27 +20,33 @@ public:
|
||||
PersistentStorage(const FilePath& dbPath, const FilePath& bookmarkPath);
|
||||
|
||||
std::pair<Id, bool> addNode(const StorageNodeData& data) override;
|
||||
std::vector<Id> addNodes(const std::vector<StorageNode>& nodes) override;
|
||||
void addSymbol(const StorageSymbol& data) override;
|
||||
void addSymbols(const std::vector<StorageSymbol>& symbols) override;
|
||||
void addFile(const StorageFile& data) override;
|
||||
Id addEdge(const StorageEdgeData& data) override;
|
||||
std::vector<Id> addEdges(const std::vector<StorageEdge>& edges) override;
|
||||
Id addLocalSymbol(const StorageLocalSymbolData& data) override;
|
||||
std::vector<Id> addLocalSymbols(const std::set<StorageLocalSymbol>& symbols) override;
|
||||
Id addSourceLocation(const StorageSourceLocationData& data) override;
|
||||
std::vector<Id> addSourceLocations(const std::vector<StorageSourceLocation>& locations) override;
|
||||
void addOccurrence(const StorageOccurrence& data) override;
|
||||
void addOccurrences(const std::vector<StorageOccurrence>& occurrences) override;
|
||||
void addComponentAccess(const StorageComponentAccess& componentAccess) override;
|
||||
void addComponentAccesses(const std::vector<StorageComponentAccess>& componentAccesses) override;
|
||||
void addCommentLocation(const StorageCommentLocationData& data) override;
|
||||
void addError(const StorageErrorData& data) override;
|
||||
|
||||
void forEachNode(std::function<void(const StorageNode& /*data*/)> callback) const override;
|
||||
void forEachFile(std::function<void(const StorageFile& /*data*/)> callback) const override;
|
||||
void forEachSymbol(std::function<void(const StorageSymbol& /*data*/)> callback) const override;
|
||||
void forEachEdge(std::function<void(const StorageEdge& /*data*/)> callback) const override;
|
||||
void forEachLocalSymbol(std::function<void(const StorageLocalSymbol& /*data*/)> callback) const override;
|
||||
void forEachSourceLocation(std::function<void(const StorageSourceLocation& /*data*/)> callback) const override;
|
||||
void forEachOccurrence(std::function<void(const StorageOccurrence& /*data*/)> callback) const override;
|
||||
void forEachComponentAccess(std::function<void(const StorageComponentAccess& /*data*/)> callback) const override;
|
||||
void forEachCommentLocation(std::function<void(const StorageCommentLocationData& /*data*/)> callback) const override;
|
||||
void forEachError(std::function<void(const StorageErrorData& /*data*/)> callback) const override;
|
||||
const std::vector<StorageNode>& getStorageNodes() const override;
|
||||
const std::vector<StorageFile>& getStorageFiles() const override;
|
||||
const std::vector<StorageSymbol>& getStorageSymbols() const override;
|
||||
const std::vector<StorageEdge>& getStorageEdges() const override;
|
||||
const std::set<StorageLocalSymbol>& getStorageLocalSymbols() const override;
|
||||
const std::set<StorageSourceLocation>& getStorageSourceLocations() const override;
|
||||
const std::set<StorageOccurrence>& getStorageOccurrences() const override;
|
||||
const std::set<StorageComponentAccess>& getComponentAccesses() const override;
|
||||
const std::set<StorageCommentLocationData>& getCommentLocations() const override;
|
||||
const std::vector<StorageErrorData>& getErrors() const override;
|
||||
|
||||
void startInjection() override;
|
||||
void finishInjection() override;
|
||||
@@ -153,6 +159,19 @@ public:
|
||||
const std::vector<Id>& locationIds, const std::vector<Id>& localSymbolIds) const override;
|
||||
|
||||
private:
|
||||
mutable struct {
|
||||
std::vector<StorageNode> nodes;
|
||||
std::vector<StorageFile> files;
|
||||
std::vector<StorageSymbol> symbols;
|
||||
std::vector<StorageEdge> edges;
|
||||
std::set<StorageLocalSymbol> locals;
|
||||
std::set<StorageSourceLocation> locations;
|
||||
std::set<StorageOccurrence> occurrences;
|
||||
std::set<StorageComponentAccess> accesses;
|
||||
std::set<StorageCommentLocationData> comments;
|
||||
std::vector<StorageErrorData> errors;
|
||||
} m_storageData;
|
||||
|
||||
Id getFileNodeId(const FilePath& filePath) const;
|
||||
std::vector<Id> getFileNodeIds(const std::vector<FilePath>& filePaths) const;
|
||||
std::set<Id> getFileNodeIds(const std::set<FilePath>& filePaths) const;
|
||||
|
||||
Reference in New Issue
Block a user