Repository navigation
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
Review (partial, summary-level)This PR is too large to review in full. The GitHub diff API refuses it (over 300 files), so this is a targeted pass over the engine Checked, no problems found
Suggestions before leaving draft
I did not find a security hazard, so I am not adding the "do not merge" label. A deeper review makes sense once plans 5 and 6 are in. |
Up to standards ✅🟢 Issues
|
📜 License Compliance Check✅ License check passed. See artifacts for full report. License Summary (first 50 lines) |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main ArcadeData/arcadedb#10855 +/- ##
==========================================
+ Coverage 79.38% 79.87% +0.49%
==========================================
Files 2339 2442 +103
Lines 262666 279880 +17214
Branches 57580 61502 +3922
==========================================
+ Hits 208511 223550 +15039
- Misses 32876 33826 +950
- Partials 21279 22504 +1225 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
1cbe842 to
8dd528a
Compare
|
Automated review note: this PR is about 94k added lines across 428 files, and the GitHub diff API refuses to serve it (over 300 files). I could not review it line by line, so this is not a full code review. What I can say from the description:
No security hazard was identified, but nothing was verified in depth. |
📜 License Compliance Check✅ License check passed. See artifacts for full report. License Summary (first 50 lines) |
d674665 to
bda50cf
Compare
|
Review note: this PR is too large for the diff API (over 300 files), so I could only review the file list and description, not the code. Observations: (1) the checklist says the full |
📜 License Compliance Check✅ License check passed. See artifacts for full report. License Summary (first 50 lines) |
bda50cf to
8da84eb
Compare
|
Review note: this PR is too large for the automated diff (over 300 files), so I could not do a line-by-line review. From the description alone:
No specific security hazard was identified from the description. This is a draft from a maintainer. |
📜 License Compliance Check✅ License check passed. See artifacts for full report. License Summary (first 50 lines) |
8da84eb to
d9431df
Compare
|
Automated review note: this PR is a draft and far too large for a complete automated review (the diff exceeds GitHub's 300-file limit, and my file-level inspection was blocked in this environment). I could not examine the code, so this is not an approval. Suggestions for reviewers: (1) verify that bucket-level read permission checks apply to every FACETS code path, including AFTER cursor paging and facet.searchValues; (2) confirm the memory budget bounds the cardinality of TERMS/DISTINCT results so a high-cardinality column cannot exhaust the heap; (3) check that no new dependency was added without an ATTRIBUTIONS.md update; (4) confirm no tests assert raw wall-clock time (use StallAwareStopwatch) or hardcode ports. Consider splitting the PR per plan to make review tractable. |
… checkpoint Part of #10361.
…Config`, then run a seeded chaos Part of #10361.
…lds in the background Part of #10361.
…nRecoveryIT` - restart recovers without a rebuild Part of #10361.
Completes the single-server facet load test: fails on corrupted-record log lines, measures fallback scans from a stable post-setup baseline, logs samples not answered from the index. Part of #10361.
Segment merges no longer starve under sustained updates (the count merge wins over the bound, a merge pass flushes only when due); an added column on an empty bucket is published inline; fallback scans log their reason and count it per reason; the first unreadable-page retry logs at FINE. Part of #10361.
Chaos facet check retries a 503 until its deadline; facet warnings for failed and lag-less inexact queries; every HA IT asserts its writer wrote; plan 6 open items and related issues in the roadmap. Part of #10361.
Kept: record-granular dirty marks with page-version stamping, parallel facet counting, direct searchValues path, read-event row scan, hardened committed-record reads, flush and apply-lag keys, rank view cadence. Not built or reverted: GROUP BY with WHERE, plan cache, one-pass hierarchy, dictionary fsync skip, commit marks. Tuning switches removed, benchmark scripts under engine/src/test/scripts, outcome and open items in the roadmap.
- test-ci-scripts.sh: match `public synchronized void summary(` in ChaosReport and cover facetWriters, facetWarnings and facets.checks in the chaos summary fixture - ColumnarIndexHierarchyConflictTest: wait for the asynchronous columnar rebuild before snapshotting the projection directories (and again after the refusal) - ColumnarIndexExportImportTest: create the Tag vertex type, Tag.path and the ParentOf edge type the hierarchy metadata names, now validated at CREATE INDEX - Columnar server and ha-raft tests: call getDatabaseForOperator instead of the deprecated getDatabase(String) flagged by Issue10533ClientsHonourTheMarksTest - JsonSerializer.serializeFacets: emit the DOUBLE value hint when a term, extreme or cursor is non-finite, as rows do since #10899, so the client decodes NaN as a number
7b7230e to
3c13f4c
Compare
|
Automated review: this PR is too large for the diff API (more than 300 files), so I could not review it line by line. It is also a draft from a maintainer, so I limited this to process notes.
No security hazard was identified, but I did not inspect the full change. |
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Coverage variation | ✅ -3.98% coverage variation |
| Diff coverage | ∅ diff coverage |
Coverage variation details
Coverable lines Covered lines Coverage Common ancestor commit (56f9276) 262666 229829 87.50% Head commit (6aaa468) 313433 (+50767) 261776 (+31947) 83.52% (-3.98%) Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch:
<coverage of head commit> - <coverage of common ancestor commit>
Diff coverage details
Coverable lines Covered lines Diff coverage Pull request (#10855) 0 0 ∅ (not applicable) Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified:
<covered lines added or modified>/<coverable lines added or modified> * 100%
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
… residual packing, Javadoc, tests)
|
Review note: this PR is over 300 files and roughly 40k added lines, so GitHub can't render the full diff and I haven't reviewed it line by line. I only read the PR description and the file list. Observations
Security
I can't give a definitive verdict on the code itself without a file-by-file review. |
|
Facets landed on main through a set of stacked prs |
What does this PR do?
Exact faceted counts (TERMS, RANGES, HISTOGRAM, HIERARCHY, DISTINCT, STATS, AFTER paging,
facet.searchValues) computed from a per-bucket columnar projection (newCOLUMNARindex), exposed through a new SQLFACETSclause on every transport. Part of #10355.The design overview for reviewers is
docs/superpowers/specs/2026-10-28-columnar-faceting-overview.md(storage, update path, consistency, performance, operations). The spec, roadmap and the six plans are indocs/superpowers/.Motivation
Faceted navigation (counts per brand, tag, size range, month) over large result sets today needs one
GROUP BYper facet, each a full pass over the matching records. This computes all facets of a query in one pass over compact columns, exact, and returns them with the rows.Related issues
Part of #10355 (umbrella); #10356, #10357, #10358, #10359 delivered here, #10360 in progress, #10361 to come; follow-ups #10662 (tuning), ArcadeData/arcadedb-python#289 (Python client).
Status: draft, work in progress
FACETSclause, exact execution, HTTP/ndjson/gRPC/remote clients, OpenAPIStill to come before this can leave draft: a tuning phase (#10662), and the Python client in
arcadedb-python(#10666).Additional Notes
How to read the history
A linear history on top of
main: one commit per plan task (plus the final review fix batches of each plan), each a reviewed checkpoint. One dedicated commit,fix(columnar): adapt the projection's durability to group commit and index rename on main, adapts the projection's WAL force to main's group commit (#10509) and keeps WAL files while a queued columnar mark is in flight (ColumnarPendingMarksWALTest).Highlights
FACETSare unchanged on every transport.GROUP BYat 285-299 ms; exact under a 5000-mutation lag at about 0.32x theGROUP BYtime.Testing
GROUP BYoracle, crash/recovery tests, dictionary compaction, schema-change rebuilds.@Tag("benchmark")).Checklist
mvn clean packagecommand (not yet: per-task test sets, the SQL regression set and the facet ITs were run; the full build is pending)🤖 Generated with Claude Code