Update replication queries to follow the new replication nomenclature (#48)

* MODE -> ROLE

Co-authored-by: jseljan <josip.seljan@memgraph.io>
This commit is contained in:
Josip Seljan 2020-11-23 14:24:34 +01:00 committed by Antonio Andelic
parent 76f0d5873b
commit 3c85319701
8 changed files with 42 additions and 42 deletions

View File

@ -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

View File

@ -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<ReplicationQuery>();
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<ReplicationQuery>();
replication_query->action_ = ReplicationQuery::Action::SHOW_REPLICATION_MODE;
replication_query->action_ = ReplicationQuery::Action::SHOW_REPLICATION_ROLE;
return replication_query;
}

View File

@ -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*

View File

@ -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 ;

View File

@ -61,10 +61,10 @@ class PrivilegeExtractor : public QueryVisitor<void>,
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:

View File

@ -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<std::vector<TypedValue>>();
};
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<std::vector<TypedValue>>{{TypedValue("main")}};
}
case ReplicationQuery::ReplicationMode::REPLICA: {
case ReplicationQuery::ReplicationRole::REPLICA: {
return std::vector<std::vector<TypedValue>>{
{TypedValue("replica")}};
}

View File

@ -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.

View File

@ -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<ReplicationQuery *>(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<ReplicationQuery *>(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<ReplicationQuery *>(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<ReplicationQuery *>(
ast_generator.ParseQuery(no_timeout_query));