mirror of https://github.com/citusdata/citus.git
Deprecate master_get_table_metadata UDF
parent
3b7641b32d
commit
dafba6c242
|
@ -95,74 +95,13 @@ PG_FUNCTION_INFO_V1(master_stage_shard_placement_row);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* master_get_table_metadata takes in a relation name, and returns partition
|
* master_get_table_metadata is a deprecated UDF.
|
||||||
* related metadata for the relation. These metadata are grouped and returned in
|
|
||||||
* a tuple, and are used by the caller when creating new shards. The function
|
|
||||||
* errors if given relation does not exist, or is not partitioned.
|
|
||||||
*/
|
*/
|
||||||
Datum
|
Datum
|
||||||
master_get_table_metadata(PG_FUNCTION_ARGS)
|
master_get_table_metadata(PG_FUNCTION_ARGS)
|
||||||
{
|
{
|
||||||
CheckCitusVersion(ERROR);
|
ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||||
|
errmsg("master_get_table_metadata is deprecated")));
|
||||||
text *relationName = PG_GETARG_TEXT_P(0);
|
|
||||||
Oid relationId = ResolveRelationId(relationName, false);
|
|
||||||
|
|
||||||
Datum partitionKeyExpr = 0;
|
|
||||||
Datum partitionKey = 0;
|
|
||||||
TupleDesc metadataDescriptor = NULL;
|
|
||||||
Datum values[TABLE_METADATA_FIELDS];
|
|
||||||
bool isNulls[TABLE_METADATA_FIELDS];
|
|
||||||
|
|
||||||
/* find partition tuple for partitioned relation */
|
|
||||||
CitusTableCacheEntry *partitionEntry = GetCitusTableCacheEntry(relationId);
|
|
||||||
|
|
||||||
/* create tuple descriptor for return value */
|
|
||||||
TypeFuncClass resultTypeClass = get_call_result_type(fcinfo, NULL,
|
|
||||||
&metadataDescriptor);
|
|
||||||
if (resultTypeClass != TYPEFUNC_COMPOSITE)
|
|
||||||
{
|
|
||||||
ereport(ERROR, (errmsg("return type must be a row type")));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* form heap tuple for table metadata */
|
|
||||||
memset(values, 0, sizeof(values));
|
|
||||||
memset(isNulls, false, sizeof(isNulls));
|
|
||||||
|
|
||||||
char *partitionKeyString = partitionEntry->partitionKeyString;
|
|
||||||
|
|
||||||
/* reference tables do not have partition key */
|
|
||||||
if (partitionKeyString == NULL)
|
|
||||||
{
|
|
||||||
partitionKey = PointerGetDatum(NULL);
|
|
||||||
isNulls[3] = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* get decompiled expression tree for partition key */
|
|
||||||
partitionKeyExpr =
|
|
||||||
PointerGetDatum(cstring_to_text(partitionEntry->partitionKeyString));
|
|
||||||
partitionKey = DirectFunctionCall2(pg_get_expr, partitionKeyExpr,
|
|
||||||
ObjectIdGetDatum(relationId));
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 shardMaxSizeInBytes = (int64) ShardMaxSize * 1024L;
|
|
||||||
|
|
||||||
/* get storage type */
|
|
||||||
char shardStorageType = ShardStorageType(relationId);
|
|
||||||
|
|
||||||
values[0] = ObjectIdGetDatum(relationId);
|
|
||||||
values[1] = shardStorageType;
|
|
||||||
values[2] = partitionEntry->partitionMethod;
|
|
||||||
values[3] = partitionKey;
|
|
||||||
values[4] = Int32GetDatum(ShardReplicationFactor);
|
|
||||||
values[5] = Int64GetDatum(shardMaxSizeInBytes);
|
|
||||||
values[6] = Int32GetDatum(ShardPlacementPolicy);
|
|
||||||
|
|
||||||
HeapTuple metadataTuple = heap_form_tuple(metadataDescriptor, values, isNulls);
|
|
||||||
Datum metadataDatum = HeapTupleGetDatum(metadataTuple);
|
|
||||||
|
|
||||||
PG_RETURN_DATUM(metadataDatum);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,3 +7,4 @@
|
||||||
#include "udfs/worker_fix_partition_shard_index_names/11.0-1.sql"
|
#include "udfs/worker_fix_partition_shard_index_names/11.0-1.sql"
|
||||||
|
|
||||||
DROP FUNCTION IF EXISTS pg_catalog.master_apply_delete_command(text);
|
DROP FUNCTION IF EXISTS pg_catalog.master_apply_delete_command(text);
|
||||||
|
DROP FUNCTION pg_catalog.master_get_table_metadata(text);
|
||||||
|
|
|
@ -11,4 +11,16 @@ CREATE FUNCTION pg_catalog.master_apply_delete_command(text)
|
||||||
COMMENT ON FUNCTION pg_catalog.master_apply_delete_command(text)
|
COMMENT ON FUNCTION pg_catalog.master_apply_delete_command(text)
|
||||||
IS 'drop shards matching delete criteria and update metadata';
|
IS 'drop shards matching delete criteria and update metadata';
|
||||||
|
|
||||||
|
CREATE FUNCTION pg_catalog.master_get_table_metadata(
|
||||||
|
relation_name text,
|
||||||
|
OUT logical_relid oid,
|
||||||
|
OUT part_storage_type "char",
|
||||||
|
OUT part_method "char", OUT part_key text,
|
||||||
|
OUT part_replica_count integer,
|
||||||
|
OUT part_max_size bigint,
|
||||||
|
OUT part_placement_policy integer)
|
||||||
|
RETURNS record
|
||||||
|
LANGUAGE C STABLE STRICT
|
||||||
|
AS 'MODULE_PATHNAME', $$master_get_table_metadata$$;
|
||||||
|
COMMENT ON FUNCTION master_get_table_metadata(relation_name text)
|
||||||
|
IS 'fetch metadata values for the table';
|
||||||
|
|
|
@ -610,11 +610,10 @@ BEGIN;
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
COMMIT;
|
COMMIT;
|
||||||
-- hide first column (relationId) as it might change
|
SELECT partmethod, repmodel FROM pg_dist_partition WHERE logicalrelid = 'citus_local_table_4'::regclass;
|
||||||
SELECT part_storage_type, part_method, part_key, part_replica_count, part_max_size, part_placement_policy FROM master_get_table_metadata('citus_local_table_4');
|
partmethod | repmodel
|
||||||
part_storage_type | part_method | part_key | part_replica_count | part_max_size | part_placement_policy
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
t | n | | 1 | 1536000 | 2
|
n | s
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT master_get_table_ddl_events('citus_local_table_4');
|
SELECT master_get_table_ddl_events('citus_local_table_4');
|
||||||
|
|
|
@ -895,10 +895,11 @@ SELECT * FROM multi_extension.print_extension_changes();
|
||||||
previous_object | current_object
|
previous_object | current_object
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function master_apply_delete_command(text) integer |
|
function master_apply_delete_command(text) integer |
|
||||||
|
function master_get_table_metadata(text) record |
|
||||||
| function fix_all_partition_shard_index_names() SETOF regclass
|
| function fix_all_partition_shard_index_names() SETOF regclass
|
||||||
| function fix_partition_shard_index_names(regclass) void
|
| function fix_partition_shard_index_names(regclass) void
|
||||||
| function worker_fix_partition_shard_index_names(regclass,text,text) void
|
| function worker_fix_partition_shard_index_names(regclass,text,text) void
|
||||||
(4 rows)
|
(5 rows)
|
||||||
|
|
||||||
DROP TABLE multi_extension.prev_objects, multi_extension.extension_diff;
|
DROP TABLE multi_extension.prev_objects, multi_extension.extension_diff;
|
||||||
-- show running version
|
-- show running version
|
||||||
|
|
|
@ -3,13 +3,6 @@
|
||||||
--
|
--
|
||||||
-- Tests that check the metadata returned by the master node.
|
-- Tests that check the metadata returned by the master node.
|
||||||
SET citus.next_shard_id TO 740000;
|
SET citus.next_shard_id TO 740000;
|
||||||
SELECT part_storage_type, part_key, part_replica_count, part_max_size,
|
|
||||||
part_placement_policy FROM master_get_table_metadata('lineitem');
|
|
||||||
part_storage_type | part_key | part_replica_count | part_max_size | part_placement_policy
|
|
||||||
---------------------------------------------------------------------
|
|
||||||
t | l_orderkey | 2 | 1536000 | 2
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
SELECT * FROM master_get_table_ddl_events('lineitem') order by 1;
|
SELECT * FROM master_get_table_ddl_events('lineitem') order by 1;
|
||||||
master_get_table_ddl_events
|
master_get_table_ddl_events
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
|
|
|
@ -1406,14 +1406,6 @@ SELECT master_create_empty_shard('reference_schema.reference_table_ddl');
|
||||||
ERROR: relation "reference_schema.reference_table_ddl" is a reference table
|
ERROR: relation "reference_schema.reference_table_ddl" is a reference table
|
||||||
DETAIL: We currently don't support creating shards on reference tables
|
DETAIL: We currently don't support creating shards on reference tables
|
||||||
-- get/update the statistics
|
-- get/update the statistics
|
||||||
SELECT part_storage_type, part_key, part_replica_count, part_max_size,
|
|
||||||
part_placement_policy
|
|
||||||
FROM master_get_table_metadata('reference_schema.reference_table_ddl');
|
|
||||||
part_storage_type | part_key | part_replica_count | part_max_size | part_placement_policy
|
|
||||||
---------------------------------------------------------------------
|
|
||||||
t | | 2 | 1536000 | 2
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
SELECT shardid AS a_shard_id FROM pg_dist_shard WHERE logicalrelid = 'reference_schema.reference_table_ddl'::regclass \gset
|
SELECT shardid AS a_shard_id FROM pg_dist_shard WHERE logicalrelid = 'reference_schema.reference_table_ddl'::regclass \gset
|
||||||
SELECT master_update_shard_statistics(:a_shard_id);
|
SELECT master_update_shard_statistics(:a_shard_id);
|
||||||
master_update_shard_statistics
|
master_update_shard_statistics
|
||||||
|
|
|
@ -155,7 +155,6 @@ ORDER BY 1;
|
||||||
function master_get_new_placementid()
|
function master_get_new_placementid()
|
||||||
function master_get_new_shardid()
|
function master_get_new_shardid()
|
||||||
function master_get_table_ddl_events(text)
|
function master_get_table_ddl_events(text)
|
||||||
function master_get_table_metadata(text)
|
|
||||||
function master_move_shard_placement(bigint,text,integer,text,integer,citus.shard_transfer_mode)
|
function master_move_shard_placement(bigint,text,integer,text,integer,citus.shard_transfer_mode)
|
||||||
function master_remove_distributed_table_metadata_from_workers(regclass,text,text)
|
function master_remove_distributed_table_metadata_from_workers(regclass,text,text)
|
||||||
function master_remove_node(text,integer)
|
function master_remove_node(text,integer)
|
||||||
|
@ -260,5 +259,5 @@ ORDER BY 1;
|
||||||
view citus_worker_stat_activity
|
view citus_worker_stat_activity
|
||||||
view pg_dist_shard_placement
|
view pg_dist_shard_placement
|
||||||
view time_partitions
|
view time_partitions
|
||||||
(244 rows)
|
(243 rows)
|
||||||
|
|
||||||
|
|
|
@ -419,8 +419,7 @@ BEGIN;
|
||||||
SELECT count(*) FROM pg_locks where relation='citus_local_table_4'::regclass;
|
SELECT count(*) FROM pg_locks where relation='citus_local_table_4'::regclass;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|
||||||
-- hide first column (relationId) as it might change
|
SELECT partmethod, repmodel FROM pg_dist_partition WHERE logicalrelid = 'citus_local_table_4'::regclass;
|
||||||
SELECT part_storage_type, part_method, part_key, part_replica_count, part_max_size, part_placement_policy FROM master_get_table_metadata('citus_local_table_4');
|
|
||||||
SELECT master_get_table_ddl_events('citus_local_table_4');
|
SELECT master_get_table_ddl_events('citus_local_table_4');
|
||||||
|
|
||||||
SELECT column_to_column_name(logicalrelid, partkey)
|
SELECT column_to_column_name(logicalrelid, partkey)
|
||||||
|
|
|
@ -7,9 +7,6 @@
|
||||||
SET citus.next_shard_id TO 740000;
|
SET citus.next_shard_id TO 740000;
|
||||||
|
|
||||||
|
|
||||||
SELECT part_storage_type, part_key, part_replica_count, part_max_size,
|
|
||||||
part_placement_policy FROM master_get_table_metadata('lineitem');
|
|
||||||
|
|
||||||
SELECT * FROM master_get_table_ddl_events('lineitem') order by 1;
|
SELECT * FROM master_get_table_ddl_events('lineitem') order by 1;
|
||||||
|
|
||||||
SELECT * FROM master_get_new_shardid();
|
SELECT * FROM master_get_new_shardid();
|
||||||
|
|
|
@ -899,10 +899,6 @@ ALTER TABLE reference_schema.reference_table_ddl_test RENAME TO reference_table_
|
||||||
SELECT master_create_empty_shard('reference_schema.reference_table_ddl');
|
SELECT master_create_empty_shard('reference_schema.reference_table_ddl');
|
||||||
|
|
||||||
-- get/update the statistics
|
-- get/update the statistics
|
||||||
SELECT part_storage_type, part_key, part_replica_count, part_max_size,
|
|
||||||
part_placement_policy
|
|
||||||
FROM master_get_table_metadata('reference_schema.reference_table_ddl');
|
|
||||||
|
|
||||||
SELECT shardid AS a_shard_id FROM pg_dist_shard WHERE logicalrelid = 'reference_schema.reference_table_ddl'::regclass \gset
|
SELECT shardid AS a_shard_id FROM pg_dist_shard WHERE logicalrelid = 'reference_schema.reference_table_ddl'::regclass \gset
|
||||||
SELECT master_update_shard_statistics(:a_shard_id);
|
SELECT master_update_shard_statistics(:a_shard_id);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue