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
65b37a04
Commit
65b37a04
authored
Feb 22, 2005
by
monty@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/my/mysql-5.0
parents
886b406e
e2ea35ec
Changes
27
Show whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
190 additions
and
42 deletions
+190
-42
BitKeeper/etc/logging_ok
BitKeeper/etc/logging_ok
+1
-0
client/mysql.cc
client/mysql.cc
+2
-2
extra/my_print_defaults.c
extra/my_print_defaults.c
+13
-5
mysql-test/mysql-test-run.sh
mysql-test/mysql-test-run.sh
+2
-1
mysql-test/r/ctype_latin1.result
mysql-test/r/ctype_latin1.result
+5
-0
mysql-test/r/ctype_utf8.result
mysql-test/r/ctype_utf8.result
+3
-0
mysql-test/r/derived.result
mysql-test/r/derived.result
+19
-0
mysql-test/r/ps_1general.result
mysql-test/r/ps_1general.result
+1
-0
mysql-test/r/type_float.result
mysql-test/r/type_float.result
+26
-0
mysql-test/r/user_var.result
mysql-test/r/user_var.result
+9
-7
mysql-test/t/ctype_latin1.test
mysql-test/t/ctype_latin1.test
+9
-0
mysql-test/t/ctype_utf8.test
mysql-test/t/ctype_utf8.test
+5
-0
mysql-test/t/derived.test
mysql-test/t/derived.test
+12
-0
mysql-test/t/mysql_client_test.test
mysql-test/t/mysql_client_test.test
+7
-0
mysql-test/t/ps_1general.test
mysql-test/t/ps_1general.test
+2
-0
mysql-test/t/type_float.test
mysql-test/t/type_float.test
+22
-0
mysql-test/t/user_var.test
mysql-test/t/user_var.test
+0
-2
mysys/charset.c
mysys/charset.c
+1
-1
sql/field.cc
sql/field.cc
+11
-0
sql/item_func.cc
sql/item_func.cc
+5
-5
sql/item_sum.h
sql/item_sum.h
+3
-1
sql/procedure.h
sql/procedure.h
+1
-1
sql/sql_derived.cc
sql/sql_derived.cc
+7
-1
sql/sql_update.cc
sql/sql_update.cc
+6
-1
sql/sql_yacc.yy
sql/sql_yacc.yy
+1
-1
strings/ctype-utf8.c
strings/ctype-utf8.c
+2
-2
strings/strtod.c
strings/strtod.c
+15
-12
No files found.
BitKeeper/etc/logging_ok
View file @
65b37a04
...
...
@@ -27,6 +27,7 @@ bar@deer.(none)
bar@gw.udmsearch.izhnet.ru
bar@mysql.com
bar@noter.intranet.mysql.r18.ru
bell@51.0.168.192.in-addr.arpa
bell@laptop.sanja.is.com.ua
bell@sanja.is.com.ua
bk@admin.bk
...
...
client/mysql.cc
View file @
65b37a04
...
...
@@ -2926,9 +2926,9 @@ com_status(String *buffer __attribute__((unused)),
MYSQL_ROW
cur
=
mysql_fetch_row
(
result
);
if
(
cur
)
{
tee_fprintf
(
stdout
,
"Server characterset:
\t
%s
\n
"
,
cur
[
0
]
?
cur
[
0
]
:
""
);
tee_fprintf
(
stdout
,
"Server characterset:
\t
%s
\n
"
,
cur
[
2
]
?
cur
[
2
]
:
""
);
tee_fprintf
(
stdout
,
"Db characterset:
\t
%s
\n
"
,
cur
[
3
]
?
cur
[
3
]
:
""
);
tee_fprintf
(
stdout
,
"Client characterset:
\t
%s
\n
"
,
cur
[
2
]
?
cur
[
2
]
:
""
);
tee_fprintf
(
stdout
,
"Client characterset:
\t
%s
\n
"
,
cur
[
0
]
?
cur
[
0
]
:
""
);
tee_fprintf
(
stdout
,
"Conn. characterset:
\t
%s
\n
"
,
cur
[
1
]
?
cur
[
1
]
:
""
);
}
mysql_free_result
(
result
);
...
...
extra/my_print_defaults.c
View file @
65b37a04
...
...
@@ -120,25 +120,33 @@ int main(int argc, char **argv)
int
count
,
error
;
char
**
load_default_groups
,
*
tmp_arguments
[
2
],
**
argument
,
**
arguments
;
char
*
defaults
,
*
extra_defaults
;
MY_INIT
(
argv
[
0
]);
get_defaults_files
(
argc
,
argv
,
&
defaults
,
&
extra_defaults
);
/*
** Check out the args
*/
if
(
get_options
(
&
argc
,
&
argv
))
exit
(
1
);
if
(
!
(
load_default_groups
=
(
char
**
)
my_malloc
((
argc
+
2
)
*
sizeof
(
char
*
),
MYF
(
MY_WME
))))
exit
(
1
);
if
(
get_options
(
&
argc
,
&
argv
))
exit
(
1
);
for
(
count
=
0
;
*
argv
;
argv
++
,
count
++
)
load_default_groups
[
count
]
=
*
argv
;
load_default_groups
[
count
]
=
0
;
count
=
1
;
count
=
0
;
arguments
=
tmp_arguments
;
arguments
[
0
]
=
my_progname
;
arguments
[
1
]
=
0
;
arguments
[
count
++
]
=
my_progname
;
if
(
extra_defaults
)
arguments
[
count
++
]
=
extra_defaults
;
if
(
defaults
)
arguments
[
count
++
]
=
defaults
;
arguments
[
count
]
=
0
;
if
((
error
=
load_defaults
(
config_file
,
(
const
char
**
)
load_default_groups
,
&
count
,
&
arguments
)))
{
...
...
mysql-test/mysql-test-run.sh
View file @
65b37a04
...
...
@@ -450,6 +450,7 @@ while test $# -gt 0; do
--debug=d:t:A,
$MYSQL_TEST_DIR
/var/log/mysqldump.trace"
EXTRA_MYSQLBINLOG_OPT
=
"
$EXTRA_MYSQLBINLOG_OPT
\
--debug=d:t:A,
$MYSQL_TEST_DIR
/var/log/mysqlbinlog.trace"
EXTRA_MYSQL_CLIENT_TEST_OPT
=
"--debug=d:t:A,
$MYSQL_TEST_DIR
/var/log/mysql_client_test.trace"
;;
--fast
)
FAST_START
=
1
...
...
@@ -690,7 +691,7 @@ then
EXTRA_SLAVE_MYSQLD_OPT
=
"
$EXTRA_SLAVE_MYSQLD_OPT
--user=root"
fi
MYSQL_CLIENT_TEST
=
"
$MYSQL_CLIENT_TEST
--no-defaults --testcase --user=root --socket=
$MASTER_MYSOCK
--port=
$MYSQL_TCP_PORT
--silent"
MYSQL_CLIENT_TEST
=
"
$MYSQL_CLIENT_TEST
--no-defaults --testcase --user=root --socket=
$MASTER_MYSOCK
--port=
$MYSQL_TCP_PORT
--silent
$EXTRA_MYSQL_CLIENT_TEST_OPT
"
MYSQL_DUMP
=
"
$MYSQL_DUMP
--no-defaults -uroot --socket=
$MASTER_MYSOCK
--password=
$DBPASSWD
$EXTRA_MYSQLDUMP_OPT
"
MYSQL_BINLOG
=
"
$MYSQL_BINLOG
--no-defaults --local-load=
$MYSQL_TMP_DIR
--character-sets-dir=
$CHARSETSDIR
$EXTRA_MYSQLBINLOG_OPT
"
MYSQL_FIX_SYSTEM_TABLES
=
"
$MYSQL_FIX_SYSTEM_TABLES
--no-defaults --host=localhost --port=
$MASTER_MYPORT
--socket=
$MASTER_MYSOCK
--user=root --password=
$DBPASSWD
--basedir=
$BASEDIR
--bindir=
$CLIENT_BINDIR
--verbose"
...
...
mysql-test/r/ctype_latin1.result
View file @
65b37a04
...
...
@@ -325,3 +325,8 @@ latin1_bin 6109
latin1_bin 61
latin1_bin 6120
drop table t1;
CREATE TABLE a (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a (a int)' at line 1
SELECT 'a' as str;
str
a
mysql-test/r/ctype_utf8.result
View file @
65b37a04
...
...
@@ -861,3 +861,6 @@ user c
one <one>
two <two>
DROP TABLE t1;
select convert(_koi8r'' using utf8) < convert(_koi8r'' using utf8);
convert(_koi8r'' using utf8) < convert(_koi8r'' using utf8)
1
mysql-test/r/derived.result
View file @
65b37a04
...
...
@@ -344,3 +344,22 @@ INSERT INTO t1 VALUES ('root','localhost'), ('root','%');
SELECT * FROM (SELECT (SELECT a.a FROM t1 AS a WHERE a.a = b.a) FROM t1 AS b) AS c;
ERROR 21000: Subquery returns more than 1 row
DROP TABLE t1;
create table t1(a int);
create table t2(a int);
create table t3(a int);
insert into t1 values(1),(1);
insert into t2 values(2),(2);
insert into t3 values(3),(3);
select * from t1 union distinct select * from t2 union all select * from t3;
a
1
2
3
3
select * from (select * from t1 union distinct select * from t2 union all select * from t3) X;
a
1
2
3
3
drop table t1, t2, t3;
mysql-test/r/ps_1general.result
View file @
65b37a04
drop table if exists t5, t6, t7, t8;
drop database if exists mysqltest ;
drop database if exists client_test_db;
drop database if exists testtets;
drop table if exists t1Aa,t2Aa,v1Aa,v2Aa;
drop view if exists t1Aa,t2Aa,v1Aa,v2Aa;
...
...
mysql-test/r/type_float.result
View file @
65b37a04
...
...
@@ -11,6 +11,12 @@ SELECT 1e1,1.e1,1.0e1,1e+1,1.e+1,1.0e+1,1e-1,1.e-1,1.0e-1;
SELECT 0.001e+1,0.001e-1, -0.001e+01,-0.001e-01;
0.001e+1 0.001e-1 -0.001e+01 -0.001e-01
0.01 0.0001 -0.01 -0.0001
SELECT 123.23E+02,-123.23E-02,"123.23E+02"+0.0,"-123.23E-02"+0.0;
123.23E+02 -123.23E-02 "123.23E+02"+0.0 "-123.23E-02"+0.0
12323 -1.2323 12323 -1.2323
SELECT 2147483647E+02,21474836.47E+06;
2147483647E+02 21474836.47E+06
214748364700 21474836470000
create table t1 (f1 float(24),f2 float(52));
show full columns from t1;
Field Type Collation Null Key Default Extra Privileges Comment
...
...
@@ -209,3 +215,23 @@ c
0.0002
2e-05
drop table t1;
CREATE TABLE t1 (
reckey int unsigned NOT NULL,
recdesc varchar(50) NOT NULL,
PRIMARY KEY (reckey)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO t1 VALUES (108, 'Has 108 as key');
INSERT INTO t1 VALUES (109, 'Has 109 as key');
select * from t1 where reckey=108;
reckey recdesc
108 Has 108 as key
select * from t1 where reckey=1.08E2;
reckey recdesc
108 Has 108 as key
select * from t1 where reckey=109;
reckey recdesc
109 Has 109 as key
select * from t1 where reckey=1.09E2;
reckey recdesc
109 Has 109 as key
drop table t1;
mysql-test/r/user_var.result
View file @
65b37a04
...
...
@@ -127,7 +127,7 @@ drop table t1;
set @a=_latin2'test';
select charset(@a),collation(@a),coercibility(@a);
charset(@a) collation(@a) coercibility(@a)
latin2 latin2_general_ci
3
latin2 latin2_general_ci
2
select @a=_latin2'TEST';
@a=_latin2'TEST'
1
...
...
@@ -137,12 +137,13 @@ select @a=_latin2'TEST' collate latin2_bin;
set @a=_latin2'test' collate latin2_general_ci;
select charset(@a),collation(@a),coercibility(@a);
charset(@a) collation(@a) coercibility(@a)
latin2 latin2_general_ci
0
latin2 latin2_general_ci
2
select @a=_latin2'TEST';
@a=_latin2'TEST'
1
select @a=_latin2'TEST' collate latin2_bin;
ERROR HY000: Illegal mix of collations (latin2_general_ci,EXPLICIT) and (latin2_bin,EXPLICIT) for operation '='
@a=_latin2'TEST' collate latin2_bin
0
select charset(@a:=_latin2'test');
charset(@a:=_latin2'test')
latin2
...
...
@@ -151,21 +152,22 @@ collation(@a:=_latin2'test')
latin2_general_ci
select coercibility(@a:=_latin2'test');
coercibility(@a:=_latin2'test')
3
2
select collation(@a:=_latin2'test' collate latin2_bin);
collation(@a:=_latin2'test' collate latin2_bin)
latin2_bin
select coercibility(@a:=_latin2'test' collate latin2_bin);
coercibility(@a:=_latin2'test' collate latin2_bin)
0
2
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST';
(@a:=_latin2'test' collate latin2_bin) = _latin2'TEST'
0
select charset(@a),collation(@a),coercibility(@a);
charset(@a) collation(@a) coercibility(@a)
latin2 latin2_bin
0
latin2 latin2_bin
2
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST' collate latin2_general_ci;
ERROR HY000: Illegal mix of collations (latin2_bin,EXPLICIT) and (latin2_general_ci,EXPLICIT) for operation '='
(@a:=_latin2'test' collate latin2_bin) = _latin2'TEST' collate latin2_general_ci
1
create table t1 (a varchar(50));
reset master;
SET TIMESTAMP=10000;
...
...
mysql-test/t/ctype_latin1.test
View file @
65b37a04
...
...
@@ -66,3 +66,12 @@ SET collation_connection='latin1_swedish_ci';
--
source
include
/
ctype_filesort
.
inc
SET
collation_connection
=
'latin1_bin'
;
--
source
include
/
ctype_filesort
.
inc
#
# Bug#8041
# An unknown character (e.g. 0x84) should result in ERROR,
# It was treated like a space character earlier.
# Howerver, it should still work fine as a string part.
--
error
1064
CREATE
TABLE
a
(
a
int
);
SELECT
'a'
as
str
;
mysql-test/t/ctype_utf8.test
View file @
65b37a04
...
...
@@ -693,3 +693,8 @@ INSERT INTO t1 VALUES ('one'),('two');
SELECT
CHARSET
(
'a'
);
SELECT
user
,
CONCAT
(
'<'
,
user
,
'>'
)
AS
c
FROM
t1
;
DROP
TABLE
t1
;
#
# Bug#8385: utf8_general_ci treats Cyrillic letters I and SHORT I as the same
#
select
convert
(
_koi8r
''
using
utf8
)
<
convert
(
_koi8r
''
using
utf8
);
mysql-test/t/derived.test
View file @
65b37a04
...
...
@@ -236,3 +236,15 @@ INSERT INTO t1 VALUES ('root','localhost'), ('root','%');
--
error
1242
SELECT
*
FROM
(
SELECT
(
SELECT
a
.
a
FROM
t1
AS
a
WHERE
a
.
a
=
b
.
a
)
FROM
t1
AS
b
)
AS
c
;
DROP
TABLE
t1
;
#
# test of union subquery in the FROM clause with complex distinct/all (BUG#6565)
#
create
table
t1
(
a
int
);
create
table
t2
(
a
int
);
create
table
t3
(
a
int
);
insert
into
t1
values
(
1
),(
1
);
insert
into
t2
values
(
2
),(
2
);
insert
into
t3
values
(
3
),(
3
);
select
*
from
t1
union
distinct
select
*
from
t2
union
all
select
*
from
t3
;
select
*
from
(
select
*
from
t1
union
distinct
select
*
from
t2
union
all
select
*
from
t3
)
X
;
drop
table
t1
,
t2
,
t3
;
mysql-test/t/mysql_client_test.test
View file @
65b37a04
# We run with different binaries for normal and --embedded-server
#
# If this test fails with "command "$MYSQL_CLIENT_TEST" failed",
# you should either run mysql_client_test separartely against a running
# server or run mysql-test-run --debug mysql_client_test and check
# var/log/mysql_client_test.trace
--
disable_result_log
--
exec
echo
$MYSQL_CLIENT_TEST
--
exec
$MYSQL_CLIENT_TEST
mysql-test/t/ps_1general.test
View file @
65b37a04
...
...
@@ -11,7 +11,9 @@
--
disable_warnings
drop
table
if
exists
t5
,
t6
,
t7
,
t8
;
drop
database
if
exists
mysqltest
;
# Cleanup from other tests
drop
database
if
exists
client_test_db
;
drop
database
if
exists
testtets
;
drop
table
if
exists
t1Aa
,
t2Aa
,
v1Aa
,
v2Aa
;
drop
view
if
exists
t1Aa
,
t2Aa
,
v1Aa
,
v2Aa
;
...
...
mysql-test/t/type_float.test
View file @
65b37a04
...
...
@@ -12,6 +12,8 @@ SELECT 10,10.0,10.,.1e+2,100.0e-1;
SELECT
6
e
-
05
,
-
6
e
-
05
,
--
6
e
-
05
,
-
6
e
-
05
+
1.000000
;
SELECT
1
e1
,
1.e1
,
1.0e1
,
1
e
+
1
,
1.e+1
,
1.0e+1
,
1
e
-
1
,
1.e-1
,
1.0e-1
;
SELECT
0.001e+1
,
0.001e-1
,
-
0.001e+01
,
-
0.001e-01
;
SELECT
123.23E+02
,
-
123.23E-02
,
"123.23E+02"
+
0.0
,
"-123.23E-02"
+
0.0
;
SELECT
2147483647
E
+
02
,
21474836.47E+06
;
create
table
t1
(
f1
float
(
24
),
f2
float
(
52
));
show
full
columns
from
t1
;
...
...
@@ -122,3 +124,23 @@ create table t1 (c char(6));
insert
into
t1
values
(
2
e5
),(
2
e6
),(
2
e
-
4
),(
2
e
-
5
);
select
*
from
t1
;
drop
table
t1
;
#
# Test of comparison of integer with float-in-range (Bug #7840)
# This is needed because some ODBC applications (like Foxpro) uses
# floats for everything.
#
CREATE
TABLE
t1
(
reckey
int
unsigned
NOT
NULL
,
recdesc
varchar
(
50
)
NOT
NULL
,
PRIMARY
KEY
(
reckey
)
)
ENGINE
=
MyISAM
DEFAULT
CHARSET
=
latin1
;
INSERT
INTO
t1
VALUES
(
108
,
'Has 108 as key'
);
INSERT
INTO
t1
VALUES
(
109
,
'Has 109 as key'
);
select
*
from
t1
where
reckey
=
108
;
select
*
from
t1
where
reckey
=
1.08E2
;
select
*
from
t1
where
reckey
=
109
;
select
*
from
t1
where
reckey
=
1.09E2
;
drop
table
t1
;
mysql-test/t/user_var.test
View file @
65b37a04
...
...
@@ -85,7 +85,6 @@ select @a=_latin2'TEST' collate latin2_bin;
set
@
a
=
_latin2
'test'
collate
latin2_general_ci
;
select
charset
(
@
a
),
collation
(
@
a
),
coercibility
(
@
a
);
select
@
a
=
_latin2
'TEST'
;
--
error
1267
select
@
a
=
_latin2
'TEST'
collate
latin2_bin
;
#
...
...
@@ -98,7 +97,6 @@ select collation(@a:=_latin2'test' collate latin2_bin);
select
coercibility
(
@
a
:=
_latin2
'test'
collate
latin2_bin
);
select
(
@
a
:=
_latin2
'test'
collate
latin2_bin
)
=
_latin2
'TEST'
;
select
charset
(
@
a
),
collation
(
@
a
),
coercibility
(
@
a
);
--
error
1267
select
(
@
a
:=
_latin2
'test'
collate
latin2_bin
)
=
_latin2
'TEST'
collate
latin2_general_ci
;
# Check that user variables are binlogged correctly (BUG#3875)
...
...
mysys/charset.c
View file @
65b37a04
...
...
@@ -64,7 +64,7 @@ static my_bool init_state_maps(CHARSET_INFO *cs)
else
if
(
my_mbcharlen
(
cs
,
i
)
>
1
)
state_map
[
i
]
=
(
uchar
)
MY_LEX_IDENT
;
#endif
else
if
(
!
my_isgraph
(
cs
,
i
))
else
if
(
my_isspace
(
cs
,
i
))
state_map
[
i
]
=
(
uchar
)
MY_LEX_SKIP
;
else
state_map
[
i
]
=
(
uchar
)
MY_LEX_CHAR
;
...
...
sql/field.cc
View file @
65b37a04
...
...
@@ -2432,12 +2432,23 @@ void Field_medium::sql_type(String &res) const
** long int
****************************************************************************/
/*
A helper function to check whether the next character
in the string "s" is MINUS SIGN.
*/
#ifdef HAVE_CHARSET_ucs2
static
bool
test_if_minus
(
CHARSET_INFO
*
cs
,
const
char
*
s
,
const
char
*
e
)
{
my_wc_t
wc
;
return
cs
->
cset
->
mb_wc
(
cs
,
&
wc
,
(
uchar
*
)
s
,
(
uchar
*
)
e
)
>
0
&&
wc
==
'-'
;
}
#else
/*
If not UCS2 support is compiled then it is easier
*/
#define test_if_minus(cs, s, e) (*s == '-')
#endif
int
Field_long
::
store
(
const
char
*
from
,
uint
len
,
CHARSET_INFO
*
cs
)
...
...
sql/item_func.cc
View file @
65b37a04
...
...
@@ -3169,7 +3169,7 @@ static user_var_entry *get_variable(HASH *hash, LEX_STRING &name,
entry
->
value
=
0
;
entry
->
length
=
0
;
entry
->
update_query_id
=
0
;
entry
->
collation
.
set
(
NULL
,
DERIVATION_
NONE
);
entry
->
collation
.
set
(
NULL
,
DERIVATION_
IMPLICIT
);
/*
If we are here, we were called from a SET or a query which sets a
variable. Imagine it is this:
...
...
@@ -3227,8 +3227,8 @@ bool Item_func_set_user_var::fix_fields(THD *thd, TABLE_LIST *tables,
and the variable has previously been initialized.
*/
if
(
!
entry
->
collation
.
collation
||
!
args
[
0
]
->
null_value
)
entry
->
collation
.
set
(
args
[
0
]
->
collation
);
collation
.
set
(
entry
->
collation
);
entry
->
collation
.
set
(
args
[
0
]
->
collation
.
collation
,
DERIVATION_IMPLICIT
);
collation
.
set
(
entry
->
collation
.
collation
,
DERIVATION_IMPLICIT
);
cached_result_type
=
args
[
0
]
->
result_type
();
return
FALSE
;
}
...
...
@@ -3240,7 +3240,7 @@ Item_func_set_user_var::fix_length_and_dec()
maybe_null
=
args
[
0
]
->
maybe_null
;
max_length
=
args
[
0
]
->
max_length
;
decimals
=
args
[
0
]
->
decimals
;
collation
.
set
(
args
[
0
]
->
collation
);
collation
.
set
(
args
[
0
]
->
collation
.
collation
,
DERIVATION_IMPLICIT
);
}
...
...
@@ -3516,7 +3516,7 @@ Item_func_set_user_var::update()
res
=
update_hash
((
void
*
)
save_result
.
vstr
->
ptr
(),
save_result
.
vstr
->
length
(),
STRING_RESULT
,
save_result
.
vstr
->
charset
(),
args
[
0
]
->
collation
.
derivation
);
DERIVATION_IMPLICIT
);
break
;
}
case
DECIMAL_RESULT
:
...
...
sql/item_sum.h
View file @
65b37a04
...
...
@@ -691,7 +691,9 @@ public:
{
int
err_not_used
;
char
*
end_not_used
;
String
*
res
;
res
=
val_str
(
&
str_value
);
char
*
end_not_used
;
String
*
res
;
res
=
val_str
(
&
str_value
);
return
res
?
my_strntod
(
res
->
charset
(),(
char
*
)
res
->
ptr
(),
res
->
length
(),
&
end_not_used
,
&
err_not_used
)
:
0.0
;
}
...
...
sql/procedure.h
View file @
65b37a04
...
...
@@ -110,7 +110,7 @@ public:
{
int
err_not_used
;
char
*
end_not_used
;
CHARSET_INFO
*
cs
=
str_value
.
charset
();
CHARSET_INFO
*
cs
=
str_value
.
charset
();
return
my_strntod
(
cs
,
(
char
*
)
str_value
.
ptr
(),
str_value
.
length
(),
&
end_not_used
,
&
err_not_used
);
}
...
...
sql/sql_derived.cc
View file @
65b37a04
...
...
@@ -124,10 +124,16 @@ int mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *orig_table_list)
/*
Temp table is created so that it hounours if UNION without ALL is to be
processed
As 'distinct' parameter we always pass FALSE (0), because underlying
query will control distinct condition by itself. Correct test of
distinct underlying query will be is_union &&
!unit->union_distinct->next_select() (i.e. it is union and last distinct
SELECT is last SELECT of UNION).
*/
if
(
!
(
table
=
create_tmp_table
(
thd
,
&
derived_result
->
tmp_table_param
,
unit
->
types
,
(
ORDER
*
)
0
,
is_union
&&
unit
->
union_distinct
,
1
,
FALSE
,
1
,
(
first_select
->
options
|
thd
->
options
|
TMP_TABLE_ALL_COLUMNS
),
HA_POS_ERROR
,
...
...
sql/sql_update.cc
View file @
65b37a04
...
...
@@ -707,7 +707,12 @@ bool mysql_multi_update_prepare(THD *thd)
else
{
DBUG_PRINT
(
"info"
,(
"setting table `%s` for read-only"
,
tl
->
alias
));
tl
->
lock_type
=
TL_READ
;
/*
If we are using the binary log, we need TL_READ_NO_INSERT to get
correct order of statements. Otherwise, we use a TL_READ lock to
improve performance.
*/
tl
->
lock_type
=
using_update_log
?
TL_READ_NO_INSERT
:
TL_READ
;
tl
->
updating
=
0
;
}
...
...
sql/sql_yacc.yy
View file @
65b37a04
...
...
@@ -2451,7 +2451,7 @@ create_select:
SELECT_SYM
{
LEX *lex=Lex;
lex->lock_option=
(using_update_log)
? TL_READ_NO_INSERT : TL_READ;
lex->lock_option=
using_update_log
? TL_READ_NO_INSERT : TL_READ;
if (lex->sql_command == SQLCOM_INSERT)
lex->sql_command= SQLCOM_INSERT_SELECT;
else if (lex->sql_command == SQLCOM_REPLACE)
...
...
strings/ctype-utf8.c
View file @
65b37a04
...
...
@@ -578,7 +578,7 @@ static MY_UNICASE_INFO plane04[]={
{
0x0412
,
0x0432
,
0x0412
},
{
0x0413
,
0x0433
,
0x0413
},
{
0x0414
,
0x0434
,
0x0414
},
{
0x0415
,
0x0435
,
0x0415
},
{
0x0416
,
0x0436
,
0x0416
},
{
0x0417
,
0x0437
,
0x0417
},
{
0x0418
,
0x0438
,
0x0418
},
{
0x0419
,
0x0439
,
0x041
8
},
{
0x0418
,
0x0438
,
0x0418
},
{
0x0419
,
0x0439
,
0x041
9
},
{
0x041A
,
0x043A
,
0x041A
},
{
0x041B
,
0x043B
,
0x041B
},
{
0x041C
,
0x043C
,
0x041C
},
{
0x041D
,
0x043D
,
0x041D
},
{
0x041E
,
0x043E
,
0x041E
},
{
0x041F
,
0x043F
,
0x041F
},
...
...
@@ -594,7 +594,7 @@ static MY_UNICASE_INFO plane04[]={
{
0x0412
,
0x0432
,
0x0412
},
{
0x0413
,
0x0433
,
0x0413
},
{
0x0414
,
0x0434
,
0x0414
},
{
0x0415
,
0x0435
,
0x0415
},
{
0x0416
,
0x0436
,
0x0416
},
{
0x0417
,
0x0437
,
0x0417
},
{
0x0418
,
0x0438
,
0x0418
},
{
0x0419
,
0x0439
,
0x041
8
},
{
0x0418
,
0x0438
,
0x0418
},
{
0x0419
,
0x0439
,
0x041
9
},
{
0x041A
,
0x043A
,
0x041A
},
{
0x041B
,
0x043B
,
0x041B
},
{
0x041C
,
0x043C
,
0x041C
},
{
0x041D
,
0x043D
,
0x041D
},
{
0x041E
,
0x043E
,
0x041E
},
{
0x041F
,
0x043F
,
0x041F
},
...
...
strings/strtod.c
View file @
65b37a04
...
...
@@ -56,8 +56,8 @@ static double scaler1[] = {
double
my_strtod
(
const
char
*
str
,
char
**
end_ptr
,
int
*
error
)
{
double
result
=
0
.
0
;
uint
negative
=
0
,
ndigits
,
dec_digits
=
0
,
pre_zero
,
neg_exp
=
0
;
int
exp
=
0
;
uint
negative
=
0
,
ndigits
,
dec_digits
=
0
,
neg_exp
=
0
;
int
exp
=
0
,
digits_after_dec_point
=
0
;
const
char
*
old_str
,
*
end
=
*
end_ptr
,
*
start_of_number
;
char
next_char
;
my_bool
overflow
=
0
;
...
...
@@ -100,18 +100,20 @@ double my_strtod(const char *str, char **end_ptr, int *error)
}
ndigits
=
(
uint
)
(
str
-
old_str
);
pre_zero
=
0
;
if
(
next_char
==
'.'
&&
str
<
end
-
1
)
{
double
p10
=
10
;
/*
Continue to add numbers after decimal point to the result, as if there
was no decimal point. We will later (in the exponent handling) shift
the number down with the required number of fractions. We do it this
way to be able to get maximum precision for numbers like 123.45E+02,
which are normal for some ODBC applications.
*/
old_str
=
++
str
;
while
(
my_isdigit
(
&
my_charset_latin1
,
(
next_char
=
*
str
)))
{
result
+=
(
next_char
-
'0'
)
/
p10
;
if
(
!
result
)
pre_zero
++
;
else
p10
*=
10
;
result
=
result
*
10
.
0
+
(
next_char
-
'0'
);
digits_after_dec_point
++
;
if
(
++
str
==
end
)
{
next_char
=
0
;
...
...
@@ -136,13 +138,14 @@ double my_strtod(const char *str, char **end_ptr, int *error)
{
do
{
if
(
exp
<
9999
)
/* prot
ec
against exp overfl. */
exp
=
exp
*
10
+
*
str
-
'0'
;
if
(
exp
<
9999
)
/* prot
.
against exp overfl. */
exp
=
exp
*
10
+
(
*
str
-
'0'
)
;
str
++
;
}
while
(
str
<
end
&&
my_isdigit
(
&
my_charset_latin1
,
*
str
));
}
}
if
((
exp
=
neg_exp
?
exp
+
pre_zero
:
exp
-
pre_zero
))
if
((
exp
=
(
neg_exp
?
exp
+
digits_after_dec_point
:
exp
-
digits_after_dec_point
)))
{
double
scaler
;
if
(
exp
<
0
)
...
...
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