@@ -14,92 +14,99 @@ PG_FUNCTION_INFO_V1(gbt_bit_consistent);
14
14
PG_FUNCTION_INFO_V1 (gbt_bit_penalty );
15
15
PG_FUNCTION_INFO_V1 (gbt_bit_same );
16
16
17
- Datum gbt_bit_compress (PG_FUNCTION_ARGS );
18
- Datum gbt_bit_union (PG_FUNCTION_ARGS );
19
- Datum gbt_bit_picksplit (PG_FUNCTION_ARGS );
20
- Datum gbt_bit_consistent (PG_FUNCTION_ARGS );
21
- Datum gbt_bit_penalty (PG_FUNCTION_ARGS );
22
- Datum gbt_bit_same (PG_FUNCTION_ARGS );
17
+ Datum gbt_bit_compress (PG_FUNCTION_ARGS );
18
+ Datum gbt_bit_union (PG_FUNCTION_ARGS );
19
+ Datum gbt_bit_picksplit (PG_FUNCTION_ARGS );
20
+ Datum gbt_bit_consistent (PG_FUNCTION_ARGS );
21
+ Datum gbt_bit_penalty (PG_FUNCTION_ARGS );
22
+ Datum gbt_bit_same (PG_FUNCTION_ARGS );
23
23
24
24
25
25
26
26
/* define for comparison */
27
27
28
- static bool gbt_bitgt (const void * a , const void * b )
28
+ static bool
29
+ gbt_bitgt (const void * a , const void * b )
29
30
{
30
- return ( DatumGetBool (DirectFunctionCall2 ( bitgt , PointerGetDatum ( a ), PointerGetDatum ( b ) ) ) );
31
+ return (DatumGetBool (DirectFunctionCall2 (bitgt , PointerGetDatum (a ), PointerGetDatum (b ))) );
31
32
}
32
33
33
- static bool gbt_bitge (const void * a , const void * b )
34
+ static bool
35
+ gbt_bitge (const void * a , const void * b )
34
36
{
35
- return ( DatumGetBool (DirectFunctionCall2 ( bitge , PointerGetDatum ( a ), PointerGetDatum ( b ) ) ) );
37
+ return (DatumGetBool (DirectFunctionCall2 (bitge , PointerGetDatum (a ), PointerGetDatum (b ))) );
36
38
}
37
39
38
- static bool gbt_biteq (const void * a , const void * b )
40
+ static bool
41
+ gbt_biteq (const void * a , const void * b )
39
42
{
40
- return ( DatumGetBool (DirectFunctionCall2 ( biteq , PointerGetDatum ( a ), PointerGetDatum ( b ) ) ) );
43
+ return (DatumGetBool (DirectFunctionCall2 (biteq , PointerGetDatum (a ), PointerGetDatum (b ))) );
41
44
}
42
45
43
- static bool gbt_bitle (const void * a , const void * b )
46
+ static bool
47
+ gbt_bitle (const void * a , const void * b )
44
48
{
45
- return ( DatumGetBool (DirectFunctionCall2 ( bitle , PointerGetDatum ( a ), PointerGetDatum ( b ) ) ) );
49
+ return (DatumGetBool (DirectFunctionCall2 (bitle , PointerGetDatum (a ), PointerGetDatum (b ))) );
46
50
}
47
51
48
- static bool gbt_bitlt (const void * a , const void * b )
52
+ static bool
53
+ gbt_bitlt (const void * a , const void * b )
49
54
{
50
- return ( DatumGetBool (DirectFunctionCall2 ( bitlt , PointerGetDatum ( a ), PointerGetDatum ( b ) ) ) );
55
+ return (DatumGetBool (DirectFunctionCall2 (bitlt , PointerGetDatum (a ), PointerGetDatum (b ))) );
51
56
}
52
57
53
- static int32 gbt_bitcmp ( const bytea * a , const bytea * b )
58
+ static int32
59
+ gbt_bitcmp (const bytea * a , const bytea * b )
54
60
{
55
- return
56
- ( DatumGetInt32 (DirectFunctionCall2 (byteacmp ,PointerGetDatum (a ),PointerGetDatum (b ) ) ) );
61
+ return
62
+ ( DatumGetInt32 (DirectFunctionCall2 (byteacmp , PointerGetDatum (a ), PointerGetDatum (b ))) );
57
63
}
58
-
64
+
59
65
60
66
static bytea *
61
- gbt_bit_xfrm ( bytea * leaf )
67
+ gbt_bit_xfrm ( bytea * leaf )
62
68
{
63
- bytea * out = leaf ;
64
- int s = VARBITBYTES (leaf ) + VARHDRSZ ;
69
+ bytea * out = leaf ;
70
+ int s = VARBITBYTES (leaf ) + VARHDRSZ ;
65
71
66
- out = palloc ( s );
67
- VARATT_SIZEP (out ) = s ;
68
- memcpy ( (void * ) VARDATA (out ), (void * ) VARBITS (leaf ), VARBITBYTES (leaf ) );
69
- return out ;
72
+ out = palloc ( s );
73
+ VARATT_SIZEP (out ) = s ;
74
+ memcpy ( (void * ) VARDATA (out ), (void * ) VARBITS (leaf ), VARBITBYTES (leaf ));
75
+ return out ;
70
76
}
71
77
72
78
73
79
74
80
75
- static GBT_VARKEY * gbt_bit_l2n ( GBT_VARKEY * leaf )
81
+ static GBT_VARKEY *
82
+ gbt_bit_l2n (GBT_VARKEY * leaf )
76
83
{
77
84
78
- GBT_VARKEY * out = leaf ;
79
- GBT_VARKEY_R r = gbt_var_key_readable ( leaf );
80
- bytea * o ;
85
+ GBT_VARKEY * out = leaf ;
86
+ GBT_VARKEY_R r = gbt_var_key_readable ( leaf );
87
+ bytea * o ;
81
88
82
- o = gbt_bit_xfrm (r .lower );
83
- r .upper = r .lower = o ;
84
- out = gbt_var_key_copy ( & r , TRUE );
85
- pfree (o );
89
+ o = gbt_bit_xfrm (r .lower );
90
+ r .upper = r .lower = o ;
91
+ out = gbt_var_key_copy (& r , TRUE);
92
+ pfree (o );
86
93
87
- return out ;
94
+ return out ;
88
95
89
96
}
90
97
91
98
static const gbtree_vinfo tinfo =
92
99
{
93
- gbt_t_bit ,
94
- FALSE,
95
- TRUE,
96
- gbt_bitgt ,
97
- gbt_bitge ,
98
- gbt_biteq ,
99
- gbt_bitle ,
100
- gbt_bitlt ,
101
- gbt_bitcmp ,
102
- gbt_bit_l2n
100
+ gbt_t_bit ,
101
+ FALSE,
102
+ TRUE,
103
+ gbt_bitgt ,
104
+ gbt_bitge ,
105
+ gbt_biteq ,
106
+ gbt_bitle ,
107
+ gbt_bitlt ,
108
+ gbt_bitcmp ,
109
+ gbt_bit_l2n
103
110
};
104
111
105
112
@@ -108,78 +115,81 @@ static const gbtree_vinfo tinfo =
108
115
**************************************************/
109
116
110
117
Datum
111
- gbt_bit_compress (PG_FUNCTION_ARGS )
118
+ gbt_bit_compress (PG_FUNCTION_ARGS )
112
119
{
113
- GISTENTRY * entry = (GISTENTRY * ) PG_GETARG_POINTER (0 );
114
- PG_RETURN_POINTER ( gbt_var_compress ( entry , & tinfo ) );
120
+ GISTENTRY * entry = (GISTENTRY * ) PG_GETARG_POINTER (0 );
121
+
122
+ PG_RETURN_POINTER (gbt_var_compress (entry , & tinfo ));
115
123
}
116
124
117
125
Datum
118
126
gbt_bit_consistent (PG_FUNCTION_ARGS )
119
127
{
120
- GISTENTRY * entry = (GISTENTRY * ) PG_GETARG_POINTER (0 );
121
- GBT_VARKEY * ktst = (GBT_VARKEY * ) DatumGetPointer ( entry -> key ) ;
122
- GBT_VARKEY * key = (GBT_VARKEY * ) DatumGetPointer ( PG_DETOAST_DATUM ( entry -> key ) );
123
- void * qtst = ( void * ) DatumGetPointer ( PG_GETARG_DATUM (1 ) );
124
- void * query = ( void * ) DatumGetByteaP ( PG_GETARG_DATUM (1 ) );
125
- StrategyNumber strategy = (StrategyNumber ) PG_GETARG_UINT16 (2 );
126
- bool retval = FALSE;
127
- GBT_VARKEY_R r = gbt_var_key_readable ( key );
128
-
129
- if ( GIST_LEAF (entry ) )
130
- {
131
- retval = gbt_var_consistent ( & r , query , & strategy , TRUE, & tinfo );
132
- } else {
133
- bytea * q = gbt_bit_xfrm ( ( bytea * ) query );
134
- retval = gbt_var_consistent ( & r , (void * )q , & strategy , FALSE, & tinfo );
135
- pfree (q );
136
- }
137
-
138
- if ( ktst != key ){
139
- pfree ( key );
140
- }
141
- if ( qtst != query ){
142
- pfree ( query );
143
- }
144
- PG_RETURN_BOOL (retval );
128
+ GISTENTRY * entry = (GISTENTRY * ) PG_GETARG_POINTER (0 );
129
+ GBT_VARKEY * ktst = (GBT_VARKEY * ) DatumGetPointer (entry -> key );
130
+ GBT_VARKEY * key = (GBT_VARKEY * ) DatumGetPointer (PG_DETOAST_DATUM (entry -> key ));
131
+ void * qtst = (void * ) DatumGetPointer (PG_GETARG_DATUM (1 ));
132
+ void * query = (void * ) DatumGetByteaP (PG_GETARG_DATUM (1 ));
133
+ StrategyNumber strategy = (StrategyNumber ) PG_GETARG_UINT16 (2 );
134
+ bool retval = FALSE;
135
+ GBT_VARKEY_R r = gbt_var_key_readable (key );
136
+
137
+ if (GIST_LEAF (entry ))
138
+ retval = gbt_var_consistent (& r , query , & strategy , TRUE, & tinfo );
139
+ else
140
+ {
141
+ bytea * q = gbt_bit_xfrm ((bytea * ) query );
142
+
143
+ retval = gbt_var_consistent (& r , (void * ) q , & strategy , FALSE, & tinfo );
144
+ pfree (q );
145
+ }
146
+
147
+ if (ktst != key )
148
+ pfree (key );
149
+ if (qtst != query )
150
+ pfree (query );
151
+ PG_RETURN_BOOL (retval );
145
152
}
146
153
147
154
148
155
149
156
Datum
150
157
gbt_bit_union (PG_FUNCTION_ARGS )
151
158
{
152
- GistEntryVector * entryvec = (GistEntryVector * ) PG_GETARG_POINTER (0 );
153
- int32 * size = (int * ) PG_GETARG_POINTER (1 );
154
- PG_RETURN_POINTER ( gbt_var_union ( entryvec , size , & tinfo ) );
159
+ GistEntryVector * entryvec = (GistEntryVector * ) PG_GETARG_POINTER (0 );
160
+ int32 * size = (int * ) PG_GETARG_POINTER (1 );
161
+
162
+ PG_RETURN_POINTER (gbt_var_union (entryvec , size , & tinfo ));
155
163
}
156
-
164
+
157
165
158
166
Datum
159
167
gbt_bit_picksplit (PG_FUNCTION_ARGS )
160
168
{
161
- GistEntryVector * entryvec = (GistEntryVector * ) PG_GETARG_POINTER (0 );
162
- GIST_SPLITVEC * v = (GIST_SPLITVEC * ) PG_GETARG_POINTER (1 );
163
- gbt_var_picksplit ( entryvec , v , & tinfo );
164
- PG_RETURN_POINTER (v );
169
+ GistEntryVector * entryvec = (GistEntryVector * ) PG_GETARG_POINTER (0 );
170
+ GIST_SPLITVEC * v = (GIST_SPLITVEC * ) PG_GETARG_POINTER (1 );
171
+
172
+ gbt_var_picksplit (entryvec , v , & tinfo );
173
+ PG_RETURN_POINTER (v );
165
174
}
166
175
167
176
Datum
168
177
gbt_bit_same (PG_FUNCTION_ARGS )
169
178
{
170
- Datum d1 = PG_GETARG_DATUM (0 );
171
- Datum d2 = PG_GETARG_DATUM (1 );
172
- bool * result = (bool * ) PG_GETARG_POINTER (2 );
173
- PG_RETURN_POINTER ( gbt_var_same ( result , d1 , d2 , & tinfo ));
179
+ Datum d1 = PG_GETARG_DATUM (0 );
180
+ Datum d2 = PG_GETARG_DATUM (1 );
181
+ bool * result = (bool * ) PG_GETARG_POINTER (2 );
182
+
183
+ PG_RETURN_POINTER (gbt_var_same (result , d1 , d2 , & tinfo ));
174
184
}
175
185
176
186
177
187
Datum
178
188
gbt_bit_penalty (PG_FUNCTION_ARGS )
179
189
{
180
- float * result = (float * ) PG_GETARG_POINTER (2 );
181
- GISTENTRY * o = (GISTENTRY * ) PG_GETARG_POINTER (0 );
182
- GISTENTRY * n = (GISTENTRY * ) PG_GETARG_POINTER (1 );
183
- PG_RETURN_POINTER ( gbt_var_penalty ( result ,o , n , & tinfo ) );
184
- }
190
+ float * result = (float * ) PG_GETARG_POINTER (2 );
191
+ GISTENTRY * o = (GISTENTRY * ) PG_GETARG_POINTER (0 );
192
+ GISTENTRY * n = (GISTENTRY * ) PG_GETARG_POINTER (1 );
185
193
194
+ PG_RETURN_POINTER (gbt_var_penalty (result , o , n , & tinfo ));
195
+ }
0 commit comments