mirror of https://github.com/citusdata/citus.git
Added support for appending to cstore table shards
- flexed the check which prevented append operation cstore tables since its storage type is not SHARD_STORAGE_TABLE. - used process utility function to perform copy operation in worker_append_table_to shard() instead of directly calling postgresql DoCopy() - removed the additional check in master_create_empty_shard() function. This check was redundant and erroneous since it was called after CheckDistributedTable() call. - modified WorkerTableSize() function to retrieve cstore table shard size correctly.pull/341/merge
parent
e28c474f8d
commit
edfd777bed
|
@ -79,10 +79,17 @@ master_create_empty_shard(PG_FUNCTION_ARGS)
|
||||||
text *nullMinValue = NULL;
|
text *nullMinValue = NULL;
|
||||||
text *nullMaxValue = NULL;
|
text *nullMaxValue = NULL;
|
||||||
char partitionMethod = 0;
|
char partitionMethod = 0;
|
||||||
|
char storageType = SHARD_STORAGE_TABLE;
|
||||||
|
|
||||||
Oid relationId = ResolveRelationId(relationNameText);
|
Oid relationId = ResolveRelationId(relationNameText);
|
||||||
CheckDistributedTable(relationId);
|
CheckDistributedTable(relationId);
|
||||||
|
|
||||||
|
if (CStoreTable(relationId))
|
||||||
|
{
|
||||||
|
storageType = SHARD_STORAGE_COLUMNAR;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
partitionMethod = PartitionMethod(relationId);
|
partitionMethod = PartitionMethod(relationId);
|
||||||
if (partitionMethod == DISTRIBUTE_BY_HASH)
|
if (partitionMethod == DISTRIBUTE_BY_HASH)
|
||||||
{
|
{
|
||||||
|
@ -124,7 +131,7 @@ master_create_empty_shard(PG_FUNCTION_ARGS)
|
||||||
CreateShardPlacements(shardId, ddlEventList, candidateNodeList, 0,
|
CreateShardPlacements(shardId, ddlEventList, candidateNodeList, 0,
|
||||||
ShardReplicationFactor);
|
ShardReplicationFactor);
|
||||||
|
|
||||||
InsertShardRow(relationId, shardId, SHARD_STORAGE_TABLE, nullMinValue, nullMaxValue);
|
InsertShardRow(relationId, shardId, storageType, nullMinValue, nullMaxValue);
|
||||||
|
|
||||||
PG_RETURN_INT64(shardId);
|
PG_RETURN_INT64(shardId);
|
||||||
}
|
}
|
||||||
|
@ -474,7 +481,8 @@ WorkerShardStats(char *nodeName, uint32 nodePort, Oid relationId, char *shardNam
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* WorkerTableSize queries the worker node to extract the disk space used by the
|
* WorkerTableSize queries the worker node to extract the disk space used by the
|
||||||
* given relation. The function assumes the relation represents a regular table.
|
* given relation. The function assumes the relation represents a regular table or
|
||||||
|
* a cstore_fdw table.
|
||||||
*/
|
*/
|
||||||
static uint64
|
static uint64
|
||||||
WorkerTableSize(char *nodeName, uint32 nodePort, Oid relationId, char *tableName)
|
WorkerTableSize(char *nodeName, uint32 nodePort, Oid relationId, char *tableName)
|
||||||
|
@ -484,8 +492,8 @@ WorkerTableSize(char *nodeName, uint32 nodePort, Oid relationId, char *tableName
|
||||||
StringInfo tableSizeString = NULL;
|
StringInfo tableSizeString = NULL;
|
||||||
char *tableSizeStringEnd = NULL;
|
char *tableSizeStringEnd = NULL;
|
||||||
bool cstoreTable = CStoreTable(relationId);
|
bool cstoreTable = CStoreTable(relationId);
|
||||||
|
|
||||||
StringInfo tableSizeQuery = makeStringInfo();
|
StringInfo tableSizeQuery = makeStringInfo();
|
||||||
|
|
||||||
if (cstoreTable)
|
if (cstoreTable)
|
||||||
{
|
{
|
||||||
appendStringInfo(tableSizeQuery, SHARD_CSTORE_TABLE_SIZE_QUERY, tableName);
|
appendStringInfo(tableSizeQuery, SHARD_CSTORE_TABLE_SIZE_QUERY, tableName);
|
||||||
|
|
Loading…
Reference in New Issue