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!
--
Андрей Антонов,
инженер-программист отдела информационных технологий и программирования,
компания «Импульс М»
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 |