{"record":{"id":"d5fc42eb3ba0d59e","repo":"mem0ai/mem0","slug":"oracle-filter-groups-must-be-non-empty-dictionarie","errorCode":null,"errorMessage":"Oracle filter groups must be non-empty dictionaries","messagePattern":"Oracle filter groups must be non-empty dictionaries","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"mem0/vector_stores/oracledb.py","lineNumber":196,"sourceCode":"            predicates.append(f\"@ has substring {variable}\")\n            passings.append(passing)\n        else:\n            variable, passing = _bind_filter_value(operand.lower(), params)\n            predicates.append(f\"@.lower() has substring {variable}\")\n            passings.append(passing)\n\n    clauses = list(additional_clauses)\n    if predicates:\n        clauses.insert(0, _json_exists(json_path, \" && \".join(predicates), passings))\n\n    if len(clauses) == 1:\n        return clauses[0]\n    return \"(\" + \" AND \".join(clauses) + \")\"\n\n\ndef _build_filter_group(filters: Dict[str, Any], params: Dict[str, Any]) -> str:\n    if not isinstance(filters, dict) or not filters:\n        raise ValueError(\"Oracle filter groups must be non-empty dictionaries\")\n\n    clauses: List[str] = []\n    for key, value in filters.items():\n        if key in _LOGICAL_OPERATORS:\n            if not isinstance(value, list) or not value:\n                raise ValueError(f\"Logical filter operator {key!r} requires a non-empty list\")\n\n            nested = [_build_filter_group(condition, params) for condition in value]\n            logical_operator = _LOGICAL_OPERATORS[key]\n            if logical_operator == \"not\":\n                clauses.append(f\"NOT ({' OR '.join(nested)})\")\n            else:\n                joiner = \" AND \" if logical_operator == \"and\" else \" OR \"\n                clauses.append(\"(\" + joiner.join(nested) + \")\")\n            continue\n\n        if key.startswith(\"$\"):\n            raise ValueError(f\"Unsupported Oracle logical filter operator: {key}\")","sourceCodeStart":178,"sourceCodeEnd":214,"githubUrl":"https://github.com/mem0ai/mem0/blob/001c235229be8795e3834520467bd0d661ed8f34/mem0/vector_stores/oracledb.py#L178-L214","documentation":"Error \"Oracle filter groups must be non-empty dictionaries\" thrown in mem0ai/mem0.","triggerScenarios":"Thrown at mem0/vector_stores/oracledb.py:196 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Each Oracle filter group must be a non-empty dictionary of field filters."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"001c235229be8795e3834520467bd0d661ed8f34","analyzedAt":"2026-08-15T01:55:42.685Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}