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

Constraint refactoring #1415

Merged
merged 24 commits into from
Jul 3, 2018
Merged
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
c45dc48
Add pg_constraint catalog table
ksaito7 Jun 5, 2018
49dfd22
Merge branch 'catalog_update'
ksaito7 Jun 5, 2018
f05450c
Reconstruct constraints
ksaito7 Jun 16, 2018
f6d0336
Merge branch 'master' into pg_constraint
ksaito7 Jun 18, 2018
0585694
Formatting and add constraint tests
ksaito7 Jun 18, 2018
85b6c91
Fix bugs in LOG_TRACE
ksaito7 Jun 19, 2018
0e2eaf9
Merge branch 'master' into pg_constraint
tli2 Jun 19, 2018
0934e37
Merge branch 'master' into pg_constraint
ksaito7 Jun 19, 2018
f589361
Replace tab with spaces
ksaito7 Jun 19, 2018
e5bc69d
Merge branch 'master' into pg_constraint
tli2 Jun 19, 2018
e752d4b
Fix a problem that the order of query results changes
ksaito7 Jun 20, 2018
86cd980
Merge branch 'master' into pg_constraint
tli2 Jun 22, 2018
47a60dc
Merge branch 'master' into pg_constraint
tli2 Jun 25, 2018
6abc244
Merge branch 'master' into pg_constraint
tli2 Jun 26, 2018
f789319
Rename ConstraintCatalogObject to ConstraintCatalogEntry
ksaito7 Jun 27, 2018
3a0d85a
Merge branch 'master' into pg_constraint
ksaito7 Jun 27, 2018
0657985
Merge master and cleanup for issue #1398
ksaito7 Jun 28, 2018
5bd0593
Merge branch 'master' into pg_constraint
tli2 Jun 28, 2018
bb11eb9
Fix constraints stuff
ksaito7 Jun 28, 2018
2b3638d
Merge branch 'pg_constraint' of https://github.com/ksaito7/peloton in…
ksaito7 Jun 28, 2018
c6ecd94
Fix DEBUG_INFO argument
ksaito7 Jun 28, 2018
ad827a2
Fix LOG_TRACE argument
ksaito7 Jun 28, 2018
fe5697e
Merge branch 'master' into pg_constraint
tli2 Jul 1, 2018
25a3d0c
Merge branch 'master' into pg_constraint
tli2 Jul 3, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 13 additions & 18 deletions src/catalog/abstract_catalog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include "planner/seq_scan_plan.h"

#include "executor/executor_context.h"
#include "executor/create_executor.h"
#include "executor/delete_executor.h"
#include "executor/index_scan_executor.h"
#include "executor/insert_executor.h"
Expand Down Expand Up @@ -60,30 +61,24 @@ AbstractCatalog::AbstractCatalog(storage::Database *pg_catalog,

AbstractCatalog::AbstractCatalog(concurrency::TransactionContext *txn,
const std::string &catalog_table_ddl) {
// get catalog table schema
// Execute create catalog table
auto &peloton_parser = parser::PostgresParser::GetInstance();
std::unique_ptr<executor::ExecutorContext> context(
new executor::ExecutorContext(txn));
auto create_plan = std::dynamic_pointer_cast<planner::CreatePlan>(
optimizer::Optimizer().BuildPelotonPlanTree(
peloton_parser.BuildParseTree(catalog_table_ddl), txn));
auto catalog_table_schema = create_plan->GetSchema();
auto catalog_table_name = create_plan->GetTableName();
auto catalog_schema_name = create_plan->GetSchemaName();
auto catalog_database_name = create_plan->GetDatabaseName();
PELOTON_ASSERT(catalog_schema_name == std::string(CATALOG_SCHEMA_NAME));
// create catalog table
Catalog::GetInstance()->CreateTable(txn,
catalog_database_name,
catalog_schema_name,
std::unique_ptr<catalog::Schema>(
catalog_table_schema),
catalog_table_name,
true);
executor::CreateExecutor executor(create_plan.get(), context.get());

executor.Init();
executor.Execute();

// get catalog table oid
auto catalog_table_object = Catalog::GetInstance()->GetTableCatalogEntry(txn,
catalog_database_name,
catalog_schema_name,
catalog_table_name);
auto catalog_table_object =
Catalog::GetInstance()->GetTableCatalogEntry(txn,
create_plan->GetDatabaseName(),
create_plan->GetSchemaName(),
create_plan->GetTableName());

// set catalog_table_
try {
Expand Down
707 changes: 601 additions & 106 deletions src/catalog/catalog.cpp

Large diffs are not rendered by default.

26 changes: 13 additions & 13 deletions src/catalog/column.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ void Column::SetInlined() {
const std::string Column::GetInfo() const {
std::ostringstream os;

os << "Column[" << column_name << ", " << TypeIdToString(column_type_) << ", "
os << "Column[" << column_name_ << ", "
<< TypeIdToString(column_type_) << ", "

<< "Offset:" << column_offset_ << ", ";

if (is_inlined_) {
Expand All @@ -54,19 +56,17 @@ const std::string Column::GetInfo() const {
os << "VarLength:" << variable_length_;
}

if (constraints_.empty() == false) {
os << ", {";
bool first = true;
for (auto constraint : constraints_) {
if (first) {
first = false;
} else {
os << ", ";
}
os << constraint.GetInfo();
}
os << "}";
if (is_not_null_ && has_default_) {
os << ", {NOT NULL, DEFAULT:"
<< default_value_->ToString() << "}";
} else if (is_not_null_) {
os << ", {NOT NULL}";
} else if (has_default_) {
os << ", {DEFAULT:"
<< default_value_->ToString() << "}";

}

os << "]";

return (os.str());
Expand Down
Loading