supabase-py icon indicating copy to clipboard operation
supabase-py copied to clipboard

Realtime RLS Broadcasts Errors

Open w3b6x9 opened this issue 3 years ago • 0 comments

Realtime RLS will be broadcasting database changes with errors so that clients can capture what went wrong when listening to database changes.

Please see here for the current error states: https://github.com/supabase/walrus/tree/generic_claims#error-states.

Realtime RLS will broadcast errors as either null (no errors) or an array of strings (at least one error present).

Here are two example Realtime RLS JSON payloads with errors:

{
      "columns": [{"name": "id", "type": "int8"}, {"name": "details", "type": "text"}],
      "commit_timestamp": "2021-12-28T23:59:38.984538+00:00",
      "schema": "public",
      "table": "todos",
      "type": "UPDATE",
      "old_record": {"details": "previous test", "id": 12, "user_id": 1},
      "record": {"details": "test...", "id": 12, "user_id": 1},
      "errors": ["Error 413: Payload Too Large"]
}
{
      "columns": [],
      "commit_timestamp": null,
      "schema": "public",
      "table": "todos",
      "type": "UPDATE",
      "old_record": {},
      "record": {},
      "errors": ["Error.."]
}

Notice:

  • columns will always be an array but can be empty
  • commit_timestamp will either be a string or null
  • old_record/record will always be an object but can be empty

w3b6x9 avatar Dec 29 '21 00:12 w3b6x9