Re: Table refer leak in logical replication - Mailing list pgsql-hackers
From | Amit Langote |
---|---|
Subject | Re: Table refer leak in logical replication |
Date | |
Msg-id | CA+HiwqEUYN=b_E25J=Hxi=PrgxCWJqe-TW3xXD7=34c5ZZLG6g@mail.gmail.com Whole thread Raw |
In response to | Re: Table refer leak in logical replication (Michael Paquier <michael@paquier.xyz>) |
List | pgsql-hackers |
On Mon, Apr 26, 2021 at 3:27 PM Michael Paquier <michael@paquier.xyz> wrote: > On Fri, Apr 23, 2021 at 09:38:01PM +0900, Amit Langote wrote: > > On Thu, Apr 22, 2021 at 1:45 PM Michael Paquier <michael@paquier.xyz> wrote: > >> On the other hand, the tests for partitions have much more value IMO, > >> but looking closely I think that we can do better: > >> - Create triggers on more relations of the partition tree, > >> particularly to also check when a trigger does not fire. > > > > It seems you're suggesting to adopt 003's trigger firing tests for > > partitions in 013, but would we gain much by that? > > I was suggesting the opposite, aka apply the trigger design that you > are introducing in 013 within 003. But that may not be necessary > either :) You mentioned adding "triggers on more relations of the partition trees", so I thought you were talking about 013; 003 doesn't test partitioning at all at the moment. > >> - Create some extra BEFORE triggers perhaps? > > > > Again, that seems separate from what we're trying to do here. AIUI, > > our aim here is to expand coverage for after triggers, and not really > > that of the trigger functionality proper, because nothing seems broken > > about it, but that of the trigger target relation opening/closing. > > ISTM that's what you're talking about below... > > Exactly. My review of the worker code is make me feeling that > reworking this code could easily lead to some incorrect behavior, so > I'd rather be careful with a couple of extra triggers created across > the partition tree, down to the partitions on which the triggers are > fired actually. Ah, okay. You are talking about improving the coverage in general, NOT in the context of the fix committed in f3b141c482552. However, note that BEFORE triggers work the same no matter whether the target relation is directly mentioned in the apply message or found as a result of tuple routing. That's because the routines execReplication.c (like ExecSimpleRelationInsert) and in nodeModifyTable.c (like ExecInsert) pass the ResultRelInfo *directly* to the BR trigger.c routines. So, there's no need for the complexity of the code and data structures for looking up trigger target relations, such as what AFTER triggers need -- ExecGetTargetResultRel(). Given that, it's understandable to have more coverage for the AFTER trigger case like that added by the patch you just committed. > >> similarly to what issues_sql_like() or connect_{fails,ok}() do > >> already, but that would mean increasing the log level and we don't do > >> that to ease the load of the nodes. > > > > ...sorry, I am not very familiar with our Perl testing infra. Is > > there some script that already does something like this? For example, > > checking in the logs generated by a "node" that no instance of a > > certain WARNING is logged? > > See for example how we test for SQL patterns with the backend logs > using issues_sql_like(), or the more recent connect_ok() and > connect_fails(). This functions match regexps with the logs of the > backend for patterns. So I assume those pattern-matching functions would catch, for example, relation leak warnings in case they get introduced later, right? If so, I can see the merit of trying the idea. > I am not sure if that's worth the extra cycles > though. I also feel that we may want a more centralized place as well > to check such things, with more matching patterns, like at the end of > one run on a set of log files? I guess that makes sense. > So, after a set of edits related to the format of the SQL queries, the > object names and some indentation (including a perltidy run), I have > applied this patch to close the loop. Thanks a lot. -- Amit Langote EDB: http://www.enterprisedb.com
pgsql-hackers by date: