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

supabase / storage / 40778436987
87%

Build:
DEFAULT BRANCH: master
Ran 28 Oct 2026 10:16PM UTC
Jobs 2
Files 324
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

28 Oct 2026 10:14PM UTC coverage: 86.802% (+0.04%) from 86.767%
40778436987

push

github

web-flow
fix: improve handling of writes prevented by database triggers (#1600)

## What kind of change does this PR introduce?

Bug fix

## What is the current behavior?

A trigger on storage.objects that blocks a write causes confusing
results. Uploads, copies and moves can fail with a 500 error. Uploads
that are not upserts do not notice the trigger until after the whole
file has been uploaded to storage. On versioned buckets, a trigger that
blocks updates causes a 409 "already exists" error. Moving an object in
a bucket without versioning returns a 404 even though the object exists.
A bulk delete on a versioned bucket can succeed without leaving delete
markers, so the objects disappear.

## What is the new behavior?

If a trigger blocks an object write, the request fails with an error
(`AccessDenied`). This applies to uploads, copies, moves, deletes and
bulk deletes, whether the trigger blocks an insert or an update. Nothing
is changed in the database when this happens. A bulk delete either
deletes every object or none of them. If the trigger is caught before
the file is uploaded, nothing is uploaded. If it is only caught at the
final write, the uploaded file is removed. If a write ever returns no
row for any other reason, the upload fails and the uploaded file is
removed.

### Known limitation

A move in a bucket without versioning can still return a 404 when the
trigger only blocks the calling user. This case looks the same as a row
hidden by an access policy, so it can't be distinguished.

8123 of 9867 branches covered (82.32%)

Branch coverage included in aggregate %.

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

13903 of 15508 relevant lines covered (89.65%)

916.49 hits per line

Jobs
ID Job ID Ran Files Coverage
1 rest-pg18 - 40778436987.1 28 Oct 2026 10:19PM UTC 300
64.33
GitHub Action Run
2 unit - 40778436987.2 28 Oct 2026 10:16PM UTC 318
70.0
GitHub Action Run
Source Files on build 40778436987
  • Tree
  • List 324
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #40778436987
  • dcbb8eb7 on github
  • Prev Build on master (#40758659642)
  • Next Build on master (#40847204599)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc