Hi, On 2021-09-21 15:09:11 -0300, Ranier Vilela wrote: > Currently when determining where CoerceToDomainValue can be read, > it evaluates every step in a loop. > But, I think that the expression is immutable and should be solved only > once.
What is immutable here? > Otherwise the logic is wrong since by the rules of C, even though the > variable is > being initialized in the declaration, it still receives initialization at > each repetition. > What causes palloc running multiple times. > > In other words: > Datum *domainval = NULL; > > is the same: > Datum *domainval; > domainval = NULL; Obviously? > Thoughts? I don't see what this is supposed to achieve. The allocation of domainval/domainnull happens on every loop iteration with/without your patch. And it has to, the allocation intentionally is separate for each constraint. As the comment even explicitly says: /* * Since value might be read multiple times, force to R/O * - but only if it could be an expanded datum. */ Greetings, Andres Freund