Final proposal for resolving C-vs-newC issue

Started by Tom Laneabout 25 years ago4 messages
#1Tom Lane
tgl@sss.pgh.pa.us

If you care about the nitty-gritty details, see
http://www.postgresql.org/cgi/cvsweb.cgi/pgsql/src/backend/utils/fmgr/README
particularly the final section "Telling the difference between old- and
new-style functions".

regards, tom lane

#2Philip Warner
pjw@rhyme.com.au
In reply to: Tom Lane (#1)
Re: Final proposal for resolving C-vs-newC issue

At 17:16 19/11/00 -0500, Tom Lane wrote:

If you care about the nitty-gritty details, see
http://www.postgresql.org/cgi/cvsweb.cgi/pgsql/src/backend/utils/fmgr/README
particularly the final section "Telling the difference between old- and
new-style functions".

There is no mention of the handling of toasted values for old C functions.
Does this mean that it is possible for crashes to occur after a dump/load +
updates?

Since I'd guess we will keep the old C style interface in perpetuity, since
it allows calling of arbitrary object libraries, I think it would be very
sensible to detoast all parameters prior to calling a 'raw'(?) function.
Perhaps, if this is too expensive, we can add a new attribute to prevent
detoasting if necessary, perhaps 'eatstoast' ;-).

----------------------------------------------------------------
Philip Warner | __---_____
Albatross Consulting Pty. Ltd. |----/ - \
(A.B.N. 75 008 659 498) | /(@) ______---_
Tel: (+61) 0500 83 82 81 | _________ \
Fax: (+61) 0500 83 82 82 | ___________ |
Http://www.rhyme.com.au | / \|
| --________--
PGP key available upon request, | /
and from pgp5.ai.mit.edu:11371 |/

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Philip Warner (#2)
Re: Final proposal for resolving C-vs-newC issue

Philip Warner <pjw@rhyme.com.au> writes:

At 17:16 19/11/00 -0500, Tom Lane wrote:

http://www.postgresql.org/cgi/cvsweb.cgi/pgsql/src/backend/utils/fmgr/README

There is no mention of the handling of toasted values for old C functions.

Did you not read to the end?

: To allow old-style dynamic functions to work safely on toastable datatypes,
: the handler for old-style functions will automatically detoast toastable
: arguments before passing them to the old-style function. A new-style
: function is expected to take care of toasted arguments by using the
: standard argument access macros defined above.

regards, tom lane

#4Philip Warner
pjw@rhyme.com.au
In reply to: Tom Lane (#3)
Re: Final proposal for resolving C-vs-newC issue

At 21:31 19/11/00 -0500, Tom Lane wrote:

Philip Warner <pjw@rhyme.com.au> writes:

At 17:16 19/11/00 -0500, Tom Lane wrote:

http://www.postgresql.org/cgi/cvsweb.cgi/pgsql/src/backend/utils/fmgr/README

There is no mention of the handling of toasted values for old C functions.

Did you not read to the end?

'fraid not...8-(. Thanks.

: To allow old-style dynamic functions to work safely on toastable datatypes,
: the handler for old-style functions will automatically detoast toastable
: arguments before passing them to the old-style function. A new-style
: function is expected to take care of toasted arguments by using the
: standard argument access macros defined above.

----------------------------------------------------------------
Philip Warner | __---_____
Albatross Consulting Pty. Ltd. |----/ - \
(A.B.N. 75 008 659 498) | /(@) ______---_
Tel: (+61) 0500 83 82 81 | _________ \
Fax: (+61) 0500 83 82 82 | ___________ |
Http://www.rhyme.com.au | / \|
| --________--
PGP key available upon request, | /
and from pgp5.ai.mit.edu:11371 |/