| From: | Andres Freund <andres(at)anarazel(dot)de> | 
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> | 
| Cc: | xinwen(at)stu(dot)scu(dot)edu(dot)cn, pgsql-bugs(at)lists(dot)postgresql(dot)org | 
| Subject: | Re: BUG #17737: An assert failed in execExprInterp.c | 
| Date: | 2023-01-05 21:41:49 | 
| Message-ID: | 20230105214149.udb5zid65prxjbqq@awork3.anarazel.de | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-bugs | 
Hi,
On 2023-01-05 15:50:03 -0500, Tom Lane wrote:
> PG Bug reporting form <noreply(at)postgresql(dot)org> writes:
> > When executing the following query:
> 
> > CREATE TABLE table0 ( column1 INT ) ;
> > INSERT INTO table0 VALUES ( 1 ), ( 1 ) ;
> > WITH RECURSIVE table3 ( column0 ) AS ( SELECT column1 FROM table0 UNION
> > SELECT column0 FROM table3 WHERE column0 < 1 ) SELECT 1 FROM table3 LEFT
> > JOIN table0 ON TRUE ;
> 
> > I get a failed assertion with the following stacktrace:
> 
> Yeah.  The problem is that LookupTupleHashEntry is being handed
> a BufferHeapTuple slot, evidently direct from the scan of table0,
> but BuildTupleHashTableExt previously set up the comparison
> expression on the assumption that the input would be a MinimalTuple
> slot:
> 
>     /* build comparator for all columns */
>     /* XXX: should we support non-minimal tuples for the inputslot? */
>     hashtable->tab_eq_func = ExecBuildGroupingEqual(inputDesc, inputDesc,
>                                                     &TTSOpsMinimalTuple, &TTSOpsMinimalTuple,
>                                                     ...
> 
> AFAICT this has been wrong since we introduced multiple slot types
> (I bisected it back to 15d8f8312, but of course that's just the
> messenger).
> I'm kind of baffled as to how it's escaped detection for this long;
> maybe the assertion is overly tight, and the case actually works
> in non-assert builds?
I suspect it might work solely because the columns happen to have already been
deformed. At least that's the case in the example above.
I'll be in a meetings for the next bit, will take a closer look after.
Greetings,
Andres Freund
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Andres Freund | 2023-01-06 00:01:08 | Re: BUG #17737: An assert failed in execExprInterp.c | 
| Previous Message | Tom Lane | 2023-01-05 21:33:48 | Re: BUG #17737: An assert failed in execExprInterp.c |