On Wed, Jun 9, 2021 at 12:06 AM Jeremy Schneider <schnjere@amazon.com> wrote:
>
> On 6/4/21 23:42, Amit Kapila wrote:
>
> On 2021-Jun-04, Jeremy Schneider wrote:
>
> ERROR: XX000: could not open relation with OID 0
> LOCATION: ReorderBufferToastReplace, reorderbuffer.c:305
>
> Even, if this fixes the issue, I guess it is better to find why this
> happens? I think the reason why the code is giving an error is that
> after toast insertions we always expect the insert on the main table
> of toast table, but if there happens to be a case where after toast
> insertion, instead of getting the insertion on the main table we get
> an insert in some other table then you will see this error. I think
> this can happen for speculative insertions where insertions lead to a
> toast table insert, then we get a speculative abort record, and then
> insertion on some other table. The main thing is currently decoding
> code ignores speculative aborts due to which such a problem can occur.
> Now, there could be other cases where such a problem can happen but if
> my theory is correct then the patch we are discussing in the thread
> [1] should solve this problem.
>
> Jeremy, is this problem reproducible? Can we get a testcase or
> pg_waldump output of previous WAL records?
>
> [1] - https://www.postgresql.org/message-id/CAExHW5sPKF-Oovx_qZe4p5oM6Dvof7_P%2BXgsNAViug15Fm99jA%40mail.gmail.com
>
>
> It's unclear to me whether or not we'll be able to catch the repro on the actual production system. It seems that we
arehitting this somewhat consistently, but at irregular and infrequent intervals. If we are able to catch it and walk
theWAL records then I'll post back here.
>
Okay, one thing you can check is if there is a usage of Insert .. On
Conflict .. statement in the actual production system?
> FYI, Bertrand was able to replicate the exact error message with pretty much the same repro that's in the other email
threadwhich is linked above.
>
> Separately, would there be any harm in adding the relation OID to the error message? Personally, I just think the
errormessage is generally more useful if it shows the main relation OID (since we know that the toast OID can be 0).
Nota big deal though.
>
I don't think that is a bad idea. However, I think it might be better
to propose that as a separate patch in a new thread.
--
With Regards,
Amit Kapila.