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;
|
Oid relationId = InvalidOid;
|
||||||
int64 shardId = 0;
|
int64 shardId = 0;
|
||||||
char *relationName = NULL;
|
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
|
* 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")));
|
errmsg("shard_id cannot be zero or negative value")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!OidIsValid(relationId))
|
if (!OidIsValid(relationId))
|
||||||
{
|
{
|
||||||
ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
||||||
|
@ -693,7 +695,6 @@ shard_name(PG_FUNCTION_ARGS)
|
||||||
}
|
}
|
||||||
|
|
||||||
relationName = get_rel_name(relationId);
|
relationName = get_rel_name(relationId);
|
||||||
|
|
||||||
if (relationName == NULL)
|
if (relationName == NULL)
|
||||||
{
|
{
|
||||||
ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
||||||
|
@ -701,5 +702,10 @@ shard_name(PG_FUNCTION_ARGS)
|
||||||
}
|
}
|
||||||
|
|
||||||
AppendShardIdToName(&relationName, shardId);
|
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);
|
SELECT shard_name(0, 666666);
|
||||||
ERROR: object_name does not reference a valid relation
|
ERROR: object_name does not reference a valid relation
|
||||||
SELECT shard_name('too_long_12345678901234567890123456789012345678901234567890'::regclass, 666666);
|
SELECT shard_name('too_long_12345678901234567890123456789012345678901234567890'::regclass, 666666);
|
||||||
shard_name
|
shard_name
|
||||||
-----------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
too_long_12345678901234567890123456789012345678_e0119164_666666
|
public.too_long_12345678901234567890123456789012345678_e0119164_666666
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT shard_name('too_long_12345678901234567890123456789012345678901234567890'::regclass, NULL);
|
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)
|
(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
|
\c - - - :worker_1_port
|
||||||
\d elephant_*
|
\d elephant_*
|
||||||
Index "public.elephant_слонслонслонсло_14d34928_2250000000002"
|
Index "public.elephant_слонслонслонсло_14d34928_2250000000002"
|
||||||
|
@ -389,6 +398,32 @@ Indexes:
|
||||||
"elephant_слонслонслонсло_14d34928_2250000000003" PRIMARY KEY, btree (col1)
|
"elephant_слонслонслонсло_14d34928_2250000000003" PRIMARY KEY, btree (col1)
|
||||||
|
|
||||||
\c - - - :master_port
|
\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.
|
-- Clean up.
|
||||||
DROP TABLE name_lengths CASCADE;
|
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;
|
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_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');
|
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
|
\c - - - :worker_1_port
|
||||||
\d elephant_*
|
\d elephant_*
|
||||||
\c - - - :master_port
|
\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.
|
-- Clean up.
|
||||||
DROP TABLE name_lengths CASCADE;
|
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;
|
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