Skip site navigation (1) Skip section navigation (2)

7.0beta bug (or feature)?

From: Kyle Bateman <kyle(at)actarg(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: 7.0beta bug (or feature)?
Date: 2000-03-03 18:19:25
Message-ID: 38C0022D.B30A7536@actarg.com (view raw or flat)
Thread:
Lists: pgsql-hackerspgsql-sql
This function would load OK in 6.5 but doesn't work in 7.0beta1:

The problem is in the very last function definition  where date_week is
defined with a date argument.  It simply calls the date_week function
that has a text argument, but apparently, the parser does not recognize
the fact that a cast is present and tries to look for an existing
function date_week(date) instead of date_week(text).

It looks like either there is a problem in the parser with casting, or
there is a new way of doing things I should adapt to.  Anyone know which
it is?

Here is the error message:
ERROR:  No such function 'date_week' with the specified attributes


Here is the SQL to recreate the problem:

-- Define PLPSQL Language ********************************
drop function plpgsql_call_handler ();
CREATE FUNCTION plpgsql_call_handler () RETURNS OPAQUE AS
        '/usr/local/pgsql/lib/plpgsql.so' LANGUAGE 'C';

-- This creates the plpgsql language
drop PROCEDURAL LANGUAGE 'plpgsql';
CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql'
        HANDLER plpgsql_call_handler
        LANCOMPILER 'PL/pgSQL';

-- Define PLTCL Language *********************************
drop function pltcl_call_handler ();
CREATE FUNCTION pltcl_call_handler () RETURNS OPAQUE AS
        '/usr/local/pgsql/lib/pltcl.so' LANGUAGE 'C';

-- This creates the plpgsql language
drop PROCEDURAL LANGUAGE 'pltcl';
CREATE TRUSTED PROCEDURAL LANGUAGE 'pltcl'
        HANDLER pltcl_call_handler
        LANCOMPILER 'PL/TCL';

-- Convert date in 1999-01-15 format to the month of the year (1999,35)
-- calling sequence: date_week(ISO_date)
drop function date_week(text);
create function date_week(text) returns text as '
        set spl [split $1 {-/. }]
        set year [lindex $spl 0]
        set month [string trimleft [lindex $spl 1] 0]
        set day [lindex $spl 2]
        if {$month > 0 && $month <= 31} {
            set secs [clock scan "$month/$day/$year"]
        } else {
            set secs [clock scan "$month $day, $year"]
        }
        set week [clock format $secs -format "%U"]
        if {$week == 0} {
            return "[expr $year - 1]-52"
        }
        return "$year-$week"
        ' LANGUAGE 'pltcl';

drop function date_week(date);
create function date_week(date) returns text as '
        select date_week($1::text);
        ' LANGUAGE 'sql';




Attachment: kyle.vcf
Description: text/x-vcard (291 bytes)

Responses

pgsql-hackers by date

Next:From: Henry B. HotzDate: 2000-03-03 18:58:19
Subject: Re: [HACKERS] rpms
Previous:From: Sergio A. KesslerDate: 2000-03-03 12:39:32
Subject: Re: [HACKERS] rpms

pgsql-sql by date

Next:From: Kyle BatemanDate: 2000-03-03 20:45:07
Subject: Strange error message with 7.0beta1
Previous:From: Emils KlotinsDate: 2000-03-03 08:51:46
Subject: Re: [SQL] date_part - multiple values in format?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group