Testing DefElem options is done with both strcmp() and pg_strcasecmp() a bit mixed. Since the option defnames are all lowercased, either via IDENT, keyword rules or “by hand” with makeString(), using strcmp() is safe (and assumed to be so in quite a lot of places).
While it’s not incorrect per se to use pg_strcasecmp(), it has the potential to hide a DefElem created with a mixed-case defname where it in other places is expected to be in lowercase, which may lead to subtle bugs. The attached patch refactors to use strcmp() consistently for option processing in the command code as a pre-emptive belts+suspenders move against such subtle bugs and to make the code more consistent. Also reorders a few checks to have all in the same “format” and removes a comment related to the above. Tested with randomizing case on options in make check (not included in patch). cheers ./daniel
defname_strcmp.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers