You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When performing bulk inserts using the Supabase JS client with the defaultToNull option,
the behavior of handling missing columns seems to vary based on the presence of the
column in other rows within the same payload.
This is a PostgREST thing, not a supabase-js one. And yeah that's the way they handle it.
if you UPSERT or INSERT an INDIVIDUAL record, the record's missing values will ALWAYS try to get filled in with the database's default values.
if you UPSERT or INSERT a GROUP of records, the same exact thing happens... BUT the "missing values" are whatever missing columns are missing on ALL records that you're sending.
defaultToNull applies ONLY to values that are missing on SOME records and NOT others. If you're leaving them out on some records and not others PostgREST will think you MEANT to leave them out, so it treats them as NULL. With defaultToNull set to FALSE you're saying "if I leave anything out, fill it in with default values"
Bug report
Describe the bug
When performing bulk inserts using the Supabase JS client with the defaultToNull option,
the behavior of handling missing columns seems to vary based on the presence of the
column in other rows within the same payload.
To Reproduce
Payload with mixed presence of "name" column:
With
defaultToNull
: true: the first row has the "name" set to null as expected.Payload with consistently missing "name" Column:
With
defaultToNull
: true: both rows use the column's default value for the "name" column and not null.Expected behavior
Is this behavior expected when using the defaultToNull option in bulk inserts?
Specifically, should missing columns be inserted as null only if at least one row in the payload specifies the column?
System information
Thank you!
The text was updated successfully, but these errors were encountered: