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

Commit 54b1e86

Browse files
committed
GetAffectedIndex: Make input params a const reference
Passing a nullptr sql_statement to this function doesn't make much sense. So, let's make it a reference. And while we can do it, let's constify it. Rename: isDisjoint -> IsDisjoint and make it inline Add namespace closures
1 parent 658fef3 commit 54b1e86

File tree

6 files changed

+51
-42
lines changed

6 files changed

+51
-42
lines changed

src/include/catalog/catalog_cache.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
namespace peloton {
2121

2222
namespace planner {
23-
class PlanUtil;
24-
}
23+
class PlanUtil;
24+
} // namespace planner
2525

2626
namespace catalog {
2727

src/include/parser/sql_statement.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919

2020
#include <vector>
2121

22+
#include "common/internal_types.h"
2223
#include "common/macros.h"
2324
#include "common/printable.h"
2425
#include "common/sql_node_visitor.h"
25-
#include "common/internal_types.h"
2626

2727
namespace peloton {
2828

@@ -43,7 +43,7 @@ class SQLStatement : public Printable {
4343

4444
virtual ~SQLStatement() {}
4545

46-
virtual StatementType GetType() { return stmt_type; }
46+
virtual StatementType GetType() const { return stmt_type; }
4747

4848
// Get a string representation for debugging
4949
virtual const std::string GetInfo(int num_indent) const;

src/include/planner/plan_util.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,20 @@
1919
#include "planner/abstract_scan_plan.h"
2020
#include "planner/delete_plan.h"
2121
#include "planner/insert_plan.h"
22-
#include "planner/update_plan.h"
2322
#include "planner/populate_index_plan.h"
23+
#include "planner/update_plan.h"
2424
#include "storage/data_table.h"
2525
#include "util/string_util.h"
2626

2727
namespace peloton {
2828

2929
namespace catalog {
3030
class CatalogCache;
31-
}
31+
} // namespace catalog
3232

3333
namespace parser {
3434
class SQLStatement;
35-
}
35+
} // namespace parser
3636

3737
namespace planner {
3838

@@ -60,7 +60,8 @@ class PlanUtil {
6060
* @return set of affected index object ids
6161
*/
6262
static const std::set<oid_t> GetAffectedIndexes(
63-
catalog::CatalogCache &catalog_cache, parser::SQLStatement *sql_stmt);
63+
catalog::CatalogCache &catalog_cache,
64+
const parser::SQLStatement &sql_stmt);
6465

6566
private:
6667
///

src/include/util/set_util.h

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
//
77
// Identification: src/include/util/set_util.h
88
//
9-
// Copyright (c) 2015-18, Carnegie Mellon University Database Group
9+
// Copyright (c) 2015-2018, Carnegie Mellon University Database Group
1010
//
1111
//===----------------------------------------------------------------------===//
1212

@@ -19,24 +19,28 @@ namespace peloton {
1919
class SetUtil {
2020
public:
2121
template <typename T>
22-
static bool isDisjoint(const std::set<T> &setA, const std::set<T> &setB) {
23-
bool disjoint = true;
24-
if (setA.empty() || setB.empty()) return disjoint;
25-
26-
typename std::set<T>::const_iterator setA_it = setA.begin();
27-
typename std::set<T>::const_iterator setB_it = setB.begin();
28-
while (setA_it != setA.end() && setB_it != setB.end() && disjoint) {
29-
if (*setA_it == *setB_it) {
30-
disjoint = false;
31-
} else if (*setA_it < *setB_it) {
32-
setA_it++;
33-
} else {
34-
setB_it++;
35-
}
36-
}
22+
static bool IsDisjoint(const std::set<T> &setA, const std::set<T> &setB);
23+
};
24+
25+
template <typename T>
26+
inline bool SetUtil::IsDisjoint(const std::set<T> &setA,
27+
const std::set<T> &setB) {
28+
bool disjoint = true;
29+
if (setA.empty() || setB.empty()) return disjoint;
3730

38-
return disjoint;
31+
auto setA_it = setA.begin();
32+
auto setB_it = setB.begin();
33+
while (setA_it != setA.end() && setB_it != setB.end() && disjoint) {
34+
if (*setA_it == *setB_it) {
35+
disjoint = false;
36+
} else if (*setA_it < *setB_it) {
37+
setA_it++;
38+
} else {
39+
setB_it++;
40+
}
3941
}
40-
};
42+
43+
return disjoint;
44+
}
4145

4246
} // namespace peloton

src/planner/plan_util.cpp

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
//
77
// Identification: src/planner/plan_util.cpp
88
//
9-
// Copyright (c) 2015-18, Carnegie Mellon University Database Group
9+
// Copyright (c) 2015-2018, Carnegie Mellon University Database Group
1010
//
1111
//===----------------------------------------------------------------------===//
1212

@@ -29,22 +29,25 @@ namespace peloton {
2929
namespace planner {
3030

3131
const std::set<oid_t> PlanUtil::GetAffectedIndexes(
32-
catalog::CatalogCache &catalog_cache, parser::SQLStatement *sql_stmt) {
32+
catalog::CatalogCache &catalog_cache,
33+
const parser::SQLStatement &sql_stmt) {
3334
std::set<oid_t> index_oids;
3435
std::string db_name, table_name;
35-
switch (sql_stmt->GetType()) {
36+
switch (sql_stmt.GetType()) {
3637
// For INSERT, DELETE, all indexes are affected
3738
case StatementType::INSERT: {
38-
auto insert_stmt = static_cast<parser::InsertStatement *>(sql_stmt);
39-
db_name = insert_stmt->GetDatabaseName();
40-
table_name = insert_stmt->GetTableName();
39+
auto &insert_stmt =
40+
static_cast<const parser::InsertStatement &>(sql_stmt);
41+
db_name = insert_stmt.GetDatabaseName();
42+
table_name = insert_stmt.GetTableName();
4143
}
4244
PELOTON_FALLTHROUGH;
4345
case StatementType::DELETE: {
4446
if (table_name.empty() || db_name.empty()) {
45-
auto delete_stmt = static_cast<parser::DeleteStatement *>(sql_stmt);
46-
db_name = delete_stmt->GetDatabaseName();
47-
table_name = delete_stmt->GetTableName();
47+
auto &delete_stmt =
48+
static_cast<const parser::DeleteStatement &>(sql_stmt);
49+
db_name = delete_stmt.GetDatabaseName();
50+
table_name = delete_stmt.GetTableName();
4851
}
4952
auto indexes_map = catalog_cache.GetDatabaseObject(db_name)
5053
->GetTableObject(table_name)
@@ -54,13 +57,14 @@ const std::set<oid_t> PlanUtil::GetAffectedIndexes(
5457
}
5558
} break;
5659
case StatementType::UPDATE: {
57-
auto update_stmt = static_cast<parser::UpdateStatement *>(sql_stmt);
58-
db_name = update_stmt->table->GetDatabaseName();
59-
table_name = update_stmt->table->GetTableName();
60+
auto &update_stmt =
61+
static_cast<const parser::UpdateStatement &>(sql_stmt);
62+
db_name = update_stmt.table->GetDatabaseName();
63+
table_name = update_stmt.table->GetTableName();
6064
auto db_object = catalog_cache.GetDatabaseObject(db_name);
6165
auto table_object = db_object->GetTableObject(table_name);
6266

63-
auto &update_clauses = update_stmt->updates;
67+
auto &update_clauses = update_stmt.updates;
6468
std::set<oid_t> update_oids;
6569
for (const auto &update_clause : update_clauses) {
6670
LOG_TRACE("Affected column name for table(%s) in UPDATE query: %s",
@@ -76,7 +80,7 @@ const std::set<oid_t> PlanUtil::GetAffectedIndexes(
7680
const std::vector<oid_t> &key_attrs =
7781
index.second->GetKeyAttrs(); // why it's a vector, and not set?
7882
const std::set<oid_t> key_attrs_set(key_attrs.begin(), key_attrs.end());
79-
if (!SetUtil::isDisjoint(key_attrs_set, update_oids)) {
83+
if (!SetUtil::IsDisjoint(key_attrs_set, update_oids)) {
8084
LOG_TRACE("Index (%s) is affected",
8185
index.second->GetIndexName().c_str());
8286
index_oids.insert(index.first);
@@ -87,7 +91,7 @@ const std::set<oid_t> PlanUtil::GetAffectedIndexes(
8791
break;
8892
default:
8993
LOG_TRACE("Does not support finding affected indexes for query type: %d",
90-
static_cast<int>(sql_stmt->GetType()));
94+
static_cast<int>(sql_stmt.GetType()));
9195
}
9296
return (index_oids);
9397
}

test/util/set_util_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
//
77
// Identification: test/set_util_test.cpp
88
//
9-
// Copyright (c) 2015-18, Carnegie Mellon University Database Group
9+
// Copyright (c) 2015-2018, Carnegie Mellon University Database Group
1010
//
1111
//===----------------------------------------------------------------------===//
1212

0 commit comments

Comments
 (0)