mirror of
https://github.com/postgres/postgres.git
synced 2025-05-28 00:03:23 -04:00
Report a more useful error for reloptions on a partitioned table.
Previously, trying to set storage parameters on a partitioned table always led to "unrecognized parameter foo", because the code expected there might be some valid parameters; but there aren't any. The docs make clear that it's intended that there never will be any, so let's replace this useless search with a more to-the-point message. Simon Riggs and Karina Litskevich Discussion: https://postgr.es/m/CANbhV-H=eZ9kTR9mUgKGK0Qv9uXP=U+dQg3rinQHfTdFMhBA2A@mail.gmail.com
This commit is contained in:
parent
e613ace1f0
commit
4f981df8e0
@ -1984,13 +1984,12 @@ build_local_reloptions(local_relopts *relopts, Datum options, bool validate)
|
||||
bytea *
|
||||
partitioned_table_reloptions(Datum reloptions, bool validate)
|
||||
{
|
||||
/*
|
||||
* There are no options for partitioned tables yet, but this is able to do
|
||||
* some validation.
|
||||
*/
|
||||
return (bytea *) build_reloptions(reloptions, validate,
|
||||
RELOPT_KIND_PARTITIONED,
|
||||
0, NULL, 0);
|
||||
if (validate && reloptions)
|
||||
ereport(ERROR,
|
||||
errcode(ERRCODE_WRONG_OBJECT_TYPE),
|
||||
errmsg("cannot specify storage parameters for a partitioned table"),
|
||||
errhint("Specify storage parameters for its leaf partitions, instead."));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -3801,6 +3801,10 @@ ALTER TABLE partitioned DROP COLUMN b;
|
||||
ERROR: cannot drop column "b" because it is part of the partition key of relation "partitioned"
|
||||
ALTER TABLE partitioned ALTER COLUMN b TYPE char(5);
|
||||
ERROR: cannot alter column "b" because it is part of the partition key of relation "partitioned"
|
||||
-- specifying storage parameters for partitioned tables is not supported
|
||||
ALTER TABLE partitioned SET (fillfactor=100);
|
||||
ERROR: cannot specify storage parameters for a partitioned table
|
||||
HINT: Specify storage parameters for its leaf partitions, instead.
|
||||
-- partitioned table cannot participate in regular inheritance
|
||||
CREATE TABLE nonpartitioned (
|
||||
a int,
|
||||
|
@ -987,6 +987,10 @@ Partition key: LIST (a)
|
||||
Number of partitions: 0
|
||||
|
||||
DROP TABLE parted_col_comment;
|
||||
-- specifying storage parameters for partitioned tables is not supported
|
||||
CREATE TABLE parted_col_comment (a int, b text) PARTITION BY LIST (a) WITH (fillfactor=100);
|
||||
ERROR: cannot specify storage parameters for a partitioned table
|
||||
HINT: Specify storage parameters for its leaf partitions, instead.
|
||||
-- list partitioning on array type column
|
||||
CREATE TABLE arrlp (a int[]) PARTITION BY LIST (a);
|
||||
CREATE TABLE arrlp12 PARTITION OF arrlp FOR VALUES IN ('{1}', '{2}');
|
||||
|
@ -2325,6 +2325,9 @@ ALTER TABLE partitioned ALTER COLUMN a TYPE char(5);
|
||||
ALTER TABLE partitioned DROP COLUMN b;
|
||||
ALTER TABLE partitioned ALTER COLUMN b TYPE char(5);
|
||||
|
||||
-- specifying storage parameters for partitioned tables is not supported
|
||||
ALTER TABLE partitioned SET (fillfactor=100);
|
||||
|
||||
-- partitioned table cannot participate in regular inheritance
|
||||
CREATE TABLE nonpartitioned (
|
||||
a int,
|
||||
|
@ -652,6 +652,9 @@ SELECT obj_description('parted_col_comment'::regclass);
|
||||
\d+ parted_col_comment
|
||||
DROP TABLE parted_col_comment;
|
||||
|
||||
-- specifying storage parameters for partitioned tables is not supported
|
||||
CREATE TABLE parted_col_comment (a int, b text) PARTITION BY LIST (a) WITH (fillfactor=100);
|
||||
|
||||
-- list partitioning on array type column
|
||||
CREATE TABLE arrlp (a int[]) PARTITION BY LIST (a);
|
||||
CREATE TABLE arrlp12 PARTITION OF arrlp FOR VALUES IN ('{1}', '{2}');
|
||||
|
Loading…
x
Reference in New Issue
Block a user