Re: BUG: PostgreSQL 19devel throws internal opfamily error for FK with reordered referenced columns

Amit Langote <amitlangote09@gmail.com>

From: Amit Langote <amitlangote09@gmail.com>
To: Fredrik Widlert <fredrik.widlert@digpro.se>
Cc: Junwang Zhao <zhjwpku@gmail.com>, Matheus Alcantara <matheusssilv97@gmail.com>, pgsql-bugs@lists.postgresql.org
Date: 2026-04-10T09:13:33Z
Lists: pgsql-bugs
On Fri, Apr 10, 2026 at 5:05 PM Amit Langote <amitlangote09@gmail.com> wrote:
> On Fri, Apr 10, 2026 at 4:29 PM Fredrik Widlert
> <fredrik.widlert@digpro.se> wrote:
> > Thanks for the very quick fix - it's a great feeling to report a problem
> > and get it fixed this quickly.
>
> Credit goes to Matheus for quickly submitting a well-written patch.
>
> > I can confirm that the fix solves not only the small reproducer but also
> > the original problems I got when trying to install our (large) system
> > on PostgreSQL 19 devel for testing.
>
> Thanks for confirming that.
>
> > We actually ran into the same problem in two ways:
> > * the reordered FK with datatype mismatch (my reproducer)
> > * other reordered FKs with the same datatypes, where we instead got
> >   regular FK violations
> >
> > In case you want a reproducer for the second case as well, I've included it below,
> > but perhaps it's not relevant since the patch already fixed it.
> >
> > ----
> > drop table if exists parent, child;
> >
> > create table parent (
> >      c1 integer,
> >      c2 integer,
> >      primary key (c1, c2)
> > );
> >
> > create table child (
> >      c1 integer,
> >      c2 integer,
> >      constraint child_fk foreign key (c2, c1) references parent (c2, c1)
> > );
> >
> > insert into parent (c1, c2) values (1, 2);
> > insert into child (c1, c2) values (1, 2);
>
> Good to know.  It's worth adding this case next to the ones Matheus's
> patch added, which the attached patch does.  Will push it shortly.

And done.

-- 
Thanks, Amit Langote



Commits

  1. Add test case for same-type reordered FK columns

  2. Assert index_attnos[0] == 1 in ri_FastPathFlushArray()

  3. Fix FK fast-path scan key ordering for mismatched column order

  4. Add fast path for foreign key constraint checks