From 3c853197010b69e1cb8622910cf08699f8125ecf Mon Sep 17 00:00:00 2001 From: Josip Seljan <62958579+the-joksim@users.noreply.github.com> Date: Mon, 23 Nov 2020 14:24:34 +0100 Subject: [PATCH] Update replication queries to follow the new replication nomenclature (#48) * MODE -> ROLE Co-authored-by: jseljan --- src/query/frontend/ast/ast.lcp | 6 +++--- .../frontend/ast/cypher_main_visitor.cpp | 16 +++++++-------- .../frontend/ast/cypher_main_visitor.hpp | 8 ++++---- .../opencypher/grammar/MemgraphCypher.g4 | 8 ++++---- .../frontend/semantic/required_privileges.cpp | 4 ++-- src/query/interpreter.cpp | 16 +++++++-------- src/query/interpreter.hpp | 6 +++--- tests/unit/cypher_main_visitor.cpp | 20 +++++++++---------- 8 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/query/frontend/ast/ast.lcp b/src/query/frontend/ast/ast.lcp index 98e8abb22..329c93491 100644 --- a/src/query/frontend/ast/ast.lcp +++ b/src/query/frontend/ast/ast.lcp @@ -2299,7 +2299,7 @@ cpp<# (lcp:define-class replication-query (query) ((action "Action" :scope :public) - (mode "ReplicationMode" :scope :public) + (role "ReplicationRole" :scope :public) (replica_name "std::string" :scope :public) (hostname "Expression *" :initval "nullptr" :scope :public :slk-save #'slk-save-ast-pointer @@ -2311,10 +2311,10 @@ cpp<# (:public (lcp:define-enum action - (set-replication-mode show-replication-mode create-replica + (set-replication-role show-replication-role create-replica drop-replica show-replicas) (:serialize)) - (lcp:define-enum replication-mode + (lcp:define-enum replication-role (main replica) (:serialize)) (lcp:define-enum sync-mode diff --git a/src/query/frontend/ast/cypher_main_visitor.cpp b/src/query/frontend/ast/cypher_main_visitor.cpp index ac2657c4b..1b72601cb 100644 --- a/src/query/frontend/ast/cypher_main_visitor.cpp +++ b/src/query/frontend/ast/cypher_main_visitor.cpp @@ -206,22 +206,22 @@ antlrcpp::Any CypherMainVisitor::visitReplicationQuery( return replication_query; } -antlrcpp::Any CypherMainVisitor::visitSetReplicationMode( - MemgraphCypher::SetReplicationModeContext *ctx) { +antlrcpp::Any CypherMainVisitor::visitSetReplicationRole( + MemgraphCypher::SetReplicationRoleContext *ctx) { auto *replication_query = storage_->Create(); - replication_query->action_ = ReplicationQuery::Action::SET_REPLICATION_MODE; + replication_query->action_ = ReplicationQuery::Action::SET_REPLICATION_ROLE; if (ctx->MAIN()) { - replication_query->mode_ = ReplicationQuery::ReplicationMode::MAIN; + replication_query->role_ = ReplicationQuery::ReplicationRole::MAIN; } else if (ctx->REPLICA()) { - replication_query->mode_ = ReplicationQuery::ReplicationMode::REPLICA; + replication_query->role_ = ReplicationQuery::ReplicationRole::REPLICA; } return replication_query; } -antlrcpp::Any CypherMainVisitor::visitShowReplicationMode( - MemgraphCypher::ShowReplicationModeContext *ctx) { +antlrcpp::Any CypherMainVisitor::visitShowReplicationRole( + MemgraphCypher::ShowReplicationRoleContext *ctx) { auto *replication_query = storage_->Create(); - replication_query->action_ = ReplicationQuery::Action::SHOW_REPLICATION_MODE; + replication_query->action_ = ReplicationQuery::Action::SHOW_REPLICATION_ROLE; return replication_query; } diff --git a/src/query/frontend/ast/cypher_main_visitor.hpp b/src/query/frontend/ast/cypher_main_visitor.hpp index 9e1d165ed..af4178534 100644 --- a/src/query/frontend/ast/cypher_main_visitor.hpp +++ b/src/query/frontend/ast/cypher_main_visitor.hpp @@ -195,14 +195,14 @@ class CypherMainVisitor : public antlropencypher::MemgraphCypherBaseVisitor { /** * @return ReplicationQuery* */ - antlrcpp::Any visitSetReplicationMode( - MemgraphCypher::SetReplicationModeContext *ctx) override; + antlrcpp::Any visitSetReplicationRole( + MemgraphCypher::SetReplicationRoleContext *ctx) override; /** * @return ReplicationQuery* */ - antlrcpp::Any visitShowReplicationMode( - MemgraphCypher::ShowReplicationModeContext *ctx) override; + antlrcpp::Any visitShowReplicationRole( + MemgraphCypher::ShowReplicationRoleContext *ctx) override; /** * @return ReplicationQuery* diff --git a/src/query/frontend/opencypher/grammar/MemgraphCypher.g4 b/src/query/frontend/opencypher/grammar/MemgraphCypher.g4 index f35e0cc8d..31f81021e 100644 --- a/src/query/frontend/opencypher/grammar/MemgraphCypher.g4 +++ b/src/query/frontend/opencypher/grammar/MemgraphCypher.g4 @@ -70,8 +70,8 @@ authQuery : createRole | showUsersForRole ; -replicationQuery : setReplicationMode - | showReplicationMode +replicationQuery : setReplicationRole + | showReplicationRole | createReplica | dropReplica | showReplicas @@ -117,9 +117,9 @@ showUsersForRole : SHOW USERS FOR role=userOrRoleName ; dumpQuery: DUMP DATABASE ; -setReplicationMode : SET REPLICATION MODE TO ( MAIN | REPLICA ) ; +setReplicationRole : SET REPLICATION ROLE TO ( MAIN | REPLICA ) ; -showReplicationMode : SHOW REPLICATION MODE ; +showReplicationRole : SHOW REPLICATION ROLE ; replicaName : symbolicName ; diff --git a/src/query/frontend/semantic/required_privileges.cpp b/src/query/frontend/semantic/required_privileges.cpp index 9e1564329..719d9785f 100644 --- a/src/query/frontend/semantic/required_privileges.cpp +++ b/src/query/frontend/semantic/required_privileges.cpp @@ -61,10 +61,10 @@ class PrivilegeExtractor : public QueryVisitor, void Visit(ReplicationQuery &replication_query) override { switch (replication_query.action_) { - case ReplicationQuery::Action::SET_REPLICATION_MODE: + case ReplicationQuery::Action::SET_REPLICATION_ROLE: AddPrivilege(AuthQuery::Privilege::REPLICATION); break; - case ReplicationQuery::Action::SHOW_REPLICATION_MODE: + case ReplicationQuery::Action::SHOW_REPLICATION_ROLE: AddPrivilege(AuthQuery::Privilege::REPLICATION); break; case ReplicationQuery::Action::CREATE_REPLICA: diff --git a/src/query/interpreter.cpp b/src/query/interpreter.cpp index 6e5c1b48c..e5ab35466 100644 --- a/src/query/interpreter.cpp +++ b/src/query/interpreter.cpp @@ -340,25 +340,25 @@ Callback HandleReplicationQuery(ReplicationQuery *repl_query, Callback callback; switch (repl_query->action_) { - case ReplicationQuery::Action::SET_REPLICATION_MODE: { - callback.fn = [handler, mode = repl_query->mode_] { - if (!handler->SetReplicationMode(mode)) { + case ReplicationQuery::Action::SET_REPLICATION_ROLE: { + callback.fn = [handler, role = repl_query->role_] { + if (!handler->SetReplicationRole(role)) { throw QueryRuntimeException( - "Couldn't set the desired replication mode."); + "Couldn't set the desired replication role."); } return std::vector>(); }; return callback; } - case ReplicationQuery::Action::SHOW_REPLICATION_MODE: { + case ReplicationQuery::Action::SHOW_REPLICATION_ROLE: { callback.header = {"replication mode"}; callback.fn = [handler] { - auto mode = handler->ShowReplicationMode(); + auto mode = handler->ShowReplicationRole(); switch (mode) { - case ReplicationQuery::ReplicationMode::MAIN: { + case ReplicationQuery::ReplicationRole::MAIN: { return std::vector>{{TypedValue("main")}}; } - case ReplicationQuery::ReplicationMode::REPLICA: { + case ReplicationQuery::ReplicationRole::REPLICA: { return std::vector>{ {TypedValue("replica")}}; } diff --git a/src/query/interpreter.hpp b/src/query/interpreter.hpp index 220ba2c57..3e8cf903a 100644 --- a/src/query/interpreter.hpp +++ b/src/query/interpreter.hpp @@ -116,11 +116,11 @@ class ReplicationQueryHandler { }; /// @throw QueryRuntimeException if an error ocurred. - virtual bool SetReplicationMode( - ReplicationQuery::ReplicationMode replication_mode) = 0; + virtual bool SetReplicationRole( + ReplicationQuery::ReplicationRole replication_mode) = 0; /// @throw QueryRuntimeException if an error ocurred. - virtual ReplicationQuery::ReplicationMode ShowReplicationMode() const = 0; + virtual ReplicationQuery::ReplicationRole ShowReplicationRole() const = 0; /// Return false if the replica already exists. /// @throw QueryRuntimeException if an error ocurred. diff --git a/tests/unit/cypher_main_visitor.cpp b/tests/unit/cypher_main_visitor.cpp index 10800a998..69ed78ec1 100644 --- a/tests/unit/cypher_main_visitor.cpp +++ b/tests/unit/cypher_main_visitor.cpp @@ -2472,16 +2472,16 @@ void check_replication_query(Base *ast_generator, const ReplicationQuery *query, TEST_P(CypherMainVisitorTest, TestShowReplicationMode) { auto &ast_generator = *GetParam(); - std::string raw_query = "SHOW REPLICATION MODE"; + const std::string raw_query = "SHOW REPLICATION ROLE"; auto *parsed_query = dynamic_cast(ast_generator.ParseQuery(raw_query)); EXPECT_EQ(parsed_query->action_, - ReplicationQuery::Action::SHOW_REPLICATION_MODE); + ReplicationQuery::Action::SHOW_REPLICATION_ROLE); } TEST_P(CypherMainVisitorTest, TestShowReplicasQuery) { auto &ast_generator = *GetParam(); - std::string raw_query = "SHOW REPLICAS"; + const std::string raw_query = "SHOW REPLICAS"; auto *parsed_query = dynamic_cast(ast_generator.ParseQuery(raw_query)); EXPECT_EQ(parsed_query->action_, ReplicationQuery::Action::SHOW_REPLICAS); @@ -2489,27 +2489,27 @@ TEST_P(CypherMainVisitorTest, TestShowReplicasQuery) { TEST_P(CypherMainVisitorTest, TestSetReplicationMode) { auto &ast_generator = *GetParam(); - std::string missing_mode_query = "SET REPLICATION MODE"; + const std::string missing_mode_query = "SET REPLICATION ROLE"; ASSERT_THROW(ast_generator.ParseQuery(missing_mode_query), SyntaxException); - std::string bad_mode_query = "SET REPLICATION MODE TO BUTTERY"; + const std::string bad_mode_query = "SET REPLICATION ROLE TO BUTTERY"; ASSERT_THROW(ast_generator.ParseQuery(bad_mode_query), SyntaxException); - std::string full_query = "SET REPLICATION MODE TO MAIN"; + const std::string full_query = "SET REPLICATION ROLE TO MAIN"; auto *parsed_full_query = dynamic_cast(ast_generator.ParseQuery(full_query)); EXPECT_EQ(parsed_full_query->action_, - ReplicationQuery::Action::SET_REPLICATION_MODE); - EXPECT_EQ(parsed_full_query->mode_, ReplicationQuery::ReplicationMode::MAIN); + ReplicationQuery::Action::SET_REPLICATION_ROLE); + EXPECT_EQ(parsed_full_query->role_, ReplicationQuery::ReplicationRole::MAIN); } TEST_P(CypherMainVisitorTest, TestCreateReplicationQuery) { auto &ast_generator = *GetParam(); - std::string faulty_query = "CREATE REPLICA WITH TIMEOUT TO"; + const std::string faulty_query = "CREATE REPLICA WITH TIMEOUT TO"; ASSERT_THROW(ast_generator.ParseQuery(faulty_query), SyntaxException); - std::string no_timeout_query = + const std::string no_timeout_query = R"(CREATE REPLICA replica1 SYNC TO "127.0.0.1")"; auto *no_timeout_query_parsed = dynamic_cast( ast_generator.ParseQuery(no_timeout_query));