mirror of https://github.com/citusdata/citus.git
Merge 1b9f9d6814
into 38fea7fe66
commit
ed188ccf45
|
@ -658,6 +658,9 @@ shard_name(PG_FUNCTION_ARGS)
|
|||
Oid relationId = InvalidOid;
|
||||
int64 shardId = 0;
|
||||
char *relationName = NULL;
|
||||
Oid schemaId = InvalidOid;
|
||||
char *schemaName = NULL;
|
||||
char *qualifiedName = NULL;
|
||||
|
||||
/*
|
||||
* Have to check arguments for NULLness as it can't be declared STRICT
|
||||
|
@ -685,7 +688,6 @@ shard_name(PG_FUNCTION_ARGS)
|
|||
errmsg("shard_id cannot be zero or negative value")));
|
||||
}
|
||||
|
||||
|
||||
if (!OidIsValid(relationId))
|
||||
{
|
||||
ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
||||
|
@ -693,7 +695,6 @@ shard_name(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
relationName = get_rel_name(relationId);
|
||||
|
||||
if (relationName == NULL)
|
||||
{
|
||||
ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
||||
|
@ -701,5 +702,10 @@ shard_name(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
AppendShardIdToName(&relationName, shardId);
|
||||
PG_RETURN_TEXT_P(cstring_to_text(relationName));
|
||||
|
||||
schemaId = get_rel_namespace(relationId);
|
||||
schemaName = get_namespace_name(schemaId);
|
||||
qualifiedName = quote_qualified_identifier(schemaName, relationName);
|
||||
|
||||
PG_RETURN_TEXT_P(cstring_to_text(qualifiedName));
|
||||
}
|
||||
|
|
|
@ -40,9 +40,9 @@ ERROR: object_name cannot be null
|
|||
SELECT shard_name(0, 666666);
|
||||
ERROR: object_name does not reference a valid relation
|
||||
SELECT shard_name('too_long_12345678901234567890123456789012345678901234567890'::regclass, 666666);
|
||||
shard_name
|
||||
-----------------------------------------------------------------
|
||||
too_long_12345678901234567890123456789012345678_e0119164_666666
|
||||
shard_name
|
||||
------------------------------------------------------------------------
|
||||
public.too_long_12345678901234567890123456789012345678_e0119164_666666
|
||||
(1 row)
|
||||
|
||||
SELECT shard_name('too_long_12345678901234567890123456789012345678901234567890'::regclass, NULL);
|
||||
|
@ -358,6 +358,15 @@ SELECT master_create_worker_shards(U&'elephant_!0441!043B!043E!043D!0441!043B!04
|
|||
|
||||
(1 row)
|
||||
|
||||
-- Verify that quoting is used in shard_name
|
||||
SELECT shard_name(U&'elephant_!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D' UESCAPE '!'::regclass, min(shardid))
|
||||
FROM pg_dist_shard
|
||||
WHERE logicalrelid = U&'elephant_!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D' UESCAPE '!'::regclass;
|
||||
shard_name
|
||||
----------------------------------------------------------
|
||||
public."elephant_слонслонслонсло_c8b737c2_2250000000002"
|
||||
(1 row)
|
||||
|
||||
\c - - - :worker_1_port
|
||||
\d elephant_*
|
||||
Index "public.elephant_слонслонслонсло_14d34928_2250000000002"
|
||||
|
@ -389,6 +398,32 @@ Indexes:
|
|||
"elephant_слонслонслонсло_14d34928_2250000000003" PRIMARY KEY, btree (col1)
|
||||
|
||||
\c - - - :master_port
|
||||
-- Verify that the shard_name UDF supports schemas
|
||||
CREATE SCHEMA multi_name_lengths;
|
||||
CREATE TABLE multi_name_lengths.too_long_12345678901234567890123456789012345678901234567890 (
|
||||
col1 integer not null,
|
||||
col2 integer not null);
|
||||
SELECT master_create_distributed_table('multi_name_lengths.too_long_12345678901234567890123456789012345678901234567890', 'col1', 'hash');
|
||||
master_create_distributed_table
|
||||
---------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT master_create_worker_shards('multi_name_lengths.too_long_12345678901234567890123456789012345678901234567890', 2, 1);
|
||||
master_create_worker_shards
|
||||
-----------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT shard_name('multi_name_lengths.too_long_12345678901234567890123456789012345678901234567890'::regclass, min(shardid))
|
||||
FROM pg_dist_shard
|
||||
WHERE logicalrelid = 'multi_name_lengths.too_long_12345678901234567890123456789012345678901234567890'::regclass;
|
||||
shard_name
|
||||
------------------------------------------------------------------------------------
|
||||
multi_name_lengths.too_long_1234567890123456789012345678901_e0119164_2250000000004
|
||||
(1 row)
|
||||
|
||||
DROP TABLE multi_name_lengths.too_long_12345678901234567890123456789012345678901234567890;
|
||||
-- Clean up.
|
||||
DROP TABLE name_lengths CASCADE;
|
||||
DROP TABLE U&"elephant_!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D" UESCAPE '!' CASCADE;
|
||||
|
|
|
@ -147,10 +147,29 @@ CREATE TABLE U&"elephant_!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E
|
|||
SELECT master_create_distributed_table(U&'elephant_!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D' UESCAPE '!', 'col1', 'hash');
|
||||
SELECT master_create_worker_shards(U&'elephant_!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D' UESCAPE '!', '2', '2');
|
||||
|
||||
-- Verify that quoting is used in shard_name
|
||||
SELECT shard_name(U&'elephant_!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D' UESCAPE '!'::regclass, min(shardid))
|
||||
FROM pg_dist_shard
|
||||
WHERE logicalrelid = U&'elephant_!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D' UESCAPE '!'::regclass;
|
||||
|
||||
\c - - - :worker_1_port
|
||||
\d elephant_*
|
||||
\c - - - :master_port
|
||||
|
||||
-- Verify that the shard_name UDF supports schemas
|
||||
CREATE SCHEMA multi_name_lengths;
|
||||
CREATE TABLE multi_name_lengths.too_long_12345678901234567890123456789012345678901234567890 (
|
||||
col1 integer not null,
|
||||
col2 integer not null);
|
||||
SELECT master_create_distributed_table('multi_name_lengths.too_long_12345678901234567890123456789012345678901234567890', 'col1', 'hash');
|
||||
SELECT master_create_worker_shards('multi_name_lengths.too_long_12345678901234567890123456789012345678901234567890', 2, 1);
|
||||
|
||||
SELECT shard_name('multi_name_lengths.too_long_12345678901234567890123456789012345678901234567890'::regclass, min(shardid))
|
||||
FROM pg_dist_shard
|
||||
WHERE logicalrelid = 'multi_name_lengths.too_long_12345678901234567890123456789012345678901234567890'::regclass;
|
||||
|
||||
DROP TABLE multi_name_lengths.too_long_12345678901234567890123456789012345678901234567890;
|
||||
|
||||
-- Clean up.
|
||||
DROP TABLE name_lengths CASCADE;
|
||||
DROP TABLE U&"elephant_!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D" UESCAPE '!' CASCADE;
|
||||
|
|
Loading…
Reference in New Issue