From 000d3e8bd9b812fa53299491cfb4f7148384d7b0 Mon Sep 17 00:00:00 2001 From: George Sittas Date: Mon, 15 Sep 2025 15:16:28 +0300 Subject: [PATCH] Fix: port sqlglot pipe syntax fix in _parse_select --- sqlmesh/core/dialect.py | 2 ++ tests/core/test_dialect.py | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/sqlmesh/core/dialect.py b/sqlmesh/core/dialect.py index 6f5e3745fd..332550d57c 100644 --- a/sqlmesh/core/dialect.py +++ b/sqlmesh/core/dialect.py @@ -350,6 +350,7 @@ def _parse_select( parse_subquery_alias: bool = True, parse_set_operation: bool = True, consume_pipe: bool = True, + from_: t.Optional[exp.From] = None, ) -> t.Optional[exp.Expression]: select = self.__parse_select( # type: ignore nested=nested, @@ -357,6 +358,7 @@ def _parse_select( parse_subquery_alias=parse_subquery_alias, parse_set_operation=parse_set_operation, consume_pipe=consume_pipe, + from_=from_, ) if ( diff --git a/tests/core/test_dialect.py b/tests/core/test_dialect.py index 58e372c634..52ea673778 100644 --- a/tests/core/test_dialect.py +++ b/tests/core/test_dialect.py @@ -722,3 +722,11 @@ def test_sqlglot_extended_correctly(dialect: str) -> None: def test_connected_identifier(): ast = d.parse_one("""SELECT ("x"at time zone 'utc')::timestamp as x""", "redshift") assert ast.sql("redshift") == """SELECT CAST(("x" AT TIME ZONE 'utc') AS TIMESTAMP) AS x""" + + +def test_pipe_syntax(): + ast = d.parse_one("SELECT * FROM (FROM t2 |> SELECT id)", "bigquery") + assert ( + ast.sql("bigquery") + == "SELECT * FROM (WITH __tmp1 AS (SELECT id FROM t2) SELECT * FROM __tmp1)" + )