From 5a35824b096f7f36d05b63ac510db27f7f67f9d7 Mon Sep 17 00:00:00 2001 From: Wenbo Li Date: Tue, 12 Mar 2024 13:31:08 +0800 Subject: [PATCH] Add missing const qualifier in DatabaseEngine methods --- src/database/connection.cpp | 6 ++++-- src/database/connection.h | 4 ++-- src/database/database_engine.cpp | 26 ++++++++++++++------------ src/database/database_engine.h | 24 ++++++++++++------------ 4 files changed, 32 insertions(+), 28 deletions(-) diff --git a/src/database/connection.cpp b/src/database/connection.cpp index 50cb67a..2706235 100644 --- a/src/database/connection.cpp +++ b/src/database/connection.cpp @@ -6,8 +6,10 @@ namespace huadb { Connection::Connection(DatabaseEngine &database) : database_(database) {} -void Connection::SendQuery(const std::string &sql, ResultWriter &writer) { database_.ExecuteSql(sql, writer, *this); } +void Connection::SendQuery(const std::string &sql, ResultWriter &writer) const { + database_.ExecuteSql(sql, writer, *this); +} -bool Connection::InTransaction() { return database_.InTransaction(*this); } +bool Connection::InTransaction() const { return database_.InTransaction(*this); } } // namespace huadb diff --git a/src/database/connection.h b/src/database/connection.h index c4a42a7..ef17f69 100644 --- a/src/database/connection.h +++ b/src/database/connection.h @@ -10,8 +10,8 @@ class DatabaseEngine; class Connection { public: explicit Connection(DatabaseEngine &database); - void SendQuery(const std::string &sql, ResultWriter &writer); - bool InTransaction(); + void SendQuery(const std::string &sql, ResultWriter &writer) const; + bool InTransaction() const; private: DatabaseEngine &database_; diff --git a/src/database/database_engine.cpp b/src/database/database_engine.cpp index 57b4a61..99279ad 100644 --- a/src/database/database_engine.cpp +++ b/src/database/database_engine.cpp @@ -70,9 +70,11 @@ DatabaseEngine::~DatabaseEngine() { const std::string &DatabaseEngine::GetCurrentDatabase() const { return current_db_; } -bool DatabaseEngine::InTransaction(Connection &connection) const { return xids_.find(&connection) != xids_.end(); } +bool DatabaseEngine::InTransaction(const Connection &connection) const { + return xids_.find(&connection) != xids_.end(); +} -void DatabaseEngine::ExecuteSql(const std::string &sql, ResultWriter &writer, Connection &connection) { +void DatabaseEngine::ExecuteSql(const std::string &sql, ResultWriter &writer, const Connection &connection) { if (!sql.empty() && sql[0] == '\\') { if (sql[1] == 'l') { ShowDatabases(writer); @@ -285,7 +287,7 @@ void DatabaseEngine::Crash() { crashed_ = true; } -void DatabaseEngine::Help(ResultWriter &writer) { +void DatabaseEngine::Help(ResultWriter &writer) const { std::string help = R"( \? or \h show help message \c [database_name] change database @@ -302,7 +304,7 @@ void DatabaseEngine::CreateDatabase(const std::string &db_name, bool exists_ok, WriteOneCell("CREATE DATABASE", writer); } -void DatabaseEngine::ShowDatabases(ResultWriter &writer) { +void DatabaseEngine::ShowDatabases(ResultWriter &writer) const { writer.BeginTable(); writer.BeginHeader(); writer.WriteHeaderCell("database_name"); @@ -349,7 +351,7 @@ void DatabaseEngine::CreateTable(const std::string &table_name, const ColumnList WriteOneCell("CREATE TABLE", writer); } -void DatabaseEngine::DescribeTable(const std::string &table_name, ResultWriter &writer) { +void DatabaseEngine::DescribeTable(const std::string &table_name, ResultWriter &writer) const { auto column_list = catalog_->GetTableColumnList(table_name); writer.BeginTable(); writer.BeginHeader(); @@ -370,7 +372,7 @@ void DatabaseEngine::DescribeTable(const std::string &table_name, ResultWriter & writer.WriteRowCount(column_count); } -void DatabaseEngine::ShowTables(ResultWriter &writer) { +void DatabaseEngine::ShowTables(ResultWriter &writer) const { writer.BeginTable(); writer.BeginHeader(); writer.WriteHeaderCell("table_name"); @@ -402,7 +404,7 @@ void DatabaseEngine::DropIndex(const std::string &index_name, ResultWriter &writ WriteOneCell("DROP INDEX", writer); } -void DatabaseEngine::Begin(Connection &connection) { +void DatabaseEngine::Begin(const Connection &connection) { if (xids_.find(&connection) != xids_.end()) { throw DbException("There is already a transaction in progress"); } else { @@ -412,7 +414,7 @@ void DatabaseEngine::Begin(Connection &connection) { } } -void DatabaseEngine::Commit(Connection &connection) { +void DatabaseEngine::Commit(const Connection &connection) { if (xids_.find(&connection) == xids_.end()) { throw DbException("There is no transaction in process"); } else { @@ -422,7 +424,7 @@ void DatabaseEngine::Commit(Connection &connection) { } } -void DatabaseEngine::Rollback(Connection &connection) { +void DatabaseEngine::Rollback(const Connection &connection) { if (xids_.find(&connection) == xids_.end()) { throw DbException("There is no transaction in process"); } else { @@ -496,7 +498,7 @@ void DatabaseEngine::VariableSet(const Connection &connection, const VariableSet } void DatabaseEngine::VariableShow(const Connection &connection, const VariableShowStatement &stmt, - ResultWriter &writer) { + ResultWriter &writer) const { std::string result; if (stmt.variable_ == "tables") { ShowTables(writer); @@ -510,10 +512,10 @@ void DatabaseEngine::VariableShow(const Connection &connection, const VariableSh result = std::to_string(log_manager_->GetRedoCount()); } else { if (client_variables_.find(&connection) == client_variables_.end() || - client_variables_[&connection].find(stmt.variable_) == client_variables_[&connection].end()) { + client_variables_.at(&connection).find(stmt.variable_) == client_variables_.at(&connection).end()) { throw DbException("Variable not found"); } - result = client_variables_[&connection][stmt.variable_]; + result = client_variables_.at(&connection).at(stmt.variable_); } writer.BeginTable(); writer.BeginHeader(); diff --git a/src/database/database_engine.h b/src/database/database_engine.h index b903130..b4125fa 100644 --- a/src/database/database_engine.h +++ b/src/database/database_engine.h @@ -33,32 +33,32 @@ class DatabaseEngine { ~DatabaseEngine(); const std::string &GetCurrentDatabase() const; - bool InTransaction(Connection &connection) const; - void ExecuteSql(const std::string &sql, ResultWriter &writer, Connection &connection); + bool InTransaction(const Connection &connection) const; + void ExecuteSql(const std::string &sql, ResultWriter &writer, const Connection &connection); void Crash(); private: - void Help(ResultWriter &writer); + void Help(ResultWriter &writer) const; void CreateDatabase(const std::string &db_name, bool exists_ok, ResultWriter &writer); - void ShowDatabases(ResultWriter &writer); + void ShowDatabases(ResultWriter &writer) const; void ChangeDatabase(const std::string &db_name, ResultWriter &writer); void DropDatabase(const std::string &db_name, bool missing_ok, ResultWriter &writer); void CloseDatabase(); void CreateTable(const std::string &table_name, const ColumnList &column_list, ResultWriter &writer); - void DescribeTable(const std::string &table_name, ResultWriter &writer); - void ShowTables(ResultWriter &writer); + void DescribeTable(const std::string &table_name, ResultWriter &writer) const; + void ShowTables(ResultWriter &writer) const; void DropTable(const std::string &table_name, ResultWriter &writer); void CreateIndex(const std::string &index_name, const std::string &table_name, const std::vector &column_names, ResultWriter &writer); void DropIndex(const std::string &index_name, ResultWriter &writer); - void Begin(Connection &connection); - void Commit(Connection &connection); - void Rollback(Connection &connection); + void Begin(const Connection &connection); + void Commit(const Connection &connection); + void Rollback(const Connection &connection); void Checkpoint(); void Recover(); @@ -67,7 +67,7 @@ class DatabaseEngine { void Lock(xid_t xid, const LockStatement &stmt, ResultWriter &writer); void VariableSet(const Connection &connection, const VariableSetStatement &stmt, ResultWriter &writer); - void VariableShow(const Connection &connection, const VariableShowStatement &stmt, ResultWriter &writer); + void VariableShow(const Connection &connection, const VariableShowStatement &stmt, ResultWriter &writer) const; void Analyze(const AnalyzeStatement &stmt, ResultWriter &writer); void Vacuum(const VacuumStatement &stmt, ResultWriter &writer); @@ -90,9 +90,9 @@ class DatabaseEngine { std::unique_ptr lock_manager_; std::unordered_map> client_variables_; - std::unordered_map xids_; + std::unordered_map xids_; std::unordered_map isolation_levels_; - std::unordered_set auto_transaction_set_; + std::unordered_set auto_transaction_set_; ForceJoin force_join_ = ForceJoin::NONE; JoinOrderAlgorithm join_order_algorithm_ = DEFAULT_JOIN_ORDER_ALGORITHM;