Fix contrib/postgres_fdw's remote-estimate representation of array Params.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 16 Apr 2014 21:22:00 +0000 (17:22 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 16 Apr 2014 21:22:00 +0000 (17:22 -0400)
commit9612b982b8c9a8fd2c07e3c03e6a1878e4e41d9b
tree92ea642b57d77eba6fcdd2241a8e8c560be2dfd6
parentc4dcdd0c259bef380146eadbb55a48d4f3257639
Fix contrib/postgres_fdw's remote-estimate representation of array Params.

We were emitting "(SELECT null::typename)", which is usually interpreted
as a scalar subselect, but not so much in the context "x = ANY(...)".
This led to remote-side parsing failures when remote_estimate is enabled.
A quick and ugly fix is to stick in an extra cast step,
"((SELECT null::typename)::typename)".  The cast will be thrown away as
redundant by parse analysis, but not before it's done its job of making
sure the grammar sees the ANY argument as an a_expr rather than a
select_with_parens.  Per an example from Hannu Krosing.
contrib/postgres_fdw/deparse.c
contrib/postgres_fdw/expected/postgres_fdw.out
contrib/postgres_fdw/sql/postgres_fdw.sql