Weird PL/Python elog output - Mailing list pgsql-hackers

From Peter Eisentraut
Subject Weird PL/Python elog output
Date
Msg-id 1256914412.525.17.camel@fsopti579.F-Secure.com
Whole thread Raw
Responses Re: Weird PL/Python elog output  (Marko Kreen <markokr@gmail.com>)
List pgsql-hackers
Calling PL/Python's elog functions exposes some curious behavior.  For
example, calling plpy.error('foo') prints

ERROR:  ('foo',)

(instead of the

ERROR:  foo

that one might have hoped for.)  This is an implementation artifact,
because those functions don't check their arguments, just take them as a
tuple, convert the tuple to a string, and a singleton tuples look like
the above as a string.

The simple way to amend this is to force these functions to take exactly
one argument print that.  If people then actually want to pass a tuple,
they should form one explicitly.  This approach might break user's
applications, however, if they have felt free to write things like
plpy.error('error code', n).  Although passing more than one argument is
not documented, so arguably it can't be expected to work.

Other ways to fix this would be: Check if the number of arguments is
one.  If yes, print that; else print the whole tuple.  Or perhaps loop
through all the arguments and explicitly print each separated by a
comma.

Comments?



pgsql-hackers by date:

Previous
From: Devrim GÜNDÜZ
Date:
Subject: Re: Syntax for partitioning
Next
From: Peter Eisentraut
Date:
Subject: Re: Patch for automated partitioning