mirror of https://github.com/citusdata/citus.git
Rename connection params
parent
f6c11bf09c
commit
0f72d7f706
|
@ -377,7 +377,7 @@ GetConnParams(ConnectionHashKey *key, char ***keywords, char ***values,
|
||||||
authParamsIdx++;
|
authParamsIdx++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key->replication)
|
if (key->replicationConnParam)
|
||||||
{
|
{
|
||||||
connKeywords[authParamsIdx] = MemoryContextStrdup(context, "replication");
|
connKeywords[authParamsIdx] = MemoryContextStrdup(context, "replication");
|
||||||
connValues[authParamsIdx] = MemoryContextStrdup(context, "database");
|
connValues[authParamsIdx] = MemoryContextStrdup(context, "database");
|
||||||
|
|
|
@ -290,13 +290,13 @@ StartNodeUserDatabaseConnection(uint32 flags, const char *hostname, int32 port,
|
||||||
strlcpy(key.database, CurrentDatabaseName(), NAMEDATALEN);
|
strlcpy(key.database, CurrentDatabaseName(), NAMEDATALEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & EXCLUSIVE_AND_REPLICATION)
|
if (flags & REQUIRE_REPLICATION_CONNECTION_PARAM)
|
||||||
{
|
{
|
||||||
key.replication = true;
|
key.replicationConnParam = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
key.replication = false;
|
key.replicationConnParam = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurrentCoordinatedTransactionState == COORD_TRANS_NONE)
|
if (CurrentCoordinatedTransactionState == COORD_TRANS_NONE)
|
||||||
|
@ -356,10 +356,6 @@ StartNodeUserDatabaseConnection(uint32 flags, const char *hostname, int32 port,
|
||||||
MultiConnection *connection = MemoryContextAllocZero(ConnectionContext,
|
MultiConnection *connection = MemoryContextAllocZero(ConnectionContext,
|
||||||
sizeof(MultiConnection));
|
sizeof(MultiConnection));
|
||||||
connection->initilizationState = POOL_STATE_NOT_INITIALIZED;
|
connection->initilizationState = POOL_STATE_NOT_INITIALIZED;
|
||||||
if (flags & EXCLUSIVE_AND_REPLICATION)
|
|
||||||
{
|
|
||||||
connection->claimedExclusively = true;
|
|
||||||
}
|
|
||||||
dlist_push_tail(entry->connections, &connection->connectionNode);
|
dlist_push_tail(entry->connections, &connection->connectionNode);
|
||||||
|
|
||||||
/* these two flags are by nature cannot happen at the same time */
|
/* these two flags are by nature cannot happen at the same time */
|
||||||
|
@ -679,7 +675,7 @@ CloseConnection(MultiConnection *connection)
|
||||||
|
|
||||||
strlcpy(key.hostname, connection->hostname, MAX_NODE_LENGTH);
|
strlcpy(key.hostname, connection->hostname, MAX_NODE_LENGTH);
|
||||||
key.port = connection->port;
|
key.port = connection->port;
|
||||||
key.replication = connection->replication;
|
key.replicationConnParam = connection->requiresReplicationOption;
|
||||||
strlcpy(key.user, connection->user, NAMEDATALEN);
|
strlcpy(key.user, connection->user, NAMEDATALEN);
|
||||||
strlcpy(key.database, connection->database, NAMEDATALEN);
|
strlcpy(key.database, connection->database, NAMEDATALEN);
|
||||||
|
|
||||||
|
@ -1224,7 +1220,7 @@ ConnectionHashHash(const void *key, Size keysize)
|
||||||
hash = hash_combine(hash, hash_uint32(entry->port));
|
hash = hash_combine(hash, hash_uint32(entry->port));
|
||||||
hash = hash_combine(hash, string_hash(entry->user, NAMEDATALEN));
|
hash = hash_combine(hash, string_hash(entry->user, NAMEDATALEN));
|
||||||
hash = hash_combine(hash, string_hash(entry->database, NAMEDATALEN));
|
hash = hash_combine(hash, string_hash(entry->database, NAMEDATALEN));
|
||||||
hash = hash_combine(hash, hash_uint32(entry->replication));
|
hash = hash_combine(hash, hash_uint32(entry->replicationConnParam));
|
||||||
|
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
@ -1238,7 +1234,7 @@ ConnectionHashCompare(const void *a, const void *b, Size keysize)
|
||||||
|
|
||||||
if (strncmp(ca->hostname, cb->hostname, MAX_NODE_LENGTH) != 0 ||
|
if (strncmp(ca->hostname, cb->hostname, MAX_NODE_LENGTH) != 0 ||
|
||||||
ca->port != cb->port ||
|
ca->port != cb->port ||
|
||||||
ca->replication != cb->replication ||
|
ca->replicationConnParam != cb->replicationConnParam ||
|
||||||
strncmp(ca->user, cb->user, NAMEDATALEN) != 0 ||
|
strncmp(ca->user, cb->user, NAMEDATALEN) != 0 ||
|
||||||
strncmp(ca->database, cb->database, NAMEDATALEN) != 0)
|
strncmp(ca->database, cb->database, NAMEDATALEN) != 0)
|
||||||
{
|
{
|
||||||
|
@ -1266,7 +1262,7 @@ StartConnectionEstablishment(MultiConnection *connection, ConnectionHashKey *key
|
||||||
connection->port = key->port;
|
connection->port = key->port;
|
||||||
strlcpy(connection->database, key->database, NAMEDATALEN);
|
strlcpy(connection->database, key->database, NAMEDATALEN);
|
||||||
strlcpy(connection->user, key->user, NAMEDATALEN);
|
strlcpy(connection->user, key->user, NAMEDATALEN);
|
||||||
connection->replication = key->replication;
|
connection->requiresReplicationOption = key->replicationConnParam;
|
||||||
|
|
||||||
connection->pgConn = PQconnectStartParams((const char **) entry->keywords,
|
connection->pgConn = PQconnectStartParams((const char **) entry->keywords,
|
||||||
(const char **) entry->values,
|
(const char **) entry->values,
|
||||||
|
|
|
@ -771,7 +771,7 @@ DoSplitCopy(WorkerNode *sourceShardNode, List *sourceColocatedShardIntervalList,
|
||||||
"BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;");
|
"BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;");
|
||||||
ddlCommandList = lappend(ddlCommandList, beginTransaction->data);
|
ddlCommandList = lappend(ddlCommandList, beginTransaction->data);
|
||||||
|
|
||||||
/* Set snapshot */
|
/* Set snapshot for non-blocking shard split. */
|
||||||
if (snapShotName != NULL)
|
if (snapShotName != NULL)
|
||||||
{
|
{
|
||||||
StringInfo snapShotString = makeStringInfo();
|
StringInfo snapShotString = makeStringInfo();
|
||||||
|
@ -779,7 +779,6 @@ DoSplitCopy(WorkerNode *sourceShardNode, List *sourceColocatedShardIntervalList,
|
||||||
quote_literal_cstr(
|
quote_literal_cstr(
|
||||||
snapShotName));
|
snapShotName));
|
||||||
ddlCommandList = lappend(ddlCommandList, snapShotString->data);
|
ddlCommandList = lappend(ddlCommandList, snapShotString->data);
|
||||||
printf("Sameer final string snapshotted:%s\n", snapShotString->data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ddlCommandList = lappend(ddlCommandList, splitCopyUdfCommand->data);
|
ddlCommandList = lappend(ddlCommandList, splitCopyUdfCommand->data);
|
||||||
|
@ -1584,7 +1583,7 @@ CreateTemplateReplicationSlotAndReturnSnapshot(ShardInterval *shardInterval,
|
||||||
{
|
{
|
||||||
/*Create Template replication slot */
|
/*Create Template replication slot */
|
||||||
int connectionFlags = FORCE_NEW_CONNECTION;
|
int connectionFlags = FORCE_NEW_CONNECTION;
|
||||||
connectionFlags |= EXCLUSIVE_AND_REPLICATION;
|
connectionFlags |= REQUIRE_REPLICATION_CONNECTION_PARAM;
|
||||||
|
|
||||||
MultiConnection *sourceConnection = GetNodeUserDatabaseConnection(connectionFlags,
|
MultiConnection *sourceConnection = GetNodeUserDatabaseConnection(connectionFlags,
|
||||||
sourceWorkerNode->
|
sourceWorkerNode->
|
||||||
|
|
|
@ -2068,7 +2068,7 @@ GetSubscriptionPosition(MultiConnection *connection, Bitmapset *tableOwnerIds,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*Refactor this for ShardMove too.*/
|
/*TODO(saawasek):Refactor this for ShardMove too.*/
|
||||||
void
|
void
|
||||||
CreateShardSubscription(MultiConnection *connection, char *sourceNodeName,
|
CreateShardSubscription(MultiConnection *connection, char *sourceNodeName,
|
||||||
int sourceNodePort, char *userName, char *databaseName,
|
int sourceNodePort, char *userName, char *databaseName,
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
*
|
*
|
||||||
* shardsplit_logical_replication.c
|
* shardsplit_logical_replication.c
|
||||||
*
|
*
|
||||||
|
* Function definitions for logically replicating split children.
|
||||||
|
*
|
||||||
* Copyright (c) Citus Data, Inc.
|
* Copyright (c) Citus Data, Inc.
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
|
|
|
@ -100,9 +100,15 @@ enum MultiConnectionMode
|
||||||
WAIT_FOR_CONNECTION = 1 << 7,
|
WAIT_FOR_CONNECTION = 1 << 7,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Force Replication flags
|
* Use the flag to start a connection for streaming replication.
|
||||||
|
* This flag constructs additional libpq connection parameters needed for streaming
|
||||||
|
* replication protocol. It adds 'replication=database' param which instructs
|
||||||
|
* the backend to go into logical replication walsender mode.
|
||||||
|
* https://www.postgresql.org/docs/current/protocol-replication.html
|
||||||
|
*
|
||||||
|
* This is need to run 'CREATE_REPLICATION_SLOT' command.
|
||||||
*/
|
*/
|
||||||
EXCLUSIVE_AND_REPLICATION = 1 << 8
|
REQUIRE_REPLICATION_CONNECTION_PARAM = 1 << 8
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -193,7 +199,7 @@ typedef struct MultiConnection
|
||||||
uint64 copyBytesWrittenSinceLastFlush;
|
uint64 copyBytesWrittenSinceLastFlush;
|
||||||
|
|
||||||
/* replication option */
|
/* replication option */
|
||||||
bool replication;
|
bool requiresReplicationOption;
|
||||||
|
|
||||||
MultiConnectionStructInitializationState initilizationState;
|
MultiConnectionStructInitializationState initilizationState;
|
||||||
} MultiConnection;
|
} MultiConnection;
|
||||||
|
@ -215,7 +221,7 @@ typedef struct ConnectionHashKey
|
||||||
int32 port;
|
int32 port;
|
||||||
char user[NAMEDATALEN];
|
char user[NAMEDATALEN];
|
||||||
char database[NAMEDATALEN];
|
char database[NAMEDATALEN];
|
||||||
bool replication;
|
bool replicationConnParam;
|
||||||
} ConnectionHashKey;
|
} ConnectionHashKey;
|
||||||
|
|
||||||
/* hash entry */
|
/* hash entry */
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
*
|
*
|
||||||
* shardsplit_logical_replication.h
|
* shardsplit_logical_replication.h
|
||||||
*
|
*
|
||||||
|
* Function declarations for logically replicating split children.
|
||||||
|
*
|
||||||
* Copyright (c) Citus Data, Inc.
|
* Copyright (c) Citus Data, Inc.
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue