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

Commit4b1c68d

Browse files
committed
Use CallerFInfoFunctionCall with btree_gist for numeric types
None of the existing types actually need to use this mechanism, but thiswill allow support for enum types which will need it. A separate patchwill adjust the varlena types support for consistency.Reviewed by Tom Lane and Anastasia LubennikovaDiscussion:http://postgr.es/m/27220.1478360811@sss.pgh.pa.us
1 parenteb2a613 commit4b1c68d

17 files changed

+219
-217
lines changed

‎contrib/btree_gist/btree_cash.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,33 +26,33 @@ PG_FUNCTION_INFO_V1(gbt_cash_penalty);
2626
PG_FUNCTION_INFO_V1(gbt_cash_same);
2727

2828
staticbool
29-
gbt_cashgt(constvoid*a,constvoid*b)
29+
gbt_cashgt(constvoid*a,constvoid*b,FmgrInfo*flinfo)
3030
{
3131
return (*((constCash*)a)>*((constCash*)b));
3232
}
3333
staticbool
34-
gbt_cashge(constvoid*a,constvoid*b)
34+
gbt_cashge(constvoid*a,constvoid*b,FmgrInfo*flinfo)
3535
{
3636
return (*((constCash*)a) >=*((constCash*)b));
3737
}
3838
staticbool
39-
gbt_casheq(constvoid*a,constvoid*b)
39+
gbt_casheq(constvoid*a,constvoid*b,FmgrInfo*flinfo)
4040
{
4141
return (*((constCash*)a)==*((constCash*)b));
4242
}
4343
staticbool
44-
gbt_cashle(constvoid*a,constvoid*b)
44+
gbt_cashle(constvoid*a,constvoid*b,FmgrInfo*flinfo)
4545
{
4646
return (*((constCash*)a) <=*((constCash*)b));
4747
}
4848
staticbool
49-
gbt_cashlt(constvoid*a,constvoid*b)
49+
gbt_cashlt(constvoid*a,constvoid*b,FmgrInfo*flinfo)
5050
{
5151
return (*((constCash*)a)<*((constCash*)b));
5252
}
5353

5454
staticint
55-
gbt_cashkey_cmp(constvoid*a,constvoid*b)
55+
gbt_cashkey_cmp(constvoid*a,constvoid*b,FmgrInfo*flinfo)
5656
{
5757
cashKEY*ia= (cashKEY*) (((constNsrt*)a)->t);
5858
cashKEY*ib= (cashKEY*) (((constNsrt*)b)->t);
@@ -69,7 +69,7 @@ gbt_cashkey_cmp(const void *a, const void *b)
6969
}
7070

7171
staticfloat8
72-
gbt_cash_dist(constvoid*a,constvoid*b)
72+
gbt_cash_dist(constvoid*a,constvoid*b,FmgrInfo*flinfo)
7373
{
7474
returnGET_FLOAT_DISTANCE(Cash,a,b);
7575
}
@@ -151,7 +151,7 @@ gbt_cash_consistent(PG_FUNCTION_ARGS)
151151
key.upper= (GBT_NUMKEY*)&kkk->upper;
152152

153153
PG_RETURN_BOOL(
154-
gbt_num_consistent(&key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo)
154+
gbt_num_consistent(&key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo,fcinfo->flinfo)
155155
);
156156
}
157157

@@ -170,7 +170,7 @@ gbt_cash_distance(PG_FUNCTION_ARGS)
170170
key.upper= (GBT_NUMKEY*)&kkk->upper;
171171

172172
PG_RETURN_FLOAT8(
173-
gbt_num_distance(&key, (void*)&query,GIST_LEAF(entry),&tinfo)
173+
gbt_num_distance(&key, (void*)&query,GIST_LEAF(entry),&tinfo,fcinfo->flinfo)
174174
);
175175
}
176176

@@ -182,7 +182,7 @@ gbt_cash_union(PG_FUNCTION_ARGS)
182182
void*out=palloc(sizeof(cashKEY));
183183

