On Mon, Mar 24, 2003 at 12:04:13AM -0500, Rudy Lippan wrote: > and '/', '\', and '.' can not be used in aquoted identifier. Should quote_identifier() thow an error if it gets data that it cannot quote? -- I think it should, but I just wanted to some feed back.
It's generally best not to second-guess the server...
mysql> create table foo (`foo.bar` int); Query OK, 0 rows affected (0.09 sec) mysql> desc foo; +---------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+---------+------+-----+---------+-------+ | foo.bar | int(11) | YES | | NULL | | +---------+---------+------+-----+---------+-------+
For table names (which can't contain '.' etc) the server will generate an error if and when apprioriate.
The exact rules for MySQL identifiers are:
Database and table names cannot contain '\', '/', or '.' characters. Column and index names can.
A couple of other items I've remembered recently...
- I'd really like to see mysql_client_found_rows=1 being the default.
With mysql_client_found_rows off, normal application code can't tell the difference between an update that failed to match a row and one that matched a row but didn't actually change anything.
It's a significant inconsistency with other drivers. I don't know of any other driver that return a rows *physically changed* count. This is going to be an issue with future versions of Class::DBI because it will treat $obj->update() updating 0 rows as an error.
Mark Matthews' JDBC driver, MySQL Connector/J, operates in "found rows" mode by default, because that is required by the JDBC spec. JDBC is, I believe, modelled after ODBC. Is DBI as well?