fix(compiler): preserve empty membership filters

What does this MR do and why?

Empty membership filters must return no matches. This allows empty lists in GQL and keeps filters that edge tags cannot express on the node scan.

Stack

Part 1: filter correctness, targeting main. Next: !2742 (closed) for shared compiler support, then !2743 (closed) for GQL integration.

Relates to #1311 and #1258.

Testing

Five ClickHouse scenarios passed for empty membership, aggregation, and all three neighbors directions. The complete stack passed 225 local tests and workspace code lint.

Agent context: scope and history

The final diff is 79 additions and 39 deletions across ten files. This MR contains no Boolean expression model or NOT syntax. JSON schema rules remain unchanged. The published history is preserved through follow-up commits. Review the final diff; earlier commits contain the feature before it was split. The standalone 475-line test file and pinned-version hook change are removed from the stack.

Edited by Michael Usachenko

Merge request reports

Loading
Loading