184184
*(int*)PG_GETARG_POINTER(1)=sizeof(cashKEY);
185-
PG_RETURN_POINTER(gbt_num_union((void*)out,entryvec,&tinfo));
185+
PG_RETURN_POINTER(gbt_num_union((void*)out,entryvec,&tinfo,fcinfo->flinfo));
186186
}
187187

188188

@@ -205,7 +205,7 @@ gbt_cash_picksplit(PG_FUNCTION_ARGS)
205205
PG_RETURN_POINTER(gbt_num_picksplit(
206206
(GistEntryVector*)PG_GETARG_POINTER(0),
207207
(GIST_SPLITVEC*)PG_GETARG_POINTER(1),
208-
&tinfo
208+
&tinfo,fcinfo->flinfo
209209
));
210210
}
211211

@@ -216,6 +216,6 @@ gbt_cash_same(PG_FUNCTION_ARGS)
216216
cashKEY*b2= (cashKEY*)PG_GETARG_POINTER(1);
217217
bool*result= (bool*)PG_GETARG_POINTER(2);
218218

219-
*result=gbt_num_same((void*)b1, (void*)b2,&tinfo);
219+
*result=gbt_num_same((void*)b1, (void*)b2,&tinfo,fcinfo->flinfo);
220220
PG_RETURN_POINTER(result);
221221
}

‎contrib/btree_gist/btree_date.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,39 +27,39 @@ PG_FUNCTION_INFO_V1(gbt_date_penalty);
2727
PG_FUNCTION_INFO_V1(gbt_date_same);
2828

2929
staticbool
30-
gbt_dategt(constvoid*a,constvoid*b)
30+
gbt_dategt(constvoid*a,constvoid*b,FmgrInfo*flinfo)
3131
{
3232
returnDatumGetBool(
3333
DirectFunctionCall2(date_gt,DateADTGetDatum(*((constDateADT*)a)),DateADTGetDatum(*((constDateADT*)b)))
3434
);
3535
}
3636

3737
staticbool
38-
gbt_datege(constvoid*a,constvoid*b)
38+
gbt_datege(constvoid*a,constvoid*b,FmgrInfo*flinfo)
3939
{
4040
returnDatumGetBool(
4141
DirectFunctionCall2(date_ge,DateADTGetDatum(*((constDateADT*)a)),DateADTGetDatum(*((constDateADT*)b)))
4242
);
4343
}
4444

4545
staticbool
46-
gbt_dateeq(constvoid*a,constvoid*b)
46+
gbt_dateeq(constvoid*a,constvoid*b,FmgrInfo*flinfo)
4747
{
4848
returnDatumGetBool(
4949
DirectFunctionCall2(date_eq,DateADTGetDatum(*((constDateADT*)a)),DateADTGetDatum(*((constDateADT*)b)))
5050
);
5151
}
5252

5353
staticbool
54-
gbt_datele(constvoid*a,constvoid*b)
54+
gbt_datele(constvoid*a,constvoid*b,FmgrInfo*flinfo)
5555
{
5656
returnDatumGetBool(
5757
DirectFunctionCall2(date_le,DateADTGetDatum(*((constDateADT*)a)),DateADTGetDatum(*((constDateADT*)b)))
5858
);
5959
}
6060

