BUG #8168: duplicated function signature

Started by Vladimir Jovanovicalmost 13 years ago6 messagesbugs
Jump to latest
#1Vladimir Jovanovic
vladimir.jovanovic@aparteko.com

The following bug has been logged on the website:

Bug reference: 8168
Logged by: Vladimir Jovanović
Email address: vladimir.jovanovic@aparteko.com
PostgreSQL version: 8.4.11
Operating system: PostgreSQL 8.4.11 on x86_64-redhat-linux-gnu, com
Description:

Hi,

I noticed that I have two functions with the same signature.

sp_get_league_prediction(IN _id bigint, IN _rank integer, IN
_log_in_expectence double precision, IN _feathers_gained integer, IN
_tokens_all integer, IN _tokens_active integer, IN _score integer)

sp_get_league_prediction(_id bigint, _rank integer, _log_in_expectence
double precision, _feathers_gained integer, _tokens_all integer,
_tokens_active integer, _score integer)

Actually, I created first one with intention, but the second function
appeared when I executed the following code when I wanted to replace the
function:

CREATE OR REPLACE FUNCTION sp_get_league_prediction(IN _id bigint, IN _rank
integer, IN _log_in_expectence double precision, IN _feathers_gained
integer, IN _tokens_all integer, IN _tokens_active integer, IN _score
integer)
RETURNS SETOF record AS
$BODY$
DECLARE
BEGIN

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#2Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Vladimir Jovanovic (#1)
Re: BUG #8168: duplicated function signature

On 17.05.2013 13:31, vladimir.jovanovic@aparteko.com wrote:

I noticed that I have two functions with the same signature.

sp_get_league_prediction(IN _id bigint, IN _rank integer, IN
_log_in_expectence double precision, IN _feathers_gained integer, IN
_tokens_all integer, IN _tokens_active integer, IN _score integer)

sp_get_league_prediction(_id bigint, _rank integer, _log_in_expectence
double precision, _feathers_gained integer, _tokens_all integer,
_tokens_active integer, _score integer)

In addition to higher-level checks, there is a unique index in the
pg_proc catalog that should not let that happen, so to be honest, I find
that hard to believe. Are you 100% they have the same signature? Are
they in different schemas, perhaps? In psql, what does "\df
sp_get_league_prediction" return?

