Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
85405574
Commit
85405574
authored
Jul 22, 2006
by
evgen@moonbone.local
Browse files
Options
Browse Files
Download
Plain Diff
Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into moonbone.local:/work/autopush/12185-bug-5.0-opt-mysql
parents
bcf82284
c875b8eb
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
82 additions
and
17 deletions
+82
-17
mysql-test/r/create.result
mysql-test/r/create.result
+1
-1
mysql-test/r/innodb.result
mysql-test/r/innodb.result
+2
-2
mysql-test/r/union.result
mysql-test/r/union.result
+23
-8
mysql-test/t/innodb.test
mysql-test/t/innodb.test
+1
-1
mysql-test/t/union.test
mysql-test/t/union.test
+10
-2
sql/field.cc
sql/field.cc
+18
-0
sql/field.h
sql/field.h
+17
-0
sql/item.cc
sql/item.cc
+10
-3
No files found.
mysql-test/r/create.result
View file @
85405574
...
@@ -452,7 +452,7 @@ t2 CREATE TABLE `t2` (
...
@@ -452,7 +452,7 @@ t2 CREATE TABLE `t2` (
`ifnull(h,h)` decimal(5,4) default NULL,
`ifnull(h,h)` decimal(5,4) default NULL,
`ifnull(i,i)` year(4) default NULL,
`ifnull(i,i)` year(4) default NULL,
`ifnull(j,j)` date default NULL,
`ifnull(j,j)` date default NULL,
`ifnull(k,k)`
datetime
NOT NULL default '0000-00-00 00:00:00',
`ifnull(k,k)`
timestamp
NOT NULL default '0000-00-00 00:00:00',
`ifnull(l,l)` datetime default NULL,
`ifnull(l,l)` datetime default NULL,
`ifnull(m,m)` varchar(1) default NULL,
`ifnull(m,m)` varchar(1) default NULL,
`ifnull(n,n)` varchar(3) default NULL,
`ifnull(n,n)` varchar(3) default NULL,
...
...
mysql-test/r/innodb.result
View file @
85405574
...
@@ -1473,8 +1473,8 @@ Error 1146 Table 'test.t4' doesn't exist
...
@@ -1473,8 +1473,8 @@ Error 1146 Table 'test.t4' doesn't exist
drop table t1,t2,t3;
drop table t1,t2,t3;
create table t1 (id int, name char(10) not null, name2 char(10) not null) engine=innodb;
create table t1 (id int, name char(10) not null, name2 char(10) not null) engine=innodb;
insert into t1 values(1,'first','fff'),(2,'second','sss'),(3,'third','ttt');
insert into t1 values(1,'first','fff'),(2,'second','sss'),(3,'third','ttt');
select
name2 from t1 union all select name from t1 union all select id
from t1;
select
trim(name2) from t1 union all select trim(name) from t1 union all select trim(id)
from t1;
name2
trim(name2)
fff
fff
sss
sss
ttt
ttt
...
...
mysql-test/r/union.result
View file @
85405574
...
@@ -691,9 +691,9 @@ t1 CREATE TABLE `t1` (
...
@@ -691,9 +691,9 @@ t1 CREATE TABLE `t1` (
`da` datetime default NULL
`da` datetime 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
sc
from t2;
create table t1 SELECT dt from t2 UNION select
trim(sc)
from t2;
select
*
from t1;
select
trim(dt)
from t1;
dt
trim(dt)
1972-10-22 11:50:00
1972-10-22 11:50:00
testc
testc
show create table t1;
show create table t1;
...
@@ -732,7 +732,7 @@ tetetetetest
...
@@ -732,7 +732,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`
long
blob
`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;
...
@@ -743,7 +743,7 @@ tetetetetest
...
@@ -743,7 +743,7 @@ tetetetetest
show create table t1;
show create table t1;
Table Create Table
Table Create Table
t1 CREATE TABLE `t1` (
t1 CREATE TABLE `t1` (
`sv`
long
blob
`sv` blob
) ENGINE=MyISAM DEFAULT CHARSET=latin1
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
drop table t1;
create table t1 SELECT i from t2 UNION select d from t2 UNION select b from t2;
create table t1 SELECT i from t2 UNION select d from t2 UNION select b from t2;
...
@@ -755,7 +755,7 @@ tetetetetest
...
@@ -755,7 +755,7 @@ tetetetetest
show create table t1;
show create table t1;
Table Create Table
Table Create Table
t1 CREATE TABLE `t1` (
t1 CREATE TABLE `t1` (
`i`
long
blob
`i` 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 tx from t2;
create table t1 SELECT sv from t2 UNION select tx from t2;
...
@@ -766,7 +766,7 @@ teeeeeeeeeeeest
...
@@ -766,7 +766,7 @@ teeeeeeeeeeeest
show create table t1;
show create table t1;
Table Create Table
Table Create Table
t1 CREATE TABLE `t1` (
t1 CREATE TABLE `t1` (
`sv`
long
text
`sv` text
) ENGINE=MyISAM DEFAULT CHARSET=latin1
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
drop table t1;
create table t1 SELECT b from t2 UNION select tx from t2;
create table t1 SELECT b from t2 UNION select tx from t2;
...
@@ -777,7 +777,7 @@ teeeeeeeeeeeest
...
@@ -777,7 +777,7 @@ teeeeeeeeeeeest
show create table t1;
show create table t1;
Table Create Table
Table Create Table
t1 CREATE TABLE `t1` (
t1 CREATE TABLE `t1` (
`b`
long
blob
`b` blob
) ENGINE=MyISAM DEFAULT CHARSET=latin1
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1,t2;
drop table t1,t2;
create table t1 select 1 union select -1;
create table t1 select 1 union select -1;
...
@@ -1306,6 +1306,21 @@ id
...
@@ -1306,6 +1306,21 @@ id
5
5
99
99
drop table t1;
drop table t1;
create table t1(f1 char(1), f2 char(5), f3 binary(1), f4 binary(5), f5 timestamp, f6 varchar(1) character set utf8 collate utf8_general_ci, f7 text);
create table t2 as select *, f6 as f8 from t1 union select *, f7 from t1;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`f1` char(1) default NULL,
`f2` char(5) default NULL,
`f3` binary(1) default NULL,
`f4` binary(5) default NULL,
`f5` timestamp NOT NULL default '0000-00-00 00:00:00',
`f6` varchar(1) character set utf8 default NULL,
`f7` text,
`f8` text character set utf8
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1, t2;
(select avg(1)) union (select avg(1)) union (select avg(1)) union
(select avg(1)) union (select avg(1)) union (select avg(1)) union
(select avg(1)) union (select avg(1)) union (select avg(1)) union
(select avg(1)) union (select avg(1)) union (select avg(1)) union
(select avg(1)) union (select avg(1)) union (select avg(1)) union
(select avg(1)) union (select avg(1)) union (select avg(1)) union
...
...
mysql-test/t/innodb.test
View file @
85405574
...
@@ -1079,7 +1079,7 @@ drop table t1,t2,t3;
...
@@ -1079,7 +1079,7 @@ drop table t1,t2,t3;
#
#
create
table
t1
(
id
int
,
name
char
(
10
)
not
null
,
name2
char
(
10
)
not
null
)
engine
=
innodb
;
create
table
t1
(
id
int
,
name
char
(
10
)
not
null
,
name2
char
(
10
)
not
null
)
engine
=
innodb
;
insert
into
t1
values
(
1
,
'first'
,
'fff'
),(
2
,
'second'
,
'sss'
),(
3
,
'third'
,
'ttt'
);
insert
into
t1
values
(
1
,
'first'
,
'fff'
),(
2
,
'second'
,
'sss'
),(
3
,
'third'
,
'ttt'
);
select
name2
from
t1
union
all
select
name
from
t1
union
all
select
id
from
t1
;
select
trim
(
name2
)
from
t1
union
all
select
trim
(
name
)
from
t1
union
all
select
trim
(
id
)
from
t1
;
drop
table
t1
;
drop
table
t1
;
#
#
...
...
mysql-test/t/union.test
View file @
85405574
...
@@ -390,8 +390,8 @@ create table t1 SELECT da from t2 UNION select dt from t2;
...
@@ -390,8 +390,8 @@ create table t1 SELECT da from t2 UNION select dt from t2;
select
*
from
t1
;
select
*
from
t1
;
show
create
table
t1
;
show
create
table
t1
;
drop
table
t1
;
drop
table
t1
;
create
table
t1
SELECT
dt
from
t2
UNION
select
sc
from
t2
;
create
table
t1
SELECT
dt
from
t2
UNION
select
trim
(
sc
)
from
t2
;
select
*
from
t1
;
select
trim
(
dt
)
from
t1
;
show
create
table
t1
;
show
create
table
t1
;
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
;
...
@@ -794,6 +794,14 @@ drop table t1;
...
@@ -794,6 +794,14 @@ drop table t1;
# End of 4.1 tests
# End of 4.1 tests
#
# Bug#12185: Data type aggregation may produce wrong result
#
create
table
t1
(
f1
char
(
1
),
f2
char
(
5
),
f3
binary
(
1
),
f4
binary
(
5
),
f5
timestamp
,
f6
varchar
(
1
)
character
set
utf8
collate
utf8_general_ci
,
f7
text
);
create
table
t2
as
select
*
,
f6
as
f8
from
t1
union
select
*
,
f7
from
t1
;
show
create
table
t2
;
drop
table
t1
,
t2
;
#
#
# Bug#18175: Union select over 129 tables with a sum function fails.
# Bug#18175: Union select over 129 tables with a sum function fails.
#
#
...
...
sql/field.cc
View file @
85405574
...
@@ -4485,6 +4485,24 @@ Field_timestamp::Field_timestamp(char *ptr_arg, uint32 len_arg,
...
@@ -4485,6 +4485,24 @@ Field_timestamp::Field_timestamp(char *ptr_arg, uint32 len_arg,
}
}
Field_timestamp
::
Field_timestamp
(
bool
maybe_null_arg
,
const
char
*
field_name_arg
,
struct
st_table
*
table_arg
,
CHARSET_INFO
*
cs
)
:
Field_str
((
char
*
)
0
,
19
,
maybe_null_arg
?
(
uchar
*
)
""
:
0
,
0
,
NONE
,
field_name_arg
,
table_arg
,
cs
)
{
/* For 4.0 MYD and 4.0 InnoDB compatibility */
flags
|=
ZEROFILL_FLAG
|
UNSIGNED_FLAG
;
if
(
table
&&
!
table
->
timestamp_field
&&
unireg_check
!=
NONE
)
{
/* This timestamp has auto-update */
table
->
timestamp_field
=
this
;
flags
|=
TIMESTAMP_FLAG
;
}
}
/*
/*
Get auto-set type for TIMESTAMP field.
Get auto-set type for TIMESTAMP field.
...
...
sql/field.h
View file @
85405574
...
@@ -782,6 +782,8 @@ public:
...
@@ -782,6 +782,8 @@ public:
enum
utype
unireg_check_arg
,
const
char
*
field_name_arg
,
enum
utype
unireg_check_arg
,
const
char
*
field_name_arg
,
struct
st_table
*
table_arg
,
struct
st_table
*
table_arg
,
CHARSET_INFO
*
cs
);
CHARSET_INFO
*
cs
);
Field_timestamp
(
bool
maybe_null_arg
,
const
char
*
field_name_arg
,
struct
st_table
*
table_arg
,
CHARSET_INFO
*
cs
);
enum_field_types
type
()
const
{
return
FIELD_TYPE_TIMESTAMP
;}
enum_field_types
type
()
const
{
return
FIELD_TYPE_TIMESTAMP
;}
enum
ha_base_keytype
key_type
()
const
{
return
HA_KEYTYPE_ULONG_INT
;
}
enum
ha_base_keytype
key_type
()
const
{
return
HA_KEYTYPE_ULONG_INT
;
}
enum
Item_result
cmp_type
()
const
{
return
INT_RESULT
;
}
enum
Item_result
cmp_type
()
const
{
return
INT_RESULT
;
}
...
@@ -1130,6 +1132,21 @@ public:
...
@@ -1130,6 +1132,21 @@ public:
{
{
flags
|=
BLOB_FLAG
;
flags
|=
BLOB_FLAG
;
}
}
Field_blob
(
uint32
len_arg
,
bool
maybe_null_arg
,
const
char
*
field_name_arg
,
struct
st_table
*
table_arg
,
CHARSET_INFO
*
cs
,
bool
set_packlength
)
:
Field_longstr
((
char
*
)
0
,
len_arg
,
maybe_null_arg
?
(
uchar
*
)
""
:
0
,
0
,
NONE
,
field_name_arg
,
table_arg
,
cs
)
{
flags
|=
BLOB_FLAG
;
packlength
=
4
;
if
(
set_packlength
)
{
uint32
char_lengt
=
len_arg
/
cs
->
mbmaxlen
;
packlength
=
char_length
<=
255
?
1
:
char_length
<=
65535
?
2
:
char_length
<=
16777215
?
3
:
4
;
}
}
enum_field_types
type
()
const
{
return
FIELD_TYPE_BLOB
;}
enum_field_types
type
()
const
{
return
FIELD_TYPE_BLOB
;}
enum
ha_base_keytype
key_type
()
const
enum
ha_base_keytype
key_type
()
const
{
return
binary
()
?
HA_KEYTYPE_VARBINARY2
:
HA_KEYTYPE_VARTEXT2
;
}
{
return
binary
()
?
HA_KEYTYPE_VARBINARY2
:
HA_KEYTYPE_VARTEXT2
;
}
...
...
sql/item.cc
View file @
85405574
...
@@ -3903,7 +3903,9 @@ Field *Item::make_string_field(TABLE *table)
...
@@ -3903,7 +3903,9 @@ Field *Item::make_string_field(TABLE *table)
if
(
max_length
/
collation
.
collation
->
mbmaxlen
>
CONVERT_IF_BIGGER_TO_BLOB
)
if
(
max_length
/
collation
.
collation
->
mbmaxlen
>
CONVERT_IF_BIGGER_TO_BLOB
)
return
new
Field_blob
(
max_length
,
maybe_null
,
name
,
table
,
return
new
Field_blob
(
max_length
,
maybe_null
,
name
,
table
,
collation
.
collation
);
collation
.
collation
);
if
(
max_length
>
0
)
/* Item_type_holder holds the exact type, do not change it */
if
(
max_length
>
0
&&
(
type
()
!=
Item
::
TYPE_HOLDER
||
field_type
()
!=
MYSQL_TYPE_STRING
))
return
new
Field_varstring
(
max_length
,
maybe_null
,
name
,
table
,
return
new
Field_varstring
(
max_length
,
maybe_null
,
name
,
table
,
collation
.
collation
);
collation
.
collation
);
return
new
Field_string
(
max_length
,
maybe_null
,
name
,
table
,
return
new
Field_string
(
max_length
,
maybe_null
,
name
,
table
,
...
@@ -3967,6 +3969,7 @@ Field *Item::tmp_table_field_from_field_type(TABLE *table)
...
@@ -3967,6 +3969,7 @@ Field *Item::tmp_table_field_from_field_type(TABLE *table)
case
MYSQL_TYPE_TIME
:
case
MYSQL_TYPE_TIME
:
return
new
Field_time
(
maybe_null
,
name
,
table
,
&
my_charset_bin
);
return
new
Field_time
(
maybe_null
,
name
,
table
,
&
my_charset_bin
);
case
MYSQL_TYPE_TIMESTAMP
:
case
MYSQL_TYPE_TIMESTAMP
:
return
new
Field_timestamp
(
maybe_null
,
name
,
table
,
&
my_charset_bin
);
case
MYSQL_TYPE_DATETIME
:
case
MYSQL_TYPE_DATETIME
:
return
new
Field_datetime
(
maybe_null
,
name
,
table
,
&
my_charset_bin
);
return
new
Field_datetime
(
maybe_null
,
name
,
table
,
&
my_charset_bin
);
case
MYSQL_TYPE_YEAR
:
case
MYSQL_TYPE_YEAR
:
...
@@ -3990,7 +3993,11 @@ Field *Item::tmp_table_field_from_field_type(TABLE *table)
...
@@ -3990,7 +3993,11 @@ Field *Item::tmp_table_field_from_field_type(TABLE *table)
case
MYSQL_TYPE_LONG_BLOB
:
case
MYSQL_TYPE_LONG_BLOB
:
case
MYSQL_TYPE_BLOB
:
case
MYSQL_TYPE_BLOB
:
case
MYSQL_TYPE_GEOMETRY
:
case
MYSQL_TYPE_GEOMETRY
:
return
new
Field_blob
(
max_length
,
maybe_null
,
name
,
table
,
if
(
this
->
type
()
==
Item
::
TYPE_HOLDER
)
return
new
Field_blob
(
max_length
,
maybe_null
,
name
,
table
,
collation
.
collation
,
1
);
else
return
new
Field_blob
(
max_length
,
maybe_null
,
name
,
table
,
collation
.
collation
);
collation
.
collation
);
break
;
// Blob handled outside of case
break
;
// Blob handled outside of case
}
}
...
@@ -6151,7 +6158,7 @@ uint32 Item_type_holder::display_length(Item *item)
...
@@ -6151,7 +6158,7 @@ uint32 Item_type_holder::display_length(Item *item)
case
MYSQL_TYPE_DOUBLE
:
case
MYSQL_TYPE_DOUBLE
:
return
53
;
return
53
;
case
MYSQL_TYPE_NULL
:
case
MYSQL_TYPE_NULL
:
return
4
;
return
0
;
case
MYSQL_TYPE_LONGLONG
:
case
MYSQL_TYPE_LONGLONG
:
return
20
;
return
20
;
case
MYSQL_TYPE_INT24
:
case
MYSQL_TYPE_INT24
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment