]> granicus.if.org Git - postgresql/commitdiff
Rename GinLogicValue to GinTernaryValue.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Mon, 31 Mar 2014 07:26:38 +0000 (10:26 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Mon, 31 Mar 2014 07:26:38 +0000 (10:26 +0300)
It's more descriptive. Also, get rid of the enum, and use #defines instead,
per Greg Stark's suggestion.

src/backend/access/gin/ginarrayproc.c
src/backend/access/gin/ginget.c
src/backend/access/gin/ginlogic.c
src/backend/utils/adt/jsonb_gin.c
src/backend/utils/adt/tsginidx.c
src/include/access/gin.h
src/include/access/gin_private.h

index d04b851e3cf8a803140c565ba30c0926eb349163..32dbed68c776799c7b4ac58ba04c3037d57ad019 100644 (file)
@@ -225,7 +225,7 @@ ginarrayconsistent(PG_FUNCTION_ARGS)
 Datum
 ginarraytriconsistent(PG_FUNCTION_ARGS)
 {
-       GinLogicValue *check = (GinLogicValue *) PG_GETARG_POINTER(0);
+       GinTernaryValue *check = (GinTernaryValue *) PG_GETARG_POINTER(0);
        StrategyNumber strategy = PG_GETARG_UINT16(1);
 
        /* ArrayType  *query = PG_GETARG_ARRAYTYPE_P(2); */
@@ -234,7 +234,7 @@ ginarraytriconsistent(PG_FUNCTION_ARGS)
        /* Pointer         *extra_data = (Pointer *) PG_GETARG_POINTER(4); */
        /* Datum           *queryKeys = (Datum *) PG_GETARG_POINTER(5); */
        bool       *nullFlags = (bool *) PG_GETARG_POINTER(6);
-       GinLogicValue   res;
+       GinTernaryValue res;
        int32           i;
 
        switch (strategy)
@@ -300,5 +300,5 @@ ginarraytriconsistent(PG_FUNCTION_ARGS)
                        res = false;
        }
 
-       PG_RETURN_GIN_LOGIC_VALUE(res);
+       PG_RETURN_GIN_TERNARY_VALUE(res);
 }
index 9d96bf5d5f7e13e58e811dab9c0c925bdfc526f0..dfc3dc48c80412a056a303a5c146e7dc56c86c42 100644 (file)
@@ -873,7 +873,7 @@ keyGetItem(GinState *ginstate, MemoryContext tempCtx, GinScanKey key,
        uint32          i;
        bool            haveLossyEntry;
        GinScanEntry entry;
-       GinLogicValue res;
+       GinTernaryValue res;
        MemoryContext oldCtx;
        bool            allFinished;
 
index e6d9e051696190ade82c60efccaa92cb3ae7fdc1..167d25ea5c7e72f1bb48c68d492e6d4fd9885127 100644 (file)
@@ -58,7 +58,7 @@ trueConsistentFn(GinScanKey key)
        key->recheckCurItem = false;
        return true;
 }
