Commit 472e87a4 authored by monty@mysql.com's avatar monty@mysql.com

Merge bk-internal.mysql.com:/home/bk/mysql-4.1

into mysql.com:/home/my/mysql-4.1
parents 7ca9a705 950a2eba
...@@ -52,6 +52,7 @@ hf@genie.(none) ...@@ -52,6 +52,7 @@ hf@genie.(none)
igor@hundin.mysql.fi igor@hundin.mysql.fi
igor@rurik.mysql.com igor@rurik.mysql.com
ingo@mysql.com ingo@mysql.com
jani@a80-186-24-72.elisa-laajakaista.fi
jani@dsl-jkl1657.dial.inet.fi jani@dsl-jkl1657.dial.inet.fi
jani@dsl-kpogw4gb5.dial.inet.fi jani@dsl-kpogw4gb5.dial.inet.fi
jani@hynda.(none) jani@hynda.(none)
......
...@@ -2358,7 +2358,7 @@ int run_query(MYSQL* mysql, struct st_query* q, int flags) ...@@ -2358,7 +2358,7 @@ int run_query(MYSQL* mysql, struct st_query* q, int flags)
if (display_metadata) if (display_metadata)
{ {
dynstr_append(ds,"Catalog\tDatabase\tTable\tTable_alias\tColumn\tColumn_alias\tName\tType\tLength\tMax length\tIs_null\tFlags\tDecimals\n"); dynstr_append(ds,"Catalog\tDatabase\tTable\tTable_alias\tColumn\tColumn_alias\tName\tType\tLength\tMax length\tIs_null\tFlags\tDecimals\tCharsetnr\n");
for (field= mysql_fetch_fields(res), field_end= field+num_fields ; for (field= mysql_fetch_fields(res), field_end= field+num_fields ;
field < field_end ; field < field_end ;
field++) field++)
...@@ -2394,6 +2394,9 @@ int run_query(MYSQL* mysql, struct st_query* q, int flags) ...@@ -2394,6 +2394,9 @@ int run_query(MYSQL* mysql, struct st_query* q, int flags)
dynstr_append_mem(ds, "\t", 1); dynstr_append_mem(ds, "\t", 1);
int10_to_str((int) field->decimals, buff, 10); int10_to_str((int) field->decimals, buff, 10);
dynstr_append(ds, buff); dynstr_append(ds, buff);
dynstr_append_mem(ds, "\t", 1);
int10_to_str((int) field->charsetnr, buff, 10);
dynstr_append(ds, buff);
dynstr_append_mem(ds, "\n", 1); dynstr_append_mem(ds, "\n", 1);
} }
} }
......
drop table if exists t1,t2; drop table if exists t1,t2;
select 1, 1.0, -1, "hello", NULL; select 1, 1.0, -1, "hello", NULL;
Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
def 1 8 1 1 N 32769 0 def 1 8 1 1 N 32769 0 8
def 1.0 5 3 3 N 32769 1 def 1.0 5 3 3 N 32769 1 8
def -1 8 1 2 N 32769 0 def -1 8 1 2 N 32769 0 8
def hello 254 5 5 N 1 31 def hello 254 5 5 N 1 31 8
def NULL 6 0 0 Y 32768 0 def NULL 6 0 0 Y 32768 0 8
1 1.0 -1 hello NULL 1 1.0 -1 hello NULL
1 1.0 -1 hello NULL 1 1.0 -1 hello NULL
create table t1 (a tinyint, b smallint, c mediumint, d int, e bigint, f float(3,2), g double(4,3), h decimal(5,4), i year, j date, k timestamp, l datetime, m enum('a','b'), n set('a','b'), o char(10)); create table t1 (a tinyint, b smallint, c mediumint, d int, e bigint, f float(3,2), g double(4,3), h decimal(5,4), i year, j date, k timestamp, l datetime, m enum('a','b'), n set('a','b'), o char(10));
select * from t1; select * from t1;
Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 t1 a a 1 4 0 Y 32768 0 def test t1 t1 a a 1 4 0 Y 32768 0 63
def test t1 t1 b b 2 6 0 Y 32768 0 def test t1 t1 b b 2 6 0 Y 32768 0 63
def test t1 t1 c c 9 9 0 Y 32768 0 def test t1 t1 c c 9 9 0 Y 32768 0 63
def test t1 t1 d d 3 11 0 Y 32768 0 def test t1 t1 d d 3 11 0 Y 32768 0 63
def test t1 t1 e e 8 20 0 Y 32768 0 def test t1 t1 e e 8 20 0 Y 32768 0 63
def test t1 t1 f f 4 3 0 Y 32768 2 def test t1 t1 f f 4 3 0 Y 32768 2 63
def test t1 t1 g g 5 4 0 Y 32768 3 def test t1 t1 g g 5 4 0 Y 32768 3 63
def test t1 t1 h h 0 7 0 Y 32768 4 def test t1 t1 h h 0 7 0 Y 32768 4 63
def test t1 t1 i i 13 4 0 Y 32864 0 def test t1 t1 i i 13 4 0 Y 32864 0 63
def test t1 t1 j j 10 10 0 Y 0 0 def test t1 t1 j j 10 10 0 Y 128 0 63
def test t1 t1 k k 7 19 0 N 1089 0 def test t1 t1 k k 7 19 0 N 1217 0 63
def test t1 t1 l l 12 19 0 Y 0 0 def test t1 t1 l l 12 19 0 Y 128 0 63
def test t1 t1 m m 254 1 0 Y 256 0 def test t1 t1 m m 254 1 0 Y 256 0 8
def test t1 t1 n n 254 3 0 Y 2048 0 def test t1 t1 n n 254 3 0 Y 2048 0 8
def test t1 t1 o o 254 10 0 Y 0 0 def test t1 t1 o o 254 10 0 Y 0 0 8
a b c d e f g h i j k l m n o a b c d e f g h i j k l m n o
select a b, b c from t1 as t2; select a b, b c from t1 as t2;
Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 t2 a b 1 4 0 Y 32768 0 def test t1 t2 a b 1 4 0 Y 32768 0 63
def test t1 t2 b c 2 6 0 Y 32768 0 def test t1 t2 b c 2 6 0 Y 32768 0 63
b c b c
drop table t1; drop table t1;
CREATE TABLE t1 (id tinyint(3) default NULL, data varchar(255) default NULL); CREATE TABLE t1 (id tinyint(3) default NULL, data varchar(255) default NULL);
...@@ -38,24 +38,24 @@ INSERT INTO t1 VALUES (1,'male'),(2,'female'); ...@@ -38,24 +38,24 @@ INSERT INTO t1 VALUES (1,'male'),(2,'female');
CREATE TABLE t2 (id tinyint(3) unsigned default NULL, data char(3) default '0'); CREATE TABLE t2 (id tinyint(3) unsigned default NULL, data char(3) default '0');
INSERT INTO t2 VALUES (1,'yes'),(2,'no'); INSERT INTO t2 VALUES (1,'yes'),(2,'no');
select t1.id, t1.data, t2.data from t1, t2 where t1.id = t2.id; select t1.id, t1.data, t2.data from t1, t2 where t1.id = t2.id;
Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 t1 id id 1 3 1 Y 32768 0 def test t1 t1 id id 1 3 1 Y 32768 0 63
def test t1 t1 data data 253 255 6 Y 0 0 def test t1 t1 data data 253 255 6 Y 0 0 8
def test t2 t2 data data 254 3 3 Y 0 0 def test t2 t2 data data 254 3 3 Y 0 0 8
id data data id data data
1 male yes 1 male yes
2 female no 2 female no
select t1.id, t1.data, t2.data from t1, t2 where t1.id = t2.id order by t1.id; select t1.id, t1.data, t2.data from t1, t2 where t1.id = t2.id order by t1.id;
Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 t1 id id 1 3 1 Y 32768 0 def test t1 t1 id id 1 3 1 Y 32768 0 63
def test t1 t1 data data 253 255 6 Y 0 0 def test t1 t1 data data 253 255 6 Y 0 0 8
def test t2 t2 data data 254 3 3 Y 0 0 def test t2 t2 data data 254 3 3 Y 0 0 8
id data data id data data
1 male yes 1 male yes
2 female no 2 female no
select t1.id from t1 union select t2.id from t2; select t1.id from t1 union select t2.id from t2;
Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 t1 id id 1 3 1 Y 32768 0 def test t1 t1 id id 1 3 1 Y 32768 0 63
id id
1 1
2 2
......
...@@ -693,7 +693,7 @@ testc ...@@ -693,7 +693,7 @@ testc
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`dt` char(19) default NULL `dt` binary(19) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1; drop table t1;
create table t1 SELECT dt from t2 UNION select sv from t2; create table t1 SELECT dt from t2 UNION select sv from t2;
...@@ -704,7 +704,7 @@ testv ...@@ -704,7 +704,7 @@ testv
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`dt` char(19) default NULL `dt` binary(19) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1; drop table t1;
create table t1 SELECT sc from t2 UNION select sv from t2; create table t1 SELECT sc from t2 UNION select sv from t2;
...@@ -726,7 +726,7 @@ tetetetetest ...@@ -726,7 +726,7 @@ tetetetetest
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`dt` longblob `dt` blob
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1; drop table t1;
create table t1 SELECT sv from t2 UNION select b from t2; create table t1 SELECT sv from t2 UNION select b from t2;
......
...@@ -4,12 +4,12 @@ use Getopt::Long; ...@@ -4,12 +4,12 @@ use Getopt::Long;
use POSIX qw(strftime); use POSIX qw(strftime);
$|=1; $|=1;
$VER="2.5"; $VER="2.6";
$opt_config_file = undef(); $opt_config_file = undef();
$opt_example = 0; $opt_example = 0;
$opt_help = 0; $opt_help = 0;
$opt_log = "/tmp/mysqld_multi.log"; $opt_log = "";
$opt_mysqladmin = "@bindir@/mysqladmin"; $opt_mysqladmin = "@bindir@/mysqladmin";
$opt_mysqld = "@libexecdir@/mysqld"; $opt_mysqld = "@libexecdir@/mysqld";
$opt_no_log = 0; $opt_no_log = 0;
...@@ -18,6 +18,9 @@ $opt_tcp_ip = 0; ...@@ -18,6 +18,9 @@ $opt_tcp_ip = 0;
$opt_user = "root"; $opt_user = "root";
$opt_version = 0; $opt_version = 0;
my $my_print_defaults_exists= 1;
my $logdir= undef();
my ($mysqld, $mysqladmin, $groupids, $homedir, $my_progname); my ($mysqld, $mysqladmin, $groupids, $homedir, $my_progname);
$homedir = $ENV{HOME}; $homedir = $ENV{HOME};
...@@ -42,7 +45,9 @@ sub main ...@@ -42,7 +45,9 @@ sub main
print "Please make sure you have this command available and\n"; print "Please make sure you have this command available and\n";
print "in your path. The command is available from the latest\n"; print "in your path. The command is available from the latest\n";
print "MySQL distribution.\n"; print "MySQL distribution.\n";
$my_print_defaults_exists= 0;
} }
init_log();
my @defops = `my_print_defaults mysqld_multi`; my @defops = `my_print_defaults mysqld_multi`;
chop @defops; chop @defops;
splice @ARGV, 0, 0, @defops; splice @ARGV, 0, 0, @defops;
...@@ -112,6 +117,56 @@ sub main ...@@ -112,6 +117,56 @@ sub main
} }
} }
####
#### Init log file. Check for appropriate place for log file, in the following
#### order my_print_defaults mysqld datadir, @datadir@, /var/log, /tmp
####
sub init_log
{
if ($my_print_defaults_exists)
{
@mysqld_opts= `my_print_defaults mysqld`;
chomp @mysqld_opts;
foreach my $opt (@mysqld_opts)
{
if ($opt =~ m/^\-\-datadir[=](.*)/)
{
if (-d "$1" && -w "$1")
{
$logdir= $1;
}
}
}
}
if (!defined($logdir))
{
$logdir= "@datadir@" if (-d "@datadir@" && -w "@datadir@");
}
if (!defined($logdir))
{
$logdir= "/var/log" if (-d "/var/log" && -w "/var/log");
}
if (!defined($logdir))
{
if (-d "/tmp" && -w "/tmp" && ! -e "/tmp/mysqld_multi.log")
{
$logdir= "/tmp";
}
}
if (!defined($logdir))
{
# We still couldn't get a default log file in place. Log file
# will be disabled unless user sets it with an option
$opt_no_log= 1;
}
else
{
$opt_log= "$logdir/mysqld_multi.log";
}
}
#### ####
#### Report living and not running MySQL servers #### Report living and not running MySQL servers
#### ####
......
...@@ -5623,6 +5623,18 @@ Field *make_field(char *ptr, uint32 field_length, ...@@ -5623,6 +5623,18 @@ Field *make_field(char *ptr, uint32 field_length,
null_pos=0; null_pos=0;
null_bit=0; null_bit=0;
} }
switch (field_type)
{
case FIELD_TYPE_DATE:
case FIELD_TYPE_NEWDATE:
case FIELD_TYPE_TIME:
case FIELD_TYPE_DATETIME:
case FIELD_TYPE_TIMESTAMP:
field_charset= &my_charset_bin;
default: break;
}
if (f_is_alpha(pack_flag)) if (f_is_alpha(pack_flag))
{ {
if (!f_is_packed(pack_flag)) if (!f_is_packed(pack_flag))
......
...@@ -530,7 +530,10 @@ bool Protocol::send_fields(List<Item> *list, uint flag) ...@@ -530,7 +530,10 @@ bool Protocol::send_fields(List<Item> *list, uint flag)
/* Store fixed length fields */ /* Store fixed length fields */
pos= (char*) local_packet->ptr()+local_packet->length(); pos= (char*) local_packet->ptr()+local_packet->length();
*pos++= 12; // Length of packed fields *pos++= 12; // Length of packed fields
if (item->collation.collation == &my_charset_bin || thd_charset == NULL)
int2store(pos, field.charsetnr); int2store(pos, field.charsetnr);
else
int2store(pos, thd_charset->number);
int4store(pos+2, field.length); int4store(pos+2, field.length);
pos[6]= field.type; pos[6]= field.type;
int2store(pos+7,field.flags); int2store(pos+7,field.flags);
......
...@@ -465,7 +465,6 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag, ...@@ -465,7 +465,6 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag,
goto err_not_open; /* purecov: inspected */ goto err_not_open; /* purecov: inspected */
} }
reg_field->comment=comment; reg_field->comment=comment;
reg_field->set_charset(charset);
if (!(reg_field->flags & NOT_NULL_FLAG)) if (!(reg_field->flags & NOT_NULL_FLAG))
{ {
if ((null_bit<<=1) == 256) if ((null_bit<<=1) == 256)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment