Skip to content

Commit

Permalink
Update show block
Browse files Browse the repository at this point in the history
Signed-off-by: Jin Hai <[email protected]>
  • Loading branch information
JinHai-CN committed Jan 26, 2025
1 parent 58b4df0 commit 71ec2bb
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 30 deletions.
40 changes: 12 additions & 28 deletions src/executor/operator/physical_show.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ import command_statement;

namespace infinity {

void PhysicalShow::Init(QueryContext* query_context) {
void PhysicalShow::Init(QueryContext *query_context) {
auto varchar_type = MakeShared<DataType>(LogicalType::kVarchar);
auto bigint_type = MakeShared<DataType>(LogicalType::kBigInt);

Expand Down Expand Up @@ -2346,9 +2346,7 @@ void PhysicalShow::ExecuteShowBlocks(QueryContext *query_context, ShowOperatorSt

void PhysicalShow::ExecuteShowBlockDetail(QueryContext *query_context, ShowOperatorState *show_operator_state) {
auto txn = query_context->GetTxn();
TxnTimeStamp begin_ts = txn->BeginTS();

auto [table_entry, status] = txn->GetTableByName(db_name_, *object_name_);
auto [block_info, status] = txn->GetBlockInfo(db_name_, *object_name_, *segment_id_, *block_id_);
if (!status.ok()) {
show_operator_state->status_ = status.clone();
RecoverableError(status);
Expand All @@ -2360,20 +2358,6 @@ void PhysicalShow::ExecuteShowBlockDetail(QueryContext *query_context, ShowOpera
Vector<SharedPtr<DataType>> column_types{varchar_type, varchar_type};
output_block_ptr->Init(column_types);

auto segment_entry = table_entry->GetSegmentByID(*segment_id_, begin_ts);
if (!segment_entry) {
Status status = Status::SegmentNotExist(*segment_id_);
RecoverableError(status);
return;
}

auto block_entry = segment_entry->GetBlockEntryByID(*block_id_);
if (!block_entry) {
Status status = Status::BlockNotExist(*block_id_);
RecoverableError(status);
return;
}

{
SizeT column_id = 0;
{
Expand All @@ -2384,7 +2368,7 @@ void PhysicalShow::ExecuteShowBlockDetail(QueryContext *query_context, ShowOpera

++column_id;
{
Value value = Value::MakeVarchar(std::to_string(block_entry->block_id()));
Value value = Value::MakeVarchar(std::to_string(block_info->block_id_));
ValueExpression value_expr(value);
value_expr.AppendToChunk(output_block_ptr->column_vectors[column_id]);
}
Expand All @@ -2400,7 +2384,7 @@ void PhysicalShow::ExecuteShowBlockDetail(QueryContext *query_context, ShowOpera

++column_id;
{
String full_block_dir = Path(InfinityContext::instance().config()->DataDir()) / *block_entry->block_dir();
String full_block_dir = Path(InfinityContext::instance().config()->DataDir()) / *block_info->block_dir_;
Value value = Value::MakeVarchar(full_block_dir);
ValueExpression value_expr(value);
value_expr.AppendToChunk(output_block_ptr->column_vectors[column_id]);
Expand All @@ -2417,7 +2401,7 @@ void PhysicalShow::ExecuteShowBlockDetail(QueryContext *query_context, ShowOpera

++column_id;
{
SizeT block_storage_size = block_entry->GetStorageSize();
SizeT block_storage_size = block_info->storage_size_;
String block_storage_size_str = Utility::FormatByteSize(block_storage_size);
Value value = Value::MakeVarchar(block_storage_size_str);
ValueExpression value_expr(value);
Expand All @@ -2435,7 +2419,7 @@ void PhysicalShow::ExecuteShowBlockDetail(QueryContext *query_context, ShowOpera

++column_id;
{
SizeT row_capacity = block_entry->row_capacity();
SizeT row_capacity = block_info->row_capacity_;
Value value = Value::MakeVarchar(std::to_string(row_capacity));
ValueExpression value_expr(value);
value_expr.AppendToChunk(output_block_ptr->column_vectors[column_id]);
Expand All @@ -2452,7 +2436,7 @@ void PhysicalShow::ExecuteShowBlockDetail(QueryContext *query_context, ShowOpera

++column_id;
{
SizeT row_count = block_entry->row_count();
SizeT row_count = block_info->row_count_;
Value value = Value::MakeVarchar(std::to_string(row_count));
ValueExpression value_expr(value);
value_expr.AppendToChunk(output_block_ptr->column_vectors[column_id]);
Expand All @@ -2469,7 +2453,7 @@ void PhysicalShow::ExecuteShowBlockDetail(QueryContext *query_context, ShowOpera

++column_id;
{
SizeT checkpoint_row_count = block_entry->checkpoint_row_count();
SizeT checkpoint_row_count = block_info->checkpoint_row_count_;
Value value = Value::MakeVarchar(std::to_string(checkpoint_row_count));
ValueExpression value_expr(value);
value_expr.AppendToChunk(output_block_ptr->column_vectors[column_id]);
Expand All @@ -2486,7 +2470,7 @@ void PhysicalShow::ExecuteShowBlockDetail(QueryContext *query_context, ShowOpera

++column_id;
{
SizeT column_count = block_entry->columns().size();
SizeT column_count = block_info->column_count_;
Value value = Value::MakeVarchar(std::to_string(column_count));
ValueExpression value_expr(value);
value_expr.AppendToChunk(output_block_ptr->column_vectors[column_id]);
Expand All @@ -2503,7 +2487,7 @@ void PhysicalShow::ExecuteShowBlockDetail(QueryContext *query_context, ShowOpera

++column_id;
{
SizeT checkpoint_ts = block_entry->checkpoint_ts();
SizeT checkpoint_ts = block_info->checkpoint_ts_;
Value value = Value::MakeVarchar(std::to_string(checkpoint_ts));
ValueExpression value_expr(value);
value_expr.AppendToChunk(output_block_ptr->column_vectors[column_id]);
Expand Down Expand Up @@ -5914,7 +5898,7 @@ void PhysicalShow::ExecuteShowTransactionHistory(QueryContext *query_context, Sh
{
// txn id
String txn_text;
if(txn_context->text_.get() != nullptr) {
if (txn_context->text_.get() != nullptr) {
txn_text = *txn_context->text_;
}
Value value = Value::MakeVarchar(txn_text);
Expand Down Expand Up @@ -5946,7 +5930,7 @@ void PhysicalShow::ExecuteShowTransactionHistory(QueryContext *query_context, Sh
{
// txn type
String transaction_type_str = "read";
if(txn_context->is_write_transaction_) {
if (txn_context->is_write_transaction_) {
transaction_type_str = "write";
}
Value value = Value::MakeVarchar(transaction_type_str);
Expand Down
11 changes: 11 additions & 0 deletions src/storage/common/meta_info.cppm
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,17 @@ export struct TableIndexInfo {
SharedPtr<String> index_column_names_{};
};

export struct BlockInfo {
BlockID block_id_;
SharedPtr<String> block_dir_{};
i64 row_count_{};
i64 row_capacity_{};
i64 checkpoint_row_count_{};
i64 column_count_{};
TxnTimeStamp checkpoint_ts_{};
SizeT storage_size_{};
};

export struct TableDetail {
SharedPtr<String> db_name_{};
SharedPtr<String> table_name_{};
Expand Down
30 changes: 30 additions & 0 deletions src/storage/meta/catalog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,36 @@ Tuple<SharedPtr<TableInfo>, Status> Catalog::GetTableInfo(const String &db_name,
return db_entry->GetTableInfo(table_name, txn);
}

Tuple<SharedPtr<BlockInfo>, Status>
Catalog::GetBlockInfo(const String &db_name, const String &table_name, SegmentID segment_id, BlockID block_id, Txn *txn) {
auto [table_entry, status] = txn->GetTableByName(db_name, table_name);
if (!status.ok()) {
return {nullptr, status};
}

auto segment_entry = table_entry->GetSegmentByID(segment_id, txn->BeginTS());
if (!segment_entry) {
return {nullptr, Status::SegmentNotExist(segment_id)};
}

auto block_entry = segment_entry->GetBlockEntryByID(block_id);
if (!block_entry) {
return {nullptr, Status::BlockNotExist(block_id)};
}

SharedPtr<BlockInfo> block_info = MakeShared<BlockInfo>();
block_info->block_id_ = block_entry->block_id();
block_info->block_dir_ = block_entry->block_dir();
block_info->row_count_ = block_entry->row_count();
block_info->row_capacity_ = block_entry->row_capacity();
block_info->checkpoint_row_count_ = block_entry->checkpoint_row_count();
block_info->column_count_ = block_entry->columns().size();
block_info->checkpoint_ts_ = block_entry->checkpoint_ts();
block_info->storage_size_ = block_entry->GetStorageSize();

return {nullptr, Status::OK()};
}

Status Catalog::RemoveTableEntry(TableEntry *table_entry, TransactionID txn_id) {
TableMeta *table_meta = table_entry->GetTableMeta();
LOG_TRACE(fmt::format("Remove a table/collection entry: {}", *table_entry->GetTableName()));
Expand Down
7 changes: 5 additions & 2 deletions src/storage/meta/catalog.cppm
Original file line number Diff line number Diff line change
Expand Up @@ -152,12 +152,15 @@ public:

Tuple<TableEntry *, Status> GetTableByName(const String &db_name, const String &table_name, TransactionID txn_id, TxnTimeStamp begin_ts);

Tuple<SharedPtr<TableSnapshotInfo>, Status> GetTableSnapshot(const String &db_name, const String &table_name, Txn* txn_ptr);
Tuple<SharedPtr<TableSnapshotInfo>, Status> GetTableSnapshot(const String &db_name, const String &table_name, Txn *txn_ptr);

Status ApplyTableSnapshot(const SharedPtr<TableSnapshotInfo> &table_snapshot_info, Txn* txn_ptr);
Status ApplyTableSnapshot(const SharedPtr<TableSnapshotInfo> &table_snapshot_info, Txn *txn_ptr);

Tuple<SharedPtr<TableInfo>, Status> GetTableInfo(const String &db_name, const String &table_name, Txn *txn);

Tuple<SharedPtr<BlockInfo>, Status>
GetBlockInfo(const String &db_name, const String &table_name, SegmentID segment_id, BlockID block_id, Txn *txn);

static Status RemoveTableEntry(TableEntry *table_entry, TransactionID txn_id);

// Index Related methods
Expand Down
4 changes: 4 additions & 0 deletions src/storage/txn/txn.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -556,6 +556,10 @@ Tuple<SharedPtr<TableInfo>, Status> Txn::GetTableInfo(const String &db_name, con
return catalog_->GetTableInfo(db_name, table_name, this);
}

Tuple<SharedPtr<BlockInfo>, Status> Txn::GetBlockInfo(const String &db_name, const String &table_name, SegmentID segment_id, BlockID block_id) {
return catalog_->GetBlockInfo(db_name, table_name, segment_id, block_id, this);
}

Tuple<SharedPtr<TableSnapshotInfo>, Status> Txn::GetTableSnapshot(const String &db_name, const String &table_name) {
this->CheckTxn(db_name);
return catalog_->GetTableSnapshot(db_name, table_name, this);
Expand Down
2 changes: 2 additions & 0 deletions src/storage/txn/txn.cppm
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,8 @@ public:

Tuple<SharedPtr<TableInfo>, Status> GetTableInfo(const String &db_name, const String &table_name);

Tuple<SharedPtr<BlockInfo>, Status> GetBlockInfo(const String &db_name, const String &table_name, SegmentID segment_id, BlockID block_id);

Status GetCollectionByName(const String &db_name, const String &table_name, BaseEntry *&collection_entry);

// Lock table related
Expand Down

0 comments on commit 71ec2bb

Please sign in to comment.