| 2154 | } |
| 2155 | |
| 2156 | void cbm_query_free(cbm_query_t *q) { |
| 2157 | while (q) { |
| 2158 | cbm_query_t *next = q->union_next; |
| 2159 | for (int i = 0; i < q->pattern_count; i++) { |
| 2160 | free_pattern(&q->patterns[i]); |
| 2161 | } |
| 2162 | free(q->patterns); |
| 2163 | free(q->pattern_optional); |
| 2164 | free_where(q->where); |
| 2165 | free_where(q->post_with_where); |
| 2166 | free_return_clause(q->with_clause); |
| 2167 | free_return_clause(q->ret); |
| 2168 | safe_str_free(&q->unwind_expr); |
| 2169 | safe_str_free(&q->unwind_alias); |
| 2170 | free(q); |
| 2171 | q = next; |
| 2172 | } |
| 2173 | } |
| 2174 | |
| 2175 | /* ── Convenience: lex + parse ───────────────────────────────────── */ |
| 2176 |
no test coverage detected