2222#include "utils/lsyscache.h"
2323
2424
25+ /*
26+ * Allocate and initialize a new ParamListInfo structure.
27+ *
28+ * To make a new structure for the "dynamic" way (with hooks), pass 0 for
29+ * numParams and set numParams manually.
30+ */
31+ ParamListInfo
32+ makeParamList (int numParams )
33+ {
34+ ParamListInfo retval ;
35+ Size size ;
36+
37+ size = offsetof(ParamListInfoData , params ) +
38+ numParams * sizeof (ParamExternData );
39+
40+ retval = (ParamListInfo ) palloc (size );
41+ retval -> paramFetch = NULL ;
42+ retval -> paramFetchArg = NULL ;
43+ retval -> paramCompile = NULL ;
44+ retval -> paramCompileArg = NULL ;
45+ retval -> parserSetup = NULL ;
46+ retval -> parserSetupArg = NULL ;
47+ retval -> numParams = numParams ;
48+
49+ return retval ;
50+ }
51+
2552/*
2653 * Copy a ParamListInfo structure.
2754 *
@@ -36,25 +63,13 @@ ParamListInfo
3663copyParamList (ParamListInfo from )
3764{
3865 ParamListInfo retval ;
39- Size size ;
40- int i ;
4166
4267 if (from == NULL || from -> numParams <= 0 )
4368 return NULL ;
4469
45- size = offsetof(ParamListInfoData , params ) +
46- from -> numParams * sizeof (ParamExternData );
47-
48- retval = (ParamListInfo ) palloc (size );
49- retval -> paramFetch = NULL ;
50- retval -> paramFetchArg = NULL ;
51- retval -> paramCompile = NULL ;
52- retval -> paramCompileArg = NULL ;
53- retval -> parserSetup = NULL ;
54- retval -> parserSetupArg = NULL ;
55- retval -> numParams = from -> numParams ;
70+ retval = makeParamList (from -> numParams );
5671
57- for (i = 0 ; i < from -> numParams ; i ++ )
72+ for (int i = 0 ; i < from -> numParams ; i ++ )
5873 {
5974 ParamExternData * oprm ;
6075 ParamExternData * nprm = & retval -> params [i ];
@@ -211,26 +226,14 @@ ParamListInfo
211226RestoreParamList (char * * start_address )
212227{
213228 ParamListInfo paramLI ;
214- Size size ;
215- int i ;
216229 int nparams ;
217230
218231 memcpy (& nparams , * start_address , sizeof (int ));
219232 * start_address += sizeof (int );
220233
221- size = offsetof(ParamListInfoData , params ) +
222- nparams * sizeof (ParamExternData );
223-
224- paramLI = (ParamListInfo ) palloc (size );
225- paramLI -> paramFetch = NULL ;
226- paramLI -> paramFetchArg = NULL ;
227- paramLI -> paramCompile = NULL ;
228- paramLI -> paramCompileArg = NULL ;
229- paramLI -> parserSetup = NULL ;
230- paramLI -> parserSetupArg = NULL ;
231- paramLI -> numParams = nparams ;
234+ paramLI = makeParamList (nparams );
232235
233- for (i = 0 ; i < nparams ; i ++ )
236+ for (int i = 0 ; i < nparams ; i ++ )
234237 {
235238 ParamExternData * prm = & paramLI -> params [i ];
236239
0 commit comments