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

Commit bc297d0

Browse files
Modify UpdateSqlTest to add HalloweenTest and MultiTileGroupTest
(cherry picked from commit f0c2427)
1 parent 6ca864e commit bc297d0

File tree

4 files changed

+181
-17
lines changed

4 files changed

+181
-17
lines changed

src/include/storage/data_table.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,10 +286,18 @@ class DataTable : public AbstractTable {
286286
concurrency::TransactionContext *transaction,
287287
ItemPointer **index_entry_ptr);
288288

289+
inline static size_t GetActiveTileGroupCount() {
290+
return default_active_tilegroup_count_;
291+
}
292+
289293
static void SetActiveTileGroupCount(const size_t active_tile_group_count) {
290294
default_active_tilegroup_count_ = active_tile_group_count;
291295
}
292296

297+
inline static size_t GetActiveIndirectionArrayCount() {
298+
return default_active_indirection_array_count_;
299+
}
300+
293301
static void SetActiveIndirectionArrayCount(
294302
const size_t active_indirection_array_count) {
295303
default_active_indirection_array_count_ = active_indirection_array_count;
@@ -345,9 +353,8 @@ class DataTable : public AbstractTable {
345353
bool CheckForeignKeyConstraints(const AbstractTuple *tuple,
346354
concurrency::TransactionContext *transaction);
347355

348-
public:
356+
private:
349357
static size_t default_active_tilegroup_count_;
350-
351358
static size_t default_active_indirection_array_count_;
352359

353360
private:

test/executor/loader_test.cpp

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -132,22 +132,32 @@ TEST_F(LoaderTests, LoadingTest) {
132132
auto expected_tile_group_count = 0;
133133

134134
int total_tuple_count = loader_threads_count * tilegroup_count_per_loader * TEST_TUPLES_PER_TILEGROUP;
135-
int max_cached_tuple_count = TEST_TUPLES_PER_TILEGROUP * storage::DataTable::default_active_tilegroup_count_;
136-
int max_unfill_cached_tuple_count = (TEST_TUPLES_PER_TILEGROUP - 1) * storage::DataTable::default_active_tilegroup_count_;
135+
int max_cached_tuple_count =
136+
TEST_TUPLES_PER_TILEGROUP * storage::DataTable::GetActiveTileGroupCount();
137+
int max_unfill_cached_tuple_count =
138+
(TEST_TUPLES_PER_TILEGROUP - 1) *
139+
storage::DataTable::GetActiveTileGroupCount();
137140

138141
if (total_tuple_count - max_cached_tuple_count <= 0) {
139142
if (total_tuple_count <= max_unfill_cached_tuple_count) {
140-
expected_tile_group_count = storage::DataTable::default_active_tilegroup_count_;
143+
expected_tile_group_count = storage::DataTable::GetActiveTileGroupCount();
141144
} else {
142-
expected_tile_group_count = storage::DataTable::default_active_tilegroup_count_ + total_tuple_count - max_unfill_cached_tuple_count;
145+
expected_tile_group_count =
146+
storage::DataTable::GetActiveTileGroupCount() + total_tuple_count -
147+
max_unfill_cached_tuple_count;
143148
}
144149
} else {
145-
int filled_tile_group_count = total_tuple_count / max_cached_tuple_count * storage::DataTable::default_active_tilegroup_count_;
150+
int filled_tile_group_count = total_tuple_count / max_cached_tuple_count * storage::DataTable::GetActiveTileGroupCount();
146151

147152
if (total_tuple_count - filled_tile_group_count * TEST_TUPLES_PER_TILEGROUP - max_unfill_cached_tuple_count <= 0) {
148-
expected_tile_group_count = filled_tile_group_count + storage::DataTable::default_active_tilegroup_count_;
153+
expected_tile_group_count = filled_tile_group_count +
154+
storage::DataTable::GetActiveTileGroupCount();
149155
} else {
150-
expected_tile_group_count = filled_tile_group_count + storage::DataTable::default_active_tilegroup_count_ + (total_tuple_count - filled_tile_group_count - max_unfill_cached_tuple_count);
156+
expected_tile_group_count =
157+
filled_tile_group_count +
158+
storage::DataTable::GetActiveTileGroupCount() +
159+
(total_tuple_count - filled_tile_group_count -
160+
max_unfill_cached_tuple_count);
151161
}
152162
}
153163

test/performance/insert_performance_test.cpp

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -119,22 +119,33 @@ TEST_F(InsertPerformanceTests, LoadingTest) {
119119
auto expected_tile_group_count = 0;
120120

121121
int total_tuple_count = loader_threads_count * tilegroup_count_per_loader * TEST_TUPLES_PER_TILEGROUP;
122-
int max_cached_tuple_count = TEST_TUPLES_PER_TILEGROUP * storage::DataTable::default_active_tilegroup_count_;
123-
int max_unfill_cached_tuple_count = (TEST_TUPLES_PER_TILEGROUP - 1) * storage::DataTable::default_active_tilegroup_count_;
122+
int max_cached_tuple_count =
123+
TEST_TUPLES_PER_TILEGROUP * storage::DataTable::GetActiveTileGroupCount();
124+
int max_unfill_cached_tuple_count =
125+
(TEST_TUPLES_PER_TILEGROUP - 1) *
126+
storage::DataTable::GetActiveTileGroupCount();
124127

125128
if (total_tuple_count - max_cached_tuple_count <= 0) {
126129
if (total_tuple_count <= max_unfill_cached_tuple_count) {
127-
expected_tile_group_count = storage::DataTable::default_active_tilegroup_count_;
130+
expected_tile_group_count = storage::DataTable::GetActiveTileGroupCount();
128131
} else {
129-
expected_tile_group_count = storage::DataTable::default_active_tilegroup_count_ + total_tuple_count - max_unfill_cached_tuple_count;
132+
expected_tile_group_count =
133+
storage::DataTable::GetActiveTileGroupCount() + total_tuple_count -
134+
max_unfill_cached_tuple_count;
130135
}
131136
} else {
132-
int filled_tile_group_count = total_tuple_count / max_cached_tuple_count * storage::DataTable::default_active_tilegroup_count_;
133-
137+
int filled_tile_group_count = total_tuple_count / max_cached_tuple_count *
138+
storage::DataTable::GetActiveTileGroupCount();
139+
134140
if (total_tuple_count - filled_tile_group_count * TEST_TUPLES_PER_TILEGROUP - max_unfill_cached_tuple_count <= 0) {
135-
expected_tile_group_count = filled_tile_group_count + storage::DataTable::default_active_tilegroup_count_;
141+
expected_tile_group_count = filled_tile_group_count +
142+
storage::DataTable::GetActiveTileGroupCount();
136143
} else {
137-
expected_tile_group_count = filled_tile_group_count + storage::DataTable::default_active_tilegroup_count_ + (total_tuple_count - filled_tile_group_count - max_unfill_cached_tuple_count);
144+
expected_tile_group_count =
145+
filled_tile_group_count +
146+
storage::DataTable::GetActiveTileGroupCount() +
147+
(total_tuple_count - filled_tile_group_count -
148+
max_unfill_cached_tuple_count);
138149
}
139150
}
140151

test/sql/update_sql_test.cpp

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,5 +278,141 @@ TEST_F(UpdateSQLTests, UpdateSQLCastTest) {
278278
txn_manager.CommitTransaction(txn);
279279
}
280280

281+
TEST_F(UpdateSQLTests, HalloweenTest) {
282+
LOG_DEBUG("Bootstrapping...");
283+
284+
auto catalog = catalog::Catalog::GetInstance();
285+
auto &txn_manager = concurrency::TransactionManagerFactory::GetInstance();
286+
auto txn = txn_manager.BeginTransaction();
287+
catalog->CreateDatabase(DEFAULT_DB_NAME, txn);
288+
txn_manager.CommitTransaction(txn);
289+
290+
LOG_DEBUG("Bootstrapping completed!");
291+
292+
size_t active_tilegroup_count = 3;
293+
storage::DataTable::SetActiveTileGroupCount(active_tilegroup_count);
294+
295+
LOG_DEBUG("Active tile group count = %zu",
296+
storage::DataTable::GetActiveTileGroupCount());
297+
// Create a table first
298+
LOG_DEBUG("Creating a table...");
299+
LOG_DEBUG("Query: CREATE TABLE test(a INT, b INT)");
300+
301+
TestingSQLUtil::ExecuteSQLQuery("CREATE TABLE test(a INT, b INT);");
302+
303+
LOG_DEBUG("Table created!");
304+
305+
txn = txn_manager.BeginTransaction();
306+
// Insert a tuple into table
307+
LOG_DEBUG("Inserting a tuple...");
308+
309+
LOG_DEBUG("Query: INSERT INTO test VALUES (10, 100)");
310+
TestingSQLUtil::ExecuteSQLQuery("INSERT INTO test VALUES (10, 1000);");
311+
LOG_DEBUG("Tuple inserted!");
312+
313+
txn_manager.CommitTransaction(txn);
314+
315+
// Update a tuple into table
316+
LOG_DEBUG("Updating a tuple...");
317+
LOG_DEBUG("Query: UPDATE test SET a = a/2");
318+
319+
std::vector<ResultValue> result;
320+
std::vector<FieldInfo> tuple_descriptor;
321+
std::string error_message;
322+
int rows_affected;
323+
324+
txn = txn_manager.BeginTransaction();
325+
TestingSQLUtil::ExecuteSQLQuery("UPDATE test SET a = a/2;", result,
326+
tuple_descriptor, rows_affected,
327+
error_message);
328+
329+
// Check the return value
330+
EXPECT_EQ(1, rows_affected);
331+
LOG_DEBUG("Tuple Updated!");
332+
txn_manager.CommitTransaction(txn);
333+
334+
LOG_DEBUG("Selecting updated value.");
335+
txn = txn_manager.BeginTransaction();
336+
// Check value of column salary after updating
337+
TestingSQLUtil::ExecuteSQLQuery("SELECT a from test", result,
338+
tuple_descriptor, rows_affected,
339+
error_message);
340+
// Check the return value
341+
txn_manager.CommitTransaction(txn);
342+
343+
EXPECT_EQ(TestingSQLUtil::GetResultValueAsString(result, 0), "5");
344+
LOG_DEBUG("Successfully updated tuple.");
345+
346+
// free the database just created
347+
txn = txn_manager.BeginTransaction();
348+
catalog::Catalog::GetInstance()->DropDatabaseWithName(DEFAULT_DB_NAME, txn);
349+
txn_manager.CommitTransaction(txn);
350+
}
351+
352+
TEST_F(UpdateSQLTests, MultiTileGroupUpdateSQLTest) {
353+
LOG_DEBUG("Bootstrapping...");
354+
355+
auto catalog = catalog::Catalog::GetInstance();
356+
auto &txn_manager = concurrency::TransactionManagerFactory::GetInstance();
357+
auto txn = txn_manager.BeginTransaction();
358+
catalog->CreateDatabase(DEFAULT_DB_NAME, txn);
359+
txn_manager.CommitTransaction(txn);
360+
361+
LOG_DEBUG("Bootstrapping completed!");
362+
363+
size_t active_tilegroup_count = 3;
364+
storage::DataTable::SetActiveTileGroupCount(active_tilegroup_count);
365+
366+
LOG_DEBUG("Active tile group count = %zu",
367+
storage::DataTable::GetActiveTileGroupCount());
368+
// Create a table first
369+
LOG_DEBUG("Creating a table...");
370+
LOG_DEBUG("Query: CREATE TABLE test(a INT PRIMARY KEY, b INT)");
371+
372+
TestingSQLUtil::ExecuteSQLQuery(
373+
"CREATE TABLE test(a INT PRIMARY KEY, b INT);");
374+
375+
LOG_DEBUG("Table created!");
376+
377+
// Insert a tuple into table
378+
LOG_DEBUG("Inserting a tuple...");
379+
380+
LOG_DEBUG("Query: INSERT INTO test VALUES (1, 100)");
381+
TestingSQLUtil::ExecuteSQLQuery("INSERT INTO test VALUES (1, 100);");
382+
383+
LOG_DEBUG("Tuple inserted!");
384+
385+
// Update a tuple into table
386+
LOG_DEBUG("Updating a tuple...");
387+
LOG_DEBUG("Query: UPDATE test SET a = 10 WHERE b = 100");
388+
389+
std::vector<ResultValue> result;
390+
std::vector<FieldInfo> tuple_descriptor;
391+
std::string error_message;
392+
int rows_affected;
393+
394+
TestingSQLUtil::ExecuteSQLQuery("UPDATE test SET a = 10 WHERE b = 100;",
395+
result, tuple_descriptor, rows_affected,
396+
error_message);
397+
398+
LOG_DEBUG("Query: UPDATE test SET a = 1 WHERE b = 100");
399+
// Check the return value
400+
EXPECT_EQ(1, rows_affected);
401+
LOG_DEBUG("Tuple Updated!");
402+
403+
TestingSQLUtil::ExecuteSQLQuery("UPDATE test SET a = 1 WHERE b = 100;",
404+
result, tuple_descriptor, rows_affected,
405+
error_message);
406+
407+
// Check the return value
408+
EXPECT_EQ(1, rows_affected);
409+
LOG_DEBUG("Tuple Updated!");
410+
411+
// free the database just created
412+
txn = txn_manager.BeginTransaction();
413+
catalog::Catalog::GetInstance()->DropDatabaseWithName(DEFAULT_DB_NAME, txn);
414+
txn_manager.CommitTransaction(txn);
415+
}
416+
281417
} // namespace test
282418
} // namespace peloton

0 commit comments

Comments
 (0)