Change void* opaque argument to Datum type, add argument's
authorTeodor Sigaev
Mon, 10 Sep 2007 12:36:41 +0000 (12:36 +0000)
committerTeodor Sigaev
Mon, 10 Sep 2007 12:36:41 +0000 (12:36 +0000)
name to PushFunction type definition.

Per suggestion by Tome Lane 

src/backend/tsearch/to_tsany.c
src/backend/utils/adt/tsquery.c
src/include/tsearch/ts_utils.h

index d0b1bcc19def7f546644da8c2571c8467eb91ab1..19bb2d39af94edeb582c355865f119700b500a54 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/tsearch/to_tsany.c,v 1.2 2007/09/07 15:09:55 teodor Exp $
+ *   $PostgreSQL: pgsql/src/backend/tsearch/to_tsany.c,v 1.3 2007/09/10 12:36:40 teodor Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -235,7 +235,7 @@ to_tsvector(PG_FUNCTION_ARGS)
  * and different variants are ORred together. 
  */
 static void
-pushval_morph(void *opaque, TSQueryParserState state, char *strval, int lenval, int2 weight)
+pushval_morph(Datum opaque, TSQueryParserState state, char *strval, int lenval, int2 weight)
 {
    int4        count = 0;
    ParsedText  prs;
@@ -244,7 +244,7 @@ pushval_morph(void *opaque, TSQueryParserState state, char *strval, int lenval,
                cntvar = 0,
                cntpos = 0,
                cnt = 0;
-   Oid cfg_id = (Oid) opaque; /* the input is actually an Oid, not a pointer */
+   Oid cfg_id = DatumGetObjectId(opaque); /* the input is actually an Oid, not a pointer */
 
    prs.lenwords = 4;
    prs.curwords = 0;
@@ -303,7 +303,7 @@ to_tsquery_byid(PG_FUNCTION_ARGS)
    QueryItem  *res;
    int4        len;
 
-   query = parse_tsquery(TextPGetCString(in), pushval_morph, (void *) cfgid, false);
+   query = parse_tsquery(TextPGetCString(in), pushval_morph, ObjectIdGetDatum(cfgid), false);
 
    if (query->size == 0)
        PG_RETURN_TSQUERY(query);
@@ -341,7 +341,7 @@ plainto_tsquery_byid(PG_FUNCTION_ARGS)
    QueryItem  *res;
    int4        len;
 
-   query = parse_tsquery(TextPGetCString(in), pushval_morph, (void *)cfgid, true);
+   query = parse_tsquery(TextPGetCString(in), pushval_morph, ObjectIdGetDatum(cfgid), true);
 
    if (query->size == 0)
        PG_RETURN_TSQUERY(query);
index c53d526bdd1694d4e219031333e98d706b21d906..521ccf94c8541eb2eddd6245cf4e5650eac15667 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/adt/tsquery.c,v 1.5 2007/09/07 16:03:40 teodor Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/adt/tsquery.c,v 1.6 2007/09/10 12:36:40 teodor Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -314,7 +314,7 @@ pushStop(TSQueryParserState state)
 static void
 makepol(TSQueryParserState state, 
        PushFunction pushval,
-       void *opaque)
+       Datum opaque)
 {
    int8        operator = 0;
    ts_tokentype type;
@@ -460,7 +460,7 @@ findoprnd(QueryItem *ptr, int size)
 TSQuery
 parse_tsquery(char *buf, 
              PushFunction pushval,
-             void *opaque,
+             Datum opaque,
              bool isplain)
 {
    struct TSQueryParserStateData state;
@@ -543,7 +543,7 @@ parse_tsquery(char *buf,
 }
 
 static void
-pushval_asis(void *opaque, TSQueryParserState state, char *strval, int lenval,
+pushval_asis(Datum opaque, TSQueryParserState state, char *strval, int lenval,
             int16 weight)
 {
    pushValue(state, strval, lenval, weight);
@@ -559,7 +559,7 @@ tsqueryin(PG_FUNCTION_ARGS)
 
    pg_verifymbstr(in, strlen(in), false);
 
-   PG_RETURN_TSQUERY(parse_tsquery(in, pushval_asis, NULL, false));
+   PG_RETURN_TSQUERY(parse_tsquery(in, pushval_asis, PointerGetDatum(NULL), false));
 }
 
 /*
index 31a76e50b6cf23bf8c00ac7a4096f8c1daf91826..93da9cb4a9d2bcd2cac74596390f89ea98097d0f 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Copyright (c) 1998-2007, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/include/tsearch/ts_utils.h,v 1.3 2007/09/07 15:09:56 teodor Exp $
+ * $PostgreSQL: pgsql/src/include/tsearch/ts_utils.h,v 1.4 2007/09/10 12:36:41 teodor Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -38,11 +38,13 @@ extern void close_tsvector_parser(TSVectorParseState state);
 struct TSQueryParserStateData; /* private in backend/utils/adt/tsquery.c */
 typedef struct TSQueryParserStateData *TSQueryParserState;
 
-typedef void (*PushFunction)(void *opaque, TSQueryParserState state, char *, int, int2);
+typedef void (*PushFunction)(Datum opaque, TSQueryParserState state, 
+               char *token, int tokenlen, 
+               int2 tokenweights /* bitmap as described in QueryOperand struct */ );
 
 extern TSQuery parse_tsquery(char *buf,
              PushFunction pushval,
-             void *opaque, bool isplain);
+             Datum opaque, bool isplain);
 
 /* Functions for use by PushFunction implementations */
 extern void pushValue(TSQueryParserState state,