error messages VERY misleading...! - Mailing list pgsql-general

From will trillich
Subject error messages VERY misleading...!
Date
Msg-id 20010321044858.A28329@mail.serensoft.com
Whole thread Raw
Responses Re: error messages VERY misleading...!  (Stephan Szabo <sszabo@megazone23.bigpanda.com>)
List pgsql-general
with postgresql 7.0.3 (debian/potato)--

<bitchmode attitude=on volume=really-loud>

CREATE DATABASE testorama;

\c testorama

CREATE FUNCTION int(float8) RETURNS int4 AS '
    SELECT to_number(to_char( $1 , ''9999999999'') , ''9999999999'')::int4;
' LANGUAGE 'sql';

CREATE FUNCTION showage(datetime) RETURNS varchar AS '
DECLARE
    val int4;
BEGIN
    -- minutes
    val := int( date_part(''epoch'',current_timestamp - $1) / 60 ) ;
    IF val < 60 THEN
        val := val / 5; -- round down to 5-minute chunks
        IF val < 1
            val := 1;
        END IF;
        return (val * 5) || '' min'';
    END IF;
    -- other time chunks follow
END;
' LANGUAGE 'plpgsql';


    do you see the problem? i sure didn't, not for SEVEN HOURS
    (thankyouverymuch). here's why:


psql=> SELECT showage( CURRENT_TIMESTAMP );
ERROR:  parser: parse error at or near "$2"


now WHO in their right mind would expect anyone to interpret
'parse error at $2' as '"IF" needs a "THEN", bubba; where's the
"THEN", hmm?'?

what $2? there's barely a $1! $2? WTF?

AAUGH!

</bitchmode>

now, i know parsing for compilers/interpreters is a daunting
task, and meaningful error messages aren't easy to generate...
in postgresql plpgperl, you're lucky to get a relative line
number. but i gotta admit, 'near $2' takes the cake! WOW.

--
will@serensoft.com
http://newbieDoc.sourceforge.net/ -- we need your brain!
http://www.dontUthink.com/ -- your brain needs us!

pgsql-general by date:

Previous
From: Tim Frank
Date:
Subject: Re: Really Dumb Question...(Dumping db)
Next
From: Grzegorz Mucha
Date:
Subject: Problems with LATIN2