Description
Describe the bug
I store data in a bytea column and subscribe to it using Realtime. Simply storing data with
String _bytesToHex(Uint8List bytes) {
final buffer = StringBuffer();
for (final byte in bytes) {
buffer.write(byte.toRadixString(16).padLeft(2, '0'));
}
return buffer.toString();
}i
await _supabase.from('test').upsert({
'data': '\\x${_bytesToHex(Uint8List([1, 2, 3])}', /
})
// This is fine
_hexToBytes(await _supabase.from('test').upsert({
'data': '\\x${_bytesToHex(Uint8List([1, 2, 3])}', /
}).select());
leads to a consistent result in the Supabase dashboard as well as when trying to retrieving it using a SELECT.
However, when I have a subscription to this table, i.e.
_backendSubscription?.onPostgresChanges(
schema: publicSchema,
table: _backendTables[syncable],
event: PostgresChangeEvent.all,
callback: (p) {
// This is wrong... prints out a doubly hex-encoded string binary...
print(_hexToBytes(p['data']));
},
The resulting record has a double encoded field, leading me to manually patch it every time which seems wrong.
To Reproduce
Steps to reproduce the behavior:
- Start a Realtime subscription on a table with bytea column.
- Add a new record.
- Print the bytea column.
Expected behavior
A hex representation of the binary data in the table.
Actual
A hex representation of the hex representation of the binary data in the table.
Screenshots
If applicable, add screenshots to help explain your problem.
N/A
Version (please complete the following information):
├── supabase_flutter 2.9.0
│ ├── supabase 2.7.0
│ │ ├── functions_client 2.4.2
│ │ ├── gotrue 2.12.0
│ │ ├── postgrest 2.4.2
│ │ ├── realtime_client 2.5.0
│ │ ├── storage_client 2.4.0
Additional context
Add any other context about the problem here.
This may be server related and not SDK-specific.