6161
staticbool
62-
gbt_datelt(constvoid*a,constvoid*b)
62+
gbt_datelt(constvoid*a,constvoid*b,FmgrInfo*flinfo)
6363
{
6464
returnDatumGetBool(
6565
DirectFunctionCall2(date_lt,DateADTGetDatum(*((constDateADT*)a)),DateADTGetDatum(*((constDateADT*)b)))
@@ -69,7 +69,7 @@ gbt_datelt(const void *a, const void *b)
6969

7070

7171
staticint
72-
gbt_datekey_cmp(constvoid*a,constvoid*b)
72+
gbt_datekey_cmp(constvoid*a,constvoid*b,FmgrInfo*flinfo)
7373
{
7474
dateKEY*ia= (dateKEY*) (((constNsrt*)a)->t);
7575
dateKEY*ib= (dateKEY*) (((constNsrt*)b)->t);
@@ -83,7 +83,7 @@ gbt_datekey_cmp(const void *a, const void *b)
8383
}
8484

8585
staticfloat8
86-
gdb_date_dist(constvoid*a,constvoid*b)
86+
gdb_date_dist(constvoid*a,constvoid*b,FmgrInfo*flinfo)
8787
{
8888
/* we assume the difference can't overflow */
8989
Datumdiff=DirectFunctionCall2(date_mi,
@@ -163,7 +163,7 @@ gbt_date_consistent(PG_FUNCTION_ARGS)
163163
key.upper= (GBT_NUMKEY*)&kkk->upper;
164164

165165
PG_RETURN_BOOL(
166-
gbt_num_consistent(&key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo)
166+
gbt_num_consistent(&key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo,fcinfo->flinfo)
167167
);
168168
}
169169

@@ -182,7 +182,7 @@ gbt_date_distance(PG_FUNCTION_ARGS)
182182
key.upper= (GBT_NUMKEY*)&kkk->upper;
183183

184184
PG_RETURN_FLOAT8(
185-
gbt_num_distance(&key, (void*)&query,GIST_LEAF(entry),&tinfo)
185+
gbt_num_distance(&key, (void*)&query,GIST_LEAF(entry),&tinfo,fcinfo->flinfo)
186186
);
187187
}
188188

@@ -194,7 +194,7 @@ gbt_date_union(PG_FUNCTION_ARGS)
194194
void*out=palloc(sizeof(dateKEY));
195195

196196
*(int*)PG_GETARG_POINTER(1)=sizeof(dateKEY);
197-
PG_RETURN_POINTER(gbt_num_union((void*)out,entryvec,&tinfo));
197+
PG_RETURN_POINTER(gbt_num_union((void*)out,entryvec,&tinfo,fcinfo->flinfo));
198198
}
199199

200200

@@ -244,7 +244,7 @@ gbt_date_picksplit(PG_FUNCTION_ARGS)
244244
PG_RETURN_POINTER(gbt_num_picksplit(
245245
(GistEntryVector*)PG_GETARG_POINTER(0),
246246
(GIST_SPLITVEC*)PG_GETARG_POINTER(1),
247-
&tinfo
247+
&tinfo,fcinfo->flinfo
248248
));
249249
}
250250

@@ -255,6 +255,6 @@ gbt_date_same(PG_FUNCTION_ARGS)
255255
dateKEY*b2= (dateKEY*)PG_GETARG_POINTER(1);
256256
bool*result= (bool*)PG_GETARG_POINTER(2);
257257

258-
*result=gbt_num_same((void*)b1, (void*)b2,&tinfo);
258+
*result=gbt_num_same((void*)b1, (void*)b2,&tinfo,fcinfo->flinfo);
259259
PG_RETURN_POINTER(result);
260260
}

‎contrib/btree_gist/btree_float4.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,33 +25,33 @@ PG_FUNCTION_INFO_V1(gbt_float4_penalty);
2525
PG_FUNCTION_INFO_V1(gbt_float4_same);
2626

2727
staticbool
28-
gbt_float4gt(constvoid*a,constvoid*b)
28+
gbt_float4gt(constvoid*a,constvoid*b,FmgrInfo*flinfo)
2929
{
3030
return (*((constfloat4*)a)>*((constfloat4*)b));
3131
}
3232
staticbool
33-
gbt_float4ge(constvoid*a,constvoid*b)
33+
gbt_float4ge(constvoid*a,constvoid*b,FmgrInfo*flinfo)
3434
{
3535
return (*((constfloat4*)a) >=*((constfloat4*)b));
3636
}
3737
staticbool
38-
gbt_float4eq(constvoid*a,constvoid*b)
38+
gbt_float4eq(constvoid*a,constvoid*b,FmgrInfo*flinfo)
3939
{
4040
return (*((constfloat4*)a)==*((constfloat4*)b));
4141
}
4242
staticbool
43-
gbt_float4le(constvoid*a,constvoid*b)
43+
gbt_float4le(constvoid*a,constvoid*b,FmgrInfo*flinfo)
4444
{
4545
return (*((constfloat4*)a) <=*((constfloat4*)b));
4646
}
4747
staticbool
48-
gbt_float4lt(constvoid*a,constvoid*b)
48+
gbt_float4lt(constvoid*a,constvoid*b,FmgrInfo*flinfo)
4949
{
5050
return (*((constfloat4*)a)<*((constfloat4*)b));
5151
}
5252

