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

supabase / supabase / 42620748891
87%

Build:
DEFAULT BRANCH: master
Ran 09 Nov 2026 12:57PM UTC
Jobs 1
Files 192
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

09 Nov 2026 12:53PM UTC coverage: 87.167%. Remained the same
42620748891

push

github

web-flow
feat(studio): copy large values when duplicating a row (#53091)

## What

Follow-up to #52952. The grid truncates large columns (over 10 KB) in
the database query, so \"Duplicate row\" used to leave those fields
blank. It now fetches their full values and fills them into the Insert
Row panel.

## Behavior

- Truncated columns are fetched by primary key after the panel opens.
Each one is disabled with \"Loading full value...\" until it arrives,
and Save is disabled until every value has settled. Submitting the form
another way (e.g. pressing Enter) is blocked too.
- Only the truncated fields are filled in, so anything the user has
edited is never overwritten.
- If a value can't be copied, the field stays empty with a note saying
why:
- the value is over 1 MB (it isn't sent, so a single row can't pull an
unbounded amount of data into the browser)
  - the table has no primary key
  - the fetch failed (also shows a toast)
- The fetch honors \"View as role\", like the existing \"Load full\"
buttons.

## How

- New `useRowLargeValuesQuery` in `data/table-rows/` selects the
truncated columns of one row in a single query. Each column is returned
as `NULL` when it exceeds `MAX_ROW_LARGE_VALUE_BYTES`. The SQL is built
with `ident()`, `literal()` and the Query builder.
- A new `useCopiedLargeValues` hook owns the fetch and per-field status,
to keep `RowEditor` from growing further. Pure helpers
(`getTruncatedFieldNames`, `getPrimaryKeyMatch`, `mergeLargeValues`) are
in `RowEditor.utils.ts`.
- `InputField` takes an optional `status` and renders the note.

## Also changes

`isValueTruncated` now compares byte length instead of character length.
The query truncates when a value exceeds the limit in bytes but cuts by
characters, so a value of multibyte characters could be truncated and
still be shorter than the limit in characters, and wasn't detected.
Comparing bytes still never flags a genuine value, because an
untruncated value is at most the limit in bytes. Edit... (continued)

2071 of 2439 branches covered (84.91%)

Branch coverage included in aggregate %.

2867 of 3226 relevant lines covered (88.87%)

200.84 hits per line

Subprojects
ID Flag name Job ID Ran Files Coverage
1 studio-tests 42620748891.1 09 Nov 2026 12:57PM UTC 768
38.8
GitHub Action Run
Source Files on build 42620748891
  • Tree
  • List 192
  • Changed 159
  • Source Changed 0
  • Coverage Changed 159
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #42620748891
  • 4c686101 on github
  • Prev Build on master (#42619658336)
  • Next Build on master (#42627233820)
  • Delete
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