Re: [COMMITTERS] pgsql: Apply RLS policies to partitioned tables. - Mailing list pgsql-committers
| From | Amit Langote |
|---|---|
| Subject | Re: [COMMITTERS] pgsql: Apply RLS policies to partitioned tables. |
| Date | |
| Msg-id | bea1642d-2791-fe5f-e9cf-df12ea5cf162@lab.ntt.co.jp Whole thread Raw |
| In response to | Re: [COMMITTERS] pgsql: Apply RLS policies to partitioned tables. (Joe Conway <mail@joeconway.com>) |
| Responses |
Re: [COMMITTERS] pgsql: Apply RLS policies to partitioned tables.
|
| List | pgsql-committers |
On 2017/06/12 11:09, Joe Conway wrote:
> On 06/11/2017 05:35 PM, Tom Lane wrote:
>> Joe Conway <mail@joeconway.com> writes:
>>> Apply RLS policies to partitioned tables.
>>
>> Buildfarm member skink has grown a "make check" failure with this commit.
>>
>> ==28150== VALGRINDERROR-BEGIN
>> ==28150== Invalid read of size 8
>> ==28150== at 0x39A355: ExecInitModifyTable (nodeModifyTable.c:1862)
>> ==28150== by 0x37F0F8: ExecInitNode (execProcnode.c:168)
>> ==28150== by 0x37C219: InitPlan (execMain.c:1044)
>> ==28150== by 0x37C3AF: standard_ExecutorStart (execMain.c:256)
>> ==28150== by 0x37C4B8: ExecutorStart (execMain.c:151)
>> ==28150== by 0x4CCCCE: ProcessQuery (pquery.c:157)
>> ==28150== by 0x4CCEDF: PortalRunMulti (pquery.c:1287)
>> ==28150== by 0x4CDE19: PortalRun (pquery.c:800)
>> ==28150== by 0x4C9E85: exec_simple_query (postgres.c:1099)
>> ==28150== by 0x4CBF20: PostgresMain (postgres.c:4087)
>> ==28150== by 0x44DC04: BackendRun (postmaster.c:4331)
>> ==28150== by 0x44FD9B: BackendStartup (postmaster.c:4003)
>> ==28150== Address 0xbbdbec8 is 8,008 bytes inside a recently re-allocated block of size 8,192 alloc'd
>> ==28150== at 0x4C2AB76: malloc (vg_replace_malloc.c:299)
>> ==28150== by 0x6002D2: AllocSetAlloc (aset.c:760)
>> ==28150== by 0x606EB5: MemoryContextAllocZeroAligned (mcxt.c:791)
>> ==28150== by 0x3832B1: CreateExecutorState (execUtils.c:99)
>> ==28150== by 0x37C2E6: standard_ExecutorStart (execMain.c:186)
>> ==28150== by 0x37C4B8: ExecutorStart (execMain.c:151)
>> ==28150== by 0x4CCCCE: ProcessQuery (pquery.c:157)
>> ==28150== by 0x4CCEDF: PortalRunMulti (pquery.c:1287)
>> ==28150== by 0x4CDE19: PortalRun (pquery.c:800)
>> ==28150== by 0x4C9E85: exec_simple_query (postgres.c:1099)
>> ==28150== by 0x4CBF20: PostgresMain (postgres.c:4087)
>> ==28150== by 0x44DC04: BackendRun (postmaster.c:4331)
>> ==28150==
>> ==28150== VALGRINDERROR-END
>>
>> The cited line is the ExecInitQual call here:
>>
>> /* varno = node->nominalRelation */
>> mapped_wcoList = map_partition_varattnos(wcoList,
>> node->nominalRelation,
>> partrel, rel);
>> foreach(ll, mapped_wcoList)
>> {
>> WithCheckOption *wco = (WithCheckOption *) lfirst(ll);
>> ExprState *wcoExpr = ExecInitQual((List *) wco->qual,
>> mtstate->mt_plans[i]);
>>
>> wcoExprs = lappend(wcoExprs, wcoExpr);
>> }
>>
>> First guess is that map_partition_varattnos has forgotten to handle
>> WithCheckOption.qual. If so, though, and if that's not resulting
>> in visible misbehavior in the regression tests, then we are missing
>> a case that the regression tests should be covering.
>>
>> BTW, it might be advisable to use castNode(WithCheckOption, ...)
>> in the line before that.
>
> Drat. I'll take a look, but it would probably be good if someone
> generally familiar with the partitioned tables patches have a look as well.
I am looking too. Commit 587cda35ca3 which added that code did add a test
in updatable_views.sql, but tests added by this commit have perhaps
exposed something not previously covered.
Thanks,
Amit
pgsql-committers by date: