'create or replace function' no longer allows parameters

Поиск
Список
Период
Сортировка
От David Gardner
Тема 'create or replace function' no longer allows parameters
Дата
Msg-id 4C103808.9030502@creatureshop.com
обсуждение исходный текст
Ответы Re: 'create or replace function' no longer allows parameters  (Robert Haas <robertmhaas@gmail.com>)
Re: 'create or replace function' no longer allows parameters  (Alvaro Herrera <alvherre@commandprompt.com>)
Список pgsql-hackers
In 8.4.4 I used to be able to rename input parameters via "create or 
replace function".
In 9.0 beta2  this no longer is allowed, and I get a descriptive message 
informing me to use
drop function instead, but I couldn't find this documented anywhere as a 
change between 8.4 and 9.0.
--------------
test=# CREATE FUNCTION test_plpgsql(IN a integer) RETURNS integer AS
test-# $BODY$
test$# BEGIN
test$#     RETURN $1;
test$# END;
test$# $BODY$
test-# LANGUAGE 'plpgsql' STABLE;
CREATE FUNCTION
test=# SELECT * FROM  test_plpgsql(34); test_plpgsql
--------------           34
(1 row)

test=# CREATE OR REPLACE FUNCTION test_plpgsql(IN b integer) RETURNS 
integer AS
$BODY$
BEGIN    RETURN $1;
END;
$BODY$
LANGUAGE 'plpgsql' STABLE;
CREATE FUNCTION
test=# SELECT * FROM  test_plpgsql(34); test_plpgsql
--------------           34
(1 row)

test=# \df+ test_plpgsql                                                             List of 
functions Schema |     Name     | Result data type | Argument data types |  
Type  | Volatility |  Owner   | Language |  Source code   | Description

--------+--------------+------------------+---------------------+--------+------------+----------+----------+----------------+-------------
public| test_plpgsql | integer          | b integer           | 
 
normal | stable     | dgardner | plpgsql  |                |
                                               : BEGIN
                                         :     RETURN $1;
                                            : END;
                                     :
 
(1 row)
-----------------------

psql (9.0beta2)
Type "help" for help.

test=# CREATE FUNCTION test_plpgsql(IN a integer) RETURNS integer AS
test-# $BODY$
test$# BEGIN
test$#     RETURN $1;
test$# END;
test$# $BODY$
test-# LANGUAGE 'plpgsql' STABLE;
CREATE FUNCTION
test=# CREATE OR REPLACE FUNCTION test_plpgsql(IN b integer) RETURNS 
integer AS
test-# $BODY$
test$# BEGIN
test$#     RETURN $1;
test$# END;
test$# $BODY$
test-# LANGUAGE 'plpgsql' STABLE;
ERROR:  cannot change name of input parameter "a"
HINT:  Use DROP FUNCTION first.

-- 
David Gardner
Pipeline Tools Programmer
Jim Henson Creature Shop
dgardner@creatureshop.com




В списке pgsql-hackers по дате отправления:

Предыдущее
От: Takahiro Itagaki
Дата:
Сообщение: Re: failover vs. read only queries
Следующее
От: Robert Haas
Дата:
Сообщение: Re: 'create or replace function' no longer allows parameters