Wed Oct 26 01:20:33 PDT 2005
- Previous message: [Slony1-general] Slony and upper-case table names
- Next message: [Slony1-general] Slony and upper-case table names
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Doug, On Tue, 25 Oct 2005 11:14 pm, Douglas McNaught wrote: > Perl doesn't have case-insensitive strings, while SQL has > case-insensitive (unless quoted) identifiers. As I see it, the issue is that once the perl tools send stuff into the Slony database functions (e.g. determineIdxnameUnique) the table comparison is being done case-sensitively: if (select PGC.relname from "pg_catalog".pg_class PGC, "pg_catalog".pg_namespace PGN where @NAMESPACE at .slon_quote_brute(PGN.nspname) || ''.'' || @NAMESPACE at .slon_quote_brute(PGC.relname) = v_tab_fqname_quoted and PGN.oid = PGC.relnamespace) is null then raise exception ''Slony-I: table % not found'', v_tab_fqname_quoted; end if; Changing the comparison to: where lower(@NAMESPACE at .slon_quote_brute(PGN.nspname) || ''.'' || @NAMESPACE at .slon_quote_brute(PGC.relname)) = lower(v_tab_fqname_quoted) would solve the issue (there're probably a few other places you'd need a similar change). As noted by you and Andrew, that'd break Slony for people who want to have tables differentiated only by the case of the name (e.g. ACCOUNT, account and aCcOuNt) in the same database and schema. I reckon that's a corner-case, but I'm willing to revise my opinion if someone can provide me with a real-life example. Alternately, you could tackle the issue in the perl tools, perhaps allowing pam_tools.conf to have a "foldNamesToLowerCase" variable so that the output that is sent to slonik has object names folded if the user so desires. > There's a fundamental > mismatch there that means someone is going to be unhappy. Well yeah, this is my point: I'm a software developer, I'm used to things blowing up in my face. It still took me by surprise, and cost me time figuring out why it occurred. I suspect people less-accustomed to PostgreSQL might take longer to figure it out, or worse yet, give up on using PostgreSQL and Slony. I want to remove obstacles to adoption. > Making the > Perl stuff fold case would mean that people who use mixed case > identifiers and quote them consistently would lose. Using the change I propose above, no. Only people who want 3 different tables called account, ACCOUNT and AcCoUnT in the one schema would lose. If that's considered a real problem, make case-folding configurable (e.g. in the perl tools) then everyone can win. Regards, Philip. ----------------- Utiba Pty Ltd This message has been scanned for viruses and dangerous content by Utiba mail server and is believed to be clean.
- Previous message: [Slony1-general] Slony and upper-case table names
- Next message: [Slony1-general] Slony and upper-case table names
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-general mailing list