Search Postgresql Archives

Re: PostgreSQL Gotchas

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



For the record, I am trying to flesh out my thoughts on this issue. I am not asking Tom to do this BTW :-) because I am sure he has more pressing contributions to make. However, because it can be an issue for those migrating from, say, Oracle, it would be good to have a discussion on what would be minimally required to make this happen.


Well sure, it would only be worthwhile if you could come up with rules that
complied with the standard 100% of the time that the standard specifies
behaviour.

I doubt that the standard says anything about system catalogs. If our system catalogs are in lower case, but case is normally folded to upper case, then this can create some problems, but if the backend is already treating identifiers as already quoted when it looks in the catalogs, I see this as a non-issue. The system catalogs are not guaranteed to be backwards compatible anyway. For those cases of aggregates and functions where we get problems like not finding the MAX aggregate, we can solve that by having two MAX aggregates which are identical, but one is in upper case and the other in lower case.

The same would be required

But if you could do that and satisfy 99% of the backwards
compatibility issues including any catalog related issues then it seems like
it would be worthwhile.
What you are asking here is functionally impossible if you expect user queries to operate as is against the catalogs when the semantics of the language have changed. When you have semantic issues regarding standards-compliance, you are going to have to choose between standards-compliance and backwards-compatibility. Hence I was suggesting that an option be provided to the user to choose between these options.

Scratches head.... I guess if you really wanted to allow the queries to really go without modifications, I guess you could create a second (duplicate) PG_CATALOG schema with views like PG_CLASS.... This seems to me to be iceing on the cake, however, and not part of the minimal requirements. Gotta love VIEWs :-)

I guess that would solve every case of backwards-compatibility that I can find where the problem is not bad application design (of the sort that currently causes problems).

But on further thought, if you want to have pg_dump et al output lowercase
names (which I certainly prefer) then I think what you would have to do is
have a bit that travels with every identifier that indicates whether it was
quoted or not.
If this is what you want, then leave folding to lower case.  Simple :-)

So two identifiers match if either is an unquoted identifier and they match
case insensitively. Or if both are quoted and they match case sensitively.
Sorry, not standards-compliant, as Tom pointed out....

Here are the basic assumptions I would make in such a solution:

1) We want the option of choosing standards-compliance over backwards-compatibility.
2)  When in doubt, throw and error and abort the transaction.
3) NEVER EVER guess as to what the user really meant when the exact instructions are ambiguous.

If we didn't make these assumptions, we would be using MySQL :-)

Best Wishes,
Chris Travers
Metatron Technology COnsulting
begin:vcard
fn:Chris Travers
n:Travers;Chris
email;internet:chris@xxxxxxxxxxxxxxxx
x-mozilla-html:FALSE
version:2.1
end:vcard

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux