pgsql: Move Trigger and TriggerDesc structs out of rel.h into a new rel

Started by Alvaro Herreraalmost 15 years ago4 messageshackers
Jump to latest
#1Alvaro Herrera
alvherre@2ndquadrant.com

Move Trigger and TriggerDesc structs out of rel.h into a new reltrigger.h

This lets us stop including rel.h into execnodes.h, which is a widely
used header.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/b93f5a5673b4bb09e14eb80fe28aa21fc20a6271

Modified Files
--------------
contrib/dblink/dblink.c | 1 +
contrib/file_fdw/file_fdw.c | 1 +
contrib/lo/lo.c | 7 +--
contrib/pageinspect/btreefuncs.c | 1 +
contrib/pageinspect/rawpage.c | 1 +
contrib/pgrowlocks/pgrowlocks.c | 1 +
contrib/pgstattuple/pgstatindex.c | 1 +
contrib/spi/autoinc.c | 1 +
contrib/spi/insert_username.c | 1 +
contrib/spi/moddatetime.c | 1 +
contrib/spi/refint.c | 1 +
contrib/spi/timetravel.c | 1 +
src/backend/access/gin/ginfast.c | 1 +
src/backend/access/gin/gininsert.c | 1 +
src/backend/access/gist/gist.c | 1 +
src/backend/access/gist/gistget.c | 1 +
src/backend/access/hash/hash.c | 1 +
src/backend/access/hash/hashutil.c | 1 +
src/backend/access/nbtree/nbtutils.c | 1 +
src/backend/bootstrap/bootstrap.c | 1 +
src/backend/catalog/heap.c | 2 +-
src/backend/catalog/indexing.c | 1 +
src/backend/catalog/pg_proc.c | 1 +
src/backend/catalog/toasting.c | 1 +
src/backend/commands/alter.c | 1 +
src/backend/commands/constraint.c | 1 +
src/backend/commands/copy.c | 1 +
src/backend/commands/explain.c | 3 +-
src/backend/commands/extension.c | 1 +
src/backend/commands/schemacmds.c | 1 +
src/backend/commands/trigger.c | 1 +
src/backend/commands/typecmds.c | 1 +
src/backend/executor/execAmi.c | 1 +
src/backend/executor/execCurrent.c | 1 +
src/backend/executor/nodeBitmapHeapscan.c | 1 +
src/backend/executor/nodeForeignscan.c | 1 +
src/backend/executor/nodeIndexscan.c | 1 +
src/backend/executor/nodeLockRows.c | 1 +
src/backend/executor/nodeMergeAppend.c | 1 +
src/backend/executor/nodeModifyTable.c | 1 +
src/backend/executor/nodeSeqscan.c | 1 +
src/backend/executor/nodeTidscan.c | 1 +
src/backend/executor/spi.c | 1 +
src/backend/optimizer/plan/planner.c | 1 +
src/backend/optimizer/util/predtest.c | 1 +
src/backend/parser/parse_relation.c | 1 +
src/backend/parser/parse_target.c | 1 +
src/backend/parser/parse_utilcmd.c | 2 +-
src/backend/postmaster/autovacuum.c | 1 +
src/backend/rewrite/rewriteHandler.c | 3 +-
src/backend/utils/adt/ri_triggers.c | 1 +
src/backend/utils/adt/ruleutils.c | 3 +-
src/backend/utils/adt/selfuncs.c | 1 +
src/backend/utils/adt/trigfuncs.c | 1 +
src/backend/utils/adt/tsvector_op.c | 1 +
src/backend/utils/adt/xml.c | 1 +
src/backend/utils/cache/lsyscache.c | 1 +
src/backend/utils/fmgr/funcapi.c | 1 +
src/include/nodes/execnodes.h | 2 +-
src/include/utils/rel.h | 55 +---------------------
src/include/utils/reltrigger.h | 74 +++++++++++++++++++++++++++++
src/pl/plperl/plperl.c | 1 +
src/pl/plpgsql/src/pl_comp.c | 1 +
src/pl/plpgsql/src/pl_exec.c | 1 +
src/pl/plpython/plpython.c | 1 +
src/pl/tcl/pltcl.c | 1 +
src/test/regress/regress.c | 1 +
67 files changed, 144 insertions(+), 65 deletions(-)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#1)
Re: pgsql: Move Trigger and TriggerDesc structs out of rel.h into a new rel

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

Move Trigger and TriggerDesc structs out of rel.h into a new reltrigger.h
This lets us stop including rel.h into execnodes.h, which is a widely
used header.

I'm confused why this patch added pg_am.h to predtest.c?

regards, tom lane

#3Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Tom Lane (#2)
Re: [COMMITTERS] pgsql: Move Trigger and TriggerDesc structs out of rel.h into a new rel

Excerpts from Tom Lane's message of mar jul 05 10:47:03 -0400 2011:

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

Move Trigger and TriggerDesc structs out of rel.h into a new reltrigger.h
This lets us stop including rel.h into execnodes.h, which is a widely
used header.

I'm confused why this patch added pg_am.h to predtest.c?

Because otherwise it fails to compile with this error:

gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -g -I../../../../src/include -I/pgsql/source/HEAD/src/include -D_GNU_SOURCE -I/usr/include/libxml2 -c -o predtest.o /pgsql/source/HEAD/src/backend/optimizer/util/predtest.c -MMD -MP -MF .deps/predtest.Po
/pgsql/source/HEAD/src/backend/optimizer/util/predtest.c: In function ‘get_btree_test_op’:
/pgsql/source/HEAD/src/backend/optimizer/util/predtest.c:1661:32: error: ‘BTREE_AM_OID’ undeclared (first use in this function)
/pgsql/source/HEAD/src/backend/optimizer/util/predtest.c:1661:32: note: each undeclared identifier is reported only once for each function it appears in
make: *** [predtest.o] Error 1

Since that symbol is defined in pg_am.h, I thought the most convenient
fix was to include just that file. I could, of course, have included
the whole of rel.h but that seemed a bit pointless. The relevant code
is actually dealing with opfamilies (pg_amop.h is already being
included):

/* Now search the opfamilies */
for (i = 0; i < catlist->n_members; i++)
{
HeapTuple pred_tuple = &catlist->members[i]->tuple;
Form_pg_amop pred_form = (Form_pg_amop) GETSTRUCT(pred_tuple);
HeapTuple clause_tuple;

/* Must be btree */
if (pred_form->amopmethod != BTREE_AM_OID)
continue;

(Of course, the reason this didn't fail previously is because rel.h
includes pg_am.h).

--
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#3)
Re: [COMMITTERS] pgsql: Move Trigger and TriggerDesc structs out of rel.h into a new rel

Alvaro Herrera <alvherre@commandprompt.com> writes:

Excerpts from Tom Lane's message of mar jul 05 10:47:03 -0400 2011:

I'm confused why this patch added pg_am.h to predtest.c?

...
(Of course, the reason this didn't fail previously is because rel.h
includes pg_am.h).

Oh, duh. Nevermind.

regards, tom lane