Re: [HACKERS] Proposal: Local indexes for partitioned table
Jesper Pedersen <jesper.pedersen@redhat.com>
From: Jesper Pedersen <jesper.pedersen@redhat.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Simon Riggs <simon@2ndquadrant.com>, Robert Haas <robertmhaas@gmail.com>,
Pg Hackers <pgsql-hackers@postgresql.org>,
Maksim Milyutin <milyutinma@gmail.com>
Date: 2017-11-14T19:07:20Z
Lists: pgsql-hackers
Hi, On 11/14/2017 12:49 PM, Alvaro Herrera wrote: >> Thanks, pushed. > > Here's the remaining bits, rebased. > First of all, thanks for working on this. I have been looking at the "CREATE INDEX ... ONLY" syntax, and I think it could cause some confusion due to the "Note" described in create_index.sgml. An alternative, maybe crazy, could be to treat a partitioned index as one; e.g. all operations are on the definition. That way ONLY, ATTACH and DETACH could be eliminated. Once a partition is detached any partitioned indexes would be marked as a normal index, and a partition could only be attached if it had indexes satisfying all partition index definitions. Bloat could be handled by swapping the index as suggested by David [1]. It would be less flexible, but people always have the option to define indexes directly on the partitions. Some comments. 0004's alter_index.sgml are missing the "PARTITION" keyword for both the ATTACH and DETACH commands. A small thing, for -- test.sql -- CREATE TABLE test (a integer NOT NULL) PARTITION BY HASH(a); CREATE TABLE test_p00 PARTITION OF test FOR VALUES WITH (MODULUS 2, REMAINDER 0); CREATE TABLE test_p01 PARTITION OF test FOR VALUES WITH (MODULUS 2, REMAINDER 1); CREATE INDEX idx_test_a ON test (a); -- test.sql -- I would expect that the index names were 'test_p00_idx_test_a' and 'test_p01_idx_test_a'. psql completion for "CREATE INDEX blah ON tes<TAB>" only lists the child tables. Completion for the ALTER INDEX commands is missing. [1] https://www.postgresql.org/message-id/CAKJS1f_Wf%3DM06o8iQi72SxN%2BZpLV4c0CwYoN5xYVY4aWWX-jBQ%40mail.gmail.com Best regards, Jesper
Commits
-
Local partitioned indexes
- 8b08f7d4820f 11.0 landed
-
Fix StoreCatalogInheritance1 to use 32bit inhseqno
- 1ef61ddce908 11.0 landed
- 9a215fb4b5ec 9.3.21 landed
- 8a71ee628854 9.6.7 landed
- 61f08c016322 10.2 landed
- 1284d18b5de9 9.4.16 landed
- 0d993709a773 9.5.11 landed
-
Get rid of copy_partition_key
- 8a0596cb656e 11.0 landed
-
Simplify index_[constraint_]create API
- a61f5ab98638 11.0 landed