mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 10:14:19 +01:00
Fixed charsetnr sent to the client
This commit is contained in:
parent
ae3d226689
commit
815c23f1e6
6 changed files with 58 additions and 41 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
12
sql/field.cc
12
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))
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue