Skip to content

feat(pg): DAWGS Pg Driver - Version 2 - #125

Open
zinic wants to merge 83 commits into
mainfrom
pg-v2
Open

zinic wants to merge 83 commits into
mainfrom
pg-v2

Conversation

@zinic

@zinic zinic commented Aug 24, 2026 •

Copy link
Copy Markdown
Contributor

Description

Delivers PostgreSQL driver v2 in drivers/pg, combining connection-local runtime state with broader CySQL correctness coverage. It also repairs shared graph APIs, Neo4j query handling, and import behavior.

  • PostgreSQL runtime: adds bounded translation caches per physical connection, shared immutable shortest-path templates, generation-based invalidation, configurable pool limits, statement warm-up, and query-text-free diagnostics. Shared AST and compiler caches remain in place. pg.NewPool still returns the caller-owned *pgxpool.Pool passed to pg.NewDriver or dawgs.Open.
  • Kind metadata: replaces per-query catalog reloads and wrapper dictionary copies with immutable shared snapshots and private transaction overlays. Known names and result IDs resolve in memory; name misses use deduplicated targeted lookups on the owned connection. Unknown result IDs retain their mapping error and signal a coalesced reload at a later idle boundary. Registrations publish only after commit, destructive refreshes invalidate both translation layers, and stable transactions preserve their catalog view. First readers share initialization; schema assertion creates storage before servicing pending refreshes. Actual metadata lookup, refresh and registration work is included in SQL-generation diagnostics.
  • Traversal and query semantics: expands variable-length and shortest-path lowering while preserving direction, path order, relationship uniqueness, duplicate input rows, OPTIONAL MATCH cardinality, and multipart boundaries. Unregistered kinds are treated as absent in MATCH without registering them. WITH ordering/pagination, UNWIND, typed collections, arithmetic, aggregates, temporal values, Boolean predicates, and result aliases receive regression coverage.
  • Writes and schema: preserves SET/REMOVE order, batch mutation intent, and read-after-write visibility across multipart queries. Plain DELETE checks incident relationships; detach cleanup stays within the owning graph. Graph selection looks up existing graphs, explicit schema assertion reconciles all declared graphs, and transactional kind registration uses the leased connection and publishes new IDs only after commit.
  • Neo4j and shared APIs: fixes quoted identifiers in batch upserts, conjunctive relationship-kind filters, Boolean grouping, and raw-query rewrite fidelity. Repairs batch identity collisions, reachability-cache completeness, bitmap/container locking and iteration, and parallel-fetch cancellation.
  • Import handling: preserves exact integers and JSON string contents, recursively scrubs nested fields, and validates collection fragment paths and symlinks.
  • Regression and qualification tooling: adds shared backend-equivalent query and mutation fixtures, translation goldens, driver-specific schema/codec tests, generated-case CI checks, and enforced BDD gates. GraphBench and plan-corpus tooling add reproducible captures, portable evidence bundles, plan comparisons, and statistical/resource checks. PostgreSQL-specific kind-cache tests cover publication races, rollback, initialization, refresh failures and snapshot adoption. The README is condensed into a project overview with detailed guides under docs/; commit-message maintenance scripts and tests are included.

Manifest-backed traversal canaries and topology routing remain default-off and require separate qualification. The benchmark results below use default runtime policies; capture revisions are identified separately.

Compatibility and upgrade notes

  • Requires Go 1.27.3. Dependency updates are included.
  • Use pg.NewPool or pg.NewPoolWithRuntimeConfig to install the connection lifecycle hooks. Defaults are 64 retained translations per live connection, 128 shared shortest-path templates, and a 5–50 connection pool; cache capacities and pool bounds are configurable.
  • Cache diagnostics change shape: Driver.TranslationCacheStats() now returns runtime pg.Stats. Migrate consumers of the previous compiler-cache counters to Driver.CompilationCacheStats() and pg.CompilationCacheStats.
  • Run AssertSchema when upgrading to install the SQL runtime helpers, topology metadata, and graph-scoped cleanup triggers. Schema assertion performs DDL and resets pooled type metadata; reset or recreate pools after out-of-band schema changes affecting generated SQL or types.
  • Kind metadata has no polling or automatic freshness bound. After committing external kind deletions or catalog resets, call driver.RefreshKinds(ctx) on every affected driver. An unknown result kind ID signals later recovery without retrying the failed query. GetKindIDsByKind still returns an independently mutable copy.
  • PostgreSQL JSON/JSONB results and OpenGraph imports now preserve integer tokens as int64, including nested values. Untyped consumers that expected float64 must handle int64; after draining query results, check Result.Error() for decoding/iteration errors. Result-column aliases preserve their requested case and spelling.
  • Unsupported parser constructs return explicit errors before PostgreSQL executes preceding writes: standalone/in-query CALL, LOAD CSV, CREATE UNIQUE, list indexing/slicing, and expression-position shortest paths. The MATCH-pattern shortest-path form remains supported. Neo4j retains native handling where queries pass through to its server. The v2 query builder also rejects empty kind lists in predicates and kind mutations.
  • Direct translator users must supply the graph ID to translate.NewExpansionBuilder. Consumers rendering staged multipart writes must execute every statement from translate.TranslatedStatements in the same explicit transaction. Treat batch identity keys and property hashes as opaque runtime values.

Latest recorded benchmarks

The latest PostgreSQL captures compare upstream/main 2d3c62b7, the original PR 4790a2c8, a diagnostic build removing the two eager reload calls, and the P1 kind-cache implementation. Results were recorded on 2026-11-02; upstream was rechecked during that capture and was unchanged.

The current changeset is fae5140f. The captures used an implementation working tree based on 4790a2c8; its recorded source hashes differ from the current changeset, which also includes subsequent initialization, snapshot-adoption and query-boundary fixes. These are the latest available implementation measurements, not a benchmark of the exact current commit.

PostgreSQL: warmed kind-cache comparison

  • Same Linux/amd64 host, Intel Core i9-12900HK, Go 1.27.3 and PostgreSQL 18.6. Identical external harness source and physical fixture IDs across builds; three nodes, two edges and a 715-kind catalog.
  • Four balanced rounds, 100 warm-ups and 200 timed requests per case/build: 800 observations per row and build. Initial pool connections were leased and queried before capture; pool bounds remained 5–50. Rows and decoded kinds were verified, and SQL tracing used an additional untimed request.
  • Main comparisons are limited to scope-independent scalar queries and identical graph-scoped Raw SQL. Graph counts, entities and paths have no main comparator because graph scoping differs. No compilation, CPU profiling or other live test suites ran during timing.

Cells show p50 / p95. Warm scalar latency fell from 446.42µs to 33.06µs; fluent and Cypher node-count medians fell from 488.31µs and 464.15µs to 29.53µs and 19.90µs. Every final warm implementation trace contained zero kind-catalog statements, versus one full 715-row reload per builder/Cypher request in the original PR.

Query upstream/main PR No-refresh diagnostic P1 implementation
Cypher scalar 29.95µs / 44.60µs 446.42µs / 752.66µs 38.04µs / 117.00µs 33.06µs / 41.41µs
Fluent node count — 488.31µs / 784.81µs 37.86µs / 117.85µs 29.53µs / 69.13µs
Cypher node count — 464.15µs / 777.17µs 47.53µs / 91.04µs 19.90µs / 57.51µs
Kind-filtered node projection — 502.67µs / 842.24µs 35.16µs / 121.08µs 33.55µs / 118.71µs
Decoded entity — 479.77µs / 818.92µs 80.96µs / 130.71µs 34.01µs / 119.91µs
Decoded shortest path — 6.122ms / 8.266ms 6.605ms / 8.562ms 5.846ms / 7.604ms
Raw decoded entities 46.73µs / 138.16µs 54.04µs / 179.65µs 71.65µs / 203.60µs 44.34µs / 128.56µs
Raw scalar 29.07µs / 49.07µs 21.01µs / 91.47µs 31.55µs / 53.88µs 29.07µs / 38.10µs
Raw node count 36.31µs / 51.17µs 40.15µs / 74.97µs 39.77µs / 72.85µs 36.33µs / 96.00µs

Scalar client allocation fell from approximately 30,284 bytes/request in the no-refresh diagnostic to 2,922 bytes/request; decoded-entity allocation fell from 37,566 to 10,075 bytes/request. These totals include all client work. Real absent-name probes issued one targeted lookup per request (141.10µs / 284.79µs), and signaled-refresh scalar probes issued one full reload (450.21µs / 830.97µs).

Component benchmarks used five repetitions with -benchmem -benchtime=200ms -cpu=1. Wrapper construction used a nil physical connection; commit bookkeeping excluded database I/O. Medians follow.

Seed kinds Wrapper ns/op Wrapper B/op / allocs/op Overlay lookup ns/op Unchanged commit bookkeeping ns/op
32 135.1 416 / 2 21.90 4.116
715 145.2 416 / 2 21.84 4.090
7,150 180.1 416 / 2 22.52 4.143

Overlay lookups and unchanged commit bookkeeping allocated zero bytes. Dictionary copies remain on publication or explicitly requested owned copies. A separate control warmed all 50 pool connections before measuring empty transactions: implementation throughput was 653k–861k requests/sec versus 147k–167k for the diagnostic, with approximately 666–696 versus 27,966–27,988 client bytes/request.

These are descriptive local measurements on small fixtures. Identical-binary controls showed substantial host variation, including scalar p50 of 12.88–34.17µs. The final implementation scalar median remained 3.11µs above main; Raw-count p95 was 96.00µs versus 51.17µs on main and 72.85µs in the diagnostic. Earlier cohorts reversed that tail difference, so precise latency equivalence and elimination of tail risk are not established. Production-scale performance and default-off traversal policies require separate qualification. Cold optimizer overhead remains unresolved.

Neo4j: matched-query follow-up

The follow-up review used identical parameterized statements, binding types and fixed physical IDs on main and the original PR, with Neo4j Community 4.4.44. It predates the PostgreSQL-only P1 fix.

Scenario upstream/main p50 PR p50 Change
Base all-shortest 1.342ms 1.485ms +10.6%
Diamond all-shortest 1.233ms 1.183ms −4.0%
Disconnected all-shortest 1.127ms 1.128ms Approximately unchanged

The earlier committed-harness comparison used literal endpoints on main and parameters on the PR; parameterized Query parsing adds 0.33–0.42ms on both revisions. Earlier diamond/disconnected regressions did not reproduce with matched inputs. The base offset remains unresolved, and identical-binary controls produced apparent median changes of −10.6% to +1.9%. These observations do not establish a repeatable Neo4j implementation regression; batch-write performance was outside the read measurements.

Local capture protocols, raw samples, source hashes, allocation summaries and validation logs are retained under .coverage/p1/ and .coverage/pr125/regression-review/. These ignored artifacts are available in the measurement workspace and are not part of the PR.

PostgreSQL vs. Neo4j: latest available captures

The table compares the P1 PostgreSQL implementation capture above (800 observations per case) with the latest recorded Neo4j original-PR capture (4790a2c8, 600 observations per case). Both used the same host and three-node/two-edge base fixture, four balanced rounds and 100 warm-ups. They were separate capture cohorts with different harness versions; this is a descriptive comparison of the latest available results, not a simultaneous comparison of the exact current commit. The P1 changes affect PostgreSQL, but Neo4j has not been recaptured at the current commit.

Timings are p50 / p95. Delta is (PG / Neo4j − 1) × 100%: negative values mean lower PostgreSQL latency. Raw cases use native SQL on PostgreSQL and native Cypher on Neo4j for the same scalar/count result.

Query Neo4j p50 / p95 PostgreSQL p50 / p95 PG vs. Neo4j p50 PG vs. Neo4j p95
Cypher scalar 895.73µs / 1,726.93µs 33.06µs / 41.41µs -96.3% -97.6%
Fluent node count 927.79µs / 1,763.89µs 29.53µs / 69.13µs -96.8% -96.1%
Cypher node count 904.24µs / 1,584.74µs 19.90µs / 57.51µs -97.8% -96.4%
Kind-filtered node projection 960.91µs / 1,686.95µs 33.55µs / 118.71µs -96.5% -93.0%
Raw scalar 902.52µs / 1,606.39µs 29.07µs / 38.10µs -96.8% -97.6%
Raw node count 875.98µs / 1,510.16µs 36.33µs / 96.00µs -95.9% -93.6%
Base all-shortest path 1,484.71µs / 2,454.40µs 5,846.04µs / 7,603.63µs +293.7% +209.8%

PostgreSQL scalar/count/projection p50 was 95.9–97.8% lower in these captures; base all-shortest-path p50 was 293.7% higher (3.94× Neo4j). The path query and parameter types match, but the P1 harness additionally checks decoded path shape and kinds. Host variation, differing capture windows and that additional validation limit causal claims; these small fixtures do not establish production-scale backend performance.

PostgreSQL vs. Neo4j: full shared-scenario spread

The broader committed-harness capture covers all 21 shared scenarios on both backends at upstream/main (2d3c62b7) and the original PR (4790a2c8). Each scenario/backend/revision has 200 observations across four balanced rounds, with one worker, one warm-up and 50 timed iterations per round. Fixtures were reloaded per capture; all expected row counts matched. PostgreSQL 18.6 and Neo4j Community 4.4.44 ran sequentially on the same host with Go 1.27.3.

These captures predate the P1 kind-cache fix. They provide the complete recorded scenario spread; the newer P1 results above cover a smaller selection and should be used for that implementation. Warm-up drift affected the broad capture, and shortest-path endpoints were literals on main and parameters on the original PR. Each within-revision backend comparison uses the same query form, but changes between revisions also reflect that workload difference. These tables are descriptive fixture measurements.

Every timing cell is p50 / p95 in µs; every delta cell is p50 / p95, calculated as (PG / Neo4j − 1) × 100%. Negative deltas mean lower PostgreSQL latency. Main graph scoping differs from the PR, so main and PR timings are shown as separate backend comparisons rather than as a graph-query improvement claim.

Base fixture — 3 nodes, 2 edges

Scenario Main Neo4j Main PG Main PG vs. Neo4j PR Neo4j PR PG PR PG vs. Neo4j
Match Nodes 1,350.97 / 8,619.41 69.57 / 191.08 -94.9% / -97.8% 1,050.08 / 2,369.70 494.22 / 1,000.39 -52.9% / -57.8%
Match Edges 1,139.88 / 5,972.32 142.99 / 363.26 -87.5% / -93.9% 1,012.20 / 2,221.12 547.29 / 1,000.82 -45.9% / -54.9%
Shortest Paths / n1 -> n3 1,267.06 / 6,561.97 15,202.86 / 18,661.49 +1099.9% / +184.4% 1,651.47 / 2,883.55 7,658.09 / 10,045.51 +363.7% / +248.4%
Traversal / n1 1,118.67 / 5,166.10 638.30 / 1,197.38 -42.9% / -76.8% 1,046.22 / 2,129.26 649.62 / 1,178.07 -37.9% / -44.7%
Match Return / n1 1,035.22 / 4,758.17 222.10 / 425.53 -78.5% / -91.1% 1,012.53 / 2,263.13 480.58 / 1,004.55 -52.5% / -55.6%
Filter By Kind / NodeKind1 1,031.92 / 4,058.95 77.28 / 229.28 -92.5% / -94.4% 1,021.87 / 3,145.42 446.74 / 998.09 -56.3% / -68.3%
Filter By Kind / NodeKind2 923.33 / 3,551.83 88.61 / 236.80 -90.4% / -93.3% 983.85 / 2,047.09 482.74 / 945.20 -50.9% / -53.8%

Traversal-shapes fixture — 45 nodes, 41 edges

Scenario Main Neo4j Main PG Main PG vs. Neo4j PR Neo4j PR PG PR PG vs. Neo4j
Match Nodes 829.45 / 2,802.78 82.86 / 231.01 -90.0% / -91.8% 951.21 / 1,870.11 562.72 / 944.38 -40.8% / -49.5%
Match Edges 749.63 / 3,020.37 100.59 / 304.03 -86.6% / -89.9% 955.20 / 2,003.29 617.80 / 1,003.56 -35.3% / -49.9%
Traversal Depth / chain depth 1 863.84 / 2,846.83 176.19 / 526.08 -79.6% / -81.5% 1,019.88 / 2,560.41 515.41 / 1,024.74 -49.5% / -60.0%
Traversal Depth / chain depth 3 907.21 / 2,681.76 839.88 / 1,698.64 -7.4% / -36.7% 1,149.14 / 2,897.40 536.00 / 1,155.42 -53.4% / -60.1%
Traversal Depth / chain depth 10 898.55 / 2,488.29 1,098.04 / 1,827.72 +22.2% / -26.5% 1,152.47 / 2,606.00 652.72 / 1,183.76 -43.4% / -54.6%
Traversal Depth / fanout depth 1 794.59 / 3,325.58 145.23 / 474.16 -81.7% / -85.7% 1,038.98 / 2,117.98 522.01 / 947.66 -49.8% / -55.3%
Traversal Depth / fanout depth 2 910.39 / 2,725.82 887.27 / 1,657.87 -2.5% / -39.2% 924.72 / 2,498.18 601.39 / 1,190.02 -35.0% / -52.4%
Traversal Depth / fanout depth 3 945.42 / 2,614.10 971.15 / 1,949.84 +2.7% / -25.4% 938.65 / 2,213.22 666.41 / 1,249.41 -29.0% / -43.5%
Traversal Cycle / bounded cycle 895.21 / 2,394.68 544.29 / 1,107.49 -39.2% / -53.8% 1,040.83 / 2,105.79 525.46 / 1,145.22 -49.5% / -45.6%
Traversal Dead End / chain terminal 919.36 / 2,108.44 202.63 / 443.62 -78.0% / -79.0% 876.12 / 1,791.25 510.09 / 1,122.23 -41.8% / -37.3%
Edge Kind Traversal / Allowed 960.32 / 2,467.22 550.34 / 1,126.23 -42.7% / -54.4% 878.81 / 1,663.19 518.91 / 1,269.93 -41.0% / -23.6%
Edge Kind Traversal / all kinds 955.07 / 1,750.02 623.54 / 1,437.21 -34.7% / -17.9% 932.53 / 1,837.16 616.20 / 1,120.94 -33.9% / -39.0%
Shortest Paths / diamond many paths 1,267.76 / 2,430.91 15,346.89 / 20,360.82 +1110.5% / +737.6% 1,530.77 / 2,724.60 8,328.70 / 11,355.85 +444.1% / +316.8%
Shortest Paths / disconnected 994.49 / 2,924.15 11,926.05 / 14,224.42 +1099.2% / +386.4% 1,584.53 / 2,703.09 5,131.06 / 6,805.74 +223.8% / +151.8%

