Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite1d6ad7

Browse files
committed
remove special cases for variable_{get,set}_any
1 parent6e33742 commite1d6ad7

File tree

2 files changed

+20
-66
lines changed

2 files changed

+20
-66
lines changed

‎.gitignore‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ objfiles.txt
2121
*.gcov.out
2222
lcov.info
2323
coverage/
24+
results/
2425
*.vcproj
2526
*.vcxproj
2627
win32ver.rc

‎pg_variables.c‎

Lines changed: 19 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@
2626

2727
PG_MODULE_MAGIC;
2828

29-
/* Scalar variables functions */
30-
PG_FUNCTION_INFO_V1(variable_set_any);
31-
PG_FUNCTION_INFO_V1(variable_get_any);
32-
3329
/* Functions to work with records */
3430
PG_FUNCTION_INFO_V1(variable_insert);
3531
PG_FUNCTION_INFO_V1(variable_update);
@@ -185,7 +181,7 @@ variable_get(text *package_name, text *var_name,
185181
}
186182

187183

188-
#defineVARIABLE_GET_TEMPLATE(type,typid) \
184+
#defineVARIABLE_GET_TEMPLATE(pkg_arg,var_arg,strict_arg,type,typid) \
189185
PG_FUNCTION_INFO_V1(variable_get_##type); \
190186
Datum \
191187
variable_get_##type(PG_FUNCTION_ARGS) \
@@ -198,30 +194,33 @@ variable_get(text *package_name, text *var_name,
198194
\
199195
CHECK_ARGS_FOR_NULL(); \
200196
\
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); \
204200
\
205201
value = variable_get(package_name, var_name, \
206202
(typid), &isnull, strict); \
207203
\
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); \
210206
\
211207
if (!isnull) \
212208
PG_RETURN_DATUM(value); \
213209
else \
214210
PG_RETURN_NULL(); \
215211
}
216212

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)
217221

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))
225224

226225

227226
#defineVARIABLE_SET_TEMPLATE(type,typid) \
@@ -249,6 +248,7 @@ VARIABLE_GET_TEMPLATE(jsonb, JSONBOID)
249248
}
250249

251250

251+
/* deprecated functions */
252252
VARIABLE_SET_TEMPLATE(int,INT4OID)
253253
VARIABLE_SET_TEMPLATE(text,TEXTOID)
254254
VARIABLE_SET_TEMPLATE(numeric,NUMERICOID)
@@ -257,55 +257,8 @@ VARIABLE_SET_TEMPLATE(timestamptz, TIMESTAMPTZOID)
257257
VARIABLE_SET_TEMPLATE(date,DATEOID)
258258
VARIABLE_SET_TEMPLATE(jsonb,JSONBOID)
259259

260-
261-
Datum
262-
variable_set_any(PG_FUNCTION_ARGS)
263-
{
264-
text*package_name;
265-
text*var_name;
266-
boolis_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-
boolstrict;
289-
boolis_null;
290-
Datumvalue;
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))
309262

310263

311264
Datum

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp