Hi hackers,
"A system that is not case-preserving is necessarily case-insensitive,
but it is possible and common for a system to be case-insensitive, yet
case-preserving" [1]
Imagine if you could turn on a GUC that would turn PostgreSQL into
such a system,
where the case would be preserved by default for all created objects,
without having to use double-quotes around all identifiers,
and while still being able to refer to such created objects case-insensitively,
without having to use double-quotes around all identifiers.
Today, you have to sacrifice the nice case-insensitivity feature if
you wish to preserve case information, which is a shame.
This would make a huge difference in terms of usability when using
PostgreSQL together with external systems where casing is important.
Today, you have to maintain silly look-up tables to translate between
PostgreSQL's internal lowercase objects,
and the outside world's e.g. CamelCase names for the corresponding objects,
or you have to sacrifice the nice case-insensitivity feature.
Case Preservation + Case Insensitivity = A good combination
Thoughts?
[1] https://en.wikipedia.org/wiki/Case_preservation