Channy's blog

//Description: Pre-modify-pgcode

//Create Date: 2020-02-12 17:46:30

//Author: channy

[toc]

Pre-modify-pgcode

channy@channy-VirtualBox:~/Documents/gitCode/postgresql-12.1/src$ git diff backend/commands/functioncmds.c
diff --git a/backend/commands/functioncmds.c b/backend/commands/functioncmds.c
index 40f1f9a..6f35fc8 100644
--- a/backend/commands/functioncmds.c
+++ b/backend/commands/functioncmds.c
@@ -304,10 +304,10 @@ interpret_function_parameter_list(ParseState *pstate,
                /* handle output parameters */
                if (fp->mode != FUNC_PARAM_IN && fp->mode != FUNC_PARAM_VARIADIC)
                {
-                       if (objtype == OBJECT_PROCEDURE)
-                               *requiredResultType = RECORDOID;
-                       else if (outCount == 0) /* save first output param's type */
-                               *requiredResultType = toid;
+                       //if (objtype == OBJECT_PROCEDURE)
+                       //      *requiredResultType = RECORDOID;
+                       //else if (outCount == 0) /* save first output param's type */
+                       //      *requiredResultType = toid;
                        outCount++;
                }
 
@@ -435,8 +435,8 @@ interpret_function_parameter_list(ParseState *pstate,
                                                                                         sizeof(Oid), true, 'i');
                *parameterModes = construct_array(paramModes, parameterCount, CHAROID,
                                                                                  1, true, 'c');
-               if (outCount > 1)
-                       *requiredResultType = RECORDOID;
+               //if (outCount > 1)
+               //      *requiredResultType = RECORDOID;
                /* otherwise we set requiredResultType correctly above */
        }
        else



channy@channy-VirtualBox:~/Documents/gitCode/postgresql-12.1/src$ git diff pl/plpgsql/src/pl_gram.y
diff --git a/pl/plpgsql/src/pl_gram.y b/pl/plpgsql/src/pl_gram.y
index af63fe1..f7de066 100644
--- a/pl/plpgsql/src/pl_gram.y
+++ b/pl/plpgsql/src/pl_gram.y
@@ -3255,6 +3255,8 @@ make_return_stmt(int location)
        }
        else if (plpgsql_curr_compile->out_param_varno >= 0)
        {
+               int tok = yylex();
+
                if (yylex() != ';')
                        ereport(ERROR,
                                        (errcode(ERRCODE_DATATYPE_MISMATCH),
chan