- Heikki

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Heikki Linnakangas (#2)
Re: BUG #8168: duplicated function signature

Heikki Linnakangas <hlinnakangas@vmware.com> writes:

On 17.05.2013 13:31, vladimir.jovanovic@aparteko.com wrote:

I noticed that I have two functions with the same signature.

sp_get_league_prediction(IN _id bigint, IN _rank integer, IN
_log_in_expectence double precision, IN _feathers_gained integer, IN
_tokens_all integer, IN _tokens_active integer, IN _score integer)

sp_get_league_prediction(_id bigint, _rank integer, _log_in_expectence
double precision, _feathers_gained integer, _tokens_all integer,
_tokens_active integer, _score integer)

In addition to higher-level checks, there is a unique index in the
pg_proc catalog that should not let that happen, so to be honest, I find
that hard to believe. Are you 100% they have the same signature? Are
they in different schemas, perhaps? In psql, what does "\df
sp_get_league_prediction" return?

If they are in different schemas, you'd probably need
\df *.sp_get_league_prediction
to see both.

regards, tom lane

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#4Vladimir Jovanovic
vladimir.jovanovic@aparteko.com
In reply to: Heikki Linnakangas (#2)
Re: BUG #8168: duplicated function signature

Hi Heikki,

Here you can find attached .csv semicolon separated made by :"SELECT * FROM
pg_proc WHERE proname LIKE 'sp_get_league_prediction".
"\df sp_get_league_prediction" is also attached.

Both functions are returning the same setof record:

---------------------------
CREATE OR REPLACE FUNCTION sp_get_league_prediction(IN _id bigint, IN _rank
integer, IN _log_in_expectence double precision, IN _feathers_gained
integer, IN _tokens_all integer, IN _tokens_active integer, IN _score
integer)
RETURNS SETOF record AS
$BODY$
...
---------------------------
CREATE OR REPLACE FUNCTION sp_get_league_prediction(_id bigint, _rank
integer, _log_in_expectence double precision, _feathers_gained integer,
_tokens_all integer, _tokens_active integer, _score integer)
RETURNS SETOF record AS
$BODY$
...

On Fri, May 17, 2013 at 4:11 PM, Heikki Linnakangas <hlinnakangas@vmware.com

wrote:

On 17.05.2013 13:31, vladimir.jovanovic@aparteko.**com<vladimir.jovanovic@aparteko.com>wrote:

I noticed that I have two functions with the same signature.

sp_get_league_prediction(IN _id bigint, IN _rank integer, IN
_log_in_expectence double precision, IN _feathers_gained integer, IN
_tokens_all integer, IN _tokens_active integer, IN _score integer)

sp_get_league_prediction(_id bigint, _rank integer, _log_in_expectence
double precision, _feathers_gained integer, _tokens_all integer,
_tokens_active integer, _score integer)

In addition to higher-level checks, there is a unique index in the pg_proc
catalog that should not let that happen, so to be honest, I find that hard
to believe. Are you 100% they have the same signature? Are they in
different schemas, perhaps? In psql, what does "\df
sp_get_league_prediction" return?

- Heikki

--

*Vladimir Jovanović* <http://www.aparteko.com/&gt;

http://www.aparteko.com

CELL: +381 64 211 79 79

OFFICE: + 381 11 314 86 38

E-MAIL: vladimir.jovanovic@aparteko.com

[image: Description: cid:image001.png@01CD3D1C.7D977930]

setting standards in social gaming development

Attachments:

image001.pngimage/png; name=image001.pngDownload
df sp_league_prediction.txttext/plain; charset=US-ASCII; name="df sp_league_prediction.txt"Download
#8186.csvtext/csv; charset=US-ASCII; name=#8186.csvDownload
#5Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Vladimir Jovanovic (#4)
Re: BUG #8168: duplicated function signature

On 17.05.2013 18:53, Vladimir Jovanovic wrote:

Hi Heikki,

Here you can find attached .csv semicolon separated made by :"SELECT * FROM
pg_proc WHERE proname LIKE 'sp_get_league_prediction".
"\df sp_get_league_prediction" is also attached.

Both functions are returning the same setof record:

---------------------------
CREATE OR REPLACE FUNCTION sp_get_league_prediction(IN _id bigint, IN _rank
integer, IN _log_in_expectence double precision, IN _feathers_gained
integer, IN _tokens_all integer, IN _tokens_active integer, IN _score
integer)
RETURNS SETOF record AS
$BODY$
...
---------------------------
CREATE OR REPLACE FUNCTION sp_get_league_prediction(_id bigint, _rank
integer, _log_in_expectence double precision, _feathers_gained integer,
_tokens_all integer, _tokens_active integer, _score integer)
RETURNS SETOF record AS
$BODY$
...

No. One of the functions was created with something like above. But the
other one takes no arguments, and *returns* a table with those columns.
Try "\ef sp_get_league_prediction()" to get a CREATE OR REPLACE FUNCTION
statement to recreate the latter; you will see that it looks something
like this:

CREATE OR REPLACE FUNCTION public.sp_get_league_prediction()
RETURNS TABLE(id bigint, _rank integer, _log_in_expectence double
precision, _feathers_gained integer, _tokens_all integer, _tokens_active
integer, _score integer)
AS ...

- Heikki

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#6Vladimir Jovanovic
vladimir.jovanovic@aparteko.com
In reply to: Heikki Linnakangas (#5)
Re: BUG #8168: duplicated function signature

It looks I knocked on the wrong address. This is obviously PgAdmin bug
which obviously not correctly showing procedures (as I sent previously) and
made me waste your time, sorry.

On Fri, May 17, 2013 at 6:10 PM, Heikki Linnakangas <hlinnakangas@vmware.com

wrote:

On 17.05.2013 18:53, Vladimir Jovanovic wrote:

Hi Heikki,

Here you can find attached .csv semicolon separated made by :"SELECT *
FROM
pg_proc WHERE proname LIKE 'sp_get_league_prediction".
"\df sp_get_league_prediction" is also attached.

Both functions are returning the same setof record:

---------------------------
CREATE OR REPLACE FUNCTION sp_get_league_prediction(IN _id bigint, IN
_rank
integer, IN _log_in_expectence double precision, IN _feathers_gained
integer, IN _tokens_all integer, IN _tokens_active integer, IN _score
integer)
RETURNS SETOF record AS
$BODY$
...
---------------------------
CREATE OR REPLACE FUNCTION sp_get_league_prediction(_id bigint, _rank
integer, _log_in_expectence double precision, _feathers_gained integer,
_tokens_all integer, _tokens_active integer, _score integer)
RETURNS SETOF record AS
$BODY$
...

No. One of the functions was created with something like above. But the
other one takes no arguments, and *returns* a table with those columns. Try
"\ef sp_get_league_prediction()" to get a CREATE OR REPLACE FUNCTION
statement to recreate the latter; you will see that it looks something like
this:

CREATE OR REPLACE FUNCTION public.sp_get_league_**prediction()
RETURNS TABLE(id bigint, _rank integer, _log_in_expectence double
precision, _feathers_gained integer, _tokens_all integer, _tokens_active
integer, _score integer)
AS ...

- Heikki

--

*Vladimir Jovanović* <http://www.aparteko.com/&gt;

http://www.aparteko.com

CELL: +381 64 211 79 79

OFFICE: + 381 11 314 86 38

E-MAIL: vladimir.jovanovic@aparteko.com

[image: Description: cid:image001.png@01CD3D1C.7D977930]

setting standards in social gaming development

Attachments:

image001.pngimage/png; name=image001.pngDownload