26
26
27
27
PG_MODULE_MAGIC ;
28
28
29
- /* Scalar variables functions */
30
- PG_FUNCTION_INFO_V1 (variable_set_any );
31
- PG_FUNCTION_INFO_V1 (variable_get_any );
32
-
33
29
/* Functions to work with records */
34
30
PG_FUNCTION_INFO_V1 (variable_insert );
35
31
PG_FUNCTION_INFO_V1 (variable_update );
@@ -185,7 +181,7 @@ variable_get(text *package_name, text *var_name,
185
181
}
186
182
187
183
188
- #define VARIABLE_GET_TEMPLATE (type , typid ) \
184
+ #define VARIABLE_GET_TEMPLATE (pkg_arg , var_arg , strict_arg , type , typid ) \
189
185
PG_FUNCTION_INFO_V1(variable_get_##type); \
190
186
Datum \
191
187
variable_get_##type(PG_FUNCTION_ARGS) \
@@ -198,30 +194,33 @@ variable_get(text *package_name, text *var_name,
198
194
\
199
195
CHECK_ARGS_FOR_NULL(); \
200
196
\
201
- package_name = PG_GETARG_TEXT_PP(0 ); \
202
- var_name = PG_GETARG_TEXT_PP(1 ); \
203
- strict = PG_GETARG_BOOL(2 ); \
197
+ package_name = PG_GETARG_TEXT_PP(pkg_arg ); \
198
+ var_name = PG_GETARG_TEXT_PP(var_arg ); \
199
+ strict = PG_GETARG_BOOL(strict_arg ); \
204
200
\
205
201
value = variable_get(package_name, var_name, \
206
202
(typid), &isnull, strict); \
207
203
\
208
- PG_FREE_IF_COPY(package_name, 0 ); \
209
- PG_FREE_IF_COPY(var_name, 1 ); \
204
+ PG_FREE_IF_COPY(package_name, pkg_arg ); \
205
+ PG_FREE_IF_COPY(var_name, var_arg ); \
210
206
\
211
207
if (!isnull) \
212
208
PG_RETURN_DATUM(value); \
213
209
else \
214
210
PG_RETURN_NULL(); \
215
211
}
216
212
213
+ /* deprecated functions */
214
+ VARIABLE_GET_TEMPLATE (0 , 1 , 2 , int , INT4OID )
215
+ VARIABLE_GET_TEMPLATE (0 , 1 , 2 , text , TEXTOID )
216
+ VARIABLE_GET_TEMPLATE (0 , 1 , 2 , numeric , NUMERICOID )
217
+ VARIABLE_GET_TEMPLATE (0 , 1 , 2 , timestamp , TIMESTAMPOID )
218
+ VARIABLE_GET_TEMPLATE (0 , 1 , 2 , timestamptz , TIMESTAMPTZOID )
219
+ VARIABLE_GET_TEMPLATE (0 , 1 , 2 , date , DATEOID )
220
+ VARIABLE_GET_TEMPLATE (0 , 1 , 2 , jsonb , JSONBOID )
217
221
218
- VARIABLE_GET_TEMPLATE (int , INT4OID )
219
- VARIABLE_GET_TEMPLATE (text , TEXTOID )
220
- VARIABLE_GET_TEMPLATE (numeric , NUMERICOID )
221
- VARIABLE_GET_TEMPLATE (timestamp , TIMESTAMPOID )
222
- VARIABLE_GET_TEMPLATE (timestamptz , TIMESTAMPTZOID )
223
- VARIABLE_GET_TEMPLATE (date , DATEOID )
224
- VARIABLE_GET_TEMPLATE (jsonb , JSONBOID )
222
+ /* current API */
223
+ VARIABLE_GET_TEMPLATE (0 , 1 , 3 , any , get_fn_expr_argtype (fcinfo -> flinfo , 2 ))
225
224
226
225
227
226
#define VARIABLE_SET_TEMPLATE (type , typid ) \
@@ -249,6 +248,7 @@ VARIABLE_GET_TEMPLATE(jsonb, JSONBOID)
249
248
}
250
249
251
250
251
+ /* deprecated functions */
252
252
VARIABLE_SET_TEMPLATE (int , INT4OID )
253
253
VARIABLE_SET_TEMPLATE (text , TEXTOID )
254
254
VARIABLE_SET_TEMPLATE (numeric , NUMERICOID )
@@ -257,55 +257,8 @@ VARIABLE_SET_TEMPLATE(timestamptz, TIMESTAMPTZOID)
257
257
VARIABLE_SET_TEMPLATE (date , DATEOID )
258
258
VARIABLE_SET_TEMPLATE (jsonb , JSONBOID )
259
259
260
-
261
- Datum
262
- variable_set_any (PG_FUNCTION_ARGS )
263
- {
264
- text * package_name ;
265
- text * var_name ;
266
- bool is_transactional ;
267
-
268
- CHECK_ARGS_FOR_NULL ();
269
-
270
- package_name = PG_GETARG_TEXT_PP (0 );
271
- var_name = PG_GETARG_TEXT_PP (1 );
272
- is_transactional = PG_GETARG_BOOL (3 );
273
-
274
- variable_set (package_name , var_name , get_fn_expr_argtype (fcinfo -> flinfo , 2 ),
275
- PG_ARGISNULL (2 ) ? 0 : PG_GETARG_DATUM (2 ),
276
- PG_ARGISNULL (2 ), is_transactional );
277
-
278
- PG_FREE_IF_COPY (package_name , 0 );
279
- PG_FREE_IF_COPY (var_name , 1 );
280
- PG_RETURN_VOID ();
281
- }
282
-
283
- Datum
284
- variable_get_any (PG_FUNCTION_ARGS )
285
- {
286
- text * package_name ;
287
- text * var_name ;
288
- bool strict ;
289
- bool is_null ;
290
- Datum value ;
291
-
292
- CHECK_ARGS_FOR_NULL ();
293
-
294
- package_name = PG_GETARG_TEXT_PP (0 );
295
- var_name = PG_GETARG_TEXT_PP (1 );
296
- strict = PG_GETARG_BOOL (3 );
297
-
298
- value = variable_get (package_name , var_name ,
299
- get_fn_expr_argtype (fcinfo -> flinfo , 2 ),
300
- & is_null , strict );
301
-
302
- PG_FREE_IF_COPY (package_name , 0 );
303
- PG_FREE_IF_COPY (var_name , 1 );
304
- if (!is_null )
305
- PG_RETURN_DATUM (value );
306
- else
307
- PG_RETURN_NULL ();
308
- }
260
+ /* current API */
261
+ VARIABLE_SET_TEMPLATE (any , get_fn_expr_argtype (fcinfo -> flinfo , 2 ))
309
262
310
263
311
264
Datum
0 commit comments