pgsql-bugs@postgresql.org writes:
> a transaction from psql shows referential integrity statements in the
> output, but a transaction from a client using libpq does not; they are
> both using the same backend, PGDEBUG=2:
I think you are misinterpreting what you see. The additional queries
needed for RI checks are compiled only once per backend (when first
invoked), and thereafter cached. The "query:" log entry at debuglevel 2
actually comes from the parser, and so will only appear when the RI
check is compiled. Your client trace presumably is from a segment of
activity later than first execution of this particular RI check.
regards, tom lane