Mop-up for Datum conversion cleanups.

Fix a couple more places where an explicit Datum conversion
is needed (not clear how we missed these in ff89e182d and
previous commits).

Replace the minority usage "(Datum) NULL" with "(Datum) 0".
The former depends on the assumption that Datum is the same
width as Pointer, the latter doesn't.  Anyway consistency
is a good thing.

This is, I believe, the last of the notational mop-up needed
before we can consider changing Datum to uint64 everywhere.
It's also important cleanup for more aggressive ideas such
as making Datum a struct.

Discussion: https://postgr.es/m/1749799.1752797397@sss.pgh.pa.us
Discussion: https://postgr.es/m/8246d7ff-f4b7-4363-913e-827dadfeb145@eisentraut.org
pull/239/head
Tom Lane 1 month ago
parent ff89e182d4
commit 665c3dbba4
  1. 2
      contrib/ltree/_ltree_gist.c
  2. 2
      src/backend/catalog/pg_aggregate.c
  3. 2
      src/backend/catalog/pg_constraint.c
  4. 2
      src/backend/catalog/pg_conversion.c
  5. 2
      src/backend/catalog/pg_namespace.c
  6. 4
      src/backend/catalog/pg_operator.c
  7. 2
      src/backend/catalog/pg_type.c
  8. 2
      src/backend/executor/spi.c
  9. 2
      src/backend/nodes/readfuncs.c
  10. 6
      src/backend/utils/adt/jsonfuncs.c
  11. 4
      src/backend/utils/adt/rangetypes.c
  12. 2
      src/include/access/htup_details.h
  13. 2
      src/include/access/itup.h

@ -84,7 +84,7 @@ _ltree_compress(PG_FUNCTION_ARGS)
entry->rel, entry->page,
entry->offset, false);
}
else if (!LTG_ISALLTRUE(entry->key))
else if (!LTG_ISALLTRUE(DatumGetPointer(entry->key)))
{
int32 i;
ltree_gist *key;

@ -654,7 +654,7 @@ AggregateCreate(const char *aggName,
for (i = 0; i < Natts_pg_aggregate; i++)
{
nulls[i] = false;
values[i] = (Datum) NULL;
values[i] = (Datum) 0;
replaces[i] = true;
}
values[Anum_pg_aggregate_aggfnoid - 1] = ObjectIdGetDatum(procOid);

@ -179,7 +179,7 @@ CreateConstraintEntry(const char *constraintName,
for (i = 0; i < Natts_pg_constraint; i++)
{
nulls[i] = false;
values[i] = (Datum) NULL;
values[i] = (Datum) 0;
}
conOid = GetNewOidWithIndex(conDesc, ConstraintOidIndexId,

@ -87,7 +87,7 @@ ConversionCreate(const char *conname, Oid connamespace,
for (i = 0; i < Natts_pg_conversion; i++)
{
nulls[i] = false;
values[i] = (Datum) NULL;
values[i] = (Datum) 0;
}
/* form a tuple */

@ -76,7 +76,7 @@ NamespaceCreate(const char *nspName, Oid ownerId, bool isTemp)
for (i = 0; i < Natts_pg_namespace; i++)
{
nulls[i] = false;
values[i] = (Datum) NULL;
values[i] = (Datum) 0;
}
nspoid = GetNewOidWithIndex(nspdesc, NamespaceOidIndexId,

@ -225,7 +225,7 @@ OperatorShellMake(const char *operatorName,
for (i = 0; i < Natts_pg_operator; ++i)
{
nulls[i] = false;
values[i] = (Datum) NULL; /* redundant, but safe */
values[i] = (Datum) 0; /* redundant, but safe */
}
/*
@ -453,7 +453,7 @@ OperatorCreate(const char *operatorName,
for (i = 0; i < Natts_pg_operator; ++i)
{
values[i] = (Datum) NULL;
values[i] = (Datum) 0;
replaces[i] = true;
nulls[i] = false;
}

@ -80,7 +80,7 @@ TypeShellMake(const char *typeName, Oid typeNamespace, Oid ownerId)
for (i = 0; i < Natts_pg_type; ++i)
{
nulls[i] = false;
values[i] = (Datum) NULL; /* redundant, but safe */
values[i] = (Datum) 0; /* redundant, but safe */
}
/*

@ -1258,7 +1258,7 @@ SPI_getbinval(HeapTuple tuple, TupleDesc tupdesc, int fnumber, bool *isnull)
{
SPI_result = SPI_ERROR_NOATTRIBUTE;
*isnull = true;
return (Datum) NULL;
return (Datum) 0;
}
return heap_getattr(tuple, fnumber, tupdesc, isnull);

@ -630,7 +630,7 @@ readDatum(bool typbyval)
}
}
else if (length <= 0)
res = (Datum) NULL;
res = (Datum) 0;
else
{
s = (char *) palloc(length);

@ -2027,7 +2027,7 @@ each_worker_jsonb(FunctionCallInfo fcinfo, const char *funcname, bool as_text)
{
/* a json null is an sql null in text mode */
nulls[1] = true;
values[1] = (Datum) NULL;
values[1] = (Datum) 0;
}
else
values[1] = PointerGetDatum(JsonbValueAsText(&v));
@ -2266,7 +2266,7 @@ elements_worker_jsonb(FunctionCallInfo fcinfo, const char *funcname,
{
/* a json null is an sql null in text mode */
nulls[0] = true;
values[0] = (Datum) NULL;
values[0] = (Datum) 0;
}
else
values[0] = PointerGetDatum(JsonbValueAsText(&v));
@ -2389,7 +2389,7 @@ elements_array_element_end(void *state, bool isnull)
if (isnull && _state->normalize_results)
{
nulls[0] = true;
values[0] = (Datum) NULL;
values[0] = (Datum) 0;
}
else if (_state->next_scalar)
{

@ -1343,9 +1343,9 @@ range_fast_cmp(Datum a, Datum b, SortSupport ssup)
cmp = range_cmp_bounds(typcache, &upper1, &upper2);
}
if ((Datum) range_a != a)
if ((Pointer) range_a != DatumGetPointer(a))
pfree(range_a);
if ((Datum) range_b != b)
if ((Pointer) range_b != DatumGetPointer(b))
pfree(range_b);
return cmp;

@ -884,7 +884,7 @@ fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
if (att_isnull(attnum - 1, tup->t_data->t_bits))
{
*isnull = true;
return (Datum) NULL;
return (Datum) 0;
}
else
return nocachegetattr(tup, attnum, tupleDesc);

@ -154,7 +154,7 @@ index_getattr(IndexTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
if (att_isnull(attnum - 1, (bits8 *) tup + sizeof(IndexTupleData)))
{
*isnull = true;
return (Datum) NULL;
return (Datum) 0;
}
else
return nocache_index_getattr(tup, attnum, tupleDesc);

Loading…
Cancel
Save