pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: pgsql-hackers@lists.postgresql.org, Hadi Moshayedi <hadi@moshayedi.net>
Subject: Re: tableam scan-API patch broke foreign key validation
Date: Sat, 06 Apr 2019 14:34:34 -0400
Message-ID: <19906.1554575674@sss.pgh.pa.us> (raw)
In-Reply-To: <20190406182258.pvk5zkqdc6dobfg7@alap3.anarazel.de>
References: <19030.1554574075@sss.pgh.pa.us>
	<FD203188-892D-4FD6-99F4-7E85027B60A7@anarazel.de>
	<19246.1554574409@sss.pgh.pa.us>
	<20190406182258.pvk5zkqdc6dobfg7@alap3.anarazel.de>

Andres Freund <andres@anarazel.de> writes:
> The relevant thread is:
> https://www.postgresql.org/message-id/20190325180405.jytoehuzkeozggxx%40alap3.anarazel.de

Yeah, I just found that --- would have seen it sooner if David had
not elected to make it a new thread.

> Wonder if you have an opinion on:

>> I've also noticed that we should free the tuple - that doesn't matter
>> for heap, but it sure does for other callers.

Why should this code need to free anything?  That'd be the responsibility
of the slot code, no?

>> But uh, is it actually ok
>> to validate an entire table's worth of foreign keys without a memory
>> context reset? I.e. shouldn't we have a memory context that we reset
>> after each iteration?
>> Also, why's there no CHECK_FOR_INTERRUPTS()? heap has some internally on
>> a page level, but that doesn't seem all that granular?

These are good questions.  Just eyeing RI_FKey_check(), I think
that it might not have any significant leaks because most of the work
is done in an SPI context, but obviously that's pretty fragile.

The memory-context stuff in your WIP patch seems wrong, btw;
the second or later iteration of the loop would trash oldcxt.

But clearly we need a test case here.  I'll adjust Hadi's example
so that there's more than one tuple to check, and push it.

			regards, tom lane





view thread (10+ messages)  latest in thread

Message-ID: <19906.1554575674@sss.pgh.pa.us>
Permalink:  ../19906.1554575674@sss.pgh.pa.us/
Also on:    postgresql.org/message-id/19906.1554575674@sss.pgh.pa.us

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-hackers@postgresql.org
  Cc: tgl@sss.pgh.pa.us, andres@anarazel.de, hadi@moshayedi.net
  Subject: Re: tableam scan-API patch broke foreign key validation
  In-Reply-To: <19906.1554575674@sss.pgh.pa.us>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox