mirror of https://github.com/citusdata/citus.git
Merge pull request #1116 from citusdata/fix_reference_copy
Copy on reference tables should never mark placements invalidpull/1074/head
commit
eeee0a7898
|
@ -563,8 +563,15 @@ CopyToExistingShards(CopyStmt *copyStatement, char *completionTag)
|
||||||
&shardConnectionsFound);
|
&shardConnectionsFound);
|
||||||
if (!shardConnectionsFound)
|
if (!shardConnectionsFound)
|
||||||
{
|
{
|
||||||
|
bool stopOnFailure = false;
|
||||||
|
|
||||||
|
if (cacheEntry->partitionMethod == DISTRIBUTE_BY_NONE)
|
||||||
|
{
|
||||||
|
stopOnFailure = true;
|
||||||
|
}
|
||||||
|
|
||||||
/* open connections and initiate COPY on shard placements */
|
/* open connections and initiate COPY on shard placements */
|
||||||
OpenCopyTransactions(copyStatement, shardConnections, false,
|
OpenCopyTransactions(copyStatement, shardConnections, stopOnFailure,
|
||||||
copyOutState->binary);
|
copyOutState->binary);
|
||||||
|
|
||||||
/* send copy binary headers to shard placements */
|
/* send copy binary headers to shard placements */
|
||||||
|
@ -598,7 +605,8 @@ CopyToExistingShards(CopyStmt *copyStatement, char *completionTag)
|
||||||
/* close the COPY input on all shard placements */
|
/* close the COPY input on all shard placements */
|
||||||
EndRemoteCopy(connectionList, true);
|
EndRemoteCopy(connectionList, true);
|
||||||
|
|
||||||
if (MultiShardCommitProtocol == COMMIT_PROTOCOL_2PC)
|
if (MultiShardCommitProtocol == COMMIT_PROTOCOL_2PC ||
|
||||||
|
cacheEntry->replicationModel == REPLICATION_MODEL_2PC)
|
||||||
{
|
{
|
||||||
PrepareRemoteTransactions(connectionList);
|
PrepareRemoteTransactions(connectionList);
|
||||||
}
|
}
|
||||||
|
@ -1051,7 +1059,8 @@ OpenCopyTransactions(CopyStmt *copyStatement, ShardConnections *shardConnections
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If stopOnFailure is true, we just error out and code execution should
|
* If stopOnFailure is true, we just error out and code execution should
|
||||||
* never reach to this point. This is the case for copy from worker nodes.
|
* never reach to this point. This is the case for reference tables and
|
||||||
|
* copy from worker nodes.
|
||||||
*/
|
*/
|
||||||
Assert(!stopOnFailure || list_length(failedPlacementList) == 0);
|
Assert(!stopOnFailure || list_length(failedPlacementList) == 0);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue