| 1992 | } |
| 1993 | |
| 1994 | void cbm_query_free(cbm_query_t *q) { |
| 1995 | while (q) { |
| 1996 | cbm_query_t *next = q->union_next; |
| 1997 | for (int i = 0; i < q->pattern_count; i++) { |
| 1998 | free_pattern(&q->patterns[i]); |
| 1999 | } |
| 2000 | free(q->patterns); |
| 2001 | free(q->pattern_optional); |
| 2002 | free_where(q->where); |
| 2003 | free_where(q->post_with_where); |
| 2004 | free_return_clause(q->with_clause); |
| 2005 | free_return_clause(q->ret); |
| 2006 | safe_str_free(&q->unwind_expr); |
| 2007 | safe_str_free(&q->unwind_alias); |
| 2008 | free(q); |
| 2009 | q = next; |
| 2010 | } |
| 2011 | } |
| 2012 | |
| 2013 | /* ── Convenience: lex + parse ───────────────────────────────────── */ |
| 2014 |
no test coverage detected