Thread: simplify index tuple descriptor initialization
Whenever some pg_attribute field is added or changed, a lot of repetitive changes all over the code are necessary. Here is a small change to remove one such place. We have two code paths for initializing the tuple descriptor for a new index: For a normal index, we copy the tuple descriptor from the table and reset a number of fields that are not applicable to indexes. For an expression index, we make a blank tuple descriptor and fill in the needed fields based on the provided expressions. As pg_attribute has grown over time, the number of fields that we need to reset in the first case is now bigger than the number of fields we actually want to copy, so it's sensible to do it the other way around: Make a blank descriptor and copy just the fields we need. This also allows more code sharing between the two branches, and it avoids having to touch this code for almost every unrelated change to the pg_attribute structure. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachment
On Mon, Aug 27, 2018 at 04:25:28PM +0200, Peter Eisentraut wrote: > Whenever some pg_attribute field is added or changed, a lot of > repetitive changes all over the code are necessary. Here is a small > change to remove one such place. It looks like a reasonable change to me. The code is good and regression tests passed. There is no need to update the documentation. Marked as Ready for Commiter. -- Arthur Zakirov Postgres Professional: http://www.postgrespro.com Russian Postgres Company
On 12/09/2018 15:18, Arthur Zakirov wrote: > On Mon, Aug 27, 2018 at 04:25:28PM +0200, Peter Eisentraut wrote: >> Whenever some pg_attribute field is added or changed, a lot of >> repetitive changes all over the code are necessary. Here is a small >> change to remove one such place. > > It looks like a reasonable change to me. > > The code is good and regression tests passed. There is no need to update > the documentation. > > Marked as Ready for Commiter. Committed, thanks. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services