[sqlsmith] ERROR: badly formatted node string "RESTRICTINFO...

Andreas Seltenreich <seltenreich@gmx.de>

From: Andreas Seltenreich <seltenreich@gmx.de>
To: pgsql-hackers@postgresql.org
Date: 2017-04-09T12:29:53Z
Lists: pgsql-hackers
Hi,

I see the above ERROR logged a lot when testing master at eef8c0069e
with a postgres_fdw around.  Below is a recipe to reproduce it on top of
the regression DB.

regards,
Andreas

create extension postgres_fdw;
create server myself foreign data wrapper postgres_fdw;
create schema fdw_postgres;
create user fdw login;
grant all on schema public to fdw;
grant all on all tables in schema public to fdw;
create user mapping for public server myself options (user 'fdw');
import foreign schema public from server myself into fdw_postgres;

set max_parallel_workers_per_gather = 8;
set parallel_setup_cost = 0;
set parallel_tuple_cost = 0;

regression=> select (select max(result) from fdw_postgres.num_result) from tt0;
ERROR:  badly formatted node string "RESTRICTINFO :clause {NULLTEST :"...
CONTEXT:  parallel worker
regression=> explain select (select max(result) from fdw_postgres.num_result) from tt0;
                                        QUERY PLAN
-------------------------------------------------------------------------------------------
 Gather  (cost=100.06..122.51 rows=1947 width=32)
   Workers Planned: 1
   InitPlan 2 (returns $1)
     ->  Result  (cost=100.05..100.06 rows=1 width=32)
           InitPlan 1 (returns $0)
             ->  Limit  (cost=100.00..100.05 rows=1 width=74)
                   ->  Foreign Scan on num_result  (cost=100.00..138.64 rows=831 width=74)
   ->  Append  (cost=0.00..22.45 rows=1145 width=0)
         ->  Parallel Seq Scan on tt0  (cost=0.00..2.04 rows=104 width=0)
         ->  Parallel Seq Scan on tt6  (cost=0.00..20.41 rows=1041 width=0)


Commits

  1. Avoid transferring parallel-unsafe subplans to parallel workers.

  2. Mark finished Plan nodes with parallel_safe flags.

  3. Simplify handling of remote-qual pass-forward in postgres_fdw.

  4. Handle restriction clause lists more uniformly in postgres_fdw.

  5. Allow parallel workers to execute subplans.