summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorDean Rasheed2025-03-07 09:31:18 +0000
committerDean Rasheed2025-03-07 09:31:18 +0000
commit6da469badaffec32f8a804181cca279561467378 (patch)
tree7d0ab3f88e0eec27a9377e53901a720d8b0e1403 /doc
parentd611f8b1587b8f30caa7c0da99ae5d28e914d54f (diff)
Allow casting between bytea and integer types.
This allows smallint, integer, and bigint values to be cast to and from bytea. The bytea value is the two's complement representation of the integer, with the most significant byte first. For example: 1234::bytea -> \x000004d2 (-1234)::bytea -> \xfffffb2e Author: Aleksander Alekseev <[email protected]> Reviewed-by: Joel Jacobson <[email protected]> Reviewed-by: Yugo Nagata <[email protected]> Reviewed-by: Peter Eisentraut <[email protected]> Reviewed-by: Michael Paquier <[email protected]> Reviewed-by: Dean Rasheed <[email protected]> Discussion: https://postgr.es/m/CAJ7c6TPtOp6%2BkFX5QX3fH1SVr7v65uHr-7yEJ%3DGMGQi5uhGtcA%40mail.gmail.com
Diffstat (limited to 'doc')
-rw-r--r--doc/src/sgml/func.sgml17
1 files changed, 17 insertions, 0 deletions
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 4d6061a8458..51dd8ad6571 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -5036,6 +5036,23 @@ SELECT format('Testing %3$s, %2$s, %s', 'one', 'two', 'three');
</para>
<para>
+ In addition, it is possible to cast integral values to and from type
+ <type>bytea</type>. Casting an integer to <type>bytea</type> produces
+ 2, 4, or 8 bytes, depending on the width of the integer type. The result
+ is the two's complement representation of the integer, with the most
+ significant byte first. Some examples:
+<programlisting>
+1234::smallint::bytea <lineannotation>\x04d2</lineannotation>
+cast(1234 as bytea) <lineannotation>\x000004d2</lineannotation>
+cast(-1234 as bytea) <lineannotation>\xfffffb2e</lineannotation>
+'\x8000'::bytea::smallint <lineannotation>-32768</lineannotation>
+'\x8000'::bytea::integer <lineannotation>32768</lineannotation>
+</programlisting>
+ Casting a <type>bytea</type> to an integer will raise an error if the
+ length of the <type>bytea</type> exceeds the width of the integer type.
+ </para>
+
+ <para>
See also the aggregate function <function>string_agg</function> in
<xref linkend="functions-aggregate"/> and the large object functions
in <xref linkend="lo-funcs"/>.