cube-js / cube-js/cube

Support `LOG` and `ROUND` scalar functions with two arguments in the SQL API

Open
#8,905 0 comments 0 reactions 1 assignee Claimed by @paveltiunov View on GitHub
api:sql
Dominant language
Rust
Stars
20.8k
Forks
2.1k
Avg merge
1d 2h
Merged PRs (30d)
181

Description

**Describe the bug**
Earlier, support for `LOG` and `ROUND` scalar functions with two arguments was added in https://github.com/cube-js/arrow-datafusion/pull/135. However, the second argument type was specified as `Int32`. It allows it to match columns but prevents from matching integer literals.

**To Reproduce**
Query generated by QuickSight:
```sql
SELECT
date_trunc(\'day\', "period") AS period_tg",
SUM("clicks") AS clicks_sum",
ROUND(CAST(CAST(SUM("clicks") - (MIN(SUM("clicks")) OVER ()) AS FLOAT) / NULLIF(CAST((MAX(SUM("clicks")) OVER ()) - (MIN(SUM("clicks")) OVER ()) AS FLOAT), 0) AS NUMERIC), 3) AS "68c185d7-907c-3bb3-97f2-ec592e580dc0"
FROM "public"."revenue"
GROUP BY date_trunc(\'day\', "period")
ORDER BY date_trunc(\'day\', "period") NULLS FIRST
LIMIT 500
```

Casting the second argument by doing `round(3.142, cast(1 as integer))` works but since the BI tool is generating the query, there no actual control over the second argument.

**Expected behavior**
`LOG` and `ROUND` should work with integer literals as the second argument. They are indeed matched as `Int64` values, as confirmed by @MazterQyou.

**Version:**
1.1.0

**Additional context**
Slack thread: https://cube-js.slack.com/archives/C01FU5AP9LJ/p1727956303761059

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.