Re: pgsql: Apply RLS policies to partitioned tables.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Joe Conway <mail(at)joeconway(dot)com>
Cc: pgsql-committers(at)postgresql(dot)org
Subject: Re: pgsql: Apply RLS policies to partitioned tables.
Date: 2017-06-12 00:35:27
Message-ID: 10974.1497227727@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Joe Conway <mail(at)joeconway(dot)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.

regards, tom lane

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Joe Conway 2017-06-12 02:09:26 Re: pgsql: Apply RLS policies to partitioned tables.
Previous Message Tom Lane 2017-06-11 23:00:09 pgsql: Handle unqualified SEQUENCE NAME options properly in parse_utilc