The BYTES data type stores binary strings of variable length.
Aliases
In CockroachDB, the following are aliases for BYTES:
BYTEABLOB
Syntax
To express a byte array constant, see the section on
byte array literals for more
details. For example, the following three are equivalent literals for the same
byte array: b'abc', b'\141\142\143', b'\x61\x62\x63'.
In addition to this syntax, CockroachDB also supports using
string literals, including the
syntax '...', e'...' and x'....' in contexts where a byte array
is otherwise expected.
Size
The size of a BYTES value is variable, but it's recommended to keep values under 64 kilobytes to ensure performance. Above that threshold, write amplification and other considerations may cause significant performance degradation.
Example
> CREATE TABLE bytes (a INT PRIMARY KEY, b BYTES);
> -- explicitly typed BYTES literals
> INSERT INTO bytes VALUES (1, b'\141\142\143'), (2, b'\x61\x62\x63'), (3, b'\141\x62\c');
> -- string literal implicitly typed as BYTES
> INSERT INTO bytes VALUES (4, 'abc');
> SELECT * FROM bytes;
+---+-----+
| a | b |
+---+-----+
| 1 | abc |
| 2 | abc |
| 3 | abc |
| 4 | abc |
+---+-----+
(4 rows)
Supported Conversions
BYTES values can be
cast explicitly to
STRING. The conversion verifies that the byte array contains only
valid UTF-8 byte sequences; an error is reported otherwise.
STRING values can be cast explicitly to BYTES. This conversion
always succeeds.