@@ -852,7 +852,9 @@ static void
852
852
interpret_AS_clause (Oid languageOid , const char * languageName ,
853
853
char * funcname , List * as , Node * sql_body_in ,
854
854
List * parameterTypes , List * inParameterNames ,
855
- char * * prosrc_str_p , char * * probin_str_p , Node * * sql_body_out )
855
+ char * * prosrc_str_p , char * * probin_str_p ,
856
+ Node * * sql_body_out ,
857
+ const char * queryString )
856
858
{
857
859
if (!sql_body_in && !as )
858
860
ereport (ERROR ,
@@ -929,6 +931,7 @@ interpret_AS_clause(Oid languageOid, const char *languageName,
929
931
Query * q ;
930
932
ParseState * pstate = make_parsestate (NULL );
931
933
934
+ pstate -> p_sourcetext = queryString ;
932
935
sql_fn_parser_setup (pstate , pinfo );
933
936
q = transformStmt (pstate , stmt );
934
937
if (q -> commandType == CMD_UTILITY )
@@ -947,13 +950,15 @@ interpret_AS_clause(Oid languageOid, const char *languageName,
947
950
Query * q ;
948
951
ParseState * pstate = make_parsestate (NULL );
949
952
953
+ pstate -> p_sourcetext = queryString ;
950
954
sql_fn_parser_setup (pstate , pinfo );
951
955
q = transformStmt (pstate , sql_body_in );
952
956
if (q -> commandType == CMD_UTILITY )
953
957
ereport (ERROR ,
954
958
errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
955
959
errmsg ("%s is not yet supported in unquoted SQL function body" ,
956
960
GetCommandTagName (CreateCommandTag (q -> utilityStmt ))));
961
+ free_parsestate (pstate );
957
962
958
963
* sql_body_out = (Node * ) q ;
959
964
}
@@ -1220,7 +1225,8 @@ CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt)
1220
1225
1221
1226
interpret_AS_clause (languageOid , language , funcname , as_clause , stmt -> sql_body ,
1222
1227
parameterTypes_list , inParameterNames_list ,
1223
- & prosrc_str , & probin_str , & prosqlbody );
1228
+ & prosrc_str , & probin_str , & prosqlbody ,
1229
+ pstate -> p_sourcetext );
1224
1230
1225
1231
/*
1226
1232
* Set default values for COST and ROWS depending on other parameters;
0 commit comments