|||||||||||||||||||| 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

Reply via email to