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
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-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 Content-Type Size
kyle.vcf text/x-vcard 291 bytes

Responses

Browse pgsql-hackers by date

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

Browse pgsql-sql by date

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