The full-spread tables are derived from .coverage/pr125/benchmark-summary.json; newer P1 and matched-query results retain their own capture protocols and sample counts.

Compiler microbenchmarks

These earlier measurements compare main with the original PR (4790a2c8); the P1 fix does not change the optimizer. The six shared optimizer/compiler-cache benchmarks used identical source and query inputs, five repetitions, and -benchtime=200ms -benchmem. The table reports the median observation per benchmark. Optimizer costs increased about 61–64%, uncached translation increased 13.3%, and cache-hit timings stayed close to baseline. These benchmark functions exercise the shared compiler cache.

Unit benchmark upstream/main ns/op PR ns/op Change upstream/main → original PR B/op
OptimizeTrivialQuery 6490.0 10448.0 +61.0% 5416 → 8607
OptimizeADCSQuery 111708.0 183509.0 +64.3% 91208 → 155502
TranslationCacheUncached 121296.0 137390.0 +13.3% 81049 → 91363
TranslationCacheColdPopulation 134625.0 141474.0 +5.1% 84878 → 95750
TranslationCacheParameterizedHit 737.4 686.9 -6.8% 496 → 496
TranslationCacheParameterlessHit 86.2 84.6 -1.8% 0 → 0

Type of Change

  • Bug fix
  • New feature / enhancement
  • Refactor
  • Breaking API / result-shape changes (see compatibility notes)
  • Test coverage
  • Build / CI / tooling
  • Documentation

Testing

Validation includes recorded unit and integration results plus a targeted PostgreSQL telemetry run against fae5140f. Full suites were not rerun for this description update.

  • Unit tests added / updated
  • Integration tests added / updated
  • Backend validation performed with CONNECTION_STRING set
Check Result
Unit tests (race detection and coverage) Passed; 67.5% statement coverage versus the recorded 67.4% baseline
PostgreSQL telemetry tests (current commit, targeted rerun) Both passed with race detection, integration tags and serial execution; no skips
PostgreSQL BDD (make test_bdd_integration) Passed: 17 enforced scenarios, 0 failed
Final PostgreSQL driver and semantic suites Passed with -race -tags "manual_integration integration" -p=1 -parallel=1 ./drivers/pg/... ./integration -count=1
Neo4j Community 4.4.44 (make test_all) Passed, including BDD: 17 enforced scenarios, 0 failed
Live benchmark captures and expected-cardinality checks Passed on both backends
Shared compiler microbenchmarks Completed on both revisions
make lint and formatting check of changed Go files Passed
go mod verify and go mod tidy -diff Passed

BDD pass counts refer to enforced scenarios; @report-only compatibility cases remain non-gating.

Screenshots

N/A

Driver Impact

  • PostgreSQL driver (drivers/pg)
  • Neo4j driver (drivers/neo4j)

Checklist

  • Changed Go code passes formatting checks
  • Recorded gating checks pass, including the current PostgreSQL telemetry run
  • go.mod / go.sum are up to date

@coderabbitai

coderabbitai Bot commented Aug 24, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 773 files, which is 473 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: c586e186-bec8-4121-8b43-95bd64859ec4
Commits

Reviewing files that changed from the base of the PR and between 2d3c62b and 579ab32.

