From 4b575218b956b668424575c5248a126df34356e3 Mon Sep 17 00:00:00 2001
From: Vinay Mehta <14790730+vimeh@users.noreply.github.com>
Date: Mon, 2 Mar 2026 10:10:58 -0800
Subject: [PATCH] sql: unparse array_has as ANY for Postgres
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
PostgreSQL does not have an array_has() function — it uses the
`= ANY(array)` operator for array containment checks. Without this
dialect override, SQL unparsed for Postgres federation produces
invalid syntax. This converts array_has(haystack, needle) to
needle = ANY(haystack) in the PostgreSqlDialect.
---
datafusion/sql/src/unparser/dialect.rs | 21 +++++++++++++++++++++
datafusion/sql/src/unparser/expr.rs | 20 +++++++++++++++++++-
datafusion/sql/tests/cases/plan_to_sql.rs | 11 +++++++++++
3 files changed, 51 insertions(+), 1 deletion(-)
diff --git a/datafusion/sql/src/unparser/dialect.rs b/datafusion/sql/src/unparser/dialect.rs
index 31d2662cc4cc0..869c6314470cf 100644
--- a/datafusion/sql/src/unparser/dialect.rs
+++ b/datafusion/sql/src/unparser/dialect.rs
@@ -340,6 +340,10 @@ impl Dialect for PostgreSqlDialect {
func_name: &str,
args: &[Expr],
) -> Result