Skip to content
This repository was archived by the owner on Sep 27, 2019. It is now read-only.

Commit f6446ba

Browse files
Zeninmaapavlo
authored andcommitted
Move tile group related code from catalog manager to storage manager (#1384)
* Move tile group related code from catalog manager to storage manager * Remove code brought in from stale commit
1 parent 2010aaf commit f6446ba

19 files changed

+186
-165
lines changed

src/catalog/manager.cpp

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,8 @@
2121
namespace peloton {
2222
namespace catalog {
2323

24-
std::shared_ptr<storage::TileGroup> Manager::empty_tile_group_;
25-
2624
std::shared_ptr<storage::IndirectionArray> Manager::empty_indirection_array_;
2725

28-
Manager::Manager() : tile_group_locator_(DEFAULT_LOCATOR_SIZE) {}
29-
3026
Manager &Manager::GetInstance() {
3127
static Manager manager;
3228
return manager;
@@ -36,28 +32,6 @@ Manager &Manager::GetInstance() {
3632
// OBJECT MAP
3733
//===--------------------------------------------------------------------===//
3834

39-
void Manager::AddTileGroup(const oid_t oid,
40-
std::shared_ptr<storage::TileGroup> location) {
41-
// add/update the catalog reference to the tile group
42-
tile_group_locator_.Upsert(oid, location);
43-
}
44-
45-
void Manager::DropTileGroup(const oid_t oid) {
46-
// drop the catalog reference to the tile group
47-
tile_group_locator_.Erase(oid);
48-
}
49-
50-
std::shared_ptr<storage::TileGroup> Manager::GetTileGroup(const oid_t oid) {
51-
std::shared_ptr<storage::TileGroup> location;
52-
if (tile_group_locator_.Find(oid, location)) {
53-
return location;
54-
}
55-
return empty_tile_group_;
56-
}
57-
58-
// used for logging test
59-
void Manager::ClearTileGroup() { tile_group_locator_.Clear(); }
60-
6135
void Manager::AddIndirectionArray(
6236
const oid_t oid, std::shared_ptr<storage::IndirectionArray> location) {
6337
// add/update the catalog reference to the indirection array

src/concurrency/timestamp_ordering_transaction_manager.cpp

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
#include "concurrency/timestamp_ordering_transaction_manager.h"
1414
#include <cinttypes>
15+
#include "storage/storage_manager.h"
1516

1617
#include "catalog/catalog_defaults.h"
1718
#include "catalog/manager.h"
@@ -372,8 +373,8 @@ void TimestampOrderingTransactionManager::PerformInsert(
372373
oid_t tile_group_id = location.block;
373374
oid_t tuple_id = location.offset;
374375

375-
auto &manager = catalog::Manager::GetInstance();
376-
auto tile_group_header = manager.GetTileGroup(tile_group_id)->GetHeader();
376+
auto storage_manager = storage::StorageManager::GetInstance();
377+
auto tile_group_header = storage_manager->GetTileGroup(tile_group_id)->GetHeader();
377378
auto transaction_id = current_txn->GetTransactionId();
378379

379380
// check MVCC info
@@ -408,12 +409,11 @@ void TimestampOrderingTransactionManager::PerformUpdate(
408409
LOG_TRACE("Performing Update new tuple %u %u", new_location.block,
409410
new_location.offset);
410411

411-
auto &manager = catalog::Manager::GetInstance();
412-
412+
auto storage_manager = storage::StorageManager::GetInstance();
413413
auto tile_group_header =
414-
manager.GetTileGroup(old_location.block)->GetHeader();
414+
storage_manager->GetTileGroup(old_location.block)->GetHeader();
415415
auto new_tile_group_header =
416-
manager.GetTileGroup(new_location.block)->GetHeader();
416+
storage_manager->GetTileGroup(new_location.block)->GetHeader();
417417

418418
auto transaction_id = current_txn->GetTransactionId();
419419
// if we can perform update, then we must have already locked the older
@@ -481,9 +481,9 @@ void TimestampOrderingTransactionManager::PerformUpdate(
481481
oid_t tile_group_id = location.block;
482482
UNUSED_ATTRIBUTE oid_t tuple_id = location.offset;
483483

484-
auto &manager = catalog::Manager::GetInstance();
484+
auto storage_manager = storage::StorageManager::GetInstance();
485485
UNUSED_ATTRIBUTE auto tile_group_header =
486-
manager.GetTileGroup(tile_group_id)->GetHeader();
486+
storage_manager->GetTileGroup(tile_group_id)->GetHeader();
487487

488488
PELOTON_ASSERT(tile_group_header->GetTransactionId(tuple_id) ==
489489
current_txn->GetTransactionId());
@@ -511,12 +511,12 @@ void TimestampOrderingTransactionManager::PerformDelete(
511511
LOG_TRACE("Performing Delete new tuple %u %u", new_location.block,
512512
new_location.offset);
513513

514-
auto &manager = catalog::Manager::GetInstance();
514+
auto storage_manager = storage::StorageManager::GetInstance();
515515

516516
auto tile_group_header =
517-
manager.GetTileGroup(old_location.block)->GetHeader();
517+
storage_manager->GetTileGroup(old_location.block)->GetHeader();
518518
auto new_tile_group_header =
519-
manager.GetTileGroup(new_location.block)->GetHeader();
519+
storage_manager->GetTileGroup(new_location.block)->GetHeader();
520520

521521
auto transaction_id = current_txn->GetTransactionId();
522522

@@ -587,8 +587,8 @@ void TimestampOrderingTransactionManager::PerformDelete(
587587
oid_t tile_group_id = location.block;
588588
oid_t tuple_id = location.offset;
589589

590-
auto &manager = catalog::Manager::GetInstance();
591-
auto tile_group_header = manager.GetTileGroup(tile_group_id)->GetHeader();
590+
auto storage_manager = storage::StorageManager::GetInstance();
591+
auto tile_group_header = storage_manager->GetTileGroup(tile_group_id)->GetHeader();
592592

593593
PELOTON_ASSERT(tile_group_header->GetTransactionId(tuple_id) ==
594594
current_txn->GetTransactionId());
@@ -624,7 +624,7 @@ ResultType TimestampOrderingTransactionManager::CommitTransaction(
624624
//// handle other isolation levels
625625
//////////////////////////////////////////////////////////
626626

627-
auto &manager = catalog::Manager::GetInstance();
627+
auto storage_manager = storage::StorageManager::GetInstance();
628628
auto &log_manager = logging::LogManager::GetInstance();
629629

630630
log_manager.StartLogging();
@@ -660,7 +660,7 @@ ResultType TimestampOrderingTransactionManager::CommitTransaction(
660660
oid_t tile_group_id = item_ptr.block;
661661
oid_t tuple_slot = item_ptr.offset;
662662

663-
auto tile_group_header = manager.GetTileGroup(tile_group_id)->GetHeader();
663+
auto tile_group_header = storage_manager->GetTileGroup(tile_group_id)->GetHeader();
664664

665665
if (tuple_entry.second == RWType::READ_OWN) {
666666
// A read operation has acquired ownership but hasn't done any further
@@ -678,7 +678,7 @@ ResultType TimestampOrderingTransactionManager::CommitTransaction(
678678
auto cid = tile_group_header->GetEndCommitId(tuple_slot);
679679
PELOTON_ASSERT(cid > end_commit_id);
680680
auto new_tile_group_header =
681-
manager.GetTileGroup(new_version.block)->GetHeader();
681+
storage_manager->GetTileGroup(new_version.block)->GetHeader();
682682
new_tile_group_header->SetBeginCommitId(new_version.offset,
683683
end_commit_id);
684684
new_tile_group_header->SetEndCommitId(new_version.offset, cid);
@@ -708,7 +708,7 @@ ResultType TimestampOrderingTransactionManager::CommitTransaction(
708708
auto cid = tile_group_header->GetEndCommitId(tuple_slot);
709709
PELOTON_ASSERT(cid > end_commit_id);
710710
auto new_tile_group_header =
711-
manager.GetTileGroup(new_version.block)->GetHeader();
711+
storage_manager->GetTileGroup(new_version.block)->GetHeader();
712712
new_tile_group_header->SetBeginCommitId(new_version.offset,
713713
end_commit_id);
714714
new_tile_group_header->SetEndCommitId(new_version.offset, cid);
@@ -786,7 +786,7 @@ ResultType TimestampOrderingTransactionManager::AbortTransaction(
786786
PELOTON_ASSERT(!current_txn->IsReadOnly());
787787

788788
LOG_TRACE("Aborting peloton txn : %" PRId64, current_txn->GetTransactionId());
789-
auto &manager = catalog::Manager::GetInstance();
789+
auto storage_manager = storage::StorageManager::GetInstance();
790790

791791
auto &rw_set = current_txn->GetReadWriteSet();
792792
auto &rw_object_set = current_txn->GetCreateDropSet();
@@ -811,7 +811,7 @@ ResultType TimestampOrderingTransactionManager::AbortTransaction(
811811
ItemPointer item_ptr = tuple_entry.first;
812812
oid_t tile_group_id = item_ptr.block;
813813
oid_t tuple_slot = item_ptr.offset;
814-
auto tile_group_header = manager.GetTileGroup(tile_group_id)->GetHeader();
814+
auto tile_group_header = storage_manager->GetTileGroup(tile_group_id)->GetHeader();
815815

816816
if (tuple_entry.second == RWType::READ_OWN) {
817817
// A read operation has acquired ownership but hasn't done any further
@@ -822,7 +822,7 @@ ResultType TimestampOrderingTransactionManager::AbortTransaction(
822822
ItemPointer new_version =
823823
tile_group_header->GetPrevItemPointer(tuple_slot);
824824
auto new_tile_group_header =
825-
manager.GetTileGroup(new_version.block)->GetHeader();
825+
storage_manager->GetTileGroup(new_version.block)->GetHeader();
826826
// these two fields can be set at any time.
827827
new_tile_group_header->SetBeginCommitId(new_version.offset, MAX_CID);
828828
new_tile_group_header->SetEndCommitId(new_version.offset, MAX_CID);
@@ -871,7 +871,7 @@ ResultType TimestampOrderingTransactionManager::AbortTransaction(
871871
ItemPointer new_version =
872872
tile_group_header->GetPrevItemPointer(tuple_slot);
873873
auto new_tile_group_header =
874-
manager.GetTileGroup(new_version.block)->GetHeader();
874+
storage_manager->GetTileGroup(new_version.block)->GetHeader();
875875

876876
new_tile_group_header->SetBeginCommitId(new_version.offset, MAX_CID);
877877
new_tile_group_header->SetEndCommitId(new_version.offset, MAX_CID);

src/concurrency/transaction_manager.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "settings/settings_manager.h"
2121
#include "statistics/stats_aggregator.h"
2222
#include "storage/tile_group.h"
23+
#include "storage/storage_manager.h"
2324

2425
namespace peloton {
2526
namespace concurrency {
@@ -102,7 +103,7 @@ bool TransactionManager::IsOccupied(TransactionContext *const current_txn,
102103
ItemPointer &position = *((ItemPointer *)position_ptr);
103104

104105
auto tile_group_header =
105-
catalog::Manager::GetInstance().GetTileGroup(position.block)->GetHeader();
106+
storage::StorageManager::GetInstance()->GetTileGroup(position.block)->GetHeader();
106107
auto tuple_id = position.offset;
107108

108109
txn_id_t tuple_txn_id = tile_group_header->GetTransactionId(tuple_id);
@@ -289,8 +290,8 @@ void TransactionManager::RecordTransactionStats(
289290
// Call the GetConstIterator() function to explicitly lock the cuckoohash
290291
// and initilaize the iterator
291292
const auto &tile_group_id = tuple_entry.first.block;
292-
database_id = catalog::Manager::GetInstance()
293-
.GetTileGroup(tile_group_id)
293+
database_id = storage::StorageManager::GetInstance()
294+
->GetTileGroup(tile_group_id)
294295
->GetDatabaseId();
295296
if (database_id != CATALOG_DATABASE_OID) {
296297
break;

src/executor/delete_executor.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
#include <cinttypes>
14+
#include "storage/storage_manager.h"
1415
#include "executor/delete_executor.h"
1516
#include "executor/executor_context.h"
1617

@@ -126,8 +127,8 @@ bool DeleteExecutor::DExecute() {
126127
if (current_txn->GetIsolationLevel() == IsolationLevelType::SNAPSHOT) {
127128
old_location = *(tile_group_header->GetIndirection(physical_tuple_id));
128129

129-
auto &manager = catalog::Manager::GetInstance();
130-
tile_group = manager.GetTileGroup(old_location.block).get();
130+
auto storage_manager = storage::StorageManager::GetInstance();
131+
tile_group = storage_manager->GetTileGroup(old_location.block).get();
131132
tile_group_header = tile_group->GetHeader();
132133

133134
physical_tuple_id = old_location.offset;

src/executor/hybrid_scan_executor.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13+
#include "storage/storage_manager.h"
1314
#include "executor/hybrid_scan_executor.h"
1415
#include "common/container_tuple.h"
1516
#include "common/internal_types.h"
@@ -377,8 +378,8 @@ bool HybridScanExecutor::ExecPrimaryIndexLookup() {
377378
item_pointers_.insert(tuple_location);
378379
}
379380

380-
auto &manager = catalog::Manager::GetInstance();
381-
auto tile_group = manager.GetTileGroup(tuple_location.block);
381+
auto storage_manager = storage::StorageManager::GetInstance();
382+
auto tile_group = storage_manager->GetTileGroup(tuple_location.block);
382383
auto tile_group_header = tile_group.get()->GetHeader();
383384

384385
// perform transaction read
@@ -425,16 +426,16 @@ bool HybridScanExecutor::ExecPrimaryIndexLookup() {
425426
}
426427
}
427428

428-
tile_group = manager.GetTileGroup(tuple_location.block);
429+
tile_group = storage_manager->GetTileGroup(tuple_location.block);
429430
tile_group_header = tile_group.get()->GetHeader();
430431
}
431432
}
432433
}
433434

434435
// Construct a logical tile for each block
435436
for (auto tuples : visible_tuples) {
436-
auto &manager = catalog::Manager::GetInstance();
437-
auto tile_group = manager.GetTileGroup(tuples.first);
437+
auto storage_manager = storage::StorageManager::GetInstance();
438+
auto tile_group = storage_manager->GetTileGroup(tuples.first);
438439

439440
std::unique_ptr<LogicalTile> logical_tile(LogicalTileFactory::GetTile());
440441

0 commit comments

Comments
 (0)