diff options
author | unknown <monty@mysql.com> | 2004-04-06 18:30:34 +0300 |
---|---|---|
committer | unknown <monty@mysql.com> | 2004-04-06 18:30:34 +0300 |
commit | 2d5635e3c8cfc6cc74f182b849813df909e4ec1d (patch) | |
tree | 61084d235f0a3818309e1614afb21bb8805bdbaa | |
parent | 799266346626fad317e535002c2cf8e22bf7a1bf (diff) | |
parent | 815c23f1e6431a6e20e8915fa92a71f7a754d5b7 (diff) | |
download | mariadb-git-2d5635e3c8cfc6cc74f182b849813df909e4ec1d.tar.gz |
Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/my/mysql-4.1
-rw-r--r-- | BitKeeper/etc/logging_ok | 1 | ||||
-rw-r--r-- | client/mysqltest.c | 5 | ||||
-rw-r--r-- | mysql-test/r/metadata.result | 70 | ||||
-rw-r--r-- | mysql-test/r/union.result | 6 | ||||
-rw-r--r-- | scripts/mysqld_multi.sh | 59 | ||||
-rw-r--r-- | sql/field.cc | 12 | ||||
-rw-r--r-- | sql/protocol.cc | 5 | ||||
-rw-r--r-- | sql/table.cc | 1 |
8 files changed, 116 insertions, 43 deletions
diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index 4067304c8e1..b3533f2a834 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -52,6 +52,7 @@ hf@genie.(none) igor@hundin.mysql.fi igor@rurik.mysql.com ingo@mysql.com +jani@a80-186-24-72.elisa-laajakaista.fi jani@dsl-jkl1657.dial.inet.fi jani@dsl-kpogw4gb5.dial.inet.fi jani@hynda.(none) diff --git a/client/mysqltest.c b/client/mysqltest.c index 00165ab4f45..be5dac1c9d9 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -2358,7 +2358,7 @@ int run_query(MYSQL* mysql, struct st_query* q, int flags) 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 ; field < field_end ; field++) @@ -2394,6 +2394,9 @@ int run_query(MYSQL* mysql, struct st_query* q, int flags) dynstr_append_mem(ds, "\t", 1); int10_to_str((int) field->decimals, buff, 10); 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); } } diff --git a/mysql-test/r/metadata.result b/mysql-test/r/metadata.result index 59914447087..80a01a0ca90 100644 --- a/mysql-test/r/metadata.result +++ b/mysql-test/r/metadata.result @@ -1,36 +1,36 @@ drop table if exists t1,t2; select 1, 1.0, -1, "hello", NULL; -Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals -def 1 8 1 1 N 32769 0 -def 1.0 5 3 3 N 32769 1 -def -1 8 1 2 N 32769 0 -def hello 254 5 5 N 1 31 -def NULL 6 0 0 Y 32768 0 +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 8 +def 1.0 5 3 3 N 32769 1 8 +def -1 8 1 2 N 32769 0 8 +def hello 254 5 5 N 1 31 8 +def NULL 6 0 0 Y 32768 0 8 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)); select * from t1; -Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals -def test t1 t1 a a 1 4 0 Y 32768 0 -def test t1 t1 b b 2 6 0 Y 32768 0 -def test t1 t1 c c 9 9 0 Y 32768 0 -def test t1 t1 d d 3 11 0 Y 32768 0 -def test t1 t1 e e 8 20 0 Y 32768 0 -def test t1 t1 f f 4 3 0 Y 32768 2 -def test t1 t1 g g 5 4 0 Y 32768 3 -def test t1 t1 h h 0 7 0 Y 32768 4 -def test t1 t1 i i 13 4 0 Y 32864 0 -def test t1 t1 j j 10 10 0 Y 0 0 -def test t1 t1 k k 7 19 0 N 1089 0 -def test t1 t1 l l 12 19 0 Y 0 0 -def test t1 t1 m m 254 1 0 Y 256 0 -def test t1 t1 n n 254 3 0 Y 2048 0 -def test t1 t1 o o 254 10 0 Y 0 0 +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 63 +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 63 +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 63 +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 63 +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 63 +def test t1 t1 j j 10 10 0 Y 128 0 63 +def test t1 t1 k k 7 19 0 N 1217 0 63 +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 8 +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 8 a b c d e f g h i j k l m n o 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 -def test t1 t2 a b 1 4 0 Y 32768 0 -def test t1 t2 b c 2 6 0 Y 32768 0 +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 63 +def test t1 t2 b c 2 6 0 Y 32768 0 63 b c drop table t1; 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'); CREATE TABLE t2 (id tinyint(3) unsigned default NULL, data char(3) default '0'); INSERT INTO t2 VALUES (1,'yes'),(2,'no'); 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 -def test t1 t1 id id 1 3 1 Y 32768 0 -def test t1 t1 data data 253 255 6 Y 0 0 -def test t2 t2 data data 254 3 3 Y 0 0 +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 63 +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 8 id data data 1 male yes 2 female no 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 -def test t1 t1 id id 1 3 1 Y 32768 0 -def test t1 t1 data data 253 255 6 Y 0 0 -def test t2 t2 data data 254 3 3 Y 0 0 +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 63 +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 8 id data data 1 male yes 2 female no 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 -def test t1 t1 id id 1 3 1 Y 32768 0 +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 63 id 1 2 diff --git a/mysql-test/r/union.result b/mysql-test/r/union.result index 8e288f9725f..a39a4e8a85f 100644 --- a/mysql-test/r/union.result +++ b/mysql-test/r/union.result @@ -693,7 +693,7 @@ testc show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `dt` char(19) default NULL + `dt` binary(19) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; create table t1 SELECT dt from t2 UNION select sv from t2; @@ -704,7 +704,7 @@ testv show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `dt` char(19) default NULL + `dt` binary(19) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; create table t1 SELECT sc from t2 UNION select sv from t2; @@ -726,7 +726,7 @@ tetetetetest show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `dt` longblob + `dt` blob ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; create table t1 SELECT sv from t2 UNION select b from t2; diff --git a/scripts/mysqld_multi.sh b/scripts/mysqld_multi.sh index 3165a01362c..a4f2b18fda8 100644 --- a/scripts/mysqld_multi.sh +++ b/scripts/mysqld_multi.sh @@ -4,12 +4,12 @@ use Getopt::Long; use POSIX qw(strftime); $|=1; -$VER="2.5"; +$VER="2.6"; $opt_config_file = undef(); $opt_example = 0; $opt_help = 0; -$opt_log = "/tmp/mysqld_multi.log"; +$opt_log = ""; $opt_mysqladmin = "@bindir@/mysqladmin"; $opt_mysqld = "@libexecdir@/mysqld"; $opt_no_log = 0; @@ -18,6 +18,9 @@ $opt_tcp_ip = 0; $opt_user = "root"; $opt_version = 0; +my $my_print_defaults_exists= 1; +my $logdir= undef(); + my ($mysqld, $mysqladmin, $groupids, $homedir, $my_progname); $homedir = $ENV{HOME}; @@ -42,7 +45,9 @@ sub main print "Please make sure you have this command available and\n"; print "in your path. The command is available from the latest\n"; print "MySQL distribution.\n"; + $my_print_defaults_exists= 0; } + init_log(); my @defops = `my_print_defaults mysqld_multi`; chop @defops; splice @ARGV, 0, 0, @defops; @@ -113,6 +118,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 #### diff --git a/sql/field.cc b/sql/field.cc index 8408bfdf578..30ae20de94b 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -5623,6 +5623,18 @@ Field *make_field(char *ptr, uint32 field_length, null_pos=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_packed(pack_flag)) diff --git a/sql/protocol.cc b/sql/protocol.cc index 61af6ffceaf..fb4d2a57ab6 100644 --- a/sql/protocol.cc +++ b/sql/protocol.cc @@ -530,7 +530,10 @@ bool Protocol::send_fields(List<Item> *list, uint flag) /* Store fixed length fields */ pos= (char*) local_packet->ptr()+local_packet->length(); *pos++= 12; // Length of packed fields - int2store(pos, field.charsetnr); + if (item->collation.collation == &my_charset_bin || thd_charset == NULL) + int2store(pos, field.charsetnr); + else + int2store(pos, thd_charset->number); int4store(pos+2, field.length); pos[6]= field.type; int2store(pos+7,field.flags); diff --git a/sql/table.cc b/sql/table.cc index b25517bce10..23d99466a83 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -465,7 +465,6 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag, goto err_not_open; /* purecov: inspected */ } reg_field->comment=comment; - reg_field->set_charset(charset); if (!(reg_field->flags & NOT_NULL_FLAG)) { if ((null_bit<<=1) == 256) |