I have created a custom type called my_numeric, which is roughly the same as the existing numeric type. I have declared
in,out, typmod_in, and typmod_out functions. I create a table like:
CREATE TABLE test (col1 my_numeric(6, 3));
And then do \d test and can see that col1 is declared as (6, 3), which I think confirms that my typmod_in and
typmod_outfunction are correct.
But when I do:
INSERT INTO test VALUES ('12.34');
It behaves as though the typmod parameter to my in function (PG_GETARG_INT32(2)) is passed in as -1. The docs
(http://www.postgresql.org/docs/9.3/static/sql-createtype.html)says of the arguments that "the third is the typmod of
thedestination column, if known (-1 will be passed if not).".
Am I doing something wrong? Don't I need to know the typmod of the destination column so I can confirm that the format
ofthe string being passed in conforms to the type modifier specified (eg so I can reject '1234.5678' for col1 with an
overflowerror)?
Thanks
James