From 9318aeee6b526d3c901b75606325e36e7b847075 Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Thu, 5 Apr 2018 12:06:05 +0200 Subject: [PATCH] Allow multiple size function calls per query --- src/backend/distributed/master/master_metadata_utility.c | 3 +++ src/test/regress/expected/multi_size_queries.out | 9 +++++++++ src/test/regress/sql/multi_size_queries.sql | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/src/backend/distributed/master/master_metadata_utility.c b/src/backend/distributed/master/master_metadata_utility.c index 747899bfa..385de9b31 100644 --- a/src/backend/distributed/master/master_metadata_utility.c +++ b/src/backend/distributed/master/master_metadata_utility.c @@ -214,6 +214,7 @@ DistributedTableSizeOnWorker(WorkerNode *workerNode, Oid relationId, char *sizeQ PGresult *result = NULL; int queryResult = 0; List *sizeList = NIL; + bool raiseErrors = true; List *shardIntervalsOnNode = ShardIntervalsOnWorkerGroup(workerNode, relationId); @@ -235,6 +236,8 @@ DistributedTableSizeOnWorker(WorkerNode *workerNode, Oid relationId, char *sizeQ tableSizeString = tableSizeStringInfo->data; tableSize = atol(tableSizeString); + ClearResults(connection, raiseErrors); + return tableSize; } diff --git a/src/test/regress/expected/multi_size_queries.out b/src/test/regress/expected/multi_size_queries.out index 19a6db98f..648b81b78 100644 --- a/src/test/regress/expected/multi_size_queries.out +++ b/src/test/regress/expected/multi_size_queries.out @@ -49,6 +49,15 @@ SELECT citus_total_relation_size('customer_copy_hash'); 1597440 (1 row) +-- Make sure we can get multiple sizes in a single query +SELECT citus_table_size('customer_copy_hash'), + citus_table_size('customer_copy_hash'), + citus_table_size('supplier'); + citus_table_size | citus_table_size | citus_table_size +------------------+------------------+------------------ + 548864 | 548864 | 401408 +(1 row) + CREATE INDEX index_1 on customer_copy_hash(c_custkey); VACUUM (FULL) customer_copy_hash; -- Tests on distributed table with index. diff --git a/src/test/regress/sql/multi_size_queries.sql b/src/test/regress/sql/multi_size_queries.sql index 13af62007..8387667c2 100644 --- a/src/test/regress/sql/multi_size_queries.sql +++ b/src/test/regress/sql/multi_size_queries.sql @@ -32,6 +32,11 @@ SELECT citus_table_size('customer_copy_hash'); SELECT citus_relation_size('customer_copy_hash'); SELECT citus_total_relation_size('customer_copy_hash'); +-- Make sure we can get multiple sizes in a single query +SELECT citus_table_size('customer_copy_hash'), + citus_table_size('customer_copy_hash'), + citus_table_size('supplier'); + CREATE INDEX index_1 on customer_copy_hash(c_custkey); VACUUM (FULL) customer_copy_hash;