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

Commit efe6119

Browse files
committed
fix test case errors, able to compile, one failing test
1 parent 4752c93 commit efe6119

35 files changed

+554
-466
lines changed

src/catalog/query_metrics_catalog.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ QueryMetricsCatalog::QueryMetricsCatalog(const std::string &database_name,
2626
"." CATALOG_SCHEMA_NAME "." QUERY_METRICS_CATALOG_NAME
2727
" ("
2828
"query_name VARCHAR NOT NULL PRIMARY KEY, "
29+
"database_oid INT NOT NULL PRIMARY KEY, "
2930
"num_params INT NOT NULL, "
3031
"param_types VARBINARY, "
3132
"param_formats VARBINARY, "
@@ -44,7 +45,7 @@ QueryMetricsCatalog::QueryMetricsCatalog(const std::string &database_name,
4445
QueryMetricsCatalog::~QueryMetricsCatalog() {}
4546

4647
bool QueryMetricsCatalog::InsertQueryMetrics(
47-
const std::string &name, int64_t num_params,
48+
const std::string &name, oid_t database_oid, int64_t num_params,
4849
const stats::QueryMetric::QueryParamBuf &type_buf,
4950
const stats::QueryMetric::QueryParamBuf &format_buf,
5051
const stats::QueryMetric::QueryParamBuf &value_buf, int64_t reads,
@@ -55,6 +56,7 @@ bool QueryMetricsCatalog::InsertQueryMetrics(
5556
new storage::Tuple(catalog_table_->GetSchema(), true));
5657

5758
auto val0 = type::ValueFactory::GetVarcharValue(name, pool);
59+
auto val1 = type::ValueFactory::GetIntegerValue(database_oid);
5860
auto val2 = type::ValueFactory::GetIntegerValue(num_params);
5961

6062
auto val3 = type::ValueFactory::GetNullValueByType(type::TypeId::VARBINARY);
@@ -79,6 +81,7 @@ bool QueryMetricsCatalog::InsertQueryMetrics(
7981
auto val12 = type::ValueFactory::GetIntegerValue(time_stamp);
8082

8183
tuple->SetValue(ColumnId::NAME, val0, pool);
84+
tuple->SetValue(ColumnId::DATABASE_OID, val1, pool);
8285
tuple->SetValue(ColumnId::NUM_PARAMS, val2, pool);
8386
tuple->SetValue(ColumnId::PARAM_TYPES, val3, pool);
8487
tuple->SetValue(ColumnId::PARAM_FORMATS, val4, pool);
@@ -96,11 +99,13 @@ bool QueryMetricsCatalog::InsertQueryMetrics(
9699
}
97100

98101
bool QueryMetricsCatalog::DeleteQueryMetrics(
99-
const std::string &name, concurrency::TransactionContext *txn) {
102+
const std::string &name, oid_t database_oid,
103+
concurrency::TransactionContext *txn) {
100104
oid_t index_offset = IndexId::PRIMARY_KEY; // Primary key index
101105

102106
std::vector<type::Value> values;
103107
values.push_back(type::ValueFactory::GetVarcharValue(name, nullptr).Copy());
108+
values.push_back(type::ValueFactory::GetIntegerValue(database_oid).Copy());
104109

105110
return DeleteWithIndexScan(index_offset, values, txn);
106111
}

src/include/catalog/query_metrics_catalog.h

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,18 @@
1515
//
1616
// Schema: (column offset: column_name)
1717
// 0: name (pkey)
18-
// 1: num_params
19-
// 2: param_types
20-
// 3: param_formats
21-
// 4: param_values
22-
// 5: reads
23-
// 6: updates
24-
// 7: deletes
25-
// 8: inserts
26-
// 9: latency
27-
// 10: cpu_time
28-
// 11: time_stamp
18+
// 1: database_id(pkey)
19+
// 2: num_params
20+
// 3: param_types
21+
// 4: param_formats
22+
// 5: param_values
23+
// 6: reads
24+
// 7: updates
25+
// 8: deletes
26+
// 9: inserts
27+
// 10: latency
28+
// 11: cpu_time
29+
// 12: time_stamp
2930
//
3031
//
3132
//===----------------------------------------------------------------------===//
@@ -49,15 +50,16 @@ class QueryMetricsCatalog : public AbstractCatalog {
4950
//===--------------------------------------------------------------------===//
5051
// write Related API
5152
//===--------------------------------------------------------------------===//
52-
bool InsertQueryMetrics(const std::string &name, int64_t num_params,
53+
bool InsertQueryMetrics(const std::string &name, oid_t database_oid,
54+
int64_t num_params,
5355
const stats::QueryMetric::QueryParamBuf &type_buf,
5456
const stats::QueryMetric::QueryParamBuf &format_buf,
5557
const stats::QueryMetric::QueryParamBuf &value_buf,
5658
int64_t reads, int64_t updates, int64_t deletes,
5759
int64_t inserts, int64_t latency, int64_t cpu_time,
5860
int64_t time_stamp, type::AbstractPool *pool,
5961
concurrency::TransactionContext *txn);
60-
bool DeleteQueryMetrics(const std::string &name,
62+
bool DeleteQueryMetrics(const std::string &name, oid_t database_oid,
6163
concurrency::TransactionContext *txn);
6264

6365
//===--------------------------------------------------------------------===//
@@ -67,21 +69,22 @@ class QueryMetricsCatalog : public AbstractCatalog {
6769
const std::string &name, concurrency::TransactionContext *txn);
6870
int64_t GetNumParams(const std::string &name,
6971
concurrency::TransactionContext *txn);
70-
// TODO: add more if needed
71-
72+
// TODO: In theory, we don't need database_oid
73+
// but now we store all the query metrics under default database "pelton"
7274
enum ColumnId {
7375
NAME = 0,
74-
NUM_PARAMS = 1,
75-
PARAM_TYPES = 2,
76-
PARAM_FORMATS = 3,
77-
PARAM_VALUES = 4,
78-
READS = 5,
79-
UPDATES = 6,
80-
DELETES = 7,
81-
INSERTS = 8,
82-
LATENCY = 9,
83-
CPU_TIME = 10,
84-
TIME_STAMP = 11,
76+
DATABASE_OID = 1,
77+
NUM_PARAMS = 2,
78+
PARAM_TYPES = 3,
79+
PARAM_FORMATS = 4,
80+
PARAM_VALUES = 5,
81+
READS = 6,
82+
UPDATES = 7,
83+
DELETES = 8,
84+
INSERTS = 9,
85+
LATENCY = 10,
86+
CPU_TIME = 11,
87+
TIME_STAMP = 12,
8588
// Add new columns here in creation order
8689
};
8790

src/include/parser/drop_statement.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ class DropStatement : public TableRefStatement {
3939
type_(type),
4040
missing_(false),
4141
cascade_(false) {}
42+
// only used in drop_test
43+
DropStatement(EntityType type, std::string table_name_of_trigger,
44+
std::string trigger_name)
45+
: TableRefStatement(StatementType::DROP),
46+
type_(type),
47+
trigger_name_(trigger_name) {
48+
if (!table_info_) table_info_.reset(new parser::TableInfo());
49+
table_info_->table_name = table_name_of_trigger;
50+
}
4251

4352
EntityType GetDropType() { return type_; }
4453

src/planner/plan_util.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@ const std::set<oid_t> PlanUtil::GetAffectedIndexes(
4040
static_cast<const parser::InsertStatement &>(sql_stmt);
4141
db_name = insert_stmt.GetDatabaseName();
4242
table_name = insert_stmt.GetTableName();
43+
schema_name = insert_stmt.GetSchemaName();
4344
}
4445
PELOTON_FALLTHROUGH;
4546
case StatementType::DELETE: {
46-
if (table_name.empty() || db_name.empty()) {
47+
if (table_name.empty() || db_name.empty() || schema_name.empty()) {
4748
auto &delete_stmt =
4849
static_cast<const parser::DeleteStatement &>(sql_stmt);
4950
db_name = delete_stmt.GetDatabaseName();

src/statistics/stats_aggregator.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,9 +172,10 @@ void StatsAggregator::UpdateQueryMetrics(int64_t time_stamp,
172172
->GetSystemCatalogs(query_metric->GetDatabaseId())
173173
->GetQueryMetricsCatalog()
174174
->InsertQueryMetrics(
175-
query_metric->GetName(), num_params, type_buf, format_buf,
176-
value_buf, reads, updates, deletes, inserts, (int64_t)latency,
177-
(int64_t)(cpu_system + cpu_user), time_stamp, pool_.get(), txn);
175+
query_metric->GetName(), query_metric->GetDatabaseId(), num_params,
176+
type_buf, format_buf, value_buf, reads, updates, deletes, inserts,
177+
(int64_t)latency, (int64_t)(cpu_system + cpu_user), time_stamp,
178+
pool_.get(), txn);
178179

179180
LOG_TRACE("Query Metric Tuple inserted");
180181
}

test/binder/binder_test.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828
#include "sql/testing_sql_util.h"
2929
#include "type/value_factory.h"
3030

31+
using std::make_tuple;
3132
using std::string;
3233
using std::unique_ptr;
3334
using std::vector;
34-
using std::make_tuple;
3535

3636
namespace peloton {
3737
namespace test {
@@ -122,10 +122,14 @@ TEST_F(BinderCorrectnessTest, SelectStatementTest) {
122122

123123
oid_t db_oid =
124124
catalog_ptr->GetDatabaseWithName(default_database_name, txn)->GetOid();
125-
oid_t tableA_oid =
126-
catalog_ptr->GetTableWithName(default_database_name, "a", txn)->GetOid();
127-
oid_t tableB_oid =
128-
catalog_ptr->GetTableWithName(default_database_name, "b", txn)->GetOid();
125+
oid_t tableA_oid = catalog_ptr
126+
->GetTableWithName(default_database_name,
127+
DEFUALT_SCHEMA_NAME, "a", txn)
128+
->GetOid();
129+
oid_t tableB_oid = catalog_ptr
130+
->GetTableWithName(default_database_name,
131+
DEFUALT_SCHEMA_NAME, "b", txn)
132+
->GetOid();
129133
txn_manager.CommitTransaction(txn);
130134

131135
// Check select_list
@@ -251,8 +255,10 @@ TEST_F(BinderCorrectnessTest, DeleteStatementTest) {
251255
auto txn = txn_manager.BeginTransaction();
252256
oid_t db_oid =
253257
catalog_ptr->GetDatabaseWithName(default_database_name, txn)->GetOid();
254-
oid_t tableB_oid =
255-
catalog_ptr->GetTableWithName(default_database_name, "b", txn)->GetOid();
258+
oid_t tableB_oid = catalog_ptr
259+
->GetTableWithName(default_database_name,
260+
DEFUALT_SCHEMA_NAME, "b", txn)
261+
->GetOid();
256262

257263
string deleteSQL = "DELETE FROM b WHERE 1 = b1 AND b2 = 'str'";
258264
unique_ptr<binder::BindNodeVisitor> binder(

test/brain/query_logger_test.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
#include "common/harness.h"
1414

1515
#include "brain/query_logger.h"
16-
#include "sql/testing_sql_util.h"
1716
#include "settings/settings_manager.h"
17+
#include "sql/testing_sql_util.h"
1818

1919
namespace peloton {
2020
namespace test {
@@ -27,7 +27,8 @@ class QueryLoggerTests : public PelotonTest {
2727

2828
// query to check that logging is done
2929
select_query_ =
30-
"SELECT query_string, fingerprint FROM pg_catalog.pg_query_history;";
30+
"SELECT query_string, fingerprint FROM "
31+
"peloton.pg_catalog.pg_query_history;";
3132

3233
brain::QueryLogger::Fingerprint fingerprint{select_query_};
3334
select_query_fingerprint_ = fingerprint.GetFingerprint();

test/catalog/catalog_test.cpp

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -41,29 +41,23 @@ TEST_F(CatalogTests, BootstrappingCatalog) {
4141
auto txn = txn_manager.BeginTransaction();
4242
storage::Database *database =
4343
catalog->GetDatabaseWithName(CATALOG_DATABASE_NAME, txn);
44+
// Check database metric table
45+
storage::DataTable *db_metric_table =
46+
catalog->GetTableWithName(CATALOG_DATABASE_NAME, CATALOG_SCHEMA_NAME,
47+
DATABASE_METRICS_CATALOG_NAME, txn);
4448
txn_manager.CommitTransaction(txn);
4549
EXPECT_NE(nullptr, database);
46-
// Check database metric table
47-
auto db_metric_table =
48-
database->GetTableWithName(DATABASE_METRICS_CATALOG_NAME);
4950
EXPECT_NE(nullptr, db_metric_table);
5051
}
5152
//
5253
TEST_F(CatalogTests, CreatingDatabase) {
5354
auto &txn_manager = concurrency::TransactionManagerFactory::GetInstance();
5455
auto txn = txn_manager.BeginTransaction();
5556
catalog::Catalog::GetInstance()->CreateDatabase("emp_db", txn);
56-
auto table_object = catalog::Catalog::GetInstance()->GetTableObject(
57-
CATALOG_DATABASE_NAME, INDEX_CATALOG_NAME, txn);
58-
auto index_object = table_object->GetIndexObject(INDEX_CATALOG_PKEY_OID);
59-
std::vector<oid_t> key_attrs = index_object->GetKeyAttrs();
60-
6157
EXPECT_EQ("emp_db", catalog::Catalog::GetInstance()
6258
->GetDatabaseWithName("emp_db", txn)
6359
->GetDBName());
6460
txn_manager.CommitTransaction(txn);
65-
EXPECT_EQ(1, key_attrs.size());
66-
EXPECT_EQ(0, key_attrs[0]);
6761
}
6862

6963
TEST_F(CatalogTests, CreatingTable) {
@@ -83,11 +77,13 @@ TEST_F(CatalogTests, CreatingTable) {
8377
std::unique_ptr<catalog::Schema> table_schema_3(
8478
new catalog::Schema({id_column, name_column}));
8579

86-
catalog::Catalog::GetInstance()->CreateTable("emp_db", "emp_table",
87-
std::move(table_schema), txn);
88-
catalog::Catalog::GetInstance()->CreateTable("emp_db", "department_table",
80+
catalog::Catalog::GetInstance()->CreateTable(
81+
"emp_db", DEFUALT_SCHEMA_NAME, "emp_table", std::move(table_schema), txn);
82+
catalog::Catalog::GetInstance()->CreateTable("emp_db", DEFUALT_SCHEMA_NAME,
83+
"department_table",
8984
std::move(table_schema_2), txn);
90-
catalog::Catalog::GetInstance()->CreateTable("emp_db", "salary_table",
85+
catalog::Catalog::GetInstance()->CreateTable("emp_db", DEFUALT_SCHEMA_NAME,
86+
"salary_table",
9187
std::move(table_schema_3), txn);
9288
// insert random tuple into DATABASE_METRICS_CATALOG and check
9389
std::unique_ptr<type::AbstractPool> pool(new type::EphemeralPool());
@@ -112,13 +108,12 @@ TEST_F(CatalogTests, CreatingTable) {
112108
->GetParamTypes("a query", txn);
113109
EXPECT_EQ(1, param1.len);
114110
EXPECT_EQ('a', *param1.buf);
115-
111+
// check colum object
116112
EXPECT_EQ("name", catalog::Catalog::GetInstance()
117-
->GetDatabaseWithName("emp_db", txn)
118-
->GetTableWithName("department_table")
119-
->GetSchema()
120-
->GetColumn(1)
121-
.GetName());
113+
->GetTableObject("emp_db", DEFUALT_SCHEMA_NAME,
114+
"department_table", txn)
115+
->GetColumnObject(1)
116+
->GetColumnName());
122117
txn_manager.CommitTransaction(txn);
123118
// EXPECT_EQ(5, time_stamp);
124119

@@ -161,7 +156,7 @@ TEST_F(CatalogTests, TableObject) {
161156
auto txn = txn_manager.BeginTransaction();
162157

163158
auto table_object = catalog::Catalog::GetInstance()->GetTableObject(
164-
"emp_db", "department_table", txn);
159+
"emp_db", DEFUALT_SCHEMA_NAME, "department_table", txn);
165160

166161
auto index_objects = table_object->GetIndexObjects();
167162
auto column_objects = table_object->GetColumnObjects();
@@ -195,7 +190,7 @@ TEST_F(CatalogTests, TableObject) {
195190
bool update_result = pg_table->UpdateVersionId(1, department_table_oid, txn);
196191
// get version id after update, invalidate old cache
197192
table_object = catalog::Catalog::GetInstance()->GetTableObject(
198-
"emp_db", "department_table", txn);
193+
"emp_db", DEFUALT_SCHEMA_NAME, "department_table", txn);
199194
uint32_t version_oid = table_object->GetVersionId();
200195
EXPECT_NE(department_table_oid, INVALID_OID);
201196
EXPECT_EQ(update_result, true);
@@ -208,22 +203,23 @@ TEST_F(CatalogTests, DroppingTable) {
208203
auto &txn_manager = concurrency::TransactionManagerFactory::GetInstance();
209204
auto txn = txn_manager.BeginTransaction();
210205
auto catalog = catalog::Catalog::GetInstance();
211-
// NOTE: everytime we create a database, there will be 7 catalog tables inside
206+
// NOTE: everytime we create a database, there will be 8 catalog tables inside
212207
EXPECT_EQ(
213-
10,
208+
11,
214209
(int)catalog->GetDatabaseObject("emp_db", txn)->GetTableObjects().size());
215210
auto database_object =
216211
catalog::Catalog::GetInstance()->GetDatabaseObject("emp_db", txn);
217212
EXPECT_NE(nullptr, database_object);
218-
catalog::Catalog::GetInstance()->DropTable("emp_db", "department_table", txn);
213+
catalog::Catalog::GetInstance()->DropTable("emp_db", DEFUALT_SCHEMA_NAME,
214+
"department_table", txn);
219215

220216
database_object =
221217
catalog::Catalog::GetInstance()->GetDatabaseObject("emp_db", txn);
222218
EXPECT_NE(nullptr, database_object);
223219
auto department_table_object =
224-
database_object->GetTableObject("department_table");
220+
database_object->GetTableObject("department_table", DEFUALT_SCHEMA_NAME);
225221
EXPECT_EQ(
226-
9,
222+
10,
227223
(int)catalog->GetDatabaseObject("emp_db", txn)->GetTableObjects().size());
228224
txn_manager.CommitTransaction(txn);
229225

@@ -232,29 +228,30 @@ TEST_F(CatalogTests, DroppingTable) {
232228
// Try to drop again
233229
txn = txn_manager.BeginTransaction();
234230
EXPECT_THROW(catalog::Catalog::GetInstance()->DropTable(
235-
"emp_db", "department_table", txn),
231+
"emp_db", DEFUALT_SCHEMA_NAME, "department_table", txn),
236232
CatalogException);
237233
//
238234
EXPECT_EQ(
239-
9,
235+
10,
240236
(int)catalog->GetDatabaseObject("emp_db", txn)->GetTableObjects().size());
241237
txn_manager.CommitTransaction(txn);
242238

243239
// Drop a table that does not exist
244240
txn = txn_manager.BeginTransaction();
245-
EXPECT_THROW(
246-
catalog::Catalog::GetInstance()->DropTable("emp_db", "void_table", txn),
247-
CatalogException);
241+
EXPECT_THROW(catalog::Catalog::GetInstance()->DropTable(
242+
"emp_db", DEFUALT_SCHEMA_NAME, "void_table", txn),
243+
CatalogException);
248244
EXPECT_EQ(
249-
9,
245+
10,
250246
(int)catalog->GetDatabaseObject("emp_db", txn)->GetTableObjects().size());
251247
txn_manager.CommitTransaction(txn);
252248

253249
// Drop the other table
254250
txn = txn_manager.BeginTransaction();
255-
catalog::Catalog::GetInstance()->DropTable("emp_db", "emp_table", txn);
251+
catalog::Catalog::GetInstance()->DropTable("emp_db", DEFUALT_SCHEMA_NAME,
252+
"emp_table", txn);
256253
EXPECT_EQ(
257-
8,
254+
9,
258255
(int)catalog->GetDatabaseObject("emp_db", txn)->GetTableObjects().size());
259256
txn_manager.CommitTransaction(txn);
260257
}

0 commit comments

Comments
 (0)