On 06/11/2017 05:35 PM, Tom Lane wrote: > Joe Conway <m...@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. Joe -- Crunchy Data - http://crunchydata.com PostgreSQL Support for Secure Enterprises Consulting, Training, & Open Source Development
signature.asc
Description: OpenPGP digital signature