Hi, I would like to implement a function that simply returns its argument (for the unary plus operator of a custum data type). Is it allowed to use the following function, assuming the data type is TOASTable? PG_FUNCTION_INFO_V1(mytype_pos); Datum mytype_pos(PG_FUNCTION_ARGS) { PG_RETURN_DATUM(GETARG_DATUM(0)); } CREATE FUNCTION "mytype_pos"("mytype") RETURNS "mytype" STRICT IMMUTABLE LANGUAGE c AS 'mylib.so', 'mytype_pos'; CREATE OPERATOR + ( rightarg = "mytype", function = "mytype_pos" ); Or do I need to always return a DETOASTed value? In addition to the answer, I would like to know where I can find such information. It seems to be difficult (for me) to find it in the source. Is there any other documentation I can use, or any hints on WHERE in the source I find more information about when to DETOAST and when not? Also: Is my approach an idiomatic way to implement unary plus? Are there pre-existing functions for that? Many thanks in advance for your help and kind regards Jan Behrens