cube-js/cube

Incorrect alias in generated sql (ORACLE, ORA-00904)

Closed

#3,252 opened on Aug 13, 2021

 (4 comments) (0 reactions) (0 assignees)Rust (1,965 forks)batch import
driver:oraclehelp wanted

Repository metrics

Stars
 (19,563 stars)
PR merge metrics
 (Avg merge 5d 16h) (138 merged PRs in 30d)

Description

Describe the bug Incorrect alias generation in complex SQL request in Oracle.

To Reproduce 1.Make request to cube with parameters in different tables:

{
  "dimensions": [],
  "timeDimensions": [
    {
      "dimension": "Dm_portfolio.c6",
      "granularity": "month"
    }
  ],
  "measures": [
    "Dm_clients.m3__sum"
  ],
  "filters": [],
  "order": {}
}
  1. If generated SQL have two select statement: "SELECT \"keys\".\"dm_portfolio__c6_month\", sum(\"dm_clients_key___dm_clients\".age) \"dm_clients__m3__sum\" FROM (SELECT DISTINCT TRUNC(\"dm_clients_key___dm_portfolio\".report_month, 'MM') \"dm_portfolio__c6_month\", \"dm_clients_key___dm_clients\".client_id \"dm_clients__c1\" FROM dm.portfolio \"dm_clients_key___dm_portfolio\" LEFT JOIN dm.clients \"dm_clients_key___dm_clients\" ON \"dm_clients_key___dm_portfolio\".client_id = \"dm_clients_key___dm_clients\".client_id ) \"keys\" LEFT JOIN dm.clients \"dm_clients_key___dm_clients\" ON \"keys\".\"dm_clients__c1\" = \"dm_clients_key___dm_clients\".client_id GROUP BY TRUNC(\"dm_clients_key___dm_portfolio\".report_month, 'MM') ORDER BY 1 ASC FETCH NEXT 10000 ROWS ONLY"
  2. We have error: Error: ORA-00904: "dm_clients_key___dm_portfolio"."REPORT_MONTH": invalid identifier

Version: Docker 0.28.17

Additional context There is CORRECT alias in select: "keys"."dm_portfolio__c6_month"

But INCORRECT alias in group by: GROUP BY TRUNC("dm_clients_key___dm_portfolio".report_month, 'MM') should be: "keys"."dm_portfolio__c6_month"

Contributor guide