• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Kinto / kinto / 22177292786 / 3
100%
master: 100%

Build:
Build:
LAST BUILD BRANCH: 2445-switch-uv
DEFAULT BRANCH: master
Ran 19 Feb 2026 10:12AM UTC
Files 78
Run time 2s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

19 Feb 2026 10:06AM UTC coverage: 100.0%. Remained the same
22177292786.3

push

github

web-flow
Use JSONB containment for GIN-friendly EQ filters (#3646)

* Use JSONB containment (@>) for EQ filters on scalar values

Rewrite _format_conditions to emit `data @> '{"field": value}'` instead
of `data->'field' = 'value'::jsonb` for equality filters on scalar data
fields (str, int, float, bool, None). This is semantically equivalent
for scalars but enables GIN index acceleration when a
`gin(data jsonb_path_ops)` index exists on the objects table.

Array and object EQ values still use the arrow extraction path to
preserve exact equality semantics (containment uses superset matching
for non-scalars).

Also normalizes _format_sorting JSONB accessor expressions to match
_format_conditions format (removing redundant parentheses around
placeholders), ensuring expression indexes work for both filter and
sort queries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Use top-level containment for CONTAINS filters and document GIN index

Rewrite CONTAINS filters to use `data @> '{"field": [values]}'` instead
of `data->'field' @> '[values]'`. Top-level containment allows a GIN
index on the data column to accelerate these queries. The jsonb_typeof
guard is no longer needed since containment already returns false when
the field is not an array.

Add documentation to the Storage class docstring describing the
recommended GIN index, what it accelerates, what it doesn't, and
approximate sizing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Document recommended, basic, and composite GIN index options

Expand the GIN index documentation with three options:

1. Recommended: partial index with WHERE resource_name = 'record'
   (smallest, scoped to actual records, works with psycopg2)
2. Basic: partial index with WHERE NOT deleted only
   (driver-independent fallback)
3. Composite: btree_gin extension with parent_id + resource_name
   in the GIN index (single index scan, no BitmapAnd needed)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>... (continued)

1532 of 1532 branches covered (100.0%)

7844 of 7844 relevant lines covered (100.0%)

1.0 hits per line

Source Files on job py310 - 22177292786.3
  • Tree
  • List 78
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 22177292786
  • 44f3c81b on github
  • Prev Job for on main (#22176846050.3)
  • Next Job for on main (#22186502542.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc