Repository navigation
v0.4.0 — Correctness & hardening (issue #5)
Correctness & hardening (issue #5)
- Query params are now percent-decoded.
ParseQueryStringpreviously returned raw substrings, sourl_search_params('...?q=hello%20world')['q']yieldedhello%20world. It now decodes%XXand+→space, matching WHATWG URLSearchParams. init:serialization no longer truncates on;. A component value containing;(e.g.search := 'a;b') was silently cut at the delimiter; the encoding is now escaped/length-safe.- Case-insensitivity self-test. The provider compensates for an inverted
set_case_sensitivein DuckDB's RE2 wrapper; a self-test now asserts the compensation so a future upstream fix can't silently invertignore_case. - Bounded pattern cache. The per-local-state pattern cache is now size-capped (LRU) so a query with many distinct large patterns can't grow memory unbounded.
urlpattern_extractNULL semantics. No-match / group-absent / empty-value are now distinguishable instead of all returning''.
(Regression tests confirming the percent-decode and init: ';' fixes have since landed on main and will roll into the next release.)
DuckDB v1.5.4
Built against DuckDB v1.5.4; ReDoS-immune by construction (patterns compile to RE2, linear-time). Stable builds green on all platforms.
Known follow-up
The duckdb-next-build leg (DuckDB main/v1.6) does not yet compile — BaseExpression::alias became a protected Identifier and needs GetAlias(). Tracked separately; does not affect this v1.5.4 release.