0 est une valeur valide pour de nombreux types de données, donc cela ne fonctionnerait pas.
Partout où vous avez un nullable Datum
dans le code du serveur PostgreSQL, vous avez également une bool
(généralement appelé isnull
) qui indique si le Datum
est NULL ou non.
Comparez la définition suivante tirée de src/include/postgres.h
:
/*
* A NullableDatum is used in places where both a Datum and its nullness needs
* to be stored. This can be more efficient than storing datums and nullness
* in separate arrays, due to better spatial locality, even if more space may
* be wasted due to padding.
*/
typedef struct NullableDatum
{
#define FIELDNO_NULLABLE_DATUM_DATUM 0
Datum value;
#define FIELDNO_NULLABLE_DATUM_ISNULL 1
bool isnull;
/* due to alignment padding this could be used for flags for free */
} NullableDatum;