{"record":{"id":"1a7585c364a76332","repo":"mem0ai/mem0","slug":"neptune-analytics-list-filters-do-not-support-case","errorCode":null,"errorMessage":"Neptune Analytics list filters do not support case-insensitive contains filters.","messagePattern":"Neptune Analytics list filters do not support case-insensitive contains filters\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"mem0-ts/src/oss/src/vector_stores/neptune_analytics.ts","lineNumber":884,"sourceCode":"          clauses.push(`${field} >= $${parameterName}`);\n          break;\n        case \"lt\":\n          clauses.push(`${field} < $${parameterName}`);\n          break;\n        case \"lte\":\n          clauses.push(`${field} <= $${parameterName}`);\n          break;\n        case \"in\":\n          clauses.push(`${field} IN $${parameterName}`);\n          break;\n        case \"nin\":\n          clauses.push(`NOT ${field} IN $${parameterName}`);\n          break;\n        case \"contains\":\n          clauses.push(`toString(${field}) CONTAINS $${parameterName}`);\n          break;\n        case \"icontains\":\n          throw new Error(\n            \"Neptune Analytics list filters do not support case-insensitive contains filters.\",\n          );\n        case \"startsWith\":\n          clauses.push(`toString(${field}) STARTS WITH $${parameterName}`);\n          break;\n        default:\n          throw new Error(\n            `Unsupported Neptune Analytics filter operator: ${operator}`,\n          );\n      }\n    }\n\n    return {\n      clauses,\n      parameters,\n      nextIndex,\n    };\n  }","sourceCodeStart":866,"sourceCodeEnd":902,"githubUrl":"https://github.com/mem0ai/mem0/blob/001c235229be8795e3834520467bd0d661ed8f34/mem0-ts/src/oss/src/vector_stores/neptune_analytics.ts#L866-L902","documentation":"Neptune Analytics openCypher has no case-insensitive CONTAINS operator; the store can only emit toString(field) CONTAINS for case-sensitive matching. Because the icontains filter cannot be translated faithfully, the store throws instead of silently returning wrong-case results.","triggerScenarios":"Using a filter like { memory: { icontains: 'alice' } } (any field with the icontains operator) in search or list calls against the Neptune Analytics vector store.","commonSituations":"Sharing filter definitions across multiple vector store backends where icontains works (e.g. OpenSearch wildcard with case_insensitive); migrating from Postgres/pgvector ILIKE-style filters; assuming SQL-like semantics carry over.","solutions":["Use the case-sensitive contains operator instead and normalize the stored data and query to the same case.","Lowercase the payload field at write time and search with contains on the lowercased value.","Route icontains-dependent workloads to a backend that supports it (e.g. OpenSearch) or do post-filtering in application code."],"exampleFix":"// before\nfilters = { city: { icontains: 'paris' } };\n\n// after\n// store lowercase payload: { city_lower: 'paris' }\nfilters = { city_lower: { contains: 'paris' } };","handlingStrategy":"validation","validationCode":"const hasIcontains = (f: any): boolean =>\n  Object.values(f || {}).some(\n    (v) => v && typeof v === 'object' && 'icontains' in (v as object),\n  );\nif (hasIcontains(filters)) throw new Error('icontains not supported on Neptune; lowercase the field instead');","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Lowercase searchable payload fields at write time","Do not share icontains filters across backends","Check each backend's operator support matrix before writing filters"],"tags":["filters","neptune-analytics","unsupported-operation","typescript"],"backgroundTag":null,"analyzedSha":"001c235229be8795e3834520467bd0d661ed8f34","analyzedAt":"2026-08-15T01:55:42.685Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}