1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

1. Item now uses my_charset_bin by default,

not default_charset_into. It fixes the
problem that in some cases numbers where
treated as CHAR(N), not as BINARY(N), e.g.
wrong 'charsetnr' when sent to the client side.
2. IFNULL didn't aggregate argument charsets
and collations, so IFNULL(1,'a') produced
a CHAR(N). Now produces a BINARY(N).
3. SELECT PROCEDURE ANALIZE now returns
BINARY columns, which is much better than it worked
previously: CHAR with the default character set.
But in the future it's worth to fix the fields
'Field_name' and 'Optimal_fieldtype' to use UTF8,
and 'Min_value' and 'Max_value' to inherit their charsets
from the original items. But it is not important,
and BINARY(N) is OK for now.
4. Tests were fixed accordingly. No new tests were
made, as the old onces cover everything.


mysql-test/r/analyse.result:
  SELECT PROCEDURE ANALIZE now returns
  BINARY columns, which is much better than it worked
  previously: CHAR with the default character set.
  But in the future it's worth to fix the fields
  'Field_name' and 'Optimal_fieldtype' to use UTF8,
  and 'Min_value' and 'Max_value' to inherit their charsets
  from the original items. But it is not important,
  and BINARY(N) is OK for now.
mysql-test/r/case.result:
  Test fix according to the changes
mysql-test/r/metadata.result:
  Test fix according to the changes
mysql-test/r/ps_1general.result:
  Test fix according to the changes
mysql-test/r/ps_2myisam.result:
  Test fix according to the changes
mysql-test/r/ps_3innodb.result:
  Test fix according to the changes
mysql-test/r/ps_4heap.result:
  Test fix according to the changes
mysql-test/r/ps_5merge.result:
  Test fix according to the changes
mysql-test/r/ps_6bdb.result:
  Test fix according to the changes
mysql-test/r/ps_7ndb.result:
  Test fix according to the changes
mysql-test/r/union.result:
  Test fix according to the changes
sql/item.cc:
  Item is now BINARY by default
sql/item_cmpfunc.cc:
  IFNULL now collects arguments collations/charsets
  like other functions do.
This commit is contained in:
unknown
2005-01-18 17:41:06 +04:00
parent 1457163c97
commit cd89ed9ab6
13 changed files with 59 additions and 56 deletions

View File

@ -36,16 +36,16 @@ create table t2 select * from t1 where 0=1 procedure analyse();
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`Field_name` char(255) NOT NULL default '',
`Min_value` char(255) default NULL,
`Max_value` char(255) default NULL,
`Field_name` binary(255) NOT NULL default '',
`Min_value` binary(255) default NULL,
`Max_value` binary(255) default NULL,
`Min_length` bigint(11) NOT NULL default '0',
`Max_length` bigint(11) NOT NULL default '0',
`Empties_or_zeros` bigint(11) NOT NULL default '0',
`Nulls` bigint(11) NOT NULL default '0',
`Avg_value_or_avg_length` char(255) NOT NULL default '',
`Std` char(255) default NULL,
`Optimal_fieldtype` char(64) NOT NULL default ''
`Avg_value_or_avg_length` binary(255) NOT NULL default '',
`Std` binary(255) default NULL,
`Optimal_fieldtype` binary(64) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
select * from t1 where 0=1 procedure analyse();
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
@ -55,16 +55,16 @@ create table t2 select * from t1 where 0=1 procedure analyse();
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`Field_name` char(255) NOT NULL default '',
`Min_value` char(255) default NULL,
`Max_value` char(255) default NULL,
`Field_name` binary(255) NOT NULL default '',
`Min_value` binary(255) default NULL,
`Max_value` binary(255) default NULL,
`Min_length` bigint(11) NOT NULL default '0',
`Max_length` bigint(11) NOT NULL default '0',
`Empties_or_zeros` bigint(11) NOT NULL default '0',
`Nulls` bigint(11) NOT NULL default '0',
`Avg_value_or_avg_length` char(255) NOT NULL default '',
`Std` char(255) default NULL,
`Optimal_fieldtype` char(64) NOT NULL default ''
`Avg_value_or_avg_length` binary(255) NOT NULL default '',
`Std` binary(255) default NULL,
`Optimal_fieldtype` binary(64) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
select * from t2;
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
@ -78,16 +78,16 @@ create table t2 select * from t1 where 0=1 procedure analyse();
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`Field_name` char(255) NOT NULL default '',
`Min_value` char(255) default NULL,
`Max_value` char(255) default NULL,
`Field_name` binary(255) NOT NULL default '',
`Min_value` binary(255) default NULL,
`Max_value` binary(255) default NULL,
`Min_length` bigint(11) NOT NULL default '0',
`Max_length` bigint(11) NOT NULL default '0',
`Empties_or_zeros` bigint(11) NOT NULL default '0',
`Nulls` bigint(11) NOT NULL default '0',
`Avg_value_or_avg_length` char(255) NOT NULL default '',
`Std` char(255) default NULL,
`Optimal_fieldtype` char(64) NOT NULL default ''
`Avg_value_or_avg_length` binary(255) NOT NULL default '',
`Std` binary(255) default NULL,
`Optimal_fieldtype` binary(64) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
select * from t2;
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype