From 7280774cf4cfb2371de31b7f7ee2d5fa82401b97 Mon Sep 17 00:00:00 2001 From: Hadi Moshayedi Date: Tue, 31 Oct 2017 21:38:20 -0400 Subject: [PATCH] Use list_length() != 1 in SingleReplicatedTable(). ShardPlacementList's implementation can return NIL. In previous implementation we got a segmentation fault in this case. The relation can be dropped after getting distributed table list but before calling SingleReplicatedTable(). --- src/backend/distributed/utils/shardinterval_utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/distributed/utils/shardinterval_utils.c b/src/backend/distributed/utils/shardinterval_utils.c index 046ba3208..44de23c99 100644 --- a/src/backend/distributed/utils/shardinterval_utils.c +++ b/src/backend/distributed/utils/shardinterval_utils.c @@ -390,7 +390,7 @@ SingleReplicatedTable(Oid relationId) uint64 shardId = (*shardIdPointer); List *shardPlacementList = ShardPlacementList(shardId); - if (shardPlacementList->length > 1) + if (list_length(shardPlacementList) != 1) { return false; }