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

Commit 19eac34

Browse files
sxzh93Dingshilun
authored andcommitted
refactored plan and statement using std::string
1 parent 8febb24 commit 19eac34

File tree

3 files changed

+35
-64
lines changed

3 files changed

+35
-64
lines changed

src/include/parser/alter_statement.h

Lines changed: 8 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -27,58 +27,29 @@ class AlterTableStatement : public TableRefStatement {
2727
public:
2828
enum class AlterTableType { INVALID = 0, ALTER = 1, RENAME = 2 };
2929

30-
AlterTableStatement(AlterTableType type)
30+
explicit AlterTableStatement(AlterTableType type)
3131
: TableRefStatement(StatementType::ALTER),
32-
type(type),
33-
oldName(nullptr),
34-
newName(nullptr) {
35-
if (type == AlterTableType::RENAME) {
36-
dropped_names = nullptr;
37-
added_columns = nullptr;
38-
changed_type_columns = nullptr;
39-
} else {
40-
dropped_names = new std::vector<char *>;
41-
added_columns = new std::vector<std::unique_ptr<ColumnDefinition>>;
42-
changed_type_columns = new std::vector<std::unique_ptr<ColumnDefinition>>;
43-
}
44-
}
32+
type(type) {}
4533

4634
virtual ~AlterTableStatement() {
47-
if (added_columns != nullptr) {
48-
delete added_columns;
49-
}
50-
if (dropped_names != nullptr) {
51-
for (auto name : *dropped_names) {
52-
delete name;
53-
}
54-
delete dropped_names;
55-
}
56-
if (changed_type_columns != nullptr) {
57-
delete changed_type_columns;
58-
}
59-
if (oldName) {
60-
delete oldName;
61-
}
62-
if (newName) {
63-
delete newName;
64-
}
35+
6536
}
6637

6738
virtual void Accept(SqlNodeVisitor *v) override { v->Visit(this); }
6839

6940
AlterTableType type;
7041

7142
// Dropped columns
72-
std::vector<char *> *dropped_names;
43+
std::vector<std::string> dropped_names;
7344

7445
// Added columns
75-
std::vector<std::unique_ptr<ColumnDefinition>> *added_columns;
46+
std::vector<std::unique_ptr<ColumnDefinition>> added_columns;
7647

77-
std::vector<std::unique_ptr<ColumnDefinition>> *changed_type_columns;
48+
std::vector<std::unique_ptr<ColumnDefinition>> changed_type_columns;
7849

7950
// the name that needs to be changed
80-
char *oldName;
81-
char *newName;
51+
std::string oldName;
52+
std::string newName;
8253
};
8354

8455
} // End parser namespace

src/parser/postgresparser.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1790,20 +1790,20 @@ parser::AlterTableStatement *PostgresParser::AlterTransform(Node *root) {
17901790
result->table_info_ =
17911791
std::unique_ptr<parser::TableInfo>(new parser::TableInfo());
17921792
if (relation->relname) {
1793-
result->table_info_.get()->table_name = strdup(relation->relname);
1793+
result->table_info_.get()->table_name = std::string{relation->relname};
17941794
}
17951795
if (relation->catalogname) {
17961796
result->table_info_.get()->database_name =
1797-
strdup(relation->catalogname);
1797+
std::string(relation->catalogname);
17981798
}
17991799
if (relation->schemaname) {
1800-
result->table_info_.get()->schema_name = strdup(relation->schemaname);
1800+
result->table_info_.get()->schema_name = std::string{relation->schemaname};
18011801
}
18021802
if (newRoot->subname) {
1803-
result->oldName = strdup(newRoot->subname);
1803+
result->oldName = std::string{newRoot->subname};
18041804
}
18051805
if (newRoot->newname) {
1806-
result->newName = strdup(newRoot->newname);
1806+
result->newName = std::string{newRoot->newname};
18071807
}
18081808
LOG_TRACE("finished transform");
18091809
return result;
@@ -1820,14 +1820,14 @@ parser::AlterTableStatement *PostgresParser::AlterTransform(Node *root) {
18201820
result->table_info_ =
18211821
std::unique_ptr<parser::TableInfo>(new parser::TableInfo());
18221822
if (relation->relname) {
1823-
result->table_info_.get()->table_name = strdup(relation->relname);
1823+
result->table_info_.get()->table_name = std::string{relation->relname};
18241824
}
18251825
if (relation->catalogname) {
18261826
result->table_info_.get()->database_name =
1827-
strdup(relation->catalogname);
1827+
std::string{relation->catalogname};
18281828
}
18291829
if (relation->schemaname) {
1830-
result->table_info_.get()->schema_name = strdup(relation->schemaname);
1830+
result->table_info_.get()->schema_name = std::string{relation->schemaname};
18311831
}
18321832

18331833
for (auto cell = newRoot->cmds->head; cell != NULL; cell = cell->next) {
@@ -1841,13 +1841,13 @@ parser::AlterTableStatement *PostgresParser::AlterTransform(Node *root) {
18411841
ColumnDefTransform(reinterpret_cast<ColumnDef *>(cmd->def),
18421842
&tmpStatement);
18431843
for (size_t i = 0; i < tmpStatement.columns.size(); i++) {
1844-
result->added_columns->emplace_back(
1844+
result->added_columns.emplace_back(
18451845
std::move(tmpStatement.columns[i]));
18461846
}
18471847
break;
18481848
}
18491849
case AT_DropColumn: {
1850-
result->dropped_names->push_back(strdup(cmd->name));
1850+
result->dropped_names.push_back(std::string{cmd->name});
18511851
break;
18521852
}
18531853
case AT_AlterColumnType: {
@@ -1859,7 +1859,7 @@ parser::AlterTableStatement *PostgresParser::AlterTransform(Node *root) {
18591859
ColumnDefTransform(reinterpret_cast<ColumnDef *>(def),
18601860
&tmp_statement);
18611861
for (size_t i = 0; i < tmp_statement.columns.size();i++){
1862-
result->changed_type_columns->emplace_back(std::move(tmp_statement.columns[i]));
1862+
result->changed_type_columns.emplace_back(std::move(tmp_statement.columns[i]));
18631863
}
18641864
LOG_TRACE("adding end");
18651865
break;

src/planner/alter_plan.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,35 +46,35 @@ AlterPlan::AlterPlan(const std::string &database_name,
4646
type(a_type) {}
4747

4848
AlterPlan::AlterPlan(parser::AlterTableStatement *parse_tree) {
49-
table_name = std::string(parse_tree->GetTableName());
50-
database_name = std::string(parse_tree->GetDatabaseName());
51-
schema_name = std::string(parse_tree->GetSchemaName());
49+
table_name = parse_tree->GetTableName();
50+
database_name = parse_tree->GetDatabaseName();
51+
schema_name = parse_tree->GetSchemaName();
5252
switch (parse_tree->type) {
5353
case parser::AlterTableStatement::AlterTableType::RENAME: {
54-
old_name_ = std::string(parse_tree->oldName);
55-
new_name_ = std::string(parse_tree->newName);
54+
old_name_ = parse_tree->oldName;
55+
new_name_ = parse_tree->newName;
5656
type = AlterType::RENAME;
5757
break;
5858
}
5959
case parser::AlterTableStatement::AlterTableType::ALTER: {
6060
// deal with dropped columns
6161
type = AlterType::ALTER;
62-
for (auto col : *parse_tree->dropped_names) {
63-
LOG_TRACE("Drooped column name: %s", col);
64-
dropped_columns.push_back(std::string(col));
62+
for (auto col : parse_tree->dropped_names) {
63+
LOG_TRACE("Drooped column name: %s", col.c_str());
64+
dropped_columns.push_back(col);
6565
}
6666

6767
// deal with added columns
6868
std::vector<catalog::Column> columns;
69-
for (size_t i = 0; i < (*parse_tree->added_columns).size(); i++) {
69+
for (size_t i = 0; i < parse_tree->added_columns.size(); i++) {
7070
type::TypeId val = parser::ColumnDefinition::GetValueType(
71-
(*parse_tree->added_columns)[i].get()->type);
71+
parse_tree->added_columns[i].get()->type);
7272

7373
auto column = catalog::Column(
7474
val, type::Type::GetTypeSize(val),
75-
std::string((*parse_tree->added_columns)[i].get()->name));
75+
std::string(parse_tree->added_columns[i].get()->name));
7676

77-
if ((*parse_tree->added_columns)[i].get()->not_null) {
77+
if (parse_tree->added_columns[i].get()->not_null) {
7878
catalog::Constraint constraint(ConstraintType::NOTNULL,
7979
"con_not_null");
8080
column.AddConstraint(constraint);
@@ -85,15 +85,15 @@ AlterPlan::AlterPlan(parser::AlterTableStatement *parse_tree) {
8585
std::unique_ptr<catalog::Schema>(new catalog::Schema(columns));
8686
columns.clear();
8787
// deal with change column types
88-
for (size_t i = 0; i < (*parse_tree->changed_type_columns).size(); i++) {
89-
auto &tmp = (*parse_tree->changed_type_columns)[i];
88+
for (size_t i = 0; i < parse_tree->changed_type_columns.size(); i++) {
89+
auto &tmp = parse_tree->changed_type_columns[i];
9090
type::TypeId val =
9191
parser::ColumnDefinition::GetValueType(tmp.get()->type);
9292
auto column = catalog::Column(
9393
val, type::Type::GetTypeSize(val),
94-
std::string((*parse_tree->changed_type_columns)[i].get()->name));
94+
std::string(parse_tree->changed_type_columns[i].get()->name));
9595

96-
if ((*parse_tree->changed_type_columns)[i].get()->not_null) {
96+
if (parse_tree->changed_type_columns[i].get()->not_null) {
9797
catalog::Constraint constraint(ConstraintType::NOTNULL,
9898
"con_not_null");
9999
column.AddConstraint(constraint);

0 commit comments

Comments
 (0)