On Nov 11, 2010, at 5:55 AM, Stewart Smith wrote:
> On Wed, 10 Nov 2010 09:41:52 -0600, Tim Soderstrom
> <[email protected]> wrote:
>> I noticed later builds of Drizzle basically have the equivalent of
>> lower_case_table_names=1 with no way to reverse the
>>
>> What I find weird about this is that the "Test" database has a 'test'
>> folder in the 'local' directory. So Drizzle knows what case I
>> originally used for databases. Why not tables? Any reasoning behind
>> this? I much prefer to use mixed case in my table names and while I
>> can still do that on the application side, using the drizzle
>> command-line forces the lower case and makes things a bit harder to
>> wade through.
>
> With a bit of handwaving and forgetting those particular
> codepaths... does table_raw_reader on the dfe tell you something
> interesting for the table name? what about SHOW CREATE TABLE?
>
> I'm wondering if there's something in presentation. Certainly we compare
> with things normalised to follow the standard (although case
> insensitivity as always a bug IMHO... but then again, i'm not the SQL
> standard).
Not sure how to do the table_raw_reader bit but I have expanded on the SHOW
CREATE TABLE stuff with some examples:
drizzle> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE
TABLE_SCHEMA='mcptest' ORDER BY TABLE_NAME LIMIT 5;
+--------------+
| TABLE_NAME |
+--------------+
| art |
| blogcomments |
| blogmoods |
| blogposts |
| blogtags |
+--------------+
5 rows in set (0 sec)
drizzle> SELECT TABLE_NAME FROM DATA_DICTIONARY.TABLES WHERE
TABLE_SCHEMA='mcptest' ORDER BY TABLE_NAME LIMIT 5;
+--------------+
| TABLE_NAME |
+--------------+
| art |
| blogcomments |
| blogmoods |
| blogposts |
| blogtags |
+--------------+
5 rows in set (0.15 sec)
drizzle> SHOW CREATE TABLE ShoutBox\G
*************************** 1. row ***************************
Table: shoutbox
Create Table: CREATE TABLE `shoutbox` (
`shoutid` INT NOT NULL AUTO_INCREMENT,
`date` DATETIME DEFAULT NULL,
`shoutname` TEXT COLLATE utf8_general_ci NOT NULL,
`shout` TEXT COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`shoutid`),
KEY `date_idx` (`date`)
) ENGINE=InnoDB COLLATE = utf8_general_ci AUTO_INCREMENT=267
1 row in set (0 sec)
drizzle> SHOW CREATE TABLE SHOUTBOX\G
*************************** 1. row ***************************
Table: shoutbox
Create Table: CREATE TABLE `shoutbox` (
`shoutid` INT NOT NULL AUTO_INCREMENT,
`date` DATETIME DEFAULT NULL,
`shoutname` TEXT COLLATE utf8_general_ci NOT NULL,
`shout` TEXT COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`shoutid`),
KEY `date_idx` (`date`)
) ENGINE=InnoDB COLLATE = utf8_general_ci AUTO_INCREMENT=267
1 row in set (0 sec)
What things look like in MySQL:
mysql> SELECT TABLE_NAME FROM information_schema.TABLES WHERE
TABLE_SCHEMA='mcptest' LIMIT 5;
+---------------+
| TABLE_NAME |
+---------------+
| Art |
| BlogComments |
| BlogMoods |
| BlogPosts |
| BlogPostsView |
+---------------+
5 rows in set (0.01 sec)
mysql> SHOW CREATE TABLE ShoutBox\G
*************************** 1. row ***************************
Table: ShoutBox
Create Table: CREATE TABLE `ShoutBox` (
`shoutid` int(11) NOT NULL AUTO_INCREMENT,
`date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`shoutname` tinytext NOT NULL,
`shout` tinytext NOT NULL,
PRIMARY KEY (`shoutid`),
KEY `date_idx` (`date`)
) ENGINE=InnoDB AUTO_INCREMENT=267 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
As far as to whether this is a bug, I can live with case-insensitivity (I much
prefer matching on case myself but if the standard says otherwise...) but I
would like to see case-awareness. So even though blog and Blog are the same
thing, Drizzle should return back to me the original case I created the table
with. Either way, the inconsistency between being case-aware for databases but
lower-case for tables is kinda weird :)
Tim S.
_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help : https://help.launchpad.net/ListHelp