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->rel, entry->page,
entry->offset, false); entry->offset, false);
} }
else if (!LTG_ISALLTRUE(entry->key)) else if (!LTG_ISALLTRUE(DatumGetPointer(entry->key)))
{ {
int32 i; int32 i;
ltree_gist *key; ltree_gist *key;

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

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

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

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

@ -225,7 +225,7 @@ OperatorShellMake(const char *operatorName,
for (i = 0; i < Natts_pg_operator; ++i) for (i = 0; i < Natts_pg_operator; ++i)
{ {
nulls[i] = false; 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) for (i = 0; i < Natts_pg_operator; ++i)
{ {
values[i] = (Datum) NULL; values[i] = (Datum) 0;
replaces[i] = true; replaces[i] = true;
nulls[i] = false; nulls[i] = false;
} }

@ -80,7 +80,7 @@ TypeShellMake(const char *typeName, Oid typeNamespace, Oid ownerId)
for (i = 0; i < Natts_pg_type; ++i) for (i = 0; i < Natts_pg_type; ++i)
{ {
nulls[i] = false; 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; SPI_result = SPI_ERROR_NOATTRIBUTE;
*isnull = true; *isnull = true;
return (Datum) NULL; return (Datum) 0;
} }
return heap_getattr(tuple, fnumber, tupdesc, isnull); return heap_getattr(tuple, fnumber, tupdesc, isnull);

@ -630,7 +630,7 @@ readDatum(bool typbyval)
} }
} }
else if (length <= 0) else if (length <= 0)
res = (Datum) NULL; res = (Datum) 0;
else else
{ {
s = (char *) palloc(length); 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 */ /* a json null is an sql null in text mode */
nulls[1] = true; nulls[1] = true;
values[1] = (Datum) NULL; values[1] = (Datum) 0;
} }
else else
values[1] = PointerGetDatum(JsonbValueAsText(&v)); 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 */ /* a json null is an sql null in text mode */
nulls[0] = true; nulls[0] = true;
values[0] = (Datum) NULL; values[0] = (Datum) 0;
} }
else else
values[0] = PointerGetDatum(JsonbValueAsText(&v)); values[0] = PointerGetDatum(JsonbValueAsText(&v));
@ -2389,7 +2389,7 @@ elements_array_element_end(void *state, bool isnull)
if (isnull && _state->normalize_results) if (isnull && _state->normalize_results)
{ {
nulls[0] = true; nulls[0] = true;
values[0] = (Datum) NULL; values[0] = (Datum) 0;
} }
else if (_state->next_scalar) 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); cmp = range_cmp_bounds(typcache, &upper1, &upper2);
} }
if ((Datum) range_a != a) if ((Pointer) range_a != DatumGetPointer(a))
pfree(range_a); pfree(range_a);
if ((Datum) range_b != b) if ((Pointer) range_b != DatumGetPointer(b))
pfree(range_b); pfree(range_b);
return cmp; 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)) if (att_isnull(attnum - 1, tup->t_data->t_bits))
{ {
*isnull = true; *isnull = true;
return (Datum) NULL; return (Datum) 0;
} }
else else
return nocachegetattr(tup, attnum, tupleDesc); 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))) if (att_isnull(attnum - 1, (bits8 *) tup + sizeof(IndexTupleData)))
{ {
*isnull = true; *isnull = true;
return (Datum) NULL; return (Datum) 0;
} }
else else
return nocache_index_getattr(tup, attnum, tupleDesc); return nocache_index_getattr(tup, attnum, tupleDesc);

Loading…
Cancel
Save