Shachar Shemesh wrote:
I'm opening a new thread, as the previous one was too nested, and contained too much emotions.
I'll start by my understanding of a summary of the thread so far. The solution we are seeking would have to satisfy the following conditions:
1. Setting should be on a per-database level. A per-server option is not good enough, and a per-session option is too difficult to implement, with no apparent justifiable return.
I am not convinced on this point. Why is per-server not good enough? The obvious place to make these changes seems to me to be during or immediatly after the bootstrap phase of initdb. It would avoid a host of later troubles.
2. Old applications already working with PG's lowercase folding should have an option to continue working unmodified for the foreseeable future.
Solutions offered so far, and their status: 1. Tri-state. Folder upper, if failes, fold lower, if succeeds, warn. 2. Dual state. Fold lower or upper. Break if client is broken. 3. Create a database conversion tool to change existing case.
I don't think we should rush at this. All of these solutions are based on the existing structures. I have started thinking about a solution that would involve keeping two versions of catalog names: a canonical name and a "name as supplied at creation". There would be heaps of wrinkles, but it might get us where we want to be. But I have not had time to sort it out in my head yet, let alone make any experiments. Let's keep getting more ideas.
cheers
andrew
---------------------------(end of broadcast)--------------------------- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match