Skip to content

Silent @EACH() failure when second argument matches column name in node #5582

@tjirab

Description

@tjirab

When the second argument in an @EACH() function call matches a column in the node, it seems to be ignored.

SQLMesh definition

SELECT
  organization_id,
  @EACH(
    @product_families_simple,
    product -> (
      MIN(CASE WHEN product = @product AND rownum = 4 THEN reference_date END)
    ) AS @{product}_low_engagement_date
  ),

Compiled SQL

SELECT
  `_pql_qualifying_days`.`organization_id` AS `organization_id`,
  MIN(
    CASE
      WHEN `_pql_qualifying_days`.`rownum` = 4
      THEN `_pql_qualifying_days`.`reference_date`
    END
  ) AS `feeds_low_engagement_date`,

When adding a prefix, it compiles correctly.
SQLMesh definition

SELECT
  organization_id,
  @EACH(
    @product_families_simple,
    _product -> (
      MIN(CASE WHEN (product = @_product AND rownum = 4) THEN reference_date END)
    ) AS @{product}_low_engagement_date
  ),

Compiled SQL

SELECT
  `_pql_qualifying_days`.`organization_id` AS `organization_id`,
  MIN(
    CASE
      WHEN (
        `_pql_qualifying_days`.`product` = 'feeds'
        AND `_pql_qualifying_days`.`rownum` = 4
      )
      THEN `_pql_qualifying_days`.`reference_date`
    END
  ) AS `feeds_low_engagement_date`,

Using version 0.227.0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugSomething isn't working

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions