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

Kinto / kinto / 22177292786
100%
master: 100%

Build:
Build:
LAST BUILD BRANCH: dependabot/pip/werkzeug-3.1.6
DEFAULT BRANCH: master
Ran 19 Feb 2026 10:11AM UTC
Jobs 3
Files 78
Run time 1min
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

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%)

43 of 43 new or added lines in 2 files covered. (100.0%)

7844 of 7844 relevant lines covered (100.0%)

3.0 hits per line

Jobs
ID Job ID Ran Files Coverage
1 py311 - 22177292786.1 19 Feb 2026 10:12AM UTC 78
100.0
GitHub Action Run
2 py312 - 22177292786.2 19 Feb 2026 10:12AM UTC 78
100.0
GitHub Action Run
3 py310 - 22177292786.3 19 Feb 2026 10:12AM UTC 78
100.0
GitHub Action Run
Source Files on build 22177292786
  • 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 Repo
  • 44f3c81b on github
  • Prev Build on main (#22176846050)
  • Next Build on main (#22186502542)
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