mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Support for deparsing of ArrayCoerceExpr node in contrib/postgres_fdw
When using a prepared statement to select data from a PostgreSQL foreign table (postgres_fdw) with the "field = ANY($1)" expression, the operation is not pushed down when an implicit type case is applied, and a generic plan is used. This commit resolves the issue by supporting the push-down of ArrayCoerceExpr, which is used in this case. The support is quite straightforward and similar to other nods, such as RelabelType. Discussion: https://postgr.es/m/4f0cea802476d23c6e799512ffd17aff%40postgrespro.ru Author: Alexander Pyhalov <a.pyhalov@postgrespro.ru> Reviewed-by: Maxim Orlov <orlovmg@gmail.com> Reviewed-by: Alexander Korotkov <aekorotkov@gmail.com>
This commit is contained in:
@ -458,6 +458,15 @@ SELECT * FROM ft1 WHERE CASE c3 WHEN c6 THEN true ELSE c3 < 'bar' END;
|
||||
EXPLAIN (VERBOSE, COSTS OFF)
|
||||
SELECT * FROM ft1 WHERE CASE c3 COLLATE "C" WHEN c6 THEN true ELSE c3 < 'bar' END;
|
||||
|
||||
-- Test array type conversion pushdown
|
||||
SET plan_cache_mode = force_generic_plan;
|
||||
PREPARE s(varchar[]) AS SELECT count(*) FROM ft2 WHERE c6 = ANY ($1);
|
||||
EXPLAIN (VERBOSE, COSTS OFF)
|
||||
EXECUTE s(ARRAY['1','2']);
|
||||
EXECUTE s(ARRAY['1','2']);
|
||||
DEALLOCATE s;
|
||||
RESET plan_cache_mode;
|
||||
|
||||
-- a regconfig constant referring to this text search configuration
|
||||
-- is initially unshippable
|
||||
CREATE TEXT SEARCH CONFIGURATION public.custom_search
|
||||
|
Reference in New Issue
Block a user