cube-js/cube
View on GitHubUsing FILTER_PARAMS causes filters to be duplicated in WHERE clauses
Open
#3,477 opened on Sep 22, 2021
help wanted
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
// 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:
SELECT sum(order.amount)
FROM
(
SELECT *
FROM order
WHERE order.closed = $1
)
WHERE
order.closed = $2
Expected behavior
SELECT sum(order.amount
FROM order
WHERE order.closed = $1
OR (at least)
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"