Fix custom validators call in build_local_reloptions()
authorAlexander Korotkov <[email protected]>
Sun, 23 Apr 2023 10:55:49 +0000 (13:55 +0300)
committerAlexander Korotkov <[email protected]>
Sun, 23 Apr 2023 10:58:41 +0000 (13:58 +0300)
We need to call them only when validate == true.

Backpatch to 13, where opclass options were introduced.

Reported-by: Tom Lane
Discussion: https://postgr.es/m/2656633.1681831542%40sss.pgh.pa.us
Reviewed-by: Tom Lane, Pavel Borisov
Backpatch-through: 13

src/backend/access/common/reloptions.c

index 14c23101adf4bbd74d3bf7bf556b046f7b5770cd..90cb3951fca14b03f336aac0da901666cc84fe23 100644 (file)
@@ -1969,8 +1969,9 @@ build_local_reloptions(local_relopts *relopts, Datum options, bool validate)
        fillRelOptions(opts, relopts->relopt_struct_size, vals, noptions, validate,
                                   elems, noptions);
 
-       foreach(lc, relopts->validators)
-               ((relopts_validator) lfirst(lc)) (opts, vals, noptions);
+       if (validate)
+               foreach(lc, relopts->validators)
+                       ((relopts_validator) lfirst(lc)) (opts, vals, noptions);
 
        if (elems)
                pfree(elems);