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 |
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 |
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? |