]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Add missing Datum conversions
authorPeter Eisentraut <peter@eisentraut.org>
Fri, 8 Aug 2025 20:05:05 +0000 (22:05 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Fri, 8 Aug 2025 20:06:57 +0000 (22:06 +0200)
Add various missing conversions from and to Datum.  The previous code
mostly relied on implicit conversions or its own explicit casts
instead of using the correct DatumGet*() or *GetDatum() functions.

We think these omissions are harmless.  Some actual bugs that were
discovered during this process have been committed
separately (80c758a2e1dfd2ab03fea2).

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/flat/8246d7ff-f4b7-4363-913e-827dadfeb145%40eisentraut.org

45 files changed:
contrib/btree_gist/btree_enum.c
contrib/btree_gist/btree_numeric.c
contrib/btree_gist/btree_utils_num.c
contrib/intarray/_int_op.c
contrib/pageinspect/heapfuncs.c
contrib/pgrowlocks/pgrowlocks.c
contrib/seg/seg.c
src/backend/access/brin/brin.c
src/backend/access/brin/brin_bloom.c
src/backend/access/brin/brin_minmax.c
src/backend/access/brin/brin_minmax_multi.c
src/backend/access/common/heaptuple.c
src/backend/access/common/toast_internals.c
src/backend/catalog/objectaddress.c
src/backend/catalog/pg_proc.c
src/backend/catalog/pg_publication.c
src/backend/catalog/pg_shdepend.c
src/backend/commands/event_trigger.c
src/backend/commands/subscriptioncmds.c
src/backend/commands/tablecmds.c
src/backend/commands/trigger.c
src/backend/commands/tsearchcmds.c
src/backend/commands/user.c
src/backend/executor/execExprInterp.c
src/backend/statistics/attribute_stats.c
src/backend/storage/aio/aio_funcs.c
src/backend/storage/buffer/bufmgr.c
src/backend/storage/ipc/shmem.c
src/backend/storage/lmgr/lock.c
src/backend/utils/adt/datum.c
src/backend/utils/adt/jsonpath_exec.c
src/backend/utils/adt/lockfuncs.c
src/backend/utils/adt/multirangetypes.c
src/backend/utils/adt/rangetypes.c
src/backend/utils/adt/rangetypes_spgist.c
src/backend/utils/adt/rowtypes.c
src/backend/utils/adt/waitfuncs.c
src/backend/utils/cache/attoptcache.c
src/backend/utils/cache/lsyscache.c
src/backend/utils/cache/relcache.c
src/backend/utils/cache/syscache.c
src/backend/utils/sort/sortsupport.c
src/backend/utils/sort/tuplesortvariants.c
src/pl/plperl/plperl.c
src/test/regress/regress.c

index 83c95c7bb0401505284dda2c0cc8a113c73cada2..c54cf3c7bae87d01f30fddea0658084a237e5025 100644 (file)
@@ -193,8 +193,8 @@ gbt_enum_ssup_cmp(Datum x, Datum y, SortSupport ssup)
        return DatumGetInt32(CallerFInfoFunctionCall2(enum_cmp,
                                                                                                  ssup->ssup_extra,
                                                                                                  InvalidOid,
-                                                                                                 arg1->lower,
-                                                                                                 arg2->lower));
+                                                                                                 ObjectIdGetDatum(arg1->lower),
+                                                                                                 ObjectIdGetDatum(arg2->lower)));
 }
 
 Datum
index a39c05d9da1cf02e07681d1403843b212f1c1a61..052f27b07949e1260932b3e3c3b1b6bfb1a80ef1 100644 (file)
@@ -192,7 +192,7 @@ gbt_numeric_penalty(PG_FUNCTION_ARGS)
 
                *result = 0.0;
 
-               if (DirectFunctionCall2(numeric_gt, NumericGetDatum(ds), NumericGetDatum(nul)))
+               if (DatumGetBool(DirectFunctionCall2(numeric_gt, NumericGetDatum(ds), NumericGetDatum(nul))))
                {
                        *result += FLT_MIN;
                        os = DatumGetNumeric(DirectFunctionCall2(numeric_div,
index 346ee837d75f44e1b4aa00fffb408a53601935e1..446fa930b92c48831de5a34873062352fc15a28b 100644 (file)
@@ -119,38 +119,38 @@ gbt_num_fetch(GISTENTRY *entry, const gbtree_ninfo *tinfo)
        switch (tinfo->t)
        {
                case gbt_t_bool:
-                       datum = BoolGetDatum(*(bool *) entry->key);
+                       datum = BoolGetDatum(*(bool *) DatumGetPointer(entry->key));
                        break;
                case gbt_t_int2:
-                       datum = Int16GetDatum(*(int16 *) entry->key);
+                       datum = Int16GetDatum(*(int16 *) DatumGetPointer(entry->key));
                        break;
                case gbt_t_int4:
-                       datum = Int32GetDatum(*(int32 *) entry->key);
+                       datum = Int32GetDatum(*(int32 *) DatumGetPointer(entry->key));
                        break;
                case gbt_t_int8:
-                       datum = Int64GetDatum(*(int64 *) entry->key);
+                       datum = Int64GetDatum(*(int64 *) DatumGetPointer(entry->key));
                        break;
                case gbt_t_oid:
                case gbt_t_enum:
-                       datum = ObjectIdGetDatum(*(Oid *) entry->key);
+                       datum = ObjectIdGetDatum(*(Oid *) DatumGetPointer(entry->key));
                        break;
                case gbt_t_float4:
-                       datum = Float4GetDatum(*(float4 *) entry->key);
+                       datum = Float4GetDatum(*(float4 *) DatumGetPointer(entry->key));
                        break;
                case gbt_t_float8:
-                       datum = Float8GetDatum(*(float8 *) entry->key);
+                       datum = Float8GetDatum(*(float8 *) DatumGetPointer(entry->key));
                        break;
                case gbt_t_date:
-                       datum = DateADTGetDatum(*(DateADT *) entry->key);
+                       datum = DateADTGetDatum(*(DateADT *) DatumGetPointer(entry->key));
                        break;
                case gbt_t_time:
-                       datum = TimeADTGetDatum(*(TimeADT *) entry->key);
+                       datum = TimeADTGetDatum(*(TimeADT *) DatumGetPointer(entry->key));
                        break;
                case gbt_t_ts:
-                       datum = TimestampGetDatum(*(Timestamp *) entry->key);
+                       datum = TimestampGetDatum(*(Timestamp *) DatumGetPointer(entry->key));
                        break;
                case gbt_t_cash:
-                       datum = CashGetDatum(*(Cash *) entry->key);
+                       datum = CashGetDatum(*(Cash *) DatumGetPointer(entry->key));
                        break;
                default:
                        datum = entry->key;
index ba6d0a99995ed633e6bc9baeb4b43b38ee06f5ef..a706e353c6f9499d72ce509ddacd7580adeaa0a5 100644 (file)
@@ -108,7 +108,7 @@ _int_overlap(PG_FUNCTION_ARGS)
        CHECKARRVALID(a);
        CHECKARRVALID(b);
        if (ARRISEMPTY(a) || ARRISEMPTY(b))
-               return false;
+               PG_RETURN_BOOL(false);
 
        SORT(a);
        SORT(b);
index 377ae30d1fa711a226c3160177f4b06b1c211a74..c13f07655c44169080c16c167c23a91015b67d5e 100644 (file)
@@ -256,7 +256,7 @@ heap_page_items(PG_FUNCTION_ARGS)
                                        nulls[11] = true;
 
                                if (tuphdr->t_infomask & HEAP_HASOID_OLD)
-                                       values[12] = HeapTupleHeaderGetOidOld(tuphdr);
+                                       values[12] = ObjectIdGetDatum(HeapTupleHeaderGetOidOld(tuphdr));
                                else
                                        nulls[12] = true;
 
index b75d80fa7a9c2064cf19f042c73150030e6aabe6..f88269332b6be94be4a9c17bacbca5f69be6a4c3 100644 (file)
@@ -141,8 +141,8 @@ pgrowlocks(PG_FUNCTION_ARGS)
                 */
                if (htsu == TM_BeingModified)
                {
-                       values[Atnum_tid] = (char *) DirectFunctionCall1(tidout,
-                                                                                                                        PointerGetDatum(&tuple->t_self));
+                       values[Atnum_tid] = DatumGetCString(DirectFunctionCall1(tidout,
+                                                                                                                                       PointerGetDatum(&tuple->t_self)));
 
                        values[Atnum_xmax] = palloc(NCHARS * sizeof(char));
                        snprintf(values[Atnum_xmax], NCHARS, "%u", xmax);
index 151cbb954b9a1bfd2ed0ce64fe169327f73b10c5..b5de2a5e1be3fdadde32b83b66f44e1bd8df73f3 100644 (file)
@@ -417,7 +417,7 @@ gseg_same(PG_FUNCTION_ARGS)
 {
        bool       *result = (bool *) PG_GETARG_POINTER(2);
 
-       if (DirectFunctionCall2(seg_same, PG_GETARG_DATUM(0), PG_GETARG_DATUM(1)))
+       if (DatumGetBool(DirectFunctionCall2(seg_same, PG_GETARG_DATUM(0), PG_GETARG_DATUM(1))))
                *result = true;
        else
                *result = false;
@@ -470,7 +470,7 @@ gseg_leaf_consistent(Datum key, Datum query, StrategyNumber strategy)
                        retval = DirectFunctionCall2(seg_contained, key, query);
                        break;
                default:
-                       retval = false;
+                       retval = BoolGetDatum(false);
        }
 
        PG_RETURN_DATUM(retval);
index 4204088fa0d7d61aad4260875843a674eb488e97..7ff7467e462b0e40623fc33e67a633a23615debc 100644 (file)
@@ -1608,7 +1608,7 @@ brin_build_desc(Relation rel)
                opcInfoFn = index_getprocinfo(rel, keyno + 1, BRIN_PROCNUM_OPCINFO);
 
                opcinfo[keyno] = (BrinOpcInfo *)
-                       DatumGetPointer(FunctionCall1(opcInfoFn, attr->atttypid));
+                       DatumGetPointer(FunctionCall1(opcInfoFn, ObjectIdGetDatum(attr->atttypid)));
                totalstored += opcinfo[keyno]->oi_nstored;
        }
 
@@ -2262,7 +2262,7 @@ add_values_to_range(Relation idxRel, BrinDesc *bdesc, BrinMemTuple *dtup,
                                                                   PointerGetDatum(bdesc),
                                                                   PointerGetDatum(bval),
                                                                   values[keyno],
-                                                                  nulls[keyno]);
+                                                                  BoolGetDatum(nulls[keyno]));
                /* if that returned true, we need to insert the updated tuple */
                modified |= DatumGetBool(result);
 
index 82b425ce37daa9fa5508ac385133b3987c342375..7c3f7d454fc250d72f83d3ce7f2506fe45941fc5 100644 (file)
@@ -540,7 +540,7 @@ brin_bloom_add_value(PG_FUNCTION_ARGS)
        BrinDesc   *bdesc = (BrinDesc *) PG_GETARG_POINTER(0);
        BrinValues *column = (BrinValues *) PG_GETARG_POINTER(1);
        Datum           newval = PG_GETARG_DATUM(2);
-       bool            isnull PG_USED_FOR_ASSERTS_ONLY = PG_GETARG_DATUM(3);
+       bool            isnull PG_USED_FOR_ASSERTS_ONLY = PG_GETARG_BOOL(3);
        BloomOptions *opts = (BloomOptions *) PG_GET_OPCLASS_OPTIONS();
        Oid                     colloid = PG_GET_COLLATION();
        FmgrInfo   *hashFn;
index d21ab3a668cce235c96387489b64b61e3f1c9e04..79c5a0aa18578a732e225f0f3656db0b9dd30fdf 100644 (file)
@@ -66,7 +66,7 @@ brin_minmax_add_value(PG_FUNCTION_ARGS)
        BrinDesc   *bdesc = (BrinDesc *) PG_GETARG_POINTER(0);
        BrinValues *column = (BrinValues *) PG_GETARG_POINTER(1);
        Datum           newval = PG_GETARG_DATUM(2);
-       bool            isnull PG_USED_FOR_ASSERTS_ONLY = PG_GETARG_DATUM(3);
+       bool            isnull PG_USED_FOR_ASSERTS_ONLY = PG_GETARG_BOOL(3);
        Oid                     colloid = PG_GET_COLLATION();
        FmgrInfo   *cmpFn;
        Datum           compar;
@@ -225,8 +225,8 @@ brin_minmax_union(PG_FUNCTION_ARGS)
        /* Adjust minimum, if B's min is less than A's min */
        finfo = minmax_get_strategy_procinfo(bdesc, attno, attr->atttypid,
                                                                                 BTLessStrategyNumber);
-       needsadj = FunctionCall2Coll(finfo, colloid, col_b->bv_values[0],
-                                                                col_a->bv_values[0]);
+       needsadj = DatumGetBool(FunctionCall2Coll(finfo, colloid, col_b->bv_values[0],
+                                                                                         col_a->bv_values[0]));
        if (needsadj)
        {
                if (!attr->attbyval)
@@ -238,8 +238,8 @@ brin_minmax_union(PG_FUNCTION_ARGS)
        /* Adjust maximum, if B's max is greater than A's max */
        finfo = minmax_get_strategy_procinfo(bdesc, attno, attr->atttypid,
                                                                                 BTGreaterStrategyNumber);
-       needsadj = FunctionCall2Coll(finfo, colloid, col_b->bv_values[1],
-                                                                col_a->bv_values[1]);
+       needsadj = DatumGetBool(FunctionCall2Coll(finfo, colloid, col_b->bv_values[1],
+                                                                                         col_a->bv_values[1]));
        if (needsadj)
        {
                if (!attr->attbyval)
index a5a414182caa652c102e5ae7dad66842b55bf8b8..c87f1b9cd7eb2d2472c603d06b72731bcc171659 100644 (file)
@@ -1992,8 +1992,8 @@ brin_minmax_multi_distance_tid(PG_FUNCTION_ARGS)
        double          da1,
                                da2;
 
-       ItemPointer pa1 = (ItemPointer) PG_GETARG_DATUM(0);
-       ItemPointer pa2 = (ItemPointer) PG_GETARG_DATUM(1);
+       ItemPointer pa1 = (ItemPointer) PG_GETARG_POINTER(0);
+       ItemPointer pa2 = (ItemPointer) PG_GETARG_POINTER(1);
 
        /*
         * We know the values are range boundaries, but the range may be collapsed
@@ -2414,7 +2414,7 @@ brin_minmax_multi_add_value(PG_FUNCTION_ARGS)
        BrinDesc   *bdesc = (BrinDesc *) PG_GETARG_POINTER(0);
        BrinValues *column = (BrinValues *) PG_GETARG_POINTER(1);
        Datum           newval = PG_GETARG_DATUM(2);
-       bool            isnull PG_USED_FOR_ASSERTS_ONLY = PG_GETARG_DATUM(3);
+       bool            isnull PG_USED_FOR_ASSERTS_ONLY = PG_GETARG_BOOL(3);
        MinMaxMultiOptions *opts = (MinMaxMultiOptions *) PG_GET_OPCLASS_OPTIONS();
        Oid                     colloid = PG_GET_COLLATION();
        bool            modified = false;
index a410b5eb99b99247ce7b233f8f91ea3e8474ee09..1173a6d81b5edf65d4e6a98ecd628e914e695342 100644 (file)
@@ -105,7 +105,7 @@ missing_hash(const void *key, Size keysize)
 {
        const missing_cache_key *entry = (missing_cache_key *) key;
 
-       return hash_bytes((const unsigned char *) entry->value, entry->len);
+       return hash_bytes((const unsigned char *) DatumGetPointer(entry->value), entry->len);
 }
 
 static int
index 196e06115e936057f9a21a275cdb2fca93c184ff..a1d0eed8953ba82704e3ad6ce1860af677b3d3f4 100644 (file)
@@ -64,11 +64,11 @@ toast_compress_datum(Datum value, char cmethod)
        switch (cmethod)
        {
                case TOAST_PGLZ_COMPRESSION:
-                       tmp = pglz_compress_datum((const struct varlena *) value);
+                       tmp = pglz_compress_datum((const struct varlena *) DatumGetPointer(value));
                        cmid = TOAST_PGLZ_COMPRESSION_ID;
                        break;
                case TOAST_LZ4_COMPRESSION:
-                       tmp = lz4_compress_datum((const struct varlena *) value);
+                       tmp = lz4_compress_datum((const struct varlena *) DatumGetPointer(value));
                        cmid = TOAST_LZ4_COMPRESSION_ID;
                        break;
                default:
index b63fd57dc04bb57a90f995b4d34dbc55708ff174..0102c9984e7db2b3d64911bb4f488c6c470190ca 100644 (file)
@@ -4283,8 +4283,8 @@ pg_identify_object(PG_FUNCTION_ARGS)
                        nspAttnum = get_object_attnum_namespace(address.classId);
                        if (nspAttnum != InvalidAttrNumber)
                        {
-                               schema_oid = heap_getattr(objtup, nspAttnum,
-                                                                                 RelationGetDescr(catalog), &isnull);
+                               schema_oid = DatumGetObjectId(heap_getattr(objtup, nspAttnum,
+                                                                                                                  RelationGetDescr(catalog), &isnull));
                                if (isnull)
                                        elog(ERROR, "invalid null namespace in object %u/%u/%d",
                                                 address.classId, address.objectId, address.objectSubId);
index 5fdcf24d5f8de29db33bf017965b63569b7c9402..75b17fed15e5b8ae2bcef7f05ac3ba5d2893f1fd 100644 (file)
@@ -1212,6 +1212,6 @@ oid_array_to_list(Datum datum)
 
        deconstruct_array_builtin(array, OIDOID, &values, NULL, &nelems);
        for (i = 0; i < nelems; i++)
-               result = lappend_oid(result, values[i]);
+               result = lappend_oid(result, DatumGetObjectId(values[i]));
        return result;
 }
index d6f94db5d999bea8e1fc0773c5aa3bd256d158e0..b911efcf9cb6ab843ae77b7ca83f78cbefdf8692 100644 (file)
@@ -1001,7 +1001,7 @@ GetSchemaPublicationRelations(Oid schemaid, PublicationPartOpt pub_partopt)
        ScanKeyInit(&key[0],
                                Anum_pg_class_relnamespace,
                                BTEqualStrategyNumber, F_OIDEQ,
-                               schemaid);
+                               ObjectIdGetDatum(schemaid));
 
        /* get all the relations present in the specified schema */
        scan = table_beginscan_catalog(classRel, 1, key);
index 536191284e803e54f7121e42b12f0115d32c3c45..32e544da28a1343576dd57f21feed03949309ebb 100644 (file)
@@ -956,12 +956,12 @@ copyTemplateDependencies(Oid templateDbId, Oid newDbId)
                shdep = (Form_pg_shdepend) GETSTRUCT(tup);
 
                slot[slot_stored_count]->tts_values[Anum_pg_shdepend_dbid - 1] = ObjectIdGetDatum(newDbId);
-               slot[slot_stored_count]->tts_values[Anum_pg_shdepend_classid - 1] = shdep->classid;
-               slot[slot_stored_count]->tts_values[Anum_pg_shdepend_objid - 1] = shdep->objid;
-               slot[slot_stored_count]->tts_values[Anum_pg_shdepend_objsubid - 1] = shdep->objsubid;
-               slot[slot_stored_count]->tts_values[Anum_pg_shdepend_refclassid - 1] = shdep->refclassid;
-               slot[slot_stored_count]->tts_values[Anum_pg_shdepend_refobjid - 1] = shdep->refobjid;
-               slot[slot_stored_count]->tts_values[Anum_pg_shdepend_deptype - 1] = shdep->deptype;
+               slot[slot_stored_count]->tts_values[Anum_pg_shdepend_classid - 1] = ObjectIdGetDatum(shdep->classid);
+               slot[slot_stored_count]->tts_values[Anum_pg_shdepend_objid - 1] = ObjectIdGetDatum(shdep->objid);
+               slot[slot_stored_count]->tts_values[Anum_pg_shdepend_objsubid - 1] = Int32GetDatum(shdep->objsubid);
+               slot[slot_stored_count]->tts_values[Anum_pg_shdepend_refclassid - 1] = ObjectIdGetDatum(shdep->refclassid);
+               slot[slot_stored_count]->tts_values[Anum_pg_shdepend_refobjid - 1] = ObjectIdGetDatum(shdep->refobjid);
+               slot[slot_stored_count]->tts_values[Anum_pg_shdepend_deptype - 1] = CharGetDatum(shdep->deptype);
 
                ExecStoreVirtualTuple(slot[slot_stored_count]);
                slot_stored_count++;
index edc2c988e2934a651ac7b0a0b51446614c4620b3..631fb0525f1e70728378239d4d31534d9f9e918e 100644 (file)
@@ -2021,8 +2021,8 @@ pg_event_trigger_ddl_commands(PG_FUNCTION_ARGS)
                                                                elog(ERROR, "cache lookup failed for object %u/%u",
                                                                         addr.classId, addr.objectId);
                                                        schema_oid =
-                                                               heap_getattr(objtup, nspAttnum,
-                                                                                        RelationGetDescr(catalog), &isnull);
+                                                               DatumGetObjectId(heap_getattr(objtup, nspAttnum,
+                                                                                                                         RelationGetDescr(catalog), &isnull));
                                                        if (isnull)
                                                                elog(ERROR,
                                                                         "invalid null namespace in object %u/%u/%d",
index cd6c3684482f918b05171e5897bd0d24ec8a6384..faa3650d287de8e660162390e236ee9a27d7b5bb 100644 (file)
@@ -638,7 +638,7 @@ CreateSubscription(ParseState *pstate, CreateSubscriptionStmt *stmt,
 
        /* Check if name is used */
        subid = GetSysCacheOid2(SUBSCRIPTIONNAME, Anum_pg_subscription_oid,
-                                                       MyDatabaseId, CStringGetDatum(stmt->subname));
+                                                       ObjectIdGetDatum(MyDatabaseId), CStringGetDatum(stmt->subname));
        if (OidIsValid(subid))
        {
                ereport(ERROR,
@@ -1185,7 +1185,7 @@ AlterSubscription(ParseState *pstate, AlterSubscriptionStmt *stmt,
        rel = table_open(SubscriptionRelationId, RowExclusiveLock);
 
        /* Fetch the existing tuple. */
-       tup = SearchSysCacheCopy2(SUBSCRIPTIONNAME, MyDatabaseId,
+       tup = SearchSysCacheCopy2(SUBSCRIPTIONNAME, ObjectIdGetDatum(MyDatabaseId),
                                                          CStringGetDatum(stmt->subname));
 
        if (!HeapTupleIsValid(tup))
@@ -1808,7 +1808,7 @@ DropSubscription(DropSubscriptionStmt *stmt, bool isTopLevel)
         */
        rel = table_open(SubscriptionRelationId, AccessExclusiveLock);
 
-       tup = SearchSysCache2(SUBSCRIPTIONNAME, MyDatabaseId,
+       tup = SearchSysCache2(SUBSCRIPTIONNAME, ObjectIdGetDatum(MyDatabaseId),
                                                  CStringGetDatum(stmt->subname));
 
        if (!HeapTupleIsValid(tup))
@@ -2193,7 +2193,7 @@ AlterSubscriptionOwner(const char *name, Oid newOwnerId)
 
        rel = table_open(SubscriptionRelationId, RowExclusiveLock);
 
-       tup = SearchSysCacheCopy2(SUBSCRIPTIONNAME, MyDatabaseId,
+       tup = SearchSysCacheCopy2(SUBSCRIPTIONNAME, ObjectIdGetDatum(MyDatabaseId),
                                                          CStringGetDatum(name));
 
        if (!HeapTupleIsValid(tup))
index cb811520c29591ea7f9795c023f644435109b833..c6dd2e020da23edc0d210129e3e104f64f5a8abc 100644 (file)
@@ -8985,7 +8985,7 @@ ATExecSetStatistics(Relation rel, const char *colName, int16 colNum, Node *newVa
        memset(repl_null, false, sizeof(repl_null));
        memset(repl_repl, false, sizeof(repl_repl));
        if (!newtarget_default)
-               repl_val[Anum_pg_attribute_attstattarget - 1] = newtarget;
+               repl_val[Anum_pg_attribute_attstattarget - 1] = Int16GetDatum(newtarget);
        else
                repl_null[Anum_pg_attribute_attstattarget - 1] = true;
        repl_repl[Anum_pg_attribute_attstattarget - 1] = true;
index 71014c65b4950a12b3cda008040ffab0c7ed652a..235533ac17f78816ea584c0e94251a47448e3447 100644 (file)
@@ -872,7 +872,7 @@ CreateTriggerFiringOn(CreateTrigStmt *stmt, const char *queryString,
                                                                                                                         CStringGetDatum(trigname));
        values[Anum_pg_trigger_tgfoid - 1] = ObjectIdGetDatum(funcoid);
        values[Anum_pg_trigger_tgtype - 1] = Int16GetDatum(tgtype);
-       values[Anum_pg_trigger_tgenabled - 1] = trigger_fires_when;
+       values[Anum_pg_trigger_tgenabled - 1] = CharGetDatum(trigger_fires_when);
        values[Anum_pg_trigger_tgisinternal - 1] = BoolGetDatum(isInternal);
        values[Anum_pg_trigger_tgconstrrelid - 1] = ObjectIdGetDatum(constrrelid);
        values[Anum_pg_trigger_tgconstrindid - 1] = ObjectIdGetDatum(indexOid);
index ab16d42ad56bafce1dd716e3b05aee5943cbe8e8..dc7df736fb8267a619945c3e821afdec01f78e59 100644 (file)
@@ -1058,10 +1058,10 @@ DefineTSConfiguration(List *names, List *parameters, ObjectAddress *copied)
                        memset(slot[slot_stored_count]->tts_isnull, false,
                                   slot[slot_stored_count]->tts_tupleDescriptor->natts * sizeof(bool));
 
-                       slot[slot_stored_count]->tts_values[Anum_pg_ts_config_map_mapcfg - 1] = cfgOid;
-                       slot[slot_stored_count]->tts_values[Anum_pg_ts_config_map_maptokentype - 1] = cfgmap->maptokentype;
-                       slot[slot_stored_count]->tts_values[Anum_pg_ts_config_map_mapseqno - 1] = cfgmap->mapseqno;
-                       slot[slot_stored_count]->tts_values[Anum_pg_ts_config_map_mapdict - 1] = cfgmap->mapdict;
+                       slot[slot_stored_count]->tts_values[Anum_pg_ts_config_map_mapcfg - 1] = ObjectIdGetDatum(cfgOid);
+                       slot[slot_stored_count]->tts_values[Anum_pg_ts_config_map_maptokentype - 1] = Int32GetDatum(cfgmap->maptokentype);
+                       slot[slot_stored_count]->tts_values[Anum_pg_ts_config_map_mapseqno - 1] = Int32GetDatum(cfgmap->mapseqno);
+                       slot[slot_stored_count]->tts_values[Anum_pg_ts_config_map_mapdict - 1] = ObjectIdGetDatum(cfgmap->mapdict);
 
                        ExecStoreVirtualTuple(slot[slot_stored_count]);
                        slot_stored_count++;
index 0d638e29d0066415abab9a5a898beff3a17c3a8e..1e3d4ab0e20e736c2b3d6f3fc31f0d9c99d28b6d 100644 (file)
@@ -1924,7 +1924,7 @@ AddRoleMems(Oid currentUserId, const char *rolename, Oid roleid,
                         */
                        if ((popt->specified & GRANT_ROLE_SPECIFIED_INHERIT) != 0)
                                new_record[Anum_pg_auth_members_inherit_option - 1] =
-                                       popt->inherit;
+                                       BoolGetDatum(popt->inherit);
                        else
                        {
                                HeapTuple       mrtup;
@@ -1935,14 +1935,14 @@ AddRoleMems(Oid currentUserId, const char *rolename, Oid roleid,
                                        elog(ERROR, "cache lookup failed for role %u", memberid);
                                mrform = (Form_pg_authid) GETSTRUCT(mrtup);
                                new_record[Anum_pg_auth_members_inherit_option - 1] =
-                                       mrform->rolinherit;
+                                       BoolGetDatum(mrform->rolinherit);
                                ReleaseSysCache(mrtup);
                        }
 
                        /* get an OID for the new row and insert it */
                        objectId = GetNewOidWithIndex(pg_authmem_rel, AuthMemOidIndexId,
                                                                                  Anum_pg_auth_members_oid);
-                       new_record[Anum_pg_auth_members_oid - 1] = objectId;
+                       new_record[Anum_pg_auth_members_oid - 1] = ObjectIdGetDatum(objectId);
                        tuple = heap_form_tuple(pg_authmem_dsc,
                                                                        new_record, new_record_nulls);
                        CatalogTupleInsert(pg_authmem_rel, tuple);
index a5cfe246e638069093ac8ac2823deddc2e95a66e..0e1a74976f7d396f2709c0b9b8d0159bf515bb2d 100644 (file)
@@ -4393,7 +4393,7 @@ ExecEvalHashedScalarArrayOp(ExprState *state, ExprEvalStep *op, ExprContext *eco
                         * is the equality function and we need not-equals.
                         */
                        if (!inclause)
-                               result = !result;
+                               result = BoolGetDatum(!DatumGetBool(result));
                }
        }
 
index ab198076401b0a853df3645584c96f69ee45bcb0..e8241926d2c67de3cf02fa93be2cdc006eca71d5 100644 (file)
@@ -339,7 +339,7 @@ attribute_statistics_update(FunctionCallInfo fcinfo)
 
        starel = table_open(StatisticRelationId, RowExclusiveLock);
 
-       statup = SearchSysCache3(STATRELATTINH, reloid, attnum, inherited);
+       statup = SearchSysCache3(STATRELATTINH, ObjectIdGetDatum(reloid), Int16GetDatum(attnum), BoolGetDatum(inherited));
 
        /* initialize from existing tuple if exists */
        if (HeapTupleIsValid(statup))
@@ -895,9 +895,9 @@ init_empty_stats_tuple(Oid reloid, int16 attnum, bool inherited,
        {
                values[Anum_pg_statistic_stakind1 + slotnum - 1] = (Datum) 0;
                nulls[Anum_pg_statistic_stakind1 + slotnum - 1] = false;
-               values[Anum_pg_statistic_staop1 + slotnum - 1] = InvalidOid;
+               values[Anum_pg_statistic_staop1 + slotnum - 1] = ObjectIdGetDatum(InvalidOid);
                nulls[Anum_pg_statistic_staop1 + slotnum - 1] = false;
-               values[Anum_pg_statistic_stacoll1 + slotnum - 1] = InvalidOid;
+               values[Anum_pg_statistic_stacoll1 + slotnum - 1] = ObjectIdGetDatum(InvalidOid);
                nulls[Anum_pg_statistic_stacoll1 + slotnum - 1] = false;
        }
 }
index 584e683371a314a64cfb2542e5cf3fe50d6b7879..905ea129c813d9ec9a6781199c5fedf00b8b4aa7 100644 (file)
@@ -152,7 +152,7 @@ retry:
                        nulls[0] = false;
 
                /* column: IO's id */
-               values[1] = ioh_id;
+               values[1] = UInt32GetDatum(ioh_id);
 
                /* column: IO's generation */
                values[2] = Int64GetDatum(start_generation);
index 6c9ae83a7a869366400e6bff14bcc3c079dda66b..fd7e21d96d31fe0237c90edc722053833ef584e2 100644 (file)
@@ -6365,8 +6365,8 @@ ckpt_buforder_comparator(const CkptSortItem *a, const CkptSortItem *b)
 static int
 ts_ckpt_progress_comparator(Datum a, Datum b, void *arg)
 {
-       CkptTsStatus *sa = (CkptTsStatus *) a;
-       CkptTsStatus *sb = (CkptTsStatus *) b;
+       CkptTsStatus *sa = (CkptTsStatus *) DatumGetPointer(a);
+       CkptTsStatus *sb = (CkptTsStatus *) DatumGetPointer(b);
 
        /* we want a min-heap, so return 1 for the a < b */
        if (sa->progress < sb->progress)
index ca3656fc76f4300ab23b8d664dcaea38a45ed804..d12a3ca06842fde14af8540fa566275885e81454 100644 (file)
@@ -714,7 +714,7 @@ pg_get_shmem_allocations_numa(PG_FUNCTION_ARGS)
                for (i = 0; i <= max_nodes; i++)
                {
                        values[0] = CStringGetTextDatum(ent->key);
-                       values[1] = i;
+                       values[1] = Int32GetDatum(i);
                        values[2] = Int64GetDatum(nodes[i] * os_page_size);
 
                        tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc,
index 62f3471448ebcb07e83f0527bd25cadd7b2c1314..f8c88147160e9ac2da86eff2674dde911e698dac 100644 (file)
@@ -589,7 +589,7 @@ proclock_hash(const void *key, Size keysize)
         * intermediate variable to suppress cast-pointer-to-int warnings.
         */
        procptr = PointerGetDatum(proclocktag->myProc);
-       lockhash ^= ((uint32) procptr) << LOG2_NUM_LOCK_PARTITIONS;
+       lockhash ^= DatumGetUInt32(procptr) << LOG2_NUM_LOCK_PARTITIONS;
 
        return lockhash;
 }
@@ -610,7 +610,7 @@ ProcLockHashCode(const PROCLOCKTAG *proclocktag, uint32 hashcode)
         * This must match proclock_hash()!
         */
        procptr = PointerGetDatum(proclocktag->myProc);
-       lockhash ^= ((uint32) procptr) << LOG2_NUM_LOCK_PARTITIONS;
+       lockhash ^= DatumGetUInt32(procptr) << LOG2_NUM_LOCK_PARTITIONS;
 
        return lockhash;
 }
index fcd5b1653dd3e1fbe65b02b518b373b74ee5cd67..614644a4e2a061688f870bf3b07b7eaee9bf4620 100644 (file)
@@ -299,9 +299,9 @@ datum_image_eq(Datum value1, Datum value2, bool typByVal, int typLen)
                                                         len1 - VARHDRSZ) == 0);
 
                        /* Only free memory if it's a copy made here. */
-                       if ((Pointer) arg1val != (Pointer) value1)
+                       if ((Pointer) arg1val != DatumGetPointer(value1))
                                pfree(arg1val);
-                       if ((Pointer) arg2val != (Pointer) value2)
+                       if ((Pointer) arg2val != DatumGetPointer(value2))
                                pfree(arg2val);
                }
        }
@@ -355,7 +355,7 @@ datum_image_hash(Datum value, bool typByVal, int typLen)
                result = hash_bytes((unsigned char *) VARDATA_ANY(val), len - VARHDRSZ);
 
                /* Only free memory if it's a copy made here. */
-               if ((Pointer) val != (Pointer) value)
+               if ((Pointer) val != DatumGetPointer(value))
                        pfree(val);
        }
        else if (typLen == -2)
index 407041b14a177434169d69b8c0a6abe869a91378..5a56253522357dd35b5078b861a205954fbc32f1 100644 (file)
@@ -1517,7 +1517,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
                                        /* Convert numstr to Numeric with typmod */
                                        Assert(numstr != NULL);
                                        noerr = DirectInputFunctionCallSafe(numeric_in, numstr,
-                                                                                                               InvalidOid, dtypmod,
+                                                                                                               InvalidOid, DatumGetInt32(dtypmod),
                                                                                                                (Node *) &escontext,
                                                                                                                &numdatum);
 
index 00e67fb46d07467ff8e4f1c8ab2dab04c009a124..df938812dd3688f59262b26ae4b2e861c0c99acb 100644 (file)
@@ -398,15 +398,15 @@ pg_lock_status(PG_FUNCTION_ARGS)
                values[0] = CStringGetTextDatum(PredicateLockTagTypeNames[lockType]);
 
                /* lock target */
-               values[1] = GET_PREDICATELOCKTARGETTAG_DB(*predTag);
-               values[2] = GET_PREDICATELOCKTARGETTAG_RELATION(*predTag);
+               values[1] = ObjectIdGetDatum(GET_PREDICATELOCKTARGETTAG_DB(*predTag));
+               values[2] = ObjectIdGetDatum(GET_PREDICATELOCKTARGETTAG_RELATION(*predTag));
                if (lockType == PREDLOCKTAG_TUPLE)
-                       values[4] = GET_PREDICATELOCKTARGETTAG_OFFSET(*predTag);
+                       values[4] = UInt16GetDatum(GET_PREDICATELOCKTARGETTAG_OFFSET(*predTag));
                else
                        nulls[4] = true;
                if ((lockType == PREDLOCKTAG_TUPLE) ||
                        (lockType == PREDLOCKTAG_PAGE))
-                       values[3] = GET_PREDICATELOCKTARGETTAG_PAGE(*predTag);
+                       values[3] = UInt32GetDatum(GET_PREDICATELOCKTARGETTAG_PAGE(*predTag));
                else
                        nulls[3] = true;
 
index e64feeaeccb7c83528678169be3a3e4da0835fc0..84733dc50195ba902391c1fd3909ba2746596725 100644 (file)
@@ -2523,7 +2523,7 @@ multirange_adjacent_range(PG_FUNCTION_ARGS)
        TypeCacheEntry *typcache;
 
        if (RangeIsEmpty(r) || MultirangeIsEmpty(mr))
-               return false;
+               PG_RETURN_BOOL(false);
 
        typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
 
@@ -2544,7 +2544,7 @@ multirange_adjacent_multirange(PG_FUNCTION_ARGS)
                                upper2;
 
        if (MultirangeIsEmpty(mr1) || MultirangeIsEmpty(mr2))
-               return false;
+               PG_RETURN_BOOL(false);
 
        typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr1));
 
@@ -2639,7 +2639,7 @@ multirange_cmp(PG_FUNCTION_ARGS)
 Datum
 multirange_lt(PG_FUNCTION_ARGS)
 {
-       int                     cmp = multirange_cmp(fcinfo);
+       int                     cmp = DatumGetInt32(multirange_cmp(fcinfo));
 
        PG_RETURN_BOOL(cmp < 0);
 }
@@ -2647,7 +2647,7 @@ multirange_lt(PG_FUNCTION_ARGS)
 Datum
 multirange_le(PG_FUNCTION_ARGS)
 {
-       int                     cmp = multirange_cmp(fcinfo);
+       int                     cmp = DatumGetInt32(multirange_cmp(fcinfo));
 
        PG_RETURN_BOOL(cmp <= 0);
 }
@@ -2655,7 +2655,7 @@ multirange_le(PG_FUNCTION_ARGS)
 Datum
 multirange_ge(PG_FUNCTION_ARGS)
 {
-       int                     cmp = multirange_cmp(fcinfo);
+       int                     cmp = DatumGetInt32(multirange_cmp(fcinfo));
 
        PG_RETURN_BOOL(cmp >= 0);
 }
@@ -2663,7 +2663,7 @@ multirange_ge(PG_FUNCTION_ARGS)
 Datum
 multirange_gt(PG_FUNCTION_ARGS)
 {
-       int                     cmp = multirange_cmp(fcinfo);
+       int                     cmp = DatumGetInt32(multirange_cmp(fcinfo));
 
        PG_RETURN_BOOL(cmp > 0);
 }
index 254b8f65c21a671bc54a1aabb677ae86ca408b28..15398c72ea00483d00ff75eab5a4186a16155b5c 100644 (file)
@@ -1356,7 +1356,7 @@ range_fast_cmp(Datum a, Datum b, SortSupport ssup)
 Datum
 range_lt(PG_FUNCTION_ARGS)
 {
-       int                     cmp = range_cmp(fcinfo);
+       int                     cmp = DatumGetInt32(range_cmp(fcinfo));
 
        PG_RETURN_BOOL(cmp < 0);
 }
@@ -1364,7 +1364,7 @@ range_lt(PG_FUNCTION_ARGS)
 Datum
 range_le(PG_FUNCTION_ARGS)
 {
-       int                     cmp = range_cmp(fcinfo);
+       int                     cmp = DatumGetInt32(range_cmp(fcinfo));
 
        PG_RETURN_BOOL(cmp <= 0);
 }
@@ -1372,7 +1372,7 @@ range_le(PG_FUNCTION_ARGS)
 Datum
 range_ge(PG_FUNCTION_ARGS)
 {
-       int                     cmp = range_cmp(fcinfo);
+       int                     cmp = DatumGetInt32(range_cmp(fcinfo));
 
        PG_RETURN_BOOL(cmp >= 0);
 }
@@ -1380,7 +1380,7 @@ range_ge(PG_FUNCTION_ARGS)
 Datum
 range_gt(PG_FUNCTION_ARGS)
 {
-       int                     cmp = range_cmp(fcinfo);
+       int                     cmp = DatumGetInt32(range_cmp(fcinfo));
 
        PG_RETURN_BOOL(cmp > 0);
 }
index 9b6d7061a181210604c1b91b2b607a0989f2b696..be51965488088819ab9c89a8d5d183c5b0505f96 100644 (file)
@@ -757,7 +757,7 @@ spg_range_quad_inner_consistent(PG_FUNCTION_ARGS)
                                 * because it's range
                                 */
                                previousCentroid = datumCopy(in->prefixDatum, false, -1);
-                               out->traversalValues[out->nNodes] = (void *) previousCentroid;
+                               out->traversalValues[out->nNodes] = DatumGetPointer(previousCentroid);
                        }
                        out->nodeNumbers[out->nNodes] = i - 1;
                        out->nNodes++;
index fe5edc0027da3ff04261d9cc57084ddb948a468f..9e5449f17d7c0e39a7b7b5c022f52e8bd248713f 100644 (file)
@@ -1529,9 +1529,9 @@ record_image_cmp(FunctionCallInfo fcinfo)
                                if ((cmpresult == 0) && (len1 != len2))
                                        cmpresult = (len1 < len2) ? -1 : 1;
 
-                               if ((Pointer) arg1val != (Pointer) values1[i1])
+                               if ((Pointer) arg1val != DatumGetPointer(values1[i1]))
                                        pfree(arg1val);
-                               if ((Pointer) arg2val != (Pointer) values2[i2])
+                               if ((Pointer) arg2val != DatumGetPointer(values2[i2]))
                                        pfree(arg2val);
                        }
                        else
index ddd0a57c0c59777497a9413a669abe8f92a98dcd..f01cad72a0feba414c668d7e3602b8ee9dd12ef2 100644 (file)
@@ -73,7 +73,7 @@ pg_isolation_test_session_is_blocked(PG_FUNCTION_ARGS)
         * acquire heavyweight locks.
         */
        blocking_pids_a =
-               DatumGetArrayTypeP(DirectFunctionCall1(pg_blocking_pids, blocked_pid));
+               DatumGetArrayTypeP(DirectFunctionCall1(pg_blocking_pids, Int32GetDatum(blocked_pid)));
 
        Assert(ARR_ELEMTYPE(blocking_pids_a) == INT4OID);
        Assert(!array_contains_nulls(blocking_pids_a));
index 5c8360c08b5f80fe71226d3f15d02ef9ce1e1245..45d1e2be007ba7e562608b6f30e706f4240d2f96 100644 (file)
@@ -86,7 +86,7 @@ relatt_cache_syshash(const void *key, Size keysize)
        const AttoptCacheKey *ckey = key;
 
        Assert(keysize == sizeof(*ckey));
-       return GetSysCacheHashValue2(ATTNUM, ckey->attrelid, ckey->attnum);
+       return GetSysCacheHashValue2(ATTNUM, ObjectIdGetDatum(ckey->attrelid), Int32GetDatum(ckey->attnum));
 }
 
 /*
index c460a72b75d909cff6f6c73ca1b57492cd99e173..032bb6222c49bb6e5a69ef5dc3f082504f8af3b8 100644 (file)
@@ -3817,7 +3817,7 @@ get_subscription_oid(const char *subname, bool missing_ok)
        Oid                     oid;
 
        oid = GetSysCacheOid2(SUBSCRIPTIONNAME, Anum_pg_subscription_oid,
-                                                 MyDatabaseId, CStringGetDatum(subname));
+                                                 ObjectIdGetDatum(MyDatabaseId), CStringGetDatum(subname));
        if (!OidIsValid(oid) && !missing_ok)
                ereport(ERROR,
                                (errcode(ERRCODE_UNDEFINED_OBJECT),
index 153d2fde6fd3dec28f58777fcf653a304ed84bb6..6fe268a8eec1fd26d2c1ea4d5e16045dadadb6a2 100644 (file)
@@ -6991,5 +6991,5 @@ ResOwnerReleaseRelation(Datum res)
        Assert(rel->rd_refcnt > 0);
        rel->rd_refcnt -= 1;
 
-       RelationCloseCleanup((Relation) res);
+       RelationCloseCleanup((Relation) DatumGetPointer(res));
 }
index f944453a1d8846a435528ff63bc519014191c6b1..7828bdcba8f64f436366605a2d2a963fc598694d 100644 (file)
@@ -459,9 +459,9 @@ GetSysCacheOid(int cacheId,
        tuple = SearchSysCache(cacheId, key1, key2, key3, key4);
        if (!HeapTupleIsValid(tuple))
                return InvalidOid;
-       result = heap_getattr(tuple, oidcol,
-                                                 SysCache[cacheId]->cc_tupdesc,
-                                                 &isNull);
+       result = DatumGetObjectId(heap_getattr(tuple, oidcol,
+                                                                                  SysCache[cacheId]->cc_tupdesc,
+                                                                                  &isNull));
        Assert(!isNull);                        /* columns used as oids should never be NULL */
        ReleaseSysCache(tuple);
        return result;
index e0f500b9aa29c3fee010664693d5addbbf3c8da4..f582c6624f11ad70a435343be9fa34f41da6b37d 100644 (file)
@@ -57,7 +57,7 @@ comparison_shim(Datum x, Datum y, SortSupport ssup)
        if (extra->fcinfo.isnull)
                elog(ERROR, "function %u returned NULL", extra->flinfo.fn_oid);
 
-       return result;
+       return DatumGetInt32(result);
 }
 
 /*
index 5f70e8dddac571bb435782906417162eeb5a01b5..c5d18e46716fd6d4f095d1072f19f65bd9f60c1f 100644 (file)
@@ -865,7 +865,7 @@ tuplesort_putbrintuple(Tuplesortstate *state, BrinTuple *tuple, Size size)
        memcpy(&bstup->tuple, tuple, size);
 
        stup.tuple = bstup;
-       stup.datum1 = tuple->bt_blkno;
+       stup.datum1 = UInt32GetDatum(tuple->bt_blkno);
        stup.isnull1 = false;
 
        /* GetMemoryChunkSpace is not supported for bump contexts */
@@ -1836,7 +1836,7 @@ removeabbrev_index_brin(Tuplesortstate *state, SortTuple *stups, int count)
                BrinSortTuple *tuple;
 
                tuple = stups[i].tuple;
-               stups[i].datum1 = tuple->tuple.bt_blkno;
+               stups[i].datum1 = UInt32GetDatum(tuple->tuple.bt_blkno);
        }
 }
 
@@ -1893,7 +1893,7 @@ readtup_index_brin(Tuplesortstate *state, SortTuple *stup,
        stup->tuple = tuple;
 
        /* set up first-column key value, which is block number */
-       stup->datum1 = tuple->tuple.bt_blkno;
+       stup->datum1 = UInt32GetDatum(tuple->tuple.bt_blkno);
 }
 
 /*
index 29cb4d7e47f80fe54a87889db353b47147cd49e3..73ba1748fe0a828b51a7ccd8c0e01ef6128587e6 100644 (file)
@@ -1453,7 +1453,7 @@ plperl_sv_to_literal(SV *sv, char *fqtypename)
 
        check_spi_usage_allowed();
 
-       typid = DirectFunctionCall1(regtypein, CStringGetDatum(fqtypename));
+       typid = DatumGetObjectId(DirectFunctionCall1(regtypein, CStringGetDatum(fqtypename)));
        if (!OidIsValid(typid))
                ereport(ERROR,
                                (errcode(ERRCODE_UNDEFINED_OBJECT),
@@ -2569,13 +2569,13 @@ plperl_trigger_handler(PG_FUNCTION_ARGS)
                TriggerData *trigdata = ((TriggerData *) fcinfo->context);
 
                if (TRIGGER_FIRED_BY_INSERT(trigdata->tg_event))
-                       retval = (Datum) trigdata->tg_trigtuple;
+                       retval = PointerGetDatum(trigdata->tg_trigtuple);
                else if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
-                       retval = (Datum) trigdata->tg_newtuple;
+                       retval = PointerGetDatum(trigdata->tg_newtuple);
                else if (TRIGGER_FIRED_BY_DELETE(trigdata->tg_event))
-                       retval = (Datum) trigdata->tg_trigtuple;
+                       retval = PointerGetDatum(trigdata->tg_trigtuple);
                else if (TRIGGER_FIRED_BY_TRUNCATE(trigdata->tg_event))
-                       retval = (Datum) trigdata->tg_trigtuple;
+                       retval = PointerGetDatum(trigdata->tg_trigtuple);
                else
                        retval = (Datum) 0; /* can this happen? */
        }
index 3dbba06902405af28ce13fcb746e0418662cf98d..465ac148ac9f74d5ac310910f9f54e92b54a0037 100644 (file)
@@ -727,7 +727,7 @@ PG_FUNCTION_INFO_V1(is_catalog_text_unique_index_oid);
 Datum
 is_catalog_text_unique_index_oid(PG_FUNCTION_ARGS)
 {
-       return IsCatalogTextUniqueIndexOid(PG_GETARG_OID(0));
+       return BoolGetDatum(IsCatalogTextUniqueIndexOid(PG_GETARG_OID(0)));
 }
 
 PG_FUNCTION_INFO_V1(test_support_func);