An array of relopt_string? Isn't that a bit strange? If I recall correctly, the point of this was to be able to allocate the relopt_string struct and the char array itself as a single palloc unit, in a single call somewhere in the reloptions API (which was convoluted in some points precisely to let the string case work). I don't have the details of this fresh in my mind though. It certainly worked with more than one string option when I committed it, IIRC.