5353
staticint
54-
gbt_float4key_cmp(constvoid*a,constvoid*b)
54+
gbt_float4key_cmp(constvoid*a,constvoid*b,FmgrInfo*flinfo)
5555
{
5656
float4KEY*ia= (float4KEY*) (((constNsrt*)a)->t);
5757
float4KEY*ib= (float4KEY*) (((constNsrt*)b)->t);
@@ -68,7 +68,7 @@ gbt_float4key_cmp(const void *a, const void *b)
6868
}
6969

7070
staticfloat8
71-
gbt_float4_dist(constvoid*a,constvoid*b)
71+
gbt_float4_dist(constvoid*a,constvoid*b,FmgrInfo*flinfo)
7272
{
7373
returnGET_FLOAT_DISTANCE(float4,a,b);
7474
}
@@ -144,7 +144,7 @@ gbt_float4_consistent(PG_FUNCTION_ARGS)
144144
key.upper= (GBT_NUMKEY*)&kkk->upper;
145145

146146
PG_RETURN_BOOL(
147-
gbt_num_consistent(&key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo)
147+
gbt_num_consistent(&key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo,fcinfo->flinfo)
148148
);
149149
}
150150

@@ -163,7 +163,7 @@ gbt_float4_distance(PG_FUNCTION_ARGS)
163163
key.upper= (GBT_NUMKEY*)&kkk->upper;
164164

165165
PG_RETURN_FLOAT8(
166-
gbt_num_distance(&key, (void*)&query,GIST_LEAF(entry),&tinfo)
166+
gbt_num_distance(&key, (void*)&query,GIST_LEAF(entry),&tinfo,fcinfo->flinfo)
167167
);
168168
}
169169

@@ -175,7 +175,7 @@ gbt_float4_union(PG_FUNCTION_ARGS)
175175
void*out=palloc(sizeof(float4KEY));
176176

177177
*(int*)PG_GETARG_POINTER(1)=sizeof(float4KEY);
178-
PG_RETURN_POINTER(gbt_num_union((void*)out,entryvec,&tinfo));
178+
PG_RETURN_POINTER(gbt_num_union((void*)out,entryvec,&tinfo,fcinfo->flinfo));
179179
}
180180

181181

@@ -198,7 +198,7 @@ gbt_float4_picksplit(PG_FUNCTION_ARGS)
198198
PG_RETURN_POINTER(gbt_num_picksplit(
199199
(GistEntryVector*)PG_GETARG_POINTER(0),
200200
(GIST_SPLITVEC*)PG_GETARG_POINTER(1),
201-
&tinfo
201+
&tinfo,fcinfo->flinfo
202202
));
203203
}
204204

@@ -209,6 +209,6 @@ gbt_float4_same(PG_FUNCTION_ARGS)
209209
float4KEY*b2= (float4KEY*)PG_GETARG_POINTER(1);
210210
bool*result= (bool*)PG_GETARG_POINTER(2);
211211

212-
*result=gbt_num_same((void*)b1, (void*)b2,&tinfo);
212+
*result=gbt_num_same((void*)b1, (void*)b2,&tinfo,fcinfo->flinfo);
213213
PG_RETURN_POINTER(result);
214214
}

‎contrib/btree_gist/btree_float8.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,33 +26,33 @@ PG_FUNCTION_INFO_V1(gbt_float8_same);
2626

2727

