Thread: move DECLARE_INDEX from indexing.h?

move DECLARE_INDEX from indexing.h?

From
Alvaro Herrera
Date:
In his long bootstrap-reworking thread[1] John Naylor initially proposed
moving the DECLARE_INDEX lines from indexing.h to each of the
corresponding catalog files.  However, in the end that wasn't done;
these lines are still in indexing.h.  Is there a reason for this?
Wouldn't it make more sense to have the indexes for pg_attribute appear
in catalog/pg_attribute.h, and so forth?

I was unable to find a rebuttal of the move; maybe it was just
neglected because of fog-of-war.

[1] https://postgr.es/m/CAJVSVGWO48JbbwXkJz_yBFyGYW-M9YWxnPdxJBUosDC9ou_F0Q@mail.gmail.com


-- 
Álvaro Herrera



Re: move DECLARE_INDEX from indexing.h?

From
Alvaro Herrera
Date:
On 2020-Mar-06, Alvaro Herrera wrote:

> In his long bootstrap-reworking thread[1] John Naylor initially proposed
> moving the DECLARE_INDEX lines from indexing.h to each of the
> corresponding catalog files.  However, in the end that wasn't done;
> these lines are still in indexing.h.  Is there a reason for this?
> Wouldn't it make more sense to have the indexes for pg_attribute appear
> in catalog/pg_attribute.h, and so forth?

(In a quick experiment, simply moving the pg_aggregate indexes from
indexing.h to pg_aggregate.h appears to work with no further changes.)

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



Re: move DECLARE_INDEX from indexing.h?

From
Tom Lane
Date:
Alvaro Herrera <alvherre@2ndquadrant.com> writes:
> In his long bootstrap-reworking thread[1] John Naylor initially proposed
> moving the DECLARE_INDEX lines from indexing.h to each of the
> corresponding catalog files.  However, in the end that wasn't done;
> these lines are still in indexing.h.  Is there a reason for this?
> Wouldn't it make more sense to have the indexes for pg_attribute appear
> in catalog/pg_attribute.h, and so forth?

FWIW, I think it's just fine as-is, for the same reason that CREATE INDEX
is a separate command from CREATE TABLE.  The indexes on a table are not
part of the table data; to some extent they're an implementation detail.

            regards, tom lane