Values to be inserted into a table are converted to the destination
column's data type according to the
following steps.
Example 10-6. character Storage Type Conversion
For a target column declared as character(20) the following statement
ensures that the stored value is sized correctly:
CREATE TABLE vv (v character(20));
INSERT INTO vv SELECT 'abc' || 'def';
SELECT v, length(v) FROM vv;
v | length
----------------------+--------
abcdef | 20
(1 row)What has really happened here is that the two unknown literals are resolved
to text by default, allowing the || operator
to be resolved as text concatenation. Then the text
result of the operator is converted to bpchar ("blank-padded
char", the internal name of the character data type) to match the target
column type. (Since the types text and
bpchar are binary-compatible, this conversion does
not insert any real function call.) Finally, the sizing function
bpchar(bpchar, integer) is found in the system catalog
and applied to the operator's result and the stored column length. This
type-specific function performs the required length check and addition of
padding spaces.