Using FILTER_PARAMS causes filters to be duplicated in WHERE clauses
- 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
Assessment
This issue has not been assessed yet.