Here, Datum was used to pass around an opaque pointer between a group
of functions. But one might as well use void * for that; the use of
Datum doesn't achieve anything here and is just distracting.
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/flat/
1c5d23cb-288b-4154-b1cd-
191fe2301707%40eisentraut.org
* and different variants are ORed together.
*/
static void
-pushval_morph(Datum opaque, TSQueryParserState state, char *strval, int lenval, int16 weight, bool prefix)
+pushval_morph(void *opaque, TSQueryParserState state, char *strval, int lenval, int16 weight, bool prefix)
{
int32 count = 0;
ParsedText prs;
cntvar = 0,
cntpos = 0,
cnt = 0;
- MorphOpaque *data = (MorphOpaque *) DatumGetPointer(opaque);
+ MorphOpaque *data = opaque;
prs.lenwords = 4;
prs.curwords = 0;
query = parse_tsquery(text_to_cstring(in),
pushval_morph,
- PointerGetDatum(&data),
+ &data,
0,
NULL);
query = parse_tsquery(text_to_cstring(in),
pushval_morph,
- PointerGetDatum(&data),
+ &data,
P_TSQ_PLAIN,
NULL);
query = parse_tsquery(text_to_cstring(in),
pushval_morph,
- PointerGetDatum(&data),
+ &data,
P_TSQ_PLAIN,
NULL);
query = parse_tsquery(text_to_cstring(in),
pushval_morph,
- PointerGetDatum(&data),
+ &data,
P_TSQ_WEB,
NULL);
static void
makepol(TSQueryParserState state,
PushFunction pushval,
- Datum opaque)
+ void *opaque)
{
int8 operator = 0;
ts_tokentype type;
TSQuery
parse_tsquery(char *buf,
PushFunction pushval,
- Datum opaque,
+ void *opaque,
int flags,
Node *escontext)
{
}
static void
-pushval_asis(Datum opaque, TSQueryParserState state, char *strval, int lenval,
+pushval_asis(void *opaque, TSQueryParserState state, char *strval, int lenval,
int16 weight, bool prefix)
{
pushValue(state, strval, lenval, weight, prefix);
PG_RETURN_TSQUERY(parse_tsquery(in,
pushval_asis,
- PointerGetDatum(NULL),
+ NULL,
0,
escontext));
}
struct TSQueryParserStateData; /* private in backend/utils/adt/tsquery.c */
typedef struct TSQueryParserStateData *TSQueryParserState;
-typedef void (*PushFunction) (Datum opaque, TSQueryParserState state,
+typedef void (*PushFunction) (void *opaque, TSQueryParserState state,
char *token, int tokenlen,
int16 tokenweights, /* bitmap as described in
* QueryOperand struct */
extern TSQuery parse_tsquery(char *buf,
PushFunction pushval,
- Datum opaque,
+ void *opaque,
int flags,
Node *escontext);