SynapCores Community Edition v2.3.3-ce
Community Edition · free · seamless upgrade from v2.3.x
Date math you can trust, and external Parquet that stops fighting your schema — a correctness release that makes the SQL you already write return the right answer.
A correctness release isn't a feature parade, and that's the point. The headline fix here is the kind of bug that doesn't throw an error — it just quietly returns the wrong rows. If you've ever written WHERE created_at < CURRENT_DATE - INTERVAL '2' YEAR for a retention report, this release matters to you.
New in v2.3.3
1. Calendar date arithmetic is correct
Outcome: your time-windowed analytics return the right rows.
Before v2.3.3, every INTERVAL was reduced to an approximate integer number of days, and a YEAR/MONTH field suffix was ignored outright — so CURRENT_DATE - INTERVAL '10' YEAR quietly behaved like minus ten days, and sub-day intervals were dropped to zero. No error; just a wrong answer in any year- or month-windowed query.
Now it does real calendar arithmetic:
SELECT DATE '2026-10-24' - INTERVAL '10' YEAR; -- 2016-10-24 (not "ten days ago")
SELECT DATE '2024-03-31' - INTERVAL '1' MONTH; -- 2024-02-29 (leap-aware, clamps to month end)
SELECT DATE '2026-10-24' + INTERVAL '1.5 hours'; -- 2026-10-24 01:30:00 (sub-day precision kept)
YEAR/MONTHcount leap years and clamp to the last valid day of the destination month.- Fixed-duration units (
WEEK/DAY/HOUR/MINUTE/SECOND, down to nanoseconds) keep exact precision. CAST(value AS DATE)is strictly validated inSELECT, filters, andINSERT … VALUES—NULLpropagates, and invalid dates, times or trailing junk return an error instead of passing silently.- Unknown or contradictory units, and
YEAR TO MONTHranges, now error — they are never silently approximated.
2. External Parquet that tolerates real-world schemas
Outcome: third-party Parquet datasets that evolve keep reading.
Data lakes drift. v2.3.3 makes reads over foreign Parquet resilient to the schema changes you actually hit:
- Nullability-only differences reconcile — files that disagree on
REQUIREDvsOPTIONALfor the same column widen to nullable instead of failing the read. - Additive columns union by name — a file written before a column existed simply reads that column as a typed
NULL;REFRESHsurfaces newly added columns on an inferred table. - An authorized empty location can register with a declared schema and return zero rows, then light up as the first files land.
- Errors now name the offending file and column, with both the type and nullability in the message.
3. NULL-safe scalar math and honest boolean evaluation
Outcome: aggregates over sparse data stop erroring, and logic short-circuits.
SQRT(NULL),POWER(NULL, 2)andPOWER(2, NULL)returnNULL(they used to error), and both accept exactDECIMALinputs.FALSE AND …/TRUE OR …short-circuit the right-hand side, with the three-valued (UNKNOWN) truth tables preserved.ORDER BYon a computed alias is stable even when a scan returns no rows or all-NULL values — the derived column keeps its type across batches.
4. Two engine-stability fixes, caught by validating the shipping build
Outcome: the engine stays up on query shapes that pushed its limits.
We validate the actual release artifact, not a debug build — and that caught two crashes a debug build had hidden:
- A common-table expression whose body returned zero rows recorded no schema, failing with
CTE '…' schema not found. It now derives a schema from the CTE's own columns. - A view body now executes on a fresh task, and the request worker stack was enlarged, so a cross-database
RENAMEwith a dependent view — and deeply nested join/aggregate/CTE plans — no longer risk a worker-stack overflow.
Proof
Validated on the shipping artifact on a non-AVX-512 CPU: the state-asserting feature validator passes 316 / 0; the recipe certification sweep is 177 / 187 with zero regressions against v2.3.2 (the ten not-certified recipes fail identically on v2.3.2 and need external infrastructure); the runtime canary boots and runs a model with no SIGILL; and a matched-build A/B shows no query-speed regression. Platform-complete: linux-x86_64, linux-aarch64, darwin-aarch64.
Honest boundaries
- Exact
DECIMALvalues are still returned as JSON strings to preserve full precision — an explicitCAST(… AS DOUBLE)gives you a numeric JSON value. Changing the default would risk silently rounding money. - Dates, timestamps and intervals use the engine's ISO-text representation; this release does not add a persisted DATE or INTERVAL column type.
- With the pinned SQL parser, an inline interval on the left of arithmetic needs parentheses —
(INTERVAL '2 weeks') + DATE '2024-02-20'— or use the suffix formINTERVAL '2' WEEK. - Foreign-Parquet NULL synthesis and schema union apply to external tables only; managed datasets keep their verified-manifest read path.
Upgrade
curl -fsSL https://get.synapcores.com | sh # installs the latest (v2.3.3-ce)
docker pull synapcores/community:v2.3.3-ce # or pin
Community Edition, free. Seamless upgrade from v2.3.x — no on-disk format change. Full technical notes live in the v2.3.3-ce release page.