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:
parent
76f0d5873b
commit
3c85319701
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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*
|
||||
|
@ -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 ;
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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")}};
|
||||
}
|
||||
|
@ -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.
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user