50 lines
2.7 KiB
Markdown
50 lines
2.7 KiB
Markdown
Changelog
|
|
=============
|
|
|
|
0.1.1 (unreleased, branch code-review-fixes)
|
|
-----
|
|
Independent code review against live Couchbase 8.0.1 CE (see
|
|
SIMPLY_BASED_REVIEW.md). Fixes:
|
|
|
|
- Embedded documents: fixed SystemStackError (infinite mutual recursion) when
|
|
accessing embedded collections loaded from the database; rebuilt
|
|
EmbeddedClass.all/.count (they referenced silently-dropped raw JS views —
|
|
.all returned [] and .count raised NoMethodError); the spec exclusion for
|
|
embedding was broken (filtered a tag no example carried) — basic embedded
|
|
flows now run green, only reverse lookups stay excluded, honestly tagged.
|
|
- Store#view raises SimplyBased::UnsupportedView for view declarations the
|
|
N1QL translation cannot honour (:conditions / :emit_value / list functions)
|
|
instead of silently returning unfiltered results.
|
|
- N1QL identifier quoting hardened (quote_ident rejects backtick smuggling);
|
|
index predicates quote class names as proper string literals.
|
|
- ensure_index warns when index creation is swallowed (was fully silent while
|
|
every subsequent query fell back to a primary scan); bookkeeping is
|
|
mutex-guarded.
|
|
- bulk_load / bulk_destroy now use batched KV multi-operations (get_multi /
|
|
remove_multi) — previously one KV round trip per document despite the
|
|
"batched KV" claim.
|
|
- Counter#increment follows Redis INCR/INCRBY semantics (first increment of a
|
|
missing key returns the delta; it used to return 0 and undercount by one).
|
|
Decrement's unsigned clamp-at-zero divergence is documented and tested.
|
|
- Lock#release requires the CAS handle (nil used to delete any lock
|
|
unconditionally); force_release! added; acquire validates a positive ttl.
|
|
- Deterministic tree ordering: tree queries tie-break equal positions by
|
|
created_at and document id (was the main source of the "flaky ancestry"
|
|
failures).
|
|
- The adapter-contract shared examples are now actually included by a spec;
|
|
added multi-threaded concurrency specs (counters, locks, CAS conflicts).
|
|
|
|
0.1.0
|
|
-----
|
|
- Initial release: a Couchbase-native ActiveModel ORM, API-compatible with
|
|
simply_couch. `include SimplyBased::Model`.
|
|
- SimplyBased::Store: KV documents, N1QL/SQL++ finders, CAS-as-_rev optimistic
|
|
concurrency. No CouchDB design documents or JavaScript views.
|
|
- Associations (belongs_to / has_many / has_one / has_and_belongs_to_many)
|
|
served by N1QL + lazily-created GSIs instead of hand-written map/reduce.
|
|
- Redis replacements on the same cluster: Counter (atomic), Cache
|
|
(ActiveSupport::Cache::Store over KV+TTL), Lock (insert-if-absent + CAS).
|
|
- Ancestry/trees via materialized path (path_ids) in plain N1QL.
|
|
- Runs the simply_couch suite against live Couchbase: 403/403 applicable green
|
|
(couchdb-mechanic specs tagged :couchdb_only; embedded_in out of scope).
|