Skip to content

v4.2.0

Choose a tag to compare

@github-actions github-actions released this 06 Sep 22:52
603974f

What's Changed

Features

  • Temporal arithmetic per SEP-0002, and make TZ/TIMEZONE reindex-stable by @bplatz in #1747
  • feat(graphql): GraphQL endpoint over a schema derived from the ledger by @bplatz in #1748
  • SQL graph sources: R2RML over Trino-protocol endpoints, plus the fluree-sql-bridge sidecar by @bplatz in #1749
  • feat(validate): carry the validated ledger t on ValidateReport by @bplatz in #1757
  • browser peer + playground: fluree-db-browser, @fluree/db-wasm, SSE head tracking, and the residency retry loop by @aaj3f in #1715
  • feat(policy): enforce static view policy on Iceberg/SQL graph sources by @bplatz in #1759
  • feat(cli): fluree doc — Fluree Unstructured: documents into a searchable graph by @bplatz in #1760
  • fluree doc: --model and --entities, grounded entity and relation extraction; hybrid search by @bplatz in #1764
  • feat(sql): pushdown lane — one statement per GRAPH block over a SQL source by @bplatz in #1777
  • feat(sql): pushdown lane M1/M2 — MIN/MAX, BIND, widening filters, partitioning, caps, block cache, class policies by @bplatz in #1785
  • feat(sql): pushdown lane M3 — subject policies, expressions, sub-selects, unions, HAVING by @bplatz in #1788
  • feat(stats): fluree-db-stats kernel and on-demand column profiling by @bplatz in #1789
  • feat(materialize): advance a backlogged window by a bounded prefix by @christophediprima in #1649

Bug Fixes

  • fix(query): keep every string-dictionary datatype's own term identity by @aaj3f in #1736
  • fix: make the equijoin-filter fold sound about term equality by @aaj3f in #1728
  • Deduplicate repeated statements in bulk import by @bplatz in #1754
  • fix(indexer): recover a ledger wedged at max novelty by @christophediprima in #1662
  • fix(ingest): store an object-position empty collection as the rdf:nil triple it denotes by @aaj3f in #1744
  • fix: fail closed on unencodable datatype IRIs; keep the membership-join lane join-equivalent on list rows by @aaj3f in #1746
  • fix(query): STR() on a double returns the canonical XSD lexical form by @aaj3f in #1750
  • fix(policy): evaluate every targeted f:query before denying; deterministic policy order by @bplatz in #1761
  • fix(sql): fused SUM/AVG folds over double/text columns, SQLite bridge column typing by @bplatz in #1769
  • fix(transact): give staged views dictionaries that cover their own flakes by @bplatz in #1791
  • fix(consensus): park queued submissions on entry liveness, not a fixed clock by @bplatz in #1792
  • fix(bm25,vector): advance the watermark on an empty change set, don't rebuild by @christophediprima in #1661

Other Changes

  • perf: make filtered-DELETE list-meta hydration O(novelty), not O(retractions × novelty) by @bplatz in #1675
  • fix: match string literals by RDF term identity; normalize language-tag case by @bplatz in #1676
  • fix: two v4.1.6 planner regressions — star-join reorder and membership-join admission by @bplatz in #1674
  • fix: never delete raw-txn blobs inline; tolerate dangling txn refs; add fluree verify by @bplatz in #1677
  • fix(consensus): extract fluree-raft-core and add a replicated kv fragment; fix two waiter-map defects by @bplatz in #1678
  • refactor(consensus): reduce the nameservice through the generic state-machine seam by @bplatz in #1679
  • fix: ledger-cache deadlock, MinIO path-style, and an embeddable Raft node by @bplatz in #1680
  • fix: make IN/NOT IN match encoded resources, price the row lanes max_fuel could not see by @bplatz in #1681
  • feat: graph sync — whole-graph replacement committing only the delta by @bplatz in #1682
  • docs: make PR↔issue reference direction explicit (Fixes / Follow-up / Partially addresses) by @aaj3f in #1692
  • fix(cli): novelty-aware encoded-binding resolution in the table renderer, and never Debug-print a binding by @aaj3f in #1693
  • fix(query): novelty-only-predicate retractions were invisible to the crawl read path by @aaj3f in #1698
  • fix: let a no-op republish complete its raft queue entry by @bplatz in #1716
  • feat: Add sh:sparql (SHACL-SPARQL) constraint support by @bplatz in #1717
  • fix(core): make FlakeMeta's Ord agree with its Eq by @aaj3f in #1727
  • fix(storage): clamp FileStorage ranged reads to the object, and sweep orphaned .tmp staging files by @aaj3f in #1702
  • fix(query): COUNT(*) counts joined rows, not distinct subjects, on an anchored star by @aaj3f in #1706
  • fix(query): keep a VALUES written after an OPTIONAL below it by @aaj3f in #1701
  • fix(stats): reconcile novelty asserts against the base index for user-facing counts by @aaj3f in #1699
  • fix(query): let OPTIONAL extend a row that left the shared variable unbound by @aaj3f in #1724
  • fix(datalog): IRI comparison in rule FILTERs (fails open today) + a diagnostic when a rule can't derive by @aaj3f in #1705
  • perf(transact): take the cached ledger state for the commit window — stop per-commit DictNovelty deep-clones for serial writers by @aaj3f in #1718
  • feat(api): make the background indexer observable and configurable from the embedded API by @aaj3f in #1710
  • fix(server): surface novelty backpressure as 503 + Retry-After with err:db/NoveltyAtMax by @aaj3f in #1719
  • fix(import): publish bulk-import commit heads via ref fast-forward, not the queue contract by @bplatz in #1753
  • group integration tests into grp_* harnesses by @zonotope in #1755
  • split debug info out of dev-profile binaries by @zonotope in #1752
  • Add an offline index-version graph diagnostic by @zonotope in #1622
  • perf(query): seek a bound-term overlay window instead of translating all novelty by @aaj3f in #1732
  • fix(server): accept per-ledger SSE subscriptions on GET /events by @aaj3f in #1730
  • wasm32 groundwork: the engine stack compiles and runs on wasm32-unknown-unknown, native untouched by @aaj3f in #1714
  • Fix reasoning defaults by @zonotope in #1763
  • Make storage-sweep planning proportional to distinct manifests by @zonotope in #1643
  • Guard against integration tests that silently never run by @zonotope in #1756
  • fix(query): range-filter pushdown keeps every conjunct; push xsd:decimal bounds by @bplatz in #1778
  • fix: bound retained index versions by count, not only by age by @christophediprima in #1601
  • fix(materialize): bound the full read a source falls back to when its watermark expires by @christophediprima in #1663
  • feat(r2rml): refuse the graph-map constructs the materializer cannot honor by @christophediprima in #1581
  • stamp provenance on rows leaving — and joining within — a cross-ledger SERVICE by @aaj3f in #1641
  • release v4.2.0 by @bplatz in #1740

Full Changelog: v4.1.6...v4.2.0