On Thursday 03 April 2008, Daniel-Constantin Mierla wrote: > On 04/03/08 21:25, Dan Pascu wrote: > > On Thursday 03 April 2008, Daniel-Constantin Mierla wrote: > >> there is the option to set the column name via module parameters in > >> siptrace module. Therefore the existing table structure and > >> additional external tools can be kept untouched, just set the > >> parameter in the configuration file. > > > > Of course, but the table will be created with the new column name, > > unless the db schema is also patched. And the applications using the > > sip_trace table need to be modified as well. That's why I said it is > > disruptive. > > You are right, but we are improving ourselves with the time ... that > column name was prone to this case, it was a bad choice of myself.
It is prone to nothing if quoted properly. I do not know about oracle, but in mysql and postgress you can quote the column name, table name, etc to make sure it won't cause a problem if it is a reserved word. I would be surprised if oracle doesn't have a quoting mechanism. > Renaming was the solution applied in the past for similar cases. > Finding the least disruptive solution should be a priority, but also > clean and straight environment is important. > > One more rule for module developers, if they add new tables, should > check the names of the columns against reserved keywords of the common > database systems -- hope google can give the list :-) That is a very poor solution. Considering how many databases are supported and that each of them has its own set of reserved words, we will find it very difficult to chose simple straightforward column names that satisfy all database backends. This is why quoting was invented so one is not in a position to check 3 database implementation trying to avoid keywords. Even more what guarantee do you have that a word you use won't become a keyword in the future. This actually happened to me. In mysql 4.x using `condition` posed no problem, but in 5.x it became a keyword and it had to be quoted. Now if we have a quoting mechanism (and we have one for mysql and postgress, not sure about oracle) I propose we use whatever column names we like and make the db schema generate quoted column and table names with the appropriate quoting for that database. As I said for mysql one has to use backticks, while for postgres it's single quotes. This is the most safe and clean solution that imposes no restrictions on developers. Why would I, as a developer have to learn about databases I do not use just trying to avoid names they don't like? -- Dan _______________________________________________ Devel mailing list [email protected] http://lists.openser.org/cgi-bin/mailman/listinfo/devel
