Skip to content

Commit 969d96d

Browse files
committed
fix: resolve standalone join failures and catalog error handling
1 parent 32e6145 commit 969d96d

3 files changed

Lines changed: 13 additions & 13 deletions

File tree

src/catalog/catalog.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,7 @@ oid_t Catalog::create_table(const std::string& table_name, std::vector<ColumnInf
145145
oid_t Catalog::create_table_local(const std::string& table_name, std::vector<ColumnInfo> columns,
146146
std::vector<ShardInfo> shards) {
147147
if (table_exists_by_name(table_name)) {
148-
std::cerr << "--- [Catalog] create_table_local: Table already exists " << table_name
149-
<< " ---" << std::endl;
150-
auto meta_opt = get_table_by_name(table_name);
151-
return (*meta_opt)->table_id;
148+
throw std::runtime_error("Table already exists: " + table_name);
152149
}
153150

154151
auto table = std::make_unique<TableInfo>();

src/executor/operator.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,12 @@ BufferScanOperator::BufferScanOperator(std::string context_id, std::string table
108108
: Operator(OperatorType::BufferScan),
109109
context_id_(std::move(context_id)),
110110
table_name_(std::move(table_name)),
111-
data_(std::move(data)),
112-
schema_(std::move(schema)) {}
111+
data_(std::move(data)) {
112+
/* Qualify columns in buffer schema */
113+
for (const auto& col : schema.columns()) {
114+
schema_.add_column(table_name_ + "." + col.name(), col.type(), col.nullable());
115+
}
116+
}
113117

114118
bool BufferScanOperator::next(Tuple& out_tuple) {
115119
if (current_index_ >= data_.size()) {
@@ -675,7 +679,6 @@ bool HashJoinOperator::next(Tuple& out_tuple) {
675679
left_tuple_ = std::move(next_left);
676680
left_had_match_ = false;
677681
const common::Value key = left_key_->evaluate(&(left_tuple_.value()), &left_schema);
678-
std::cerr << "--- [HashJoin] Probing: key=" << key.to_string() << " ---" << std::endl;
679682

680683
/* Look up in hash table */
681684
auto range = hash_table_.equal_range(key.to_string());

src/executor/query_executor.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,7 @@ QueryResult QueryExecutor::execute_update(const parser::UpdateStatement& stmt,
670670
if (log_manager_ != nullptr && txn != nullptr) {
671671
recovery::LogRecord log(txn->get_id(), txn->get_prev_lsn(),
672672
recovery::LogRecordType::MARK_DELETE, table_name, op.rid,
673-
op.old_tuple);
673+
old_tuple);
674674
const auto lsn = log_manager_->append_log_record(log);
675675
txn->set_prev_lsn(lsn);
676676
}
@@ -724,12 +724,12 @@ std::unique_ptr<Operator> QueryExecutor::build_plan(const parser::SelectStatemen
724724
if (cluster_manager_ != nullptr &&
725725
cluster_manager_->has_shuffle_data(context_id_, base_table_name)) {
726726
auto data = cluster_manager_->fetch_shuffle_data(context_id_, base_table_name);
727-
/* We need a schema for the buffered data. */
727+
/* We need a schema for the buffered data. Use unqualified names as BufferScan will qualify them. */
728728
auto meta_opt = catalog_.get_table_by_name(base_table_name);
729729
Schema buffer_schema;
730730
if (meta_opt.has_value()) {
731731
for (const auto& col : meta_opt.value()->columns) {
732-
buffer_schema.add_column(base_table_name + "." + col.name, col.type);
732+
buffer_schema.add_column(col.name, col.type);
733733
}
734734
}
735735
std::cerr << "--- [BuildPlan] Table " << base_table_name
@@ -746,7 +746,7 @@ std::unique_ptr<Operator> QueryExecutor::build_plan(const parser::SelectStatemen
746746

747747
Schema base_schema;
748748
for (const auto& col : base_table_meta->columns) {
749-
base_schema.add_column(base_table_name + "." + col.name, col.type);
749+
base_schema.add_column(col.name, col.type);
750750
}
751751

752752
/* Index Selection Optimization:
@@ -825,7 +825,7 @@ std::unique_ptr<Operator> QueryExecutor::build_plan(const parser::SelectStatemen
825825
Schema buffer_schema;
826826
if (meta_opt.has_value()) {
827827
for (const auto& col : meta_opt.value()->columns) {
828-
buffer_schema.add_column(join_table_name + "." + col.name, col.type);
828+
buffer_schema.add_column(col.name, col.type);
829829
}
830830
}
831831
std::cerr << "--- [BuildPlan] JOIN Table " << join_table_name
@@ -842,7 +842,7 @@ std::unique_ptr<Operator> QueryExecutor::build_plan(const parser::SelectStatemen
842842

843843
Schema join_schema;
844844
for (const auto& col : join_table_meta->columns) {
845-
join_schema.add_column(join_table_name + "." + col.name, col.type);
845+
join_schema.add_column(col.name, col.type);
846846
}
847847

848848
join_scan = std::make_unique<SeqScanOperator>(

0 commit comments

Comments
 (0)