Files ignored due to path filters: 1
  • go.sum is excluded by !**/*.sum
Files selected for processing: 773
  • .github/workflows/go-test.yml
  • .gitignore
  • GOLANG_CODING_STANDARD.md
  • Makefile
  • README.md
  • algo/reach.go
  • algo/reach_bench_test.go
  • algo/reach_test.go
  • bdd/features/tck_features/clauses/create/Create1.feature
  • bdd/gate_test.go
  • bdd/reports.go
  • bdd/reports_test.go
  • bdd/steps_test.go
  • benchmark/testdata/scale/README.md
  • benchmark/testdata/scale/cases/expand_into.json
  • benchmark/testdata/scale/cases/fixed_suffix_expansion_limits.json
  • benchmark/testdata/scale/cases/generated_endpoint_seeded_expansion_v1.json
  • benchmark/testdata/scale/cases/generated_fixed_suffix_expansion.json
  • benchmark/testdata/scale/cases/generated_shortest_paths.json
  • benchmark/testdata/scale/cases/generated_shortest_paths_v2.json
  • benchmark/testdata/scale/cases/generated_sp_i1_inbound_v1.json
  • benchmark/testdata/scale/cases/generated_sp_i2_distance_v1.json
  • benchmark/testdata/scale/cases/generated_sp_i2_distance_v2.json
  • benchmark/testdata/scale/cases/generated_suffix_route_component_v1.json
  • benchmark/testdata/scale/cases/hops.json
  • benchmark/testdata/scale/cases/reconciliation.json
  • benchmark/testdata/scale/cases/scans_lookups.json
  • benchmark/testdata/scale/cases/shortest_paths.json
  • benchmark/testdata/scale/cases/traversal.json
  • benchmark/testdata/scale/cases/trust_pruning.json
  • benchmark/testdata/scale/protocols/asp_p4_i1_disconnected_preflight_v1.json
  • benchmark/testdata/scale/protocols/asp_p4_open_baseline_v1.json
  • benchmark/testdata/scale/protocols/p5_adjacency_materialization_feasibility_v1.json
  • benchmark/testdata/scale/protocols/p5_adjacency_materialization_feasibility_v1_rejection.json
  • benchmark/testdata/scale/protocols/p5_adjacency_materialization_feasibility_v2.json
  • benchmark/testdata/scale/protocols/p5_adjacency_materialization_feasibility_v2_disposition.json
  • benchmark/testdata/scale/protocols/sp_bidirectional_p3_preflight_v1.json
  • benchmark/testdata/scale/protocols/sp_bidirectional_p3_preflight_v2.json
  • benchmark/testdata/scale/protocols/sp_i2_distance_v1_rejection.json
  • benchmark/testdata/scale/protocols/sp_i2_distance_v2.json
  • benchmark/testdata/scale/protocols/sp_i2_distance_v2_rejection.json
  • benchmark/testdata/scale/protocols/sp_i2_successor_power_study_v3.json
  • benchmark/testdata/scale/protocols/sp_i2_successor_power_study_v3_rejection.json
  • benchmark/testdata/scale/protocols/sql_strategy_routing_component_closure_v1.json
  • benchmark/testdata/scale/protocols/sql_strategy_routing_preflight_v1.json
  • benchmark/testdata/scale/protocols/suffix_route_cache_feasibility_v1.json
  • benchmark/testdata/scale/protocols/topology_selected_routing_v1.json
  • cardinality/lock.go
  • cardinality/lock_bench_test.go
  • cardinality/lock_test.go
  • cardinality/roaring32.go
  • cardinality/roaring64.go
  • cardinality/roaring_test.go
  • cmd/benchmark/README.md
  • cmd/benchmark/explain.go
  • cmd/benchmark/explain_test.go
  • cmd/benchmark/main.go
  • cmd/benchmark/main_integration_test.go
  • cmd/benchmark/main_test.go
  • cmd/benchmark/report.go
  • cmd/benchmark/report_test.go
  • cmd/benchmark/runner.go
  • cmd/benchmark/runner_test.go
  • cmd/benchmark/scenarios.go
  • cmd/benchmark/scenarios_test.go
  • cmd/benchmark/shortest_executor.go
  • cmd/benchmark/traversal_policy.go
  • cmd/benchmark/traversal_policy_test.go
  • cmd/graphbench/README.md
  • cmd/graphbench/aa_report.go
  • cmd/graphbench/aa_report_test.go
  • cmd/graphbench/backend_delta.go
  • cmd/graphbench/backend_delta_test.go
  • cmd/graphbench/bundle.go
  • cmd/graphbench/bundle_test.go
  • cmd/graphbench/concurrency.go
  • cmd/graphbench/concurrency_test.go
  • cmd/graphbench/confirm_report.go
  • cmd/graphbench/confirm_report_test.go
  • cmd/graphbench/corpus.go
  • cmd/graphbench/corpus_test.go
  • cmd/graphbench/datasets.go
  • cmd/graphbench/datasets_test.go
  • cmd/graphbench/dormant_forms_guard_test.go
  • cmd/graphbench/environment.go
  • cmd/graphbench/environment_test.go
  • cmd/graphbench/expand_into_report.go
  • cmd/graphbench/expand_into_report_test.go
  • cmd/graphbench/live_mode.go
  • cmd/graphbench/live_mode_test.go
  • cmd/graphbench/main.go
  • cmd/graphbench/main_test.go
  • cmd/graphbench/measure.go
  • cmd/graphbench/measure_test.go
  • cmd/graphbench/neo4j.go
  • cmd/graphbench/neo4j_test.go
  • cmd/graphbench/operational_gate.go
  • cmd/graphbench/operational_gate_test.go
  • cmd/graphbench/orientation_policy.go
  • cmd/graphbench/orientation_policy_test.go
  • cmd/graphbench/orientation_selector_report.go
  • cmd/graphbench/orientation_selector_report_test.go
  • cmd/graphbench/orientation_selector_report_v2.go
  • cmd/graphbench/orientation_selector_report_v2_test.go
  • cmd/graphbench/p5_adjacency_feasibility.go
  • cmd/graphbench/p5_adjacency_feasibility_integration_test.go
  • cmd/graphbench/p5_adjacency_feasibility_test.go
  • cmd/graphbench/perf_gate.go
  • cmd/graphbench/perf_gate_test.go
  • cmd/graphbench/postgres.go
  • cmd/graphbench/postgres_plan.go
  • cmd/graphbench/postgres_plan_test.go
  • cmd/graphbench/postgres_test.go
  • cmd/graphbench/postgres_timed_attestation.go
  • cmd/graphbench/postgres_traversal_telemetry.go
  • cmd/graphbench/postgres_traversal_telemetry_test.go
  • cmd/graphbench/postgresql_plan_invariants_integration_test.go
  • cmd/graphbench/promotion_evidence_validation.go
  • cmd/graphbench/promotion_manifest.go
  • cmd/graphbench/promotion_manifest_test.go
  • cmd/graphbench/reference_closure_report.go
  • cmd/graphbench/reference_closure_report_test.go
  • cmd/graphbench/reference_pair_report.go
  • cmd/graphbench/reference_pair_report_test.go
  • cmd/graphbench/reference_tournament_report.go
  • cmd/graphbench/reference_tournament_report_test.go
  • cmd/graphbench/references.go
  • cmd/graphbench/references_expand_into.go
  • cmd/graphbench/references_expand_into_test.go
  • cmd/graphbench/references_test.go
  • cmd/graphbench/resource_gate.go
  • cmd/graphbench/resource_gate_test.go
  • cmd/graphbench/results.go
  • cmd/graphbench/results_test.go
  • cmd/graphbench/run_lock.go
  • cmd/graphbench/run_lock_test.go
  • cmd/graphbench/scale_corpus_contract_test.go
  • cmd/graphbench/selection.go
  • cmd/graphbench/sp_i1_qualification.go
  • cmd/graphbench/sp_i1_qualification_test.go
  • cmd/graphbench/sp_i2_cap_contract_test.go
  • cmd/graphbench/sp_i2_component_authorization_v2.go
  • cmd/graphbench/sp_i2_component_authorization_v2_test.go
  • cmd/graphbench/sp_i2_development_report_v2.go
  • cmd/graphbench/sp_i2_development_report_v2_test.go
  • cmd/graphbench/sp_i2_development_v2.go
  • cmd/graphbench/sp_i2_development_v2_test.go
  • cmd/graphbench/sp_i2_distance_integration_test.go
  • cmd/graphbench/sp_i2_formal_v2.go
  • cmd/graphbench/sp_i2_formal_v2_test.go
  • cmd/graphbench/sp_i2_hier_bootstrap_v2.go
  • cmd/graphbench/sp_i2_hier_bootstrap_v2_test.go
  • cmd/graphbench/sp_i2_power_simulation_v2.go
  • cmd/graphbench/sp_i2_power_simulation_v2_test.go
  • cmd/graphbench/sp_i2_protocol_v2.go
  • cmd/graphbench/sp_i2_protocol_v2_test.go
  • cmd/graphbench/sp_i2_qualification.go
  • cmd/graphbench/sp_i2_qualification_test.go
  • cmd/graphbench/sp_i2_simulation_calibration_v2.go
  • cmd/graphbench/sp_i2_successor_power_study_v3.go
  • cmd/graphbench/sp_i2_successor_power_study_v3_test.go
  • cmd/graphbench/sp_i2_tail_qualification_v2.go
  • cmd/graphbench/statistical_evidence.go
  • cmd/graphbench/suffix_reverse_guard_integration_test.go
  • cmd/graphbench/suffix_reverse_guard_report_v1.go
  • cmd/graphbench/suffix_reverse_guard_report_v1_test.go
  • cmd/graphbench/suffix_reverse_retry.go
  • cmd/graphbench/suffix_route_cache_feasibility_protocol_test.go
  • cmd/graphbench/suffix_route_component_roster_test.go
  • cmd/graphbench/summary.go
  • cmd/graphbench/summary_test.go
  • cmd/graphbench/traversal_telemetry.go
  • cmd/graphbench/traversal_telemetry_test.go
  • cmd/graphbench/types.go
  • cmd/graphbench/waterfall.go
  • cmd/graphbench/waterfall_test.go
  • cmd/plancorpus/README.md
  • cmd/plancorpus/capture.go
  • cmd/plancorpus/corpus.go
  • cmd/plancorpus/corpus_test.go
  • cmd/plancorpus/dormant_forms_guard_test.go
  • cmd/plancorpus/main.go
  • cmd/plancorpus/main_test.go
  • cmd/plancorpus/plan_delta.go
  • cmd/plancorpus/plan_delta_test.go
  • cmd/plancorpus/report.go
  • cmd/plancorpus/types.go
  • cmd/retriever/README.md
  • cmd/retriever/import_numbers_integration_test.go
  • container/ef.go
  • container/ef_test.go
  • container/pacmap.go
  • container/pacmap_test.go
  • cypher/Cypher Syntax Support.md
  • cypher/analyzer/complexity.go
  • cypher/analyzer/complexity_test.go
  • cypher/frontend/atom.go
  • cypher/frontend/conjunction.go
  • cypher/frontend/context.go
  • cypher/frontend/expression.go
  • cypher/frontend/in_query_call_test.go
  • cypher/frontend/list_index_test.go
  • cypher/frontend/list_slice_test.go
  • cypher/frontend/literal.go
  • cypher/frontend/pattern.go
  • cypher/frontend/pattern_test.go
  • cypher/frontend/property_key.go
  • cypher/frontend/property_key_test.go
  • cypher/frontend/query.go
  • cypher/frontend/shortest_path_expression_test.go
  • cypher/frontend/standalone_call_test.go
  • cypher/frontend/unsupported_import_create_test.go
  • cypher/frontend/util.go
  • cypher/models/cypher/format/format.go
  • cypher/models/cypher/format/format_test.go
  • cypher/models/cypher/functions.go
  • cypher/models/cypher/literal_format.go
  • cypher/models/cypher/literal_format_test.go
  • cypher/models/cypher/model.go
  • cypher/models/cypher/property_key.go
  • cypher/models/cypher/property_key_test.go
  • cypher/models/pgsql/format/format.go
  • cypher/models/pgsql/format/format_test.go
  • cypher/models/pgsql/format/identifier_test.go
  • cypher/models/pgsql/functions.go
  • cypher/models/pgsql/model.go
  • cypher/models/pgsql/optimize/analysis.go
  • cypher/models/pgsql/optimize/analysis_test.go
  • cypher/models/pgsql/optimize/expansion_orientation.go
  • cypher/models/pgsql/optimize/lowering.go
  • cypher/models/pgsql/optimize/lowering_plan.go
  • cypher/models/pgsql/optimize/optimizer_test.go
  • cypher/models/pgsql/optimize/predicate_dependencies_test.go
  • cypher/models/pgsql/optimize/scalar_continuation_test.go
  • cypher/models/pgsql/optimize/source_references.go
  • cypher/models/pgsql/optimize/source_references_test.go
  • cypher/models/pgsql/optimize/sp_i2_cap_contract_test.go
  • cypher/models/pgsql/optimize/suffix_correlation_test.go
  • cypher/models/pgsql/optimize/suffix_reverse_guard_test.go
  • cypher/models/pgsql/optimize/traversal_envelope.go
  • cypher/models/pgsql/optimize/traversal_envelope_plan.go
  • cypher/models/pgsql/optimize/traversal_envelope_test.go
  • cypher/models/pgsql/pgtypes.go
  • cypher/models/pgsql/pytypes_test.go
  • cypher/models/pgsql/test/logical_forms_legacy_builder_test.go
  • cypher/models/pgsql/test/reconciliation_forms_legacy_builder_test.go
  • cypher/models/pgsql/test/relationship_scans_node_lookups_legacy_builder_test.go
  • cypher/models/pgsql/test/standalone_hop_forms_legacy_builder_test.go
  • cypher/models/pgsql/test/testcase.go
  • cypher/models/pgsql/test/translation_cases/README.md
  • cypher/models/pgsql/test/translation_cases/boolean_values.sql
  • cypher/models/pgsql/test/translation_cases/create.sql
  • cypher/models/pgsql/test/translation_cases/create_property_types.sql
  • cypher/models/pgsql/test/translation_cases/delete.sql
  • cypher/models/pgsql/test/translation_cases/entity_membership.sql
  • cypher/models/pgsql/test/translation_cases/exact_expansion_length.sql
  • cypher/models/pgsql/test/translation_cases/expansion_endpoint_predicates.sql
  • cypher/models/pgsql/test/translation_cases/float_literals.sql
  • cypher/models/pgsql/test/translation_cases/leading_optional.sql
  • cypher/models/pgsql/test/translation_cases/multipart.sql
  • cypher/models/pgsql/test/translation_cases/multipart_read_boundaries.sql
  • cypher/models/pgsql/test/translation_cases/negation_parity.sql
  • cypher/models/pgsql/test/translation_cases/nodes.sql
  • cypher/models/pgsql/test/translation_cases/null_predicates.sql
  • cypher/models/pgsql/test/translation_cases/numeric_sum.sql
  • cypher/models/pgsql/test/translation_cases/optional_row_identity.sql
  • cypher/models/pgsql/test/translation_cases/order_aliases.sql
  • cypher/models/pgsql/test/translation_cases/parameters.sql
  • cypher/models/pgsql/test/translation_cases/pattern_binding.sql
  • cypher/models/pgsql/test/translation_cases/pattern_expansion.sql
  • cypher/models/pgsql/test/translation_cases/pattern_predicate_dependencies.sql
  • cypher/models/pgsql/test/translation_cases/pattern_predicate_lifetime.sql
  • cypher/models/pgsql/test/translation_cases/post_processing.sql
  • cypher/models/pgsql/test/translation_cases/predicate_types.sql
  • cypher/models/pgsql/test/translation_cases/property_arithmetic.sql
  • cypher/models/pgsql/test/translation_cases/property_unwind.sql
  • cypher/models/pgsql/test/translation_cases/quantifiers.sql
  • cypher/models/pgsql/test/translation_cases/reconciliation.sql
  • cypher/models/pgsql/test/translation_cases/relationship_scans_node_lookups.sql
  • cypher/models/pgsql/test/translation_cases/relationship_uniqueness.sql
  • cypher/models/pgsql/test/translation_cases/reused_relationship.sql
  • cypher/models/pgsql/test/translation_cases/scalar_aggregation.sql
  • cypher/models/pgsql/test/translation_cases/shortest_paths.sql
  • cypher/models/pgsql/test/translation_cases/stepwise_traversal.sql
  • cypher/models/pgsql/test/translation_cases/string_predicate_escaping.sql
  • cypher/models/pgsql/test/translation_cases/to_integer.sql
  • cypher/models/pgsql/test/translation_cases/typed_collect.sql
  • cypher/models/pgsql/test/translation_cases/undirected_continuation.sql
  • cypher/models/pgsql/test/translation_cases/undirected_self_reference.sql
  • cypher/models/pgsql/test/translation_cases/unknown_kinds.sql
  • cypher/models/pgsql/test/translation_cases/unwind.sql
  • cypher/models/pgsql/test/translation_cases/update.sql
  • cypher/models/pgsql/test/translation_cases/with_modifiers.sql
  • cypher/models/pgsql/test/translation_cases/with_property_consumers.sql
  • cypher/models/pgsql/test/translation_test.go
  • cypher/models/pgsql/test/trust_pruning_forms_legacy_builder_test.go
  • cypher/models/pgsql/translate/README.md
  • cypher/models/pgsql/translate/aggregate_pattern_predicate_containment_test.go
  • cypher/models/pgsql/translate/aggregate_traversal_count.go
  • cypher/models/pgsql/translate/arithmetic.go
  • cypher/models/pgsql/translate/arithmetic_test.go
  • cypher/models/pgsql/translate/boolean_context_test.go
  • cypher/models/pgsql/translate/collect.go
  • cypher/models/pgsql/translate/collect_test.go
  • cypher/models/pgsql/translate/count_fast_path.go
  • cypher/models/pgsql/translate/create.go
  • cypher/models/pgsql/translate/create_test.go
  • cypher/models/pgsql/translate/delete.go
  • cypher/models/pgsql/translate/delete_test.go
  • cypher/models/pgsql/translate/empty_list_alias_test.go
  • cypher/models/pgsql/translate/entity_membership.go
  • cypher/models/pgsql/translate/entity_membership_test.go
  • cypher/models/pgsql/translate/exact_expansion_length_test.go
  • cypher/models/pgsql/translate/expansion.go
  • cypher/models/pgsql/translate/expansion_all_shortest_inline.go
  • cypher/models/pgsql/translate/expansion_binding_test.go
  • cypher/models/pgsql/translate/expansion_endpoint_predicate_test.go
  • cypher/models/pgsql/translate/expansion_endpoint_seeded.go
  • cypher/models/pgsql/translate/expansion_orientation.go
  • cypher/models/pgsql/translate/expansion_orientation_test.go
  • cypher/models/pgsql/translate/expansion_shortest_distance_inline.go
  • cypher/models/pgsql/translate/expansion_shortest_distance_inline_test.go
  • cypher/models/pgsql/translate/expansion_shortest_distance_inline_v2.go
  • cypher/models/pgsql/translate/expansion_suffix_guarded.go
  • cypher/models/pgsql/translate/expansion_suffix_guarded_test.go
  • cypher/models/pgsql/translate/expansion_suffix_seeded.go
  • cypher/models/pgsql/translate/expansion_test.go
  • cypher/models/pgsql/translate/expression.go
  • cypher/models/pgsql/translate/expression_test.go
  • cypher/models/pgsql/translate/float_literal_types_test.go
  • cypher/models/pgsql/translate/format.go
  • cypher/models/pgsql/translate/format_test.go
  • cypher/models/pgsql/translate/function.go
  • cypher/models/pgsql/translate/function_test.go
  • cypher/models/pgsql/translate/graph_scope_test.go
  • cypher/models/pgsql/translate/hinting.go
  • cypher/models/pgsql/translate/inline_map_source_test.go
  • cypher/models/pgsql/translate/kind.go
  • cypher/models/pgsql/translate/limit_pushdown_test.go
  • cypher/models/pgsql/translate/match.go
  • cypher/models/pgsql/translate/match_test.go
  • cypher/models/pgsql/translate/model.go
  • cypher/models/pgsql/translate/multipart.go
  • cypher/models/pgsql/translate/multipart_reads_test.go
  • cypher/models/pgsql/translate/multipart_test.go
  • cypher/models/pgsql/translate/negation_parity_test.go
  • cypher/models/pgsql/translate/node.go
  • cypher/models/pgsql/translate/null_predicate_test.go
  • cypher/models/pgsql/translate/numeric_sum_test.go
  • cypher/models/pgsql/translate/optimizer_safety_test.go
  • cypher/models/pgsql/translate/order_alias_test.go
  • cypher/models/pgsql/translate/path_functions.go
  • cypher/models/pgsql/translate/pattern.go
  • cypher/models/pgsql/translate/predicate.go
  • cypher/models/pgsql/translate/predicate_dependencies_test.go
  • cypher/models/pgsql/translate/predicate_lifetime_test.go
  • cypher/models/pgsql/translate/predicate_test.go
  • cypher/models/pgsql/translate/predicate_types.go
  • cypher/models/pgsql/translate/predicate_types_test.go
  • cypher/models/pgsql/translate/projection.go
  • cypher/models/pgsql/translate/quantifier_containment_test.go
  • cypher/models/pgsql/translate/quantifiers.go
  • cypher/models/pgsql/translate/query.go
  • cypher/models/pgsql/translate/relationship.go
  • cypher/models/pgsql/translate/relationship_binding_test.go
  • cypher/models/pgsql/translate/relationship_uniqueness_test.go
  • cypher/models/pgsql/translate/renamer.go
  • cypher/models/pgsql/translate/representation_test.go
  • cypher/models/pgsql/translate/result_alias_test.go
  • cypher/models/pgsql/translate/semantic_drift_test.go
  • cypher/models/pgsql/translate/shortest_workspace_test.go
  • cypher/models/pgsql/translate/string_predicate_escaping_test.go
  • cypher/models/pgsql/translate/temporal_containment_test.go
  • cypher/models/pgsql/translate/to_integer_test.go
  • cypher/models/pgsql/translate/tracking.go
  • cypher/models/pgsql/translate/translator.go
  • cypher/models/pgsql/translate/traversal.go
  • cypher/models/pgsql/translate/traversal_directionless.go
  • cypher/models/pgsql/translate/traversal_test.go
  • cypher/models/pgsql/translate/undirected_continuation_test.go
  • cypher/models/pgsql/translate/undirected_self_reference_test.go
  • cypher/models/pgsql/translate/unknown_kinds_test.go
  • cypher/models/pgsql/translate/unwind.go
  • cypher/models/pgsql/translate/unwind_property_test.go
  • cypher/models/pgsql/translate/update.go
  • cypher/models/pgsql/translate/update_alias_test.go
  • cypher/models/pgsql/translate/update_order_test.go
  • cypher/models/pgsql/translate/value_consumers.go
  • cypher/models/pgsql/translate/value_consumers_test.go
  • cypher/models/pgsql/translate/with.go
  • cypher/models/pgsql/translate/with_modifiers_test.go
  • cypher/models/walk/walk_pgsql.go
  • cypher/test/cases/mutation_tests.json
  • cypher/test/cases/negative_tests.json
  • cypher/test/cases/positive_tests.json
  • cypher/test/test.go
  • docs/README.md
  • docs/benchmarking.md
  • docs/commit-message-maintenance.md
  • docs/cysql_traversal_priorities.md
  • docs/development.md
  • docs/experiments/asp_a1_diagnostic_prerequisite_v1.md
  • docs/experiments/asp_a1_inline_hydration_v1.md
  • docs/experiments/asp_i1_inline_v1.md
  • docs/experiments/asp_n1_negative_exhaustion_v1.md
  • docs/experiments/asp_p4_i1_disconnected_preflight_v1.md
  • docs/experiments/asp_p4_open_baseline_v1.md
  • docs/experiments/fixed_suffix_cardinality_metadata_audit.md
  • docs/experiments/fixed_suffix_composite_lowering_v1.md
  • docs/experiments/guarded_suffix_keyset_continuation_v1.md
  • docs/experiments/guarded_suffix_keyset_continuation_v1_pair.json
  • docs/experiments/guarded_suffix_keyset_continuation_v1_resources.json
  • docs/experiments/p5_adjacency_materialization_feasibility_v1.md
  • docs/experiments/p5_adjacency_materialization_feasibility_v2.md
  • docs/experiments/p5_architecture_feasibility_v1.md
  • docs/experiments/production_wide_sql_selection_v1.md
  • docs/experiments/remaining_outlier_delivery_v1.md
  • docs/experiments/sp_bidirectional_p3_preflight_v1.md
  • docs/experiments/sp_bidirectional_p3_preflight_v2.md
  • docs/experiments/sp_i2_successor_power_study_v3.md
  • docs/experiments/sql_strategy_routing_preflight_v1.md
  • docs/experiments/suffix_reverse_retry_v1.md
  • docs/experiments/suffix_route_cache_feasibility_v1.md
  • docs/experiments/topology_fixed_suffix_first_use_v1.md
  • docs/experiments/topology_fixed_suffix_v4_capture_v1.md
  • docs/experiments/topology_fixed_suffix_v4_status_v1.md
  • docs/experiments/topology_selected_routing_protocol_v1.md
  • docs/experiments/traversal_priority_implementation_status_v1.md
  • docs/experiments/traversal_topology_synopsis_adr_v1.md
  • docs/library-and-tools.md
  • docs/open_ended_traversal_policy.md
  • docs/postgresql-driver.md
  • docs/postgresql_translation.md
  • docs/query-semantics.md
  • docs/recursive_descent_cost_controls.md
  • docs/regression_source_parity.md
  • docs/shortest_path_tie_policy.md
  • docs/testing.md
  • drivers/neo4j/batch_integration_test.go
  • drivers/neo4j/cypher.go
  • drivers/neo4j/cypher_internal_test.go
  • drivers/neo4j/query_rewrite_internal_test.go
  • drivers/neo4j/upsert_identifiers_test.go
  • drivers/pg/aggregate_pattern_predicate_containment_integration_test.go
  • drivers/pg/batch.go
  • drivers/pg/batch_test.go
  • drivers/pg/bounded_shortest_path_integration_test.go
  • drivers/pg/builder_cache_identity.go
  • drivers/pg/builder_cache_identity_test.go
  • drivers/pg/compiler.go
  • drivers/pg/compiler_test.go
  • drivers/pg/composite_codec.go
  • drivers/pg/composite_codec_integration_test.go
  • drivers/pg/composite_codec_test.go
  • drivers/pg/connection_cache_stats.go
  • drivers/pg/connection_runtime_driver_test.go
  • drivers/pg/connection_runtime_integration_test.go
  • drivers/pg/connection_translation_cache.go
  • drivers/pg/connection_translation_cache_test.go
  • drivers/pg/connection_translation_key.go
  • drivers/pg/driver.go
  • drivers/pg/driver_test.go
  • drivers/pg/graph_selection_integration_test.go
  • drivers/pg/in_query_call_integration_test.go
  • drivers/pg/in_query_call_test.go
  • drivers/pg/json_codec.go
  • drivers/pg/json_codec_integration_test.go
  • drivers/pg/json_codec_test.go
  • drivers/pg/kind_cache.go
  • drivers/pg/kind_cache_adoption_integration_test.go
  • drivers/pg/kind_cache_adoption_test.go
  • drivers/pg/kind_cache_initialization_integration_test.go
  • drivers/pg/kind_cache_initialization_test.go
  • drivers/pg/kind_cache_integration_test.go
  • drivers/pg/kind_cache_mutation_integration_test.go
  • drivers/pg/kind_cache_mutation_test.go
  • drivers/pg/kind_cache_snapshot_integration_test.go
  • drivers/pg/kind_cache_snapshot_test.go
  • drivers/pg/kind_cache_test.go
  • drivers/pg/kind_registration_pool_integration_test.go
  • drivers/pg/list_index_integration_test.go
  • drivers/pg/list_index_test.go
  • drivers/pg/list_slice_integration_test.go
  • drivers/pg/list_slice_test.go
  • drivers/pg/manager.go
  • drivers/pg/mapper.go
  • drivers/pg/mapper_test.go
  • drivers/pg/multipart.go
  • drivers/pg/multipart_integration_test.go
  • drivers/pg/multipart_test.go
  • drivers/pg/null_predicate_integration_test.go
  • drivers/pg/open_traversal_resource_integration_test.go
  • drivers/pg/optimize.go
  • drivers/pg/optimize_test.go
  • drivers/pg/pg.go
  • drivers/pg/pgutil/kindmapper.go
  • drivers/pg/pool_runtime.go
  • drivers/pg/pool_runtime_test.go
  • drivers/pg/quantifier_containment_integration_test.go
  • drivers/pg/query.go
  • drivers/pg/query/arithmetic_integration_test.go
  • drivers/pg/query/batch_identity_test.go
  • drivers/pg/query/delete_schema_integration_test.go
  • drivers/pg/query/format.go
  • drivers/pg/query/kinds_test.go
  • drivers/pg/query/numeric_sum_integration_test.go
  • drivers/pg/query/p5_adjacency_shadow_integration_test.go
  • drivers/pg/query/p5_adjacency_shadow_sql_test.go
  • drivers/pg/query/predicate_types_integration_test.go
  • drivers/pg/query/query.go
  • drivers/pg/query/schema_upgrade_integration_test.go
  • drivers/pg/query/sql.go
  • drivers/pg/query/sql/p5_adjacency_shadow_down.sql
  • drivers/pg/query/sql/p5_adjacency_shadow_up.sql
  • drivers/pg/query/sql/schema_down.sql
  • drivers/pg/query/sql/schema_up.sql
  • drivers/pg/query/sql_test.go
  • drivers/pg/query/sql_workspace_test.go
  • drivers/pg/query/topology_epoch_sql_test.go
  • drivers/pg/query/value_consumers_integration_test.go
  • drivers/pg/query_cache.go
  • drivers/pg/query_cache_test.go
  • drivers/pg/result.go
  • drivers/pg/result_test.go
  • drivers/pg/runtime_config.go
  • drivers/pg/shared_template_cache.go
  • drivers/pg/shortest_path_expression_integration_test.go
  • drivers/pg/shortest_path_expression_test.go
  • drivers/pg/sql_generation_profile.go
  • drivers/pg/standalone_call_integration_test.go
  • drivers/pg/standalone_call_test.go
  • drivers/pg/strategy_selection.go
  • drivers/pg/strategy_selection_test.go
  • drivers/pg/suffix_reverse_retry.go
  • drivers/pg/suffix_reverse_retry_test.go
  • drivers/pg/temporal_cache_test.go
  • drivers/pg/temporal_containment_integration_test.go
  • drivers/pg/topology_route_decision.go
  • drivers/pg/topology_synopsis.go
  • drivers/pg/topology_synopsis_test.go
  • drivers/pg/transaction.go
  • drivers/pg/transaction_kinds.go
  • drivers/pg/transaction_kinds_test.go
  • drivers/pg/translation_cache.go
  • drivers/pg/translation_cache_contract.go
  • drivers/pg/translation_cache_test.go
  • drivers/pg/traversal_policy.go
  • drivers/pg/traversal_policy_test.go
  • drivers/pg/types.go
  • drivers/pg/unknown_kinds_cache_test.go
  • drivers/pg/unknown_kinds_integration_test.go
  • drivers/pg/unsupported_import_create_integration_test.go
  • drivers/pg/unsupported_import_create_test.go
  • go.mod
  • graph/graph.go
  • graph/properties.go
  • graph/properties_test.go
  • graph/update_key_test.go
  • integration/BENCHMARKS.md
  • integration/batch_identity_test.go
  • integration/cypher_template_schema_test.go
  • integration/cypher_template_test.go
  • integration/cypher_test.go
  • integration/delegated_enrollment_legacy_builder_test.go
  • integration/delete_node_test.go
  • integration/direct_write_mutations_test.go
  • integration/exact_result_numbers_test.go
  • integration/harness.go
  • integration/harness_test.go
  • integration/json_result_strings_test.go
  • integration/legacy_query_harness.go
  • integration/logical_forms_legacy_builder_test.go
  • integration/neo4j_in_query_call_test.go
  • integration/neo4j_list_index_test.go
  • integration/neo4j_list_slice_test.go
  • integration/neo4j_raw_rewrite_semantics_test.go
  • integration/neo4j_shortest_path_expression_test.go
  • integration/neo4j_standalone_call_test.go
  • integration/neo4j_unsupported_import_create_test.go
  • integration/neo4j_upsert_identifiers_test.go
  • integration/numeric_sum_test.go
  • integration/pgsql_aggregate_traversal_plan_test.go
  • integration/pgsql_boolean_value_test.go
  • integration/pgsql_bound_suffix_boundary_test.go
  • integration/pgsql_bounded_shortest_endpoint_test.go
  • integration/pgsql_create_property_types_test.go
  • integration/pgsql_delete_by_kind_test.go
  • integration/pgsql_delete_continuation_test.go
  • integration/pgsql_delete_node_test.go
  • integration/pgsql_delete_relationships_by_kind_test.go
  • integration/pgsql_empty_list_alias_test.go
  • integration/pgsql_entity_membership_test.go
  • integration/pgsql_exact_expansion_length_test.go
  • integration/pgsql_exact_result_numbers_test.go
  • integration/pgsql_expansion_endpoint_predicate_test.go
  • integration/pgsql_inline_asp_test.go
  • integration/pgsql_json_result_strings_test.go
  • integration/pgsql_leading_optional_test.go
  • integration/pgsql_multipart_read_boundary_test.go
  • integration/pgsql_multipart_test.go
  • integration/pgsql_multipart_visibility_test.go
  • integration/pgsql_node_upsert_kind_removal_test.go
  • integration/pgsql_numeric_sum_test.go
  • integration/pgsql_open_traversal_test.go
  • integration/pgsql_optional_row_identity_test.go
  • integration/pgsql_order_alias_test.go
  • integration/pgsql_orientation_execution_plan_test.go
  • integration/pgsql_pattern_predicate_dependency_test.go
  • integration/pgsql_pattern_predicate_lifetime_test.go
  • integration/pgsql_predicate_types_test.go
  • integration/pgsql_property_arithmetic_test.go
  • integration/pgsql_property_unwind_test.go
  • integration/pgsql_raw_rewrite_semantics_test.go
  • integration/pgsql_relationship_uniqueness_test.go
  • integration/pgsql_reused_relationship_test.go
  • integration/pgsql_scalar_shapes_test.go
  • integration/pgsql_string_predicate_escaping_test.go
  • integration/pgsql_suffix_correlation_test.go
  • integration/pgsql_temporal_parameter_test.go
  • integration/pgsql_to_integer_test.go
  • integration/pgsql_translation_cache_test.go
  • integration/pgsql_typed_collect_test.go
  • integration/pgsql_undirected_continuation_test.go
  • integration/pgsql_undirected_self_reference_test.go
  • integration/pgsql_unknown_kinds_test.go
  • integration/pgsql_update_clause_order_test.go
  • integration/pgsql_update_row_stream_test.go
  • integration/pgsql_with_modifiers_test.go
  • integration/pgsql_with_property_consumers_test.go
  • integration/predicate_types_test.go
  • integration/property_arithmetic_test.go
  • integration/property_unwind_test.go
  • integration/record_expectation_test.go
  • integration/regression_fixture.go
  • integration/regression_fixture_test.go
  • integration/relationship_kind_conjunction_test.go
  • integration/relationship_scans_node_lookups_legacy_builder_test.go
  • integration/result_alias_test.go
  • integration/standalone_hops_legacy_builder_test.go
  • integration/testdata/README.md
  • integration/testdata/adcs_fanout.json
  • integration/testdata/cases/expand_into.json
  • integration/testdata/cases/mutation_post_state_inline.json
  • integration/testdata/cases/optimizer_inline.json
  • integration/testdata/cases/shortest_bound.json
  • integration/testdata/cases/update_row_stream_inline.json
  • integration/testdata/expand_into.json
  • integration/testdata/fixed_suffix_expansion_adversarial.json
  • integration/testdata/fixed_suffix_expansion_fanout.json
  • integration/testdata/shortest_bound.json
  • integration/testdata/templates/advanced_lookup_shapes.json
  • integration/testdata/templates/aggregate_traversal_count_shapes.json
  • integration/testdata/templates/basic_lookup_shapes.json
  • integration/testdata/templates/boolean_value_shapes.json
  • integration/testdata/templates/bound_expansion_endpoint_shapes.json
  • integration/testdata/templates/bound_suffix_boundary_shapes.json
  • integration/testdata/templates/bounded_shortest_endpoint_shapes.json
  • integration/testdata/templates/cache_kind_identity_shapes.json
  • integration/testdata/templates/correlated_suffix_shapes.json
  • integration/testdata/templates/count_shapes.json
  • integration/testdata/templates/create_property_type_shapes.json
  • integration/testdata/templates/delete_continuation_shapes.json
  • integration/testdata/templates/delete_node_shapes.json
  • integration/testdata/templates/empty_list_alias_shapes.json
  • integration/testdata/templates/entity_membership_shapes.json
  • integration/testdata/templates/exact_expansion_length_shapes.json
  • integration/testdata/templates/exact_result_number_shapes.json
  • integration/testdata/templates/expansion_endpoint_predicate_shapes.json
  • integration/testdata/templates/fixed_suffix_expansion_shapes.json
  • integration/testdata/templates/json_result_string_shapes.json
  • integration/testdata/templates/leading_multipart_shapes.json
  • integration/testdata/templates/leading_optional_shapes.json
  • integration/testdata/templates/lowering_regression_shapes.json
  • integration/testdata/templates/multipart_read_boundary_shapes.json
  • integration/testdata/templates/multipart_write_visibility_shapes.json
  • integration/testdata/templates/mutation_post_state_shapes.json
  • integration/testdata/templates/node_representation_shapes.json
  • integration/testdata/templates/numeric_sum_shapes.json
  • integration/testdata/templates/open_traversal_shapes.json
  • integration/testdata/templates/optional_row_identity_shapes.json
  • integration/testdata/templates/optional_shapes.json
  • integration/testdata/templates/order_alias_shapes.json
  • integration/testdata/templates/pattern_predicate_dependency_shapes.json
  • integration/testdata/templates/pattern_predicate_lifetime_shapes.json
  • integration/testdata/templates/post_processing_hop_shapes.json
  • integration/testdata/templates/post_processing_shapes.json
  • integration/testdata/templates/predicate_type_shapes.json
  • integration/testdata/templates/property_arithmetic_shapes.json
  • integration/testdata/templates/property_unwind_shapes.json
  • integration/testdata/templates/raw_rewrite_semantics_shapes.json
  • integration/testdata/templates/reconciliation_shapes.json
  • integration/testdata/templates/relationship_kind_conjunction_shapes.json
  • integration/testdata/templates/relationship_scan_shapes.json
  • integration/testdata/templates/relationship_uniqueness_shapes.json
  • integration/testdata/templates/result_alias_shapes.json
  • integration/testdata/templates/reused_relationship_shapes.json
  • integration/testdata/templates/scalar_shapes.json
  • integration/testdata/templates/string_predicate_escaping_shapes.json
  • integration/testdata/templates/temporal_parameter_shapes.json
  • integration/testdata/templates/to_integer_shapes.json
  • integration/testdata/templates/typed_collect_shapes.json
  • integration/testdata/templates/undirected_continuation_shapes.json
  • integration/testdata/templates/undirected_self_reference_shapes.json
  • integration/testdata/templates/unknown_kind_shapes.json
  • integration/testdata/templates/update_clause_order_shapes.json
  • integration/testdata/templates/update_row_stream_shapes.json
  • integration/testdata/templates/with_modifier_shapes.json
  • integration/testdata/templates/with_property_consumer_shapes.json
  • integration/testdata/templates/xor_grouping_shapes.json
  • integration/to_integer_test.go
  • integration/traversal_pattern_direction_test.go
  • integration/traversal_pattern_optional_test.go
  • integration/trust_pruning_legacy_builder_test.go
  • integration/typed_collect_test.go
  • integration/wipe_graph_test.go
  • integration/with_property_consumers_test.go
  • integration/xor_grouping_test.go
  • internal/jsonutil/numbers.go
  • internal/jsonutil/numbers_test.go
  • opengraph/load.go
  • opengraph/numbers_test.go
  • ops/ops.go
  • ops/parallel.go
  • ops/parallel_test.go
  • ops/properties_test.go
  • query/builder_test.go
  • query/neo4j/neo4j_test.go
  • query/neo4j/relationship_kind_conjunction_test.go
  • query/neo4j/relationship_scans_node_lookups_test.go
  • query/neo4j/rewrite.go
  • query/neo4j/xor_grouping_test.go
  • query/v2/backend_test.go
  • query/v2/compat.go
  • query/v2/empty_kinds_test.go
  • query/v2/query.go
  • query/v2/query_test.go
  • query/v2/util.go
  • query/v2/util_internal_test.go
  • regression_coverage_manifest.md
  • regression_manifest_test.go
  • retriever/compression.go
  • retriever/doc.go
  • retriever/dump_checkpoint.go
  • retriever/dump_checkpoint_test.go
  • retriever/dump_test.go
  • retriever/fragment_access.go
  • retriever/fragment_access_test.go
  • retriever/load.go
  • retriever/manifest.go
  • retriever/numbers_test.go
  • retriever/scrubber.go
  • retriever/scrubber_test.go
  • review_findings.md
  • scripts/commit_messages.json
  • scripts/rewrite_commit_messages.py
  • scripts/test_rewrite_commit_messages.py
  • testutil/metadata.go
  • testutil/metadata_test.go
  • testutil/params.go
  • testutil/params_test.go
  • testutil/perf_endpoint_seeded.go
  • testutil/perf_fixtures.go
  • testutil/perf_fixtures_test.go
  • testutil/perf_shortest_v2.go
  • testutil/reconciliation_fixture.go
  • testutil/reconciliation_fixture_test.go
  • tools/dawgrun/pkg/commands/cypher.go
  • traversal/pattern_driver_test.go
  • traversal/traversal.go
  • variance.md
  • variance_findings.md
  • variance_findings_priority.md
  • variance_findings_priority_complete.md

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.

@zinic
zinic force-pushed the pg-v2 branch 3 times, most recently from 3609d9e to 5149abc Compare August 25, 2026 21:06
@zinic
zinic force-pushed the pg-v2 branch 2 times, most recently from e3ff391 to bf50f00 Compare September 8, 2026 21:37
@zinic zinic changed the title DAWGS Pg Driver - Version 2 feat(pg): DAWGS Pg Driver - Version 2 Oct 21, 2026
@zinic
zinic force-pushed the pg-v2 branch 3 times, most recently from 6f7e8b6 to 3057711 Compare October 26, 2026 22:54
@zinic
zinic force-pushed the pg-v2 branch 3 times, most recently from cdfadee to 4790a2c Compare November 2, 2026 18:01
zinic added 15 commits November 2, 2026 20:20
Add explicit destructive-test opt-in and a credential-free target
allowlist. Wire the guard into integration commands and CI, and document
the required environment variables.
Add shared fixtures, typed parameters, mutation post-state templates and
legacy-builder regressions. Track query-form coverage and validate the
regression manifest.
Add traversal admission plans, endpoint and suffix strategies,
shortest-path lowering, path functions and graph-scoped SQL rendering.
Extend parser, builder and SQL regression fixtures.
Add bounded parse/translation caches, graph-scoped execution, traversal
workspaces and manifest-backed routing policies. Add topology metadata,
schema upgrades and driver regression coverage.
Introduce the v2 pool/runtime hooks, per-connection translation
retention, shared shortest-path templates and cache diagnostics. Cover
lifecycle, configuration and live execution.
Add PostgreSQL traversal-plan, inline all-shortest, deletion and
graph-wipe controls. Extend the PostgreSQL walker for the emitted query
forms.
Add reproducible traversal scenarios, plan capture and reporting for
both PostgreSQL runtimes. Include scale fixtures and shortest-path
policy selection.
Add capture bundles, A/A resolution, paired confirmation, resource and
operational gates, and manifest-backed promotion evidence. Include
traversal telemetry, selector studies and reference tournaments.
Capture backend-specific plan diagnostics from the shared corpus,
normalize plan structure and report comparable deltas. Extend command
options, output provenance and regression coverage.
Record traversal experiments, routing and promotion contracts,
source-parity procedures and operational limits. Update translation,
development and repository guidance.
Admit the first-use fixed-suffix policy to guarded suffix lowering and
emit the transaction-retry form. Add a regression for the versioned
selector.
Hydrate repeated expansion endpoints once and reverse raw path-ID
segments with the other path components. Cover self-loop aliases and
reversed suffix paths.
Select the PostgreSQL-only adjacency feasibility probe by
CONNECTION_STRING so Neo4j integration runs skip it.
Move the v2 runtime, pool hooks, translation cache and diagnostics into
drivers/pg. Remove the separate v2 driver and obsolete shared SQL
translation implementation.

BREAKING CHANGE: callers of drivers/pg/v2 must migrate to drivers/pg and
construct pools with pg.NewPool or pg.NewPoolWithRuntimeConfig.
Distinguish SP and ASP endpoint-array offsets so singleton all-shortest
calls retain their maximum-depth argument. Add a compiler regression and
the crypto module requirement.
zinic added 29 commits November 2, 2026 20:20
Retain JSON scalar types in property collections, list operations and
UNWIND. Cover heterogeneous values, committed properties and complete
mutation state.

Refs: DAWGS-054
Carry node/relationship element identity through collection projections
and scope copies so overlapping numeric IDs cannot match the wrong
entity type. Add shared membership and committed-state controls.

Refs: DAWGS-056
Classify local timestamps by location identity rather than zone name.
Cover parameter cache rebinding, temporal error boundaries and
backend-selected integration tags without requiring a database for unit
tests.
Preserve exact integer inputs while truncating fractional literals,
parameters, properties and aliases toward zero. Cover signed boundaries,
result types and mutation expressions.

Refs: DAWGS-015
Treat percent, underscore and escape characters literally for CONTAINS,
STARTS WITH and ENDS WITH across supported operand shapes. Add shared
read and complete mutation-state templates.

Refs: DAWGS-014
Materialize read-only WITH ordering, alias resolution, SKIP and LIMIT
before later filtering and writes. Preserve input cardinality across
multipart boundaries.

Refs: DAWGS-040
Supply one implicit input row and retain matched-side predicates so
unmatched patterns yield null bindings. Cover aggregation, chained
optionals, paths and mutations.

Refs: DAWGS-021
Copy stored JSON values into CREATE maps, retain native-array UNWIND
element types and read multipart OPTIONAL inputs from the preceding
frame. Validate corpus record assertions, support template schema kinds
and normalize tagged instants.
Resolve predicate futures once with their type constraints and
materialize pending filters before a later MATCH changes the correlation
frame. Cover repeated predicates and exact mutation selection.

Refs: DAWGS-036
Include node and relationship references in optimizer dependencies so
unresolved bindings stay pinned. Apply deferred MATCH filters before
mutations, including writes without RETURN.

Refs: DAWGS-035
Read preceding materialized frames instead of enclosing WITH outputs and
keep duplicate/empty streams through literal projections. Cover exact
paths and SET/CREATE post-state.

Refs: DAWGS-046
Reject plain node DELETE when incident relationships remain outside the
deletion set. Apply DETACH cleanup on parent and partition paths with
graph-scoped endpoint identity.

Refs: DAWGS-039
Expand nested aliases with grouping, qualify bare UNWIND inputs and
carry hidden DISTINCT sort keys. Preserve visible columns, ordering,
pagination and mutation selection.

Refs: DAWGS-047
Preserve JSON element types through direct properties, WITH aliases and
nested lists. Materialize pending UNWIND inputs before SET while
retaining duplicates and empty streams.

Refs: DAWGS-042
Reserve DELETE CTE names without advancing the input stream so final
projections retain cardinality and captured values. Stage preceding
SET/CREATE writes before DELETE in the same transaction.

Refs: DAWGS-043
Refresh parser mutation cases to canonical formatting and remove a
duplicate license header from the generated property-UNWIND SQL fixture.
Resolve absent kinds without registration while preserving alternatives,
conjunctions, negation and OPTIONAL MATCH. Bypass translation retention
for missing-kind plans so later registration becomes visible.

Refs: DAWGS-023
Return a located parser error and isolate the indexing subtree before
PostgreSQL execution. Cover read/mutation rejection and native Neo4j
pass-through; full shared indexing support remains open.

Refs: DAWGS-001
Return a located parser error for omitted, negative, parameterized and
chained slice bounds. Cover rejection before writes and native Neo4j
slicing; full shared slicing support remains open.

Refs: DAWGS-002
Return a located parser error for explicit and implicit procedure
invocations, including YIELD, instead of a successful nil AST. Preserve
native Neo4j procedure execution.

Refs: DAWGS-017
Isolate expression subtrees and return located parser errors instead of
projecting the terminal node. Retain supported MATCH syntax and native
Neo4j expressions.

Refs: DAWGS-010
Return located errors for CREATE UNIQUE and LOAD CSV before PostgreSQL
text execution, including preceding writes. Preserve native Neo4j query
text and diagnostics.

Refs: DAWGS-013
Isolate the invocation subtree and return a located parser error instead
of dropping arguments or YIELD filters from PostgreSQL execution. Cover
read/mutation rejection and native procedure controls.

Refs: DAWGS-103
Intersect positive conjunctive kind lists and retain an explicit false
predicate for disjoint sets. Keep OR, XOR and NOT filters in WHERE so
reads and mutations select the intended relationships.

Refs: DAWGS-059
Render qualified function separators and conjunctive parsed labels while
retaining builder any-kind OR behavior and float literal types. Add
shared read/mutation and native namespaced-function controls.

Refs: DAWGS-060
Parenthesize builder XOR groups inside AND and group PostgreSQL XOR
operands and results. Add render, SQL and shared truth-table
read/mutation controls.

Refs: DAWGS-085
Decode Cypher identifier escapes, retain case and double embedded SQL
quotes. Apply the same rendering to CTE names and cover exact result
keys and mutation targets.

Refs: DAWGS-055
Separate graph selection from schema reconciliation and use
transaction-owned connections for kind mapping with commit-only metadata
publication. Remove implicit open-traversal depth caps, add explicit
resource failures and rollback, and repair shortest-path length and
bounded endpoint workspaces.

Quote Neo4j upsert identifiers and reconcile the active/completed
variance ledgers. Preserve the regex default and recorded
capacity/performance limits; the ledger does not qualify the complete
PostgreSQL release gate as passing.

Refs: DAWGS-019, DAWGS-061, DAWGS-063, DAWGS-065
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant