Re: ExecRTCheckPerms() and many prunable partitions
Alvaro Herrera <alvherre@alvh.no-ip.org>
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Amit Langote <amitlangote09@gmail.com>
Cc: Ian Lawrence Barwick <barwick@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, David Rowley <dgrowleyml@gmail.com>, Greg Stark <stark@mit.edu>, Julien Rouhaud <rjuju123@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-11-30T08:32:15Z
Lists: pgsql-hackers
Hello On 2022-Nov-29, Amit Langote wrote: > Thanks for taking a look and all the fixup patches. Was working on > that test I said we should add and then was spending some time > cleaning things up and breaking some things out into their patches, > mainly for the ease of review. Right, excellent. Thanks for this new version. It looks pretty good to me now. > On Tue, Nov 29, 2022 at 6:27 PM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote: > > The other changes are cosmetic. > > Thanks, I've merged all. I do wonder that it is only in PlannedStmt > that the list is called something that is not "rtepermlist", but I'm > fine with it if you prefer that. I was unsure about that one myself; I just changed it because that struct uses camelCaseNaming, which the others do not, so it seemed fine in the other places but not there. As for changing "list" to "infos", it seems to me we tend to avoid naming a list as "list", so. (Maybe I would change the others to be foo_rteperminfos. Unless these naming choices were already bikeshedded to its present form upthread and I missed it?) > As I mentioned above, I've broken a couple of other changes out into > their own patches that I've put before the main patch. 0001 adds > ExecGetRootToChildMap(). I thought it would be better to write in the > commit message why the new map is necessary for the main patch. I was thinking about this one and it seemed too closely tied to ExecGetInsertedCols to be committed separately. Notice how there is a comment that mentions that function in your 0001, but that function itself still uses ri_RootToPartitionMap, so before your 0003 the comment is bogus. And there's now quite some duplicity between ri_RootToPartitionMap and ri_RootToChildMap, which I think it would be better to reduce. I mean, rather than add a new field it would be better to repurpose the old one: - ExecGetRootToChildMap should return TupleConversionMap * - every place that accesses ri_RootToPartitionMap directly should be using ExecGetRootToChildMap() instead - ExecGetRootToChildMap passes build_attrmap_by_name_if_req !resultRelInfo->ri_RelationDesc->rd_rel->relispartition as third argument to build_attrmap_by_name_if_req (rather than constant true), so that we keep the tuple compatibility checking we have there currently. > 0002 contains changes that has to do with changing how we access > checkAsUser in some foreign table planning/execution code sites. > Thought it might be better to describe it separately too. I'll get this one pushed soon, it seems good to me. (I'll edit to not use Oid as boolean.) -- Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
Commits
-
Add a test case for a316a3bc
- 054ff3b33a85 17.0 landed
- 0a14bca662a4 16.0 landed
-
Correctly set userid of subquery relations' child rels
- a316a3bc6d3f 16.0 landed
-
Fix buggy recursion in flatten_rtes_walker().
- c7468c73f7b6 16.0 landed
-
Remove some dead code in selfuncs.c
- 438e6b724090 16.0 landed
-
Update outdated comment in ApplyRetrieveRule
- 29861e228a47 16.0 landed
-
Rework query relation permission checking
- a61b1f74823c 16.0 landed
-
Generalize ri_RootToPartitionMap to use for non-partition children
- fb958b5da86d 16.0 landed
-
Stop accessing checkAsUser via RTE in some cases
- 599b33b9492d 16.0 landed
-
Add 'missing_ok' argument to build_attrmap_by_name
- ad86d159b6ab 16.0 landed