{"record":{"id":"5ae423bb8513570e","repo":"cube-js/cube","slug":"values-required-for-filter-json-stringify-f","errorCode":null,"errorMessage":"Values required for filter: ${JSON.stringify(f)}","messagePattern":"Values required for filter: (.+?)","errorType":"validation","errorClass":"UserError","httpStatus":null,"severity":"error","filePath":"packages/cubejs-api-gateway/src/query.js","lineNumber":377,"sourceCode":"    if (f.or) {\n      res.or = normalizeQueryFilters(f.or, timezone);\n      return res;\n    }\n    if (f.and) {\n      res.and = normalizeQueryFilters(f.and, timezone);\n      return res;\n    }\n\n    if (!f.operator) {\n      throw new UserError(`Operator required for filter: ${JSON.stringify(f)}`);\n    }\n\n    if (operators.indexOf(f.operator) === -1) {\n      throw new UserError(`Operator ${f.operator} not supported for filter: ${JSON.stringify(f)}`);\n    }\n\n    if ((!f.values || f.values.length === 0) && ['set', 'notSet', 'measureFilter'].indexOf(f.operator) === -1) {\n      throw new UserError(`Values required for filter: ${JSON.stringify(f)}`);\n    }\n\n    if (f.values) {\n      res.values = f.values.map(v => (v != null ? v.toString() : v));\n    }\n\n    if (f.dimension) {\n      res.member = f.dimension;\n      delete res.dimension;\n    }\n\n    return normalizeDateFilterValues(res, timezone);\n  })\n);\n\n/**\n * Parse incoming member expression\n * @param {unknown} expression","sourceCodeStart":359,"sourceCodeEnd":395,"githubUrl":"https://github.com/cube-js/cube/blob/7d981676b36392fec34088b9afab6bdcad40207c/packages/cubejs-api-gateway/src/query.js#L359-L395","documentation":"Validation guard in normalizeQueryFilters: a filter uses an operator that requires values (any operator except set, notSet, or measureFilter) but `values` is missing, null, or an empty array. Set/notSet/measureFilter are value-less operators and are exempt.","triggerScenarios":"Thrown at packages/cubejs-api-gateway/src/query.js:377 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide a non-empty `values` array for the filter.","If the intent is an existence check, switch the operator to \"set\" or \"notSet\", which require no values.","Verify the client is not stripping empty arrays during JSON serialization."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7d981676b36392fec34088b9afab6bdcad40207c","analyzedAt":"2026-09-02T03:45:10.400Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T15:18:49.778Z"}