At Sat, 23 Apr 2016 10:12:03 -0400, Tom Lane <tgl@sss.pgh.pa.us> wrote in <476.1461420723@sss.pgh.pa.us>
> Amit Kapila <amit.kapila16@gmail.com> writes:
> > The main point for this improvement is that the handling for guc s_s_names
> > is not similar to what we do for other somewhat similar guc's and which
> > causes in-efficiency in non-hot code path (less used code).
>
> This is not about efficiency, this is about correctness. The proposed
> v7 patch is flat out not acceptable, not now and not for 9.7 either,
> because it introduces a GUC assign hook that can easily fail (eg, through
> out-of-memory for the copy step). Assign hook functions need to be
> incapable of failure. I do not see any good reason why this one cannot
> satisfy that requirement, either. It just needs to make use of the
> "extra" mechanism to pass back an already-suitably-long-lived result from
> check_synchronous_standby_names. See check_timezone_abbreviations/
> assign_timezone_abbreviations for a model to follow.
I had already seen there before the v7 and had the same feeling
below in mind but packing in a blob needs to use other than List
to hold the name list (just should be an array) and it is
followed by the necessity of many changes in where the list is
accessed. But the result is hopeless as you mentioned :(
> You are going to
> need to find a way to package the parse result into a single malloc'd
> blob, though, because that's as much as guc.c can keep track of for an
> "extra" value.
Ok, I'll post the v8 with the blob solution sooner.
regards,
--
Kyotaro Horiguchi
NTT Open Source Software Center