List:Internals« Previous MessageNext Message »
From:Rick James Date:November 5 2007 6:03pm
Subject:RE: SHOW CREATE TABLE and auto_increment
View as plain text  
1. looks to me like the it does NOT differ from the default??

2. What good is COLLATE on the CREATE TABLE if it is totally ignored by
the column?

> -----Original Message-----
> From: Jeremy Cole [mailto:jeremy.cole@stripped] On 
> Behalf Of Jeremy Cole
> Sent: Saturday, November 03, 2007 10:08 AM
> To: Rick James
> Cc: Stewart Smith; Kathryn Steinbrink; internals@stripped
> Subject: Re: SHOW CREATE TABLE and auto_increment
> 
> Howdy,
> 
> This is an interesting case:
> 
> | pageview_data | CREATE TABLE `pageview_data` (
>  > >>   `query` varchar(150) character set latin1 NOT NULL default '',
>  > >>   `pageviews` int(11) default NULL,
>  > >>   `date` varchar(10) character set latin1 default NULL,
>  > >>   PRIMARY KEY  (`query`)
>  > >> ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin |
> 
> Notice above how it says "character set latin1" for query.  It prints 
> that because it differs from the table's default.  When you specify 
> "character set latin1" without a collation, the collation 
> assumed is the 
> default collation for that character set, not the default for 
> the table.
> 
> Here's an interesting test case:
> 
>  >>>>>
> mysql> create table cs_t (a char(10) character set latin1) default 
> character set latin1 collate latin1_bin;
> Query OK, 0 rows affected (0.65 sec)
> 
> mysql> show create table cs_t \G
> *************************** 1. row ***************************
>         Table: cs_t
> Create Table: CREATE TABLE `cs_t` (
>    `a` char(10) character set latin1 default NULL
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin
> 1 row in set (0.03 sec)
> 
> mysql> show full columns from cs_t \G
> *************************** 1. row ***************************
>       Field: a
>        Type: char(10)
>   Collation: latin1_swedish_ci
>        Null: YES
>         Key:
>     Default: NULL
>       Extra:
> Privileges: select,insert,update,references
>     Comment:
> 1 row in set (0.01 sec)
> <<<<<
> 
> Compare to this:
> 
>  >>>>>
> mysql> create table cs_t (a char(10)) default character set latin1 
> collate latin1_bin;
> Query OK, 0 rows affected (0.01 sec)
> 
> mysql> show create table cs_t \G
> *************************** 1. row ***************************
>         Table: cs_t
> Create Table: CREATE TABLE `cs_t` (
>    `a` char(10) collate latin1_bin default NULL
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin
> 1 row in set (0.00 sec)
> 
> mysql> show full columns from cs_t \G
> *************************** 1. row ***************************
>       Field: a
>        Type: char(10)
>   Collation: latin1_bin
>        Null: YES
>         Key:
>     Default: NULL
>       Extra:
> Privileges: select,insert,update,references
>     Comment:
> 1 row in set (0.02 sec)
> <<<<<
> 
> Interestingly in this case it still prints the "collate" bit for the 
> column, which is redundant.
> 
> Regards,
> 
> Jeremy
> 
> Rick James wrote:
> > | query     | varchar(150) | latin1_swedish_ci |      |  
> PRI |         |
> >                              ^^^^^^^^^^^^^^^^^
> > seems to disagree with
> > 
> > `query` varchar(150) character set latin1 NOT NULL default '',
> > ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin |
> >                                        ^^^^^^^^^^^^^^^^^^
> > 
> >> -----Original Message-----
> >> From: Stewart Smith [mailto:stewart@stripped] 
> >> Sent: Thursday, November 01, 2007 8:43 PM
> >> To: Rick James
> >> Cc: Kathryn Steinbrink; internals@stripped
> >> Subject: RE: SHOW CREATE TABLE and auto_increment
> >>
> >> On Fri, 2007-10-26 at 09:51 -0700, Rick James wrote:
> >>> Why does it fail to spell out collation correctly?
> >> What exactly is incorrect?
> >>
> >>>>>> mysql> show create table pageview_data;
> >>>>>> ...
> >>>>>> | pageview_data | CREATE TABLE `pageview_data` (
> >>>>>>   `query` varchar(150) character set latin1 NOT NULL 
> >> default '',
> >>>>>>   `pageviews` int(11) default NULL,
> >>>>>>   `date` varchar(10) character set latin1 default NULL,
> >>>>>>   PRIMARY KEY  (`query`)
> >>>>>> ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin |
> >>> mysql> SHOW FULL COLUMNS FROM pageview_data;
> >>>  
> >>>
> >> +-----------+--------------+-------------------+------+-----+-
> >> --------+-
> >>> ------+------------+---------+
> >>> | Field     | Type         | Collation         | Null |  
> >> Key | Default |
> >>> Extra | Privileges | Comment |
> >>>
> >> +-----------+--------------+-------------------+------+-----+-
> >> --------+-
> >>> ------+------------+---------+
> >>> | query     | varchar(150) | latin1_swedish_ci |      |  
> >> PRI |         |
> >>> | select     |         | | pageviews | int(11)      | NULL
> >>> | YES  |     | NULL    |
> >>> | select     |         | | date      | varchar(10)  | 
> >> latin1_swedish_ci
> >>> | YES  |      | NULL    | | select     |         |
> >>>
> >> +-----------+--------------+-------------------+------+-----+-
> >> --------+-
> >>> ------+------------+---------+ 
> >> -- 
> >> Stewart Smith, Senior Software Engineer
> >> MySQL AB, www.mysql.com
> >> Office: +14082136540 Ext: 6616
> >> VoIP: 6616@stripped
> >> Mobile: +61 4 3 8844 332
> >>
> >> Jumpstart your cluster:
> >> http://www.mysql.com/consulting/packaged/cluster.html
> >>
> > 
> 
> -- 
> high performance mysql consulting
> www.provenscaling.com
> 
Thread
SHOW CREATE TABLE and auto_incrementKathryn Steinbrink23 Oct
  • Re: SHOW CREATE TABLE and auto_incrementStewart Smith23 Oct
    • RE: SHOW CREATE TABLE and auto_incrementRick James26 Oct
      • RE: SHOW CREATE TABLE and auto_incrementStewart Smith2 Nov
        • RE: SHOW CREATE TABLE and auto_incrementRick James2 Nov
          • Re: SHOW CREATE TABLE and auto_incrementJeremy Cole3 Nov
            • RE: SHOW CREATE TABLE and auto_incrementRick James5 Nov
              • Re: SHOW CREATE TABLE and auto_incrementJeremy Cole5 Nov