public inbox for [email protected]  
help / color / mirror / Atom feed
From: Andrej Antonov <[email protected]>
To: [email protected]
Subject: Re: patch: fix to use ``pg_get_functiondef()``
Date: Tue, 08 Dec 2015 18:27:21 +0300
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
List-Unsubscribe:  <mailto:[email protected]?body=unsub%20pgadmin-hackers>

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


<<< Dmitriy [email protected] >>>


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!

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


-- 
Sent via pgadmin-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers



view thread (6+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected]
  Subject: Re: patch: fix to use ``pg_get_functiondef()``
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox