aboutsummaryrefslogtreecommitdiff
path: root/contrib/postgres_fdw/postgres_fdw.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/postgres_fdw/postgres_fdw.c')
-rw-r--r--contrib/postgres_fdw/postgres_fdw.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c
index 4053cd641c5..0bb9a5ae8f6 100644
--- a/contrib/postgres_fdw/postgres_fdw.c
+++ b/contrib/postgres_fdw/postgres_fdw.c
@@ -7141,6 +7141,20 @@ add_foreign_final_paths(PlannerInfo *root, RelOptInfo *input_rel,
return;
/*
+ * If the query has FETCH FIRST .. WITH TIES, 1) it must have ORDER BY as
+ * well, which is used to determine which additional rows tie for the last
+ * place in the result set, and 2) ORDER BY must already have been
+ * determined to be safe to push down before we get here. So in that case
+ * the FETCH clause is safe to push down with ORDER BY if the remote
+ * server is v13 or later, but if not, the remote query will fail entirely
+ * for lack of support for it. Since we do not currently have a way to do
+ * a remote-version check (without accessing the remote server), disable
+ * pushing the FETCH clause for now.
+ */
+ if (parse->limitOption == LIMIT_OPTION_WITH_TIES)
+ return;
+
+ /*
* Also, the LIMIT/OFFSET cannot be pushed down, if their expressions are
* not safe to remote.
*/