cube-js / cube-js/cube

Using FILTER_PARAMS causes filters to be duplicated in WHERE clauses

Open
#3,477 18 comments 0 reactions 0 assignees View on GitHub
help wanted
Dominant language
Rust
Stars
20.8k
Forks
2.1k
Avg merge
1d 2h
Merged PRs (30d)
181

Description

**Describe the bug**
When using FILTER_PARAMS to filter a cube, the attribute that is being filtered gets added to the SQL twice.

**To Reproduce**
```js
// cube.js
module.exports = {
queryRewrite: (query, { ... }) => {
query.filters.push({
member: 'Order.closed',
operator: 'equals',
values: ['true'],
});
return query;
}
};

// schema/Order.js
cube('Order, {
sql: `SELECT * FROM order WHERE ${FILTER_PARAMS.Order.closed.filter('closed')}`,
measures: {
amount: {
sql: 'amount',
type: `sum`,
},
dimensions: {
closed: {
type: `boolean`,
sql: `closed`,
},
};

// query
{
measures: 'Order.amount',
}
```
Generates the following sql:
```sql
SELECT sum(order.amount)
FROM
(
SELECT *
FROM order
WHERE order.closed = $1
)
WHERE
order.closed = $2
```

**Expected behavior**
```sql
SELECT sum(order.amount
FROM order
WHERE order.closed = $1
```
OR (at least)
```sql
SELECT sum(order.amount)
FROM
(
SELECT *
FROM order
WHERE order.closed = $1
)
```

**Version:**
"@cubejs-backend/postgres-driver": "^0.28.19",
"@cubejs-backend/server": "^0.28.18",
"@cubejs-backend/server-core": "^0.28.18"

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.