2828
staticbool
29-
gbt_float8gt(constvoid*a,constvoid*b)
29+
gbt_float8gt(constvoid*a,constvoid*b,FmgrInfo*flinfo)
3030
{
3131
return (*((constfloat8*)a)>*((constfloat8*)b));
3232
}
3333
staticbool
34-
gbt_float8ge(constvoid*a,constvoid*b)
34+
gbt_float8ge(constvoid*a,constvoid*b,FmgrInfo*flinfo)
3535
{
3636
return (*((constfloat8*)a) >=*((constfloat8*)b));
3737
}
3838
staticbool
39-
gbt_float8eq(constvoid*a,constvoid*b)
39+
gbt_float8eq(constvoid*a,constvoid*b,FmgrInfo*flinfo)
4040
{
4141
return (*((constfloat8*)a)==*((constfloat8*)b));
4242
}
4343
staticbool
44-
gbt_float8le(constvoid*a,constvoid*b)
44+
gbt_float8le(constvoid*a,constvoid*b,FmgrInfo*flinfo)
4545
{
4646
return (*((constfloat8*)a) <=*((constfloat8*)b));
4747
}
4848
staticbool
49-
gbt_float8lt(constvoid*a,constvoid*b)
49+
gbt_float8lt(constvoid*a,constvoid*b,FmgrInfo*flinfo)
5050
{
5151
return (*((constfloat8*)a)<*((constfloat8*)b));
5252
}
5353

5454
staticint
55-
gbt_float8key_cmp(constvoid*a,constvoid*b)
55+
gbt_float8key_cmp(constvoid*a,constvoid*b,FmgrInfo*flinfo)
5656
{
5757
float8KEY*ia= (float8KEY*) (((constNsrt*)a)->t);
5858
float8KEY*ib= (float8KEY*) (((constNsrt*)b)->t);
@@ -69,7 +69,7 @@ gbt_float8key_cmp(const void *a, const void *b)
6969
}
7070

7171
staticfloat8
72-
gbt_float8_dist(constvoid*a,constvoid*b)
72+
gbt_float8_dist(constvoid*a,constvoid*b,FmgrInfo*flinfo)
7373
{
7474
float8arg1=*(constfloat8*)a;
7575
float8arg2=*(constfloat8*)b;
@@ -151,7 +151,7 @@ gbt_float8_consistent(PG_FUNCTION_ARGS)
151151
key.upper= (GBT_NUMKEY*)&kkk->upper;
152152

153153
PG_RETURN_BOOL(
154-
gbt_num_consistent(&key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo)
154+
gbt_num_consistent(&key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo,fcinfo->flinfo)
155155
);
156156
}
157157

@@ -170,7 +170,7 @@ gbt_float8_distance(PG_FUNCTION_ARGS)
170170
key.upper= (GBT_NUMKEY*)&kkk->upper;
171171

172172
PG_RETURN_FLOAT8(
173-
gbt_num_distance(&key, (void*)&query,GIST_LEAF(entry),&tinfo)
173+
gbt_num_distance(&key, (void*)&query,GIST_LEAF(entry),&tinfo,fcinfo->flinfo)
174174
);
175175
}
176176

@@ -182,7 +182,7 @@ gbt_float8_union(PG_FUNCTION_ARGS)
182182
void*out=palloc(sizeof(float8KEY));
183183

184184
*(int*)PG_GETARG_POINTER(1)=sizeof(float8KEY);
185-
PG_RETURN_POINTER(gbt_num_union((void*)out,entryvec,&tinfo));
185+
PG_RETURN_POINTER(gbt_num_union((void*)out,entryvec,&tinfo,fcinfo->flinfo));
186186
}
187187

188188

@@ -205,7 +205,7 @@ gbt_float8_picksplit(PG_FUNCTION_ARGS)
205205
PG_RETURN_POINTER(gbt_num_picksplit(
206206
(GistEntryVector*)PG_GETARG_POINTER(0),
207207
(GIST_SPLITVEC*)PG_GETARG_POINTER(1),
208-
&tinfo
208+
&tinfo,fcinfo->flinfo
209209
));
210210
}
211211

@@ -216,6 +216,6 @@ gbt_float8_same(PG_FUNCTION_ARGS)
216216
float8KEY*b2= (float8KEY*)PG_GETARG_POINTER(1);
217217
bool*result= (bool*)PG_GETARG_POINTER(2);
218218

219-
*result=gbt_num_same((void*)b1, (void*)b2,&tinfo);
219+
*result=gbt_num_same((void*)b1, (void*)b2,&tinfo,fcinfo->flinfo);
220220
PG_RETURN_POINTER(result);
221221
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp