Re: patch: fix to use ``pg_get_functiondef()``

From: Andrej Antonov <antonov(at)imp-m(dot)ru>
To: pgadmin-hackers(at)postgresql(dot)org
Subject: Re: patch: fix to use ``pg_get_functiondef()``
Date: 2015-12-08 15:27:21
Message-ID: 4c8aebe7570a546854c71de8ed0e6ba0@imp-m.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

|||||||||||||||||||| COMMENT-1 ON GITHUB [BEGIN] ||||||||||||||||||||

<<< Dmitriy olshevskiy87(at)bk(dot)ru >>>

BTW

> pg_get_functiondef() -- less wrong

what's wrong with this function? :)

|||||||||||||||||||| COMMENT-2 ON GITHUB [BEGIN] ||||||||||||||||||||

ok. a few examples:

example "A"
===========

write function:

CREATE FUNCTION test123()
RETURNS TABLE(my_col text)
LANGUAGE plpgsql
AS $xxx$
BEGIN

my_col := 'abc';
RETURN NEXT;

my_col := 'def';
RETURN NEXT;

END;
$xxx$;

--SELECT * FROM test123();

pgAdmin3 transforming it to function:

-- Function: test123()

-- DROP FUNCTION test123();

CREATE OR REPLACE FUNCTION test123()
RETURNS SETOF text AS
$BODY$
BEGIN

my_col := 'abc';
RETURN NEXT;

my_col := 'def';
RETURN NEXT;

END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION test123()
OWNER TO postgres;

and of course with error:

ERROR: "my_col" is not a known variable
LINE 10: my_col := 'abc';
^

********** Error **********

ERROR: "my_col" is not a known variable
SQL state: 42601
Character: 129

example "B"
===========

CREATE FUNCTION test234(arr text[] DEFAULT ARRAY['sss', 'ddd'])
RETURNS SETOF text
LANGUAGE plpgsql
AS $xxx$
DECLARE
r record;
BEGIN

FOR r IN SELECT UNNEST(arr) LOOP
RETURN NEXT r.unnest;
END LOOP;

END;
$xxx$;

--SELECT * FROM test234();

pgAdmin3 transforming it to function:

-- Function: test234(text[])

-- DROP FUNCTION test234(text[]);

CREATE OR REPLACE FUNCTION test234(arr text[] DEFAULT
ARRAY['sss'::text)
RETURNS SETOF text AS
$BODY$
DECLARE
r record;
BEGIN

FOR r IN SELECT UNNEST(arr) LOOP
RETURN NEXT r.unnest;
END LOOP;

END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION test234(text[])
OWNER TO postgres;

...with error:

ERROR: syntax error at or near ")"
LINE 5: ...PLACE FUNCTION test234(arr text[] DEFAULT
ARRAY['sss'::text)

^
********** Error **********

ERROR: syntax error at or near ")"
SQL state: 42601
Character: 137

other minor discomfort
======================

words -- ``VOLATILE``, ``COST 100``, ``ROWS 1000`` -- are extra
(unnecessary, redundant).

|||||||||||||||||||| COMMENT-3 ON GITHUB [BEGIN] ||||||||||||||||||||

but this sql code was generated by pgadmin, isn't it? I thought you are
talking about native postgres function pg_get_functiondef() )

|||||||||||||||||||| COMMENT-4 ON GITHUB [BEGIN] ||||||||||||||||||||

> but this sql code was generated by pgadmin, isn't it?
> I thought you are talking about native postgres function
> pg_get_functiondef()

sorry for my ambiguity message..

yes. my examples -- about pgadmin-generation (without
``pg_get_functiondef()`` )

I wanted to say: I do not know about bad sides of
``pg_get_functiondef()`` , but if they exists -- I think them less then
bad sides of original-pgadmin-generation .

|||||||||||||||||||| END OF COMMENTS ON GITHUB ||||||||||||||||||||

Andrej Antonov писал 2015-12-08 11:50:
> patch: fix to use ``pg_get_functiondef()`` [see attachment file]
>
> it is copy of pull-request https://github.com/postgres/pgadmin3/pull/12
>
> thank you!

--
Андрей Антонов,
инженер-программист отдела информационных технологий и программирования,
компания «Импульс М»

In response to

Browse pgadmin-hackers by date

  From Date Subject
Next Message Dmitriy Olshevskiy 2015-12-08 17:11:43 patch: fix errors after libssh2 merge
Previous Message Ashesh Vashi 2015-12-08 13:15:41 Re: [pgadmin-support] SSH tunnel key exchange methods