Re: How to trap invalid enum input exception?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Leon Starr <leon_starr(at)modelint(dot)com>
Cc: pgsql-novice(at)postgresql(dot)org
Subject: Re: How to trap invalid enum input exception?
Date: 2010-08-16 17:40:02
Message-ID: 18006.1281980402@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

Leon Starr <leon_starr(at)modelint(dot)com> writes:
> I've trimmed my example down to the bare minimum in hopes of solving the problem myself, but no luck. Here's the exact code and console session:

> create type side as enum ('right', 'left');

> create or replace function testinput(
> p_units_align side
> ) returns void as
> ....

> contracts=# select * from testinput('blue');
> ERROR: 22P02: invalid input value for enum side: "blue"
> LINE 1: select * from testinput('blue');
> ^
> LOCATION: enum_in, enum.c:57

Well, the point here is that the system has to convert 'blue' to a value
of type "side" before it ever invokes your function. So there's no hope
of trapping that failure inside the function.

If you really want to do things this way, you can declare the function
as taking a text string, and cast from text to "side" within the
function's exception-trapping block.

regards, tom lane

In response to

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message Pg Novice 2010-08-16 17:42:33 Creating a second database on the same computer
Previous Message Leon Starr 2010-08-16 17:13:33 Re: How to trap invalid enum input exception?