The tuple data upserted into pg_statistic_ext_data was missing an
initialization for the nulls flag of stxoid and stxdinherit. This would
cause an incorrect handling of the stats data restored.
This issue has been spotted by CatalogTupleCheckConstraints(),
translating to a NOT NULL constraint inconsistency, while playing more
with the follow-up portions of the patch set.
Oversight in
0e80f3f88dea (mea culpa). Surprisingly, the buildfarm did
not complain yet.
Discussion: https://postgr.es/m/CADkLM=c7DY3Jv6ef0n_MGUJ1FyTMUoT697LbkST05nraVGNHYg@mail.gmail.com
Form_pg_statistic_ext stxform;
Datum values[Natts_pg_statistic_ext_data] = {0};
- bool nulls[Natts_pg_statistic_ext_data];
+ bool nulls[Natts_pg_statistic_ext_data] = {0};
bool replaces[Natts_pg_statistic_ext_data] = {0};
bool success = true;
int numexprs = 0;
/* Primary Key: cannot be NULL or replaced. */
values[Anum_pg_statistic_ext_data_stxoid - 1] = ObjectIdGetDatum(stxform->oid);
+ nulls[Anum_pg_statistic_ext_data_stxoid - 1] = false;
values[Anum_pg_statistic_ext_data_stxdinherit - 1] = BoolGetDatum(inherited);
+ nulls[Anum_pg_statistic_ext_data_stxdinherit - 1] = false;
/* All unspecified parameters will be left unmodified */
nulls[Anum_pg_statistic_ext_data_stxdndistinct - 1] = true;