It seems all fixes are done. I tested the patch and regression tests passed.

On 27.01.2016 20:58, Pavel Stehule wrote:


     > --- 1681,1687 ----
     >    * ----------
     >    */
     >   PLpgSQL_type *
     > ! plpgsql_parse_wordtype(char *ident, int reftype_mode)
     >   {
     >       PLpgSQL_type *dtype;
     >       PLpgSQL_nsitem *nse;

    Use the typedef'ed enum, as above.

     > --- 1699,1721 ----
     >               switch (nse->itemtype)
     >               {
     >                       case PLPGSQL_NSTYPE_VAR:
     > !                     {
     > !                             dtype = ((PLpgSQL_var *)
    (plpgsql_Datums[nse->itemno]))->datatype;
     > !                             return derive_type(dtype,
    reftype_mode);
     > !                     }
     >
     > !                     case PLPGSQL_NSTYPE_ROW:
     > !                     {
     > !                             dtype = ((PLpgSQL_row *)
    (plpgsql_Datums[nse->itemno]))->datatype;
     > !                             return derive_type(dtype,
    reftype_mode);
     > !                     }
     >
     > +                     /*
     > +                      * XXX perhaps allow REC here? Probably it
    has not any sense, because
     > +                      * in this moment, because PLpgSQL doesn't
    support rec parameters, so
     > +                      * there should not be any rec polymorphic
    parameter, and any work can
     > +                      * be done inside function.
     > +                      */

    I think you should remove from the "?" onwards in that comment, i.e.
    just keep what was already in the original comment (minus the ROW)


I tried to fix it, not sure if understood well.

I think here Alvaro means that you should keep original comment without the ROW. Like this:

/* XXX perhaps allow REC here? */


     > *************** extern bool plpgsql_parse_dblword(char *
     > *** 961,968 ****
     >                                         PLwdatum *wdatum, PLcword
    *cword);
     >   extern bool plpgsql_parse_tripword(char *word1, char *word2,
    char *word3,
     >                                          PLwdatum *wdatum,
    PLcword *cword);
     > ! extern PLpgSQL_type *plpgsql_parse_wordtype(char *ident);
     > ! extern PLpgSQL_type *plpgsql_parse_cwordtype(List *idents);
     >   extern PLpgSQL_type *plpgsql_parse_wordrowtype(char *ident);
     >   extern PLpgSQL_type *plpgsql_parse_cwordrowtype(List *idents);
     >   extern PLpgSQL_type *plpgsql_build_datatype(Oid typeOid, int32
    typmod,
     > --- 973,980 ----
     >                                         PLwdatum *wdatum, PLcword
    *cword);
     >   extern bool plpgsql_parse_tripword(char *word1, char *word2,
    char *word3,
     >                                          PLwdatum *wdatum,
    PLcword *cword);
     > ! extern PLpgSQL_type *plpgsql_parse_wordtype(char *ident, int
    reftype_mode);
     > ! extern PLpgSQL_type *plpgsql_parse_cwordtype(List *idents, int
    reftype_mode);
     >   extern PLpgSQL_type *plpgsql_parse_wordrowtype(char *ident);
     >   extern PLpgSQL_type *plpgsql_parse_cwordrowtype(List *idents);
     >   extern PLpgSQL_type *plpgsql_build_datatype(Oid typeOid, int32
    typmod,

    By the way, these functions are misnamed after this patch.  They are
    called "wordtype" and "cwordtype" originally because they accept
    "word%TYPE" and "compositeword%TYPE", but after the patch they not only
    accept TYPE at the right of the percent sign but also ELEMENTTYPE and
    ARRAYTYPE.  Not sure that this is something we want to be too strict
    about.


Understand - used name ***reftype instead ****type

I am not sure, but it seems that new names is a little worse. I think original names are good too. They accept a word and return the PLpgSQL_type structure.


Thank you for your comment

Attached updated patch

Regards

Pavel



    --
    Álvaro Herrera http://www.2ndQuadrant.com/
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



I noticed a little typo in the comment in the derive_type():
/* Return base_type, when it is a array already */

should be:
/* Return base_type, when it is an array already */

--
Artur Zakirov
Postgres Professional: http://www.postgrespro.com
Russian Postgres Company


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

Reply via email to