Re: PostgreSQL12 crash bug report
От | Tom Lane |
---|---|
Тема | Re: PostgreSQL12 crash bug report |
Дата | |
Msg-id | 28807.1564614449@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: PostgreSQL12 crash bug report (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: PostgreSQL12 crash bug report
|
Список | pgsql-bugs |
I wrote: > yi huang <yi.codeplayer@gmail.com> writes: >> [ crashes with ] >> $ pgbench -h 127.0.0.1 -p 5432 -U exchange exchange -T 2 -c 4 -f /tmp/test.sql > As per the stack trace, we're trying to build a new tuple for the output > of a ValuesScan node, but the targetlist for that seems completely insane: After digging through this, it seems clear that it's the fault of ad0bda5d2, specifically this code in EvalPlanQualSlot: *slot = ExecAllocTableSlot(&epqstate->estate->es_tupleTable, epqstate->origslot->tts_tupleDescriptor, &TTSOpsVirtual); It's setting up an es_epqTupleSlot[] entry on the assumption that it should have the same tupdesc as the output tuple that's to be rechecked. This might accidentally fail to malfunction in single-table cases, but it's quite broken for any join case --- in particular, for the given test case, the scan tuple for the VALUES node surely doesn't have the same tupdesc as the join result. I think we need to change the API of EvalPlanQualSlot, because it cannot determine the correct tupdesc when it's not handed a Relation. I'm not entirely sure that its immediate callers can either :-( so this might propagate out a ways. Or perhaps we should move the slot-making someplace else. I'll go make an open item for this. regards, tom lane
В списке pgsql-bugs по дате отправления: