public inbox for [email protected]  
help / color / mirror / Atom feed
From: Jan Behrens <[email protected]>
To: [email protected]
Subject: Allowed to return possibly TOASTed datums?
Date: Sat, 14 Dec 2024 14:28:27 +0100
Message-ID: <[email protected]> (raw)

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






view thread (4+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: Allowed to return possibly TOASTed datums?
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox