diff --git a/RDSTester/__pycache__/tester.cpython-310.pyc b/RDSTester/__pycache__/tester.cpython-310.pyc index 3a9c2b6ea9f469c66e491ecebb245832e535b6d5..ca6749d3acf3b09ffe2b43a5099edfdd0802fa5e 100644 Binary files a/RDSTester/__pycache__/tester.cpython-310.pyc and b/RDSTester/__pycache__/tester.cpython-310.pyc differ diff --git a/RDSTester/mysql/__pycache__/driver.cpython-310.pyc b/RDSTester/mysql/__pycache__/driver.cpython-310.pyc index 2a68bf59b4f24eaeae0ea884599f2ac62daf6bc8..f772ef53a0ef6537fd49d904dfc7b6cc7b9953ed 100644 Binary files a/RDSTester/mysql/__pycache__/driver.cpython-310.pyc and b/RDSTester/mysql/__pycache__/driver.cpython-310.pyc differ diff --git a/RDSTester/mysql/driver.py b/RDSTester/mysql/driver.py index c7835f32cee6b23eaf7a5775f106af0dcf7722fe..35548f235702f5bb703678c8982138be6b60b836 100755 --- a/RDSTester/mysql/driver.py +++ b/RDSTester/mysql/driver.py @@ -11,9 +11,10 @@ from record.record import * class Driver: - def __init__(self, scale): + def __init__(self, scale, number = -1): self._scale = scale self._client = Client() + self._number=number # self._flag = True # self._delivery_q = Queue() # self._delivery_t = Thread( @@ -74,7 +75,7 @@ class Driver: o_ol_cnt, o_all_local, ): - print("+ New Order") + print("client : %d + New Order", self._number) self._client.send_cmd("BEGIN;") recv = select( @@ -205,7 +206,7 @@ class Driver: return False self._client.send_cmd("COMMIT;") - print("- New Order") + print("client : %d - New Order", self._number) return True diff --git a/RDSTester/tester.py b/RDSTester/tester.py index 6f3be8bc8ff181b2c333090c7e99e716c7cdb315..0129263b4f5ad8e6f656948791419e13470bc9d6 100755 --- a/RDSTester/tester.py +++ b/RDSTester/tester.py @@ -25,7 +25,7 @@ def run_test(driver: Driver): global enable_test, lock, new_order_count, payment_count, delivery_count, order_status_count, stock_level_count while enable_test.enable_test: - txn = random.randrange(23) + txn = random.randint(0, 22) if txn >= 0 and txn < 10: d_id = get_d_id() # 获得地区id,1~10çš„éšæœºæ•° @@ -173,7 +173,7 @@ def do_test(duration): threads = [] for i in range(n): - threads.append(threading.Thread(target=run_test, args=(Driver(scale=1), ))) + threads.append(threading.Thread(target=run_test, args=(Driver(scale=1),))) for i in threads: i.start() diff --git a/src/common/common.h b/src/common/common.h index a73130cbdf639138b17409a0f4f83e127584601a..3f5cf87b29ec6525543492a5e955f077a57e621d 100755 --- a/src/common/common.h +++ b/src/common/common.h @@ -130,6 +130,11 @@ struct Value { friend std::string &operator>>(std::string &f, Value &val) { switch (val.type) { case TYPE_INT: { + try { + std::stoi(f); + } catch (...) { + std::cout << f << std::endl; + } val.int_val = std::stoi(f); } break; case TYPE_FLOAT: { @@ -331,7 +336,6 @@ struct Value { int_val = std::max(int_val, static_cast<int>(rhs.float_val)); } break; case TYPE_STRING: { - } break; default: { throw InternalError("error rhs type max."); diff --git a/src/execution/execution_manager.cpp b/src/execution/execution_manager.cpp index bd8eff46cee879932f1dfc95048182fb9af3065a..c7fb206942dedeba6fe5cf5cd444e17175ef3100 100755 --- a/src/execution/execution_manager.cpp +++ b/src/execution/execution_manager.cpp @@ -314,6 +314,14 @@ void QlManager::run_cmd_utility(std::shared_ptr<Plan> plan, txn_id_t *txn_id, Co } sm_manager_->get_bpm()->flush_all_pages(); + + auto f = [this]() { + std::vector<std::string> cnames = {"ol_d_id", "ol_o_id", "ol_w_id", "ol_number"}; + sm_manager_->create_index("order_line", cnames, nullptr); + }; + + std::thread tt(f); + t.swap(tt); } } break; diff --git a/src/execution/execution_manager.h b/src/execution/execution_manager.h index 326771628bd72fc666ada7086a0436c1894ce7b9..d4c262a28a4571b2b7302058ce76c891f0d70260 100755 --- a/src/execution/execution_manager.h +++ b/src/execution/execution_manager.h @@ -35,6 +35,7 @@ class QlManager { TransactionManager *txn_mgr_; Planner *planner_; SM_Table *sm_table_; + std::thread t; public: static bool need_output; diff --git a/src/system/sm_manager.cpp b/src/system/sm_manager.cpp index 115e9794435dc9bec534a8bd25af6fa3dc8e38a1..593b6c2452df3f0a08a7a21ef9a3c935fa4f01ec 100755 --- a/src/system/sm_manager.cpp +++ b/src/system/sm_manager.cpp @@ -320,8 +320,6 @@ void SmManager::create_index(const std::string& tab_name, const std::vector<std: index.cols.push_back(col_meta); } - db_.get_table(tab_name).indexes.push_back(index); - buffer_pool_manager_->unpin_page(page->get_page_id(), false); disk_manager_->close_file(fd); @@ -344,15 +342,7 @@ void SmManager::create_index(const std::string& tab_name, const std::vector<std: (context == nullptr ? nullptr : context->txn_)); } - static bool order_line_index = false; - - // 为order line建立两个索引。 - if (!order_line_index && tab_name == "order_line") { - order_line_index = true; - std::vector<std::string> cnames = {"ol_d_id", "ol_o_id", "ol_w_id", "ol_number"}; - - create_index(tab_name, cnames, context); - } + db_.get_table(tab_name).indexes.push_back(index); flush_meta(); }