-static GinLogicValue
+static GinTernaryValue
 trueTriConsistentFn(GinScanKey key)
 {
        return GIN_TRUE;
@@ -91,17 +91,18 @@ directBoolConsistentFn(GinScanKey key)
 /*
  * A helper function for calling a native ternary logic consistent function.
  */
-static GinLogicValue
+static GinTernaryValue
 directTriConsistentFn(GinScanKey key)
 {
-       return DatumGetGinLogicValue(FunctionCall7Coll(key->triConsistentFmgrInfo,
-                                                                                 key->collation,
-                                                                                 PointerGetDatum(key->entryRes),
-                                                                                 UInt16GetDatum(key->strategy),
-                                                                                 key->query,
-                                                                                 UInt32GetDatum(key->nuserentries),
-                                                                                 PointerGetDatum(key->extra_data),
-                                                                                 PointerGetDatum(key->queryValues),
+       return DatumGetGinTernaryValue(FunctionCall7Coll(
+                                                                          key->triConsistentFmgrInfo,
+                                                                          key->collation,
+                                                                          PointerGetDatum(key->entryRes),
+                                                                          UInt16GetDatum(key->strategy),
+                                                                          key->query,
+                                                                          UInt32GetDatum(key->nuserentries),
+                                                                          PointerGetDatum(key->extra_data),
+                                                                          PointerGetDatum(key->queryValues),
                                                                         PointerGetDatum(key->queryCategories)));
 }
 
@@ -113,15 +114,16 @@ directTriConsistentFn(GinScanKey key)
 static bool
 shimBoolConsistentFn(GinScanKey key)
 {
-       GinLogicValue result;
-       result = DatumGetGinLogicValue(FunctionCall7Coll(key->triConsistentFmgrInfo,
-                                                                                 key->collation,
-                                                                                 PointerGetDatum(key->entryRes),
-                                                                                 UInt16GetDatum(key->strategy),
-                                                                                 key->query,
-                                                                                 UInt32GetDatum(key->nuserentries),
-                                                                                 PointerGetDatum(key->extra_data),
-                                                                                 PointerGetDatum(key->queryValues),
+       GinTernaryValue result;
+       result = DatumGetGinTernaryValue(FunctionCall7Coll(
+                                                                                key->triConsistentFmgrInfo,
+                                                                                key->collation,
+                                                                                PointerGetDatum(key->entryRes),
+                                                                                UInt16GetDatum(key->strategy),
+                                                                                key->query,
+                                                                                UInt32GetDatum(key->nuserentries),
+                                                                                PointerGetDatum(key->extra_data),
+                                                                                PointerGetDatum(key->queryValues),
                                                                         PointerGetDatum(key->queryCategories)));
        if (result == GIN_MAYBE)
        {
@@ -147,7 +149,7 @@ shimBoolConsistentFn(GinScanKey key)
  *
  * NB: This function modifies the key->entryRes array!
  */
-static GinLogicValue
+static GinTernaryValue
 shimTriConsistentFn(GinScanKey key)
 {
        int                     nmaybe;
@@ -155,7 +157,7 @@ shimTriConsistentFn(GinScanKey key)
        int                     i;
        bool            boolResult;
        bool            recheck = false;
-       GinLogicValue curResult;
+       GinTernaryValue curResult;
 
        /*
         * Count how many MAYBE inputs there are, and store their indexes in
index 4a6b8fd68887b8d42bdc9287434c020626c98514..32ca024c694b5995559833a0b8f4eae828fa23f9 100644 (file)
@@ -288,12 +288,12 @@ gin_consistent_jsonb(PG_FUNCTION_ARGS)
 Datum
 gin_triconsistent_jsonb(PG_FUNCTION_ARGS)
 {
-       GinLogicValue   *check = (GinLogicValue *) PG_GETARG_POINTER(0);
+       GinTernaryValue *check = (GinTernaryValue *) PG_GETARG_POINTER(0);
        StrategyNumber strategy = PG_GETARG_UINT16(1);
        /* Jsonb           *query = PG_GETARG_JSONB(2); */
        int32           nkeys = PG_GETARG_INT32(3);
        /* Pointer         *extra_data = (Pointer *) PG_GETARG_POINTER(4); */
-       GinLogicValue   res = GIN_TRUE;
+       GinTernaryValue res = GIN_TRUE;
 
        int32           i;
 
@@ -366,7 +366,7 @@ gin_triconsistent_jsonb(PG_FUNCTION_ARGS)
        else
                elog(ERROR, "unrecognized strategy number: %d", strategy);
 
-       PG_RETURN_GIN_LOGIC_VALUE(res);
+       PG_RETURN_GIN_TERNARY_VALUE(res);
 }
 
 /*
@@ -414,12 +414,12 @@ gin_consistent_jsonb_hash(PG_FUNCTION_ARGS)
 Datum
 gin_triconsistent_jsonb_hash(PG_FUNCTION_ARGS)
 {
-       GinLogicValue   *check = (GinLogicValue *) PG_GETARG_POINTER(0);
+       GinTernaryValue *check = (GinTernaryValue *) PG_GETARG_POINTER(0);
        StrategyNumber strategy = PG_GETARG_UINT16(1);
        /* Jsonb           *query = PG_GETARG_JSONB(2); */
        int32           nkeys = PG_GETARG_INT32(3);
        /* Pointer         *extra_data = (Pointer *) PG_GETARG_POINTER(4); */
-       GinLogicValue   res = GIN_TRUE;
+       GinTernaryValue res = GIN_TRUE;
        int32                   i;
        bool                    has_maybe = false;
 
@@ -455,7 +455,7 @@ gin_triconsistent_jsonb_hash(PG_FUNCTION_ARGS)
        if (!has_maybe && res == GIN_TRUE)
                res = GIN_MAYBE;
 
-       PG_RETURN_GIN_LOGIC_VALUE(res);
+       PG_RETURN_GIN_TERNARY_VALUE(res);
 }
 
 Datum
index 49e44bd8a7e689897b94f6012325ae945b8b06a8..df47105d0b2f4429cfe6ceb16368030e2bb04272 100644 (file)
@@ -173,12 +173,12 @@ gin_extract_tsquery(PG_FUNCTION_ARGS)
 typedef struct
 {
        QueryItem  *first_item;
-       GinLogicValue *check;
+       GinTernaryValue *check;
        int                *map_item_operand;
        bool       *need_recheck;
 } GinChkVal;
 
-static GinLogicValue
+static GinTernaryValue
 checkcondition_gin(void *checkval, QueryOperand *val)
 {
        GinChkVal  *gcv = (GinChkVal *) checkval;
@@ -202,11 +202,11 @@ checkcondition_gin(void *checkval, QueryOperand *val)
  * checkval can be used to pass information to the callback. TS_execute doesn't
  * do anything with it.
  */
-static GinLogicValue
+static GinTernaryValue
 TS_execute_ternary(QueryItem *curitem, void *checkval,
-                                  GinLogicValue (*chkcond) (void *checkval, QueryOperand *val))
+                                  GinTernaryValue (*chkcond) (void *checkval, QueryOperand *val))
 {
-       GinLogicValue val1, val2, result;
+       GinTernaryValue val1, val2, result;
        /* since this function recurses, it could be driven to stack overflow */
        check_stack_depth();
 
@@ -297,14 +297,14 @@ gin_tsquery_consistent(PG_FUNCTION_ARGS)
 Datum
 gin_tsquery_triconsistent(PG_FUNCTION_ARGS)
 {
-       GinLogicValue *check = (GinLogicValue *) PG_GETARG_POINTER(0);
+       GinTernaryValue *check = (GinTernaryValue *) PG_GETARG_POINTER(0);
 
        /* StrategyNumber strategy = PG_GETARG_UINT16(1); */
        TSQuery         query = PG_GETARG_TSQUERY(2);
 
        /* int32        nkeys = PG_GETARG_INT32(3); */
        Pointer    *extra_data = (Pointer *) PG_GETARG_POINTER(4);
-       GinLogicValue res = GIN_FALSE;
+       GinTernaryValue res = GIN_FALSE;
        bool            recheck;
 
        /* The query requires recheck only if it involves weights */
@@ -332,7 +332,7 @@ gin_tsquery_triconsistent(PG_FUNCTION_ARGS)
                        res = GIN_MAYBE;
        }
 
-       PG_RETURN_GIN_LOGIC_VALUE(res);
+       PG_RETURN_GIN_TERNARY_VALUE(res);
 }
 
 /*
index 34f4405bf6953e1cf58186744cf165a6ec971df0..f1894274fb3695c189f686e71a8deba0ca22d717 100644 (file)
@@ -47,20 +47,22 @@ typedef struct GinStatsData
        int32           ginVersion;
 } GinStatsData;
 
-/* ginlogic.c */
-enum GinLogicValueEnum
-{
-       GIN_FALSE = 0,                  /* item is not present / does not match */
-       GIN_TRUE = 1,                   /* item is present / matches */
-       GIN_MAYBE = 2                   /* don't know if item is present / don't know if
-                                                        * matches */
-};
+/*
+ * A ternary value used by tri-consistent functions.
+ *
+ * For convenience, this is compatible with booleans. A boolean can be
+ * safely cast to a GinTernaryValue.
+ */
+typedef char GinTernaryValue;
 
-typedef char GinLogicValue;
+#define GIN_FALSE              0       /* item is not present / does not match */
+#define GIN_TRUE               1       /* item is present / matches */
+#define GIN_MAYBE              2       /* don't know if item is present / don't know if
+                                                        * matches */
 
-#define DatumGetGinLogicValue(X) ((GinLogicValue)(X))
-#define GinLogicValueGetDatum(X) ((Datum)(X))
-#define PG_RETURN_GIN_LOGIC_VALUE(x) return GinLogicValueGetDatum(x)
+#define DatumGetGinTernaryValue(X) ((GinTernaryValue)(X))
+#define GinTernaryValueGetDatum(X) ((Datum)(X))
+#define PG_RETURN_GIN_TERNARY_VALUE(x) return GinTernaryValueGetDatum(x)
 
 /* GUC parameter */
 extern PGDLLIMPORT int GinFuzzySearchLimit;
index a7beed1f256cbd314b7abb262ced4518b965b951..d11811acb57263300318d6357781ae735dd62844 100644 (file)
@@ -763,7 +763,7 @@ typedef struct GinScanKeyData
        /* array of check flags, reported to consistentFn */
        bool       *entryRes;
        bool            (*boolConsistentFn) (GinScanKey key);
-       GinLogicValue (*triConsistentFn) (GinScanKey key);
+       GinTernaryValue (*triConsistentFn) (GinScanKey key);
        FmgrInfo   *consistentFmgrInfo;
        FmgrInfo   *triConsistentFmgrInfo;
        Oid                     collation;