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
c2f4e569
Commit
c2f4e569
authored
Aug 14, 2006
by
tsmith/tim@siva.hindu.god
Browse files
Options
Browse Files
Download
Plain Diff
Merge siva.hindu.god:/usr/home/tim/m/bk/b20536-50
into siva.hindu.god:/usr/home/tim/m/bk/b20536-51
parents
545029df
9228972c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
118 additions
and
9 deletions
+118
-9
mysql-test/r/ctype_ucs.result
mysql-test/r/ctype_ucs.result
+44
-0
mysql-test/t/ctype_ucs.test
mysql-test/t/ctype_ucs.test
+42
-1
sql/item_strfunc.cc
sql/item_strfunc.cc
+10
-4
sql/item_strfunc.h
sql/item_strfunc.h
+22
-4
No files found.
mysql-test/r/ctype_ucs.result
View file @
c2f4e569
...
@@ -730,6 +730,49 @@ id MIN(s)
...
@@ -730,6 +730,49 @@ id MIN(s)
1 ZZZ
1 ZZZ
2 ZZZ
2 ZZZ
DROP TABLE t1;
DROP TABLE t1;
drop table if exists bug20536;
set names latin1;
create table bug20536 (id bigint not null auto_increment primary key, name
varchar(255) character set ucs2 not null);
insert into `bug20536` (`id`,`name`) values (1, _latin1 x'74657374311a'), (2, "'test\\_2'");
select md5(name) from bug20536;
md5(name)
3417d830fe24ffb2f81a28e54df2d1b3
48d95db0d8305c2fe11548a3635c9385
select sha1(name) from bug20536;
sha1(name)
72228a6d56efb7a89a09543068d5d8fa4c330881
677d4d505355eb5b0549b865fcae4b7f0c28aef5
select make_set(3, name, upper(name)) from bug20536;
make_set(3, name, upper(name))
test1,TEST1
'test\_2','TEST\_2'
select export_set(5, name, upper(name)) from bug20536;
export_set(5, name, upper(name))
test1,TEST1,test1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1,TEST1
'test\_2','TEST\_2','test\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2','TEST\_2'
select export_set(5, name, upper(name), ",", 5) from bug20536;
export_set(5, name, upper(name), ",", 5)
test1,TEST1,test1,TEST1,TEST1
'test\_2','TEST\_2','test\_2','TEST\_2','TEST\_2'
select password(name) from bug20536;
password(name)
????????????????????
????????????????????
select old_password(name) from bug20536;
old_password(name)
????????
????????
select encrypt(name, 'SALT') from bug20536;
encrypt(name, 'SALT')
SA5pDi1UPZdys
SA5pDi1UPZdys
select quote(name) from bug20536;
quote(name)
??????????
????????????????
drop table bug20536;
End of 4.1 tests
CREATE TABLE t1 (a varchar(64) character set ucs2, b decimal(10,3));
CREATE TABLE t1 (a varchar(64) character set ucs2, b decimal(10,3));
INSERT INTO t1 VALUES ("1.1", 0), ("2.1", 0);
INSERT INTO t1 VALUES ("1.1", 0), ("2.1", 0);
update t1 set b=a;
update t1 set b=a;
...
@@ -765,3 +808,4 @@ blob 65535 65535
...
@@ -765,3 +808,4 @@ blob 65535 65535
text 65535 65535
text 65535 65535
text 65535 32767
text 65535 32767
drop table t1;
drop table t1;
End of 5.0 tests
mysql-test/t/ctype_ucs.test
View file @
c2f4e569
...
@@ -465,7 +465,46 @@ INSERT INTO t1 VALUES (1, 'ZZZZZ'), (1, 'ZZZ'), (2, 'ZZZ'), (2, 'ZZZZZ');
...
@@ -465,7 +465,46 @@ INSERT INTO t1 VALUES (1, 'ZZZZZ'), (1, 'ZZZ'), (2, 'ZZZ'), (2, 'ZZZZZ');
SELECT
id
,
MIN
(
s
)
FROM
t1
GROUP
BY
id
;
SELECT
id
,
MIN
(
s
)
FROM
t1
GROUP
BY
id
;
DROP
TABLE
t1
;
DROP
TABLE
t1
;
# End of 4.1 tests
#
# Bug #20536: md5() with GROUP BY and UCS2 return different results on myisam/innodb
#
--
disable_warnings
drop
table
if
exists
bug20536
;
--
enable_warnings
set
names
latin1
;
create
table
bug20536
(
id
bigint
not
null
auto_increment
primary
key
,
name
varchar
(
255
)
character
set
ucs2
not
null
);
insert
into
`bug20536`
(
`id`
,
`name`
)
values
(
1
,
_latin1
x
'74657374311a'
),
(
2
,
"'test
\\
_2'"
);
select
md5
(
name
)
from
bug20536
;
select
sha1
(
name
)
from
bug20536
;
select
make_set
(
3
,
name
,
upper
(
name
))
from
bug20536
;
select
export_set
(
5
,
name
,
upper
(
name
))
from
bug20536
;
select
export_set
(
5
,
name
,
upper
(
name
),
","
,
5
)
from
bug20536
;
# Some broken functions: add these tests just to document current behavior.
# PASSWORD and OLD_PASSWORD don't work with UCS2 strings, but to fix it would
# not be backwards compatible in all cases, so it's best to leave it alone
select
password
(
name
)
from
bug20536
;
select
old_password
(
name
)
from
bug20536
;
# ENCRYPT relies on OS function crypt() which takes a NUL-terminated string; it
# doesn't return good results for strings with embedded 0 bytes. It won't be
# fixed unless we choose to re-implement the crypt() function ourselves to take
# an extra size_t string_length argument.
select
encrypt
(
name
,
'SALT'
)
from
bug20536
;
# QUOTE doesn't work with UCS2 data. It would require a total rewrite
# of Item_func_quote::val_str(), which isn't worthwhile until UCS2 is
# supported fully as a client character set.
select
quote
(
name
)
from
bug20536
;
drop
table
bug20536
;
--
echo
End
of
4.1
tests
#
#
# Conversion from an UCS2 string to a decimal column
# Conversion from an UCS2 string to a decimal column
...
@@ -497,3 +536,5 @@ create table t1(a blob, b text charset utf8, c text charset ucs2);
...
@@ -497,3 +536,5 @@ create table t1(a blob, b text charset utf8, c text charset ucs2);
select
data_type
,
character_octet_length
,
character_maximum_length
select
data_type
,
character_octet_length
,
character_maximum_length
from
information_schema
.
columns
where
table_name
=
't1'
;
from
information_schema
.
columns
where
table_name
=
't1'
;
drop
table
t1
;
drop
table
t1
;
--
echo
End
of
5.0
tests
sql/item_strfunc.cc
View file @
c2f4e569
...
@@ -124,6 +124,7 @@ String *Item_func_md5::val_str(String *str)
...
@@ -124,6 +124,7 @@ String *Item_func_md5::val_str(String *str)
{
{
DBUG_ASSERT
(
fixed
==
1
);
DBUG_ASSERT
(
fixed
==
1
);
String
*
sptr
=
args
[
0
]
->
val_str
(
str
);
String
*
sptr
=
args
[
0
]
->
val_str
(
str
);
str
->
set_charset
(
&
my_charset_bin
);
if
(
sptr
)
if
(
sptr
)
{
{
my_MD5_CTX
context
;
my_MD5_CTX
context
;
...
@@ -170,6 +171,7 @@ String *Item_func_sha::val_str(String *str)
...
@@ -170,6 +171,7 @@ String *Item_func_sha::val_str(String *str)
{
{
DBUG_ASSERT
(
fixed
==
1
);
DBUG_ASSERT
(
fixed
==
1
);
String
*
sptr
=
args
[
0
]
->
val_str
(
str
);
String
*
sptr
=
args
[
0
]
->
val_str
(
str
);
str
->
set_charset
(
&
my_charset_bin
);
if
(
sptr
)
/* If we got value different from NULL */
if
(
sptr
)
/* If we got value different from NULL */
{
{
SHA1_CONTEXT
context
;
/* Context used to generate SHA1 hash */
SHA1_CONTEXT
context
;
/* Context used to generate SHA1 hash */
...
@@ -1605,7 +1607,7 @@ String *Item_func_encrypt::val_str(String *str)
...
@@ -1605,7 +1607,7 @@ String *Item_func_encrypt::val_str(String *str)
null_value
=
1
;
null_value
=
1
;
return
0
;
return
0
;
}
}
str
->
set
(
tmp
,
(
uint
)
strlen
(
tmp
),
res
->
charset
()
);
str
->
set
(
tmp
,
(
uint
)
strlen
(
tmp
),
&
my_charset_bin
);
str
->
copy
();
str
->
copy
();
pthread_mutex_unlock
(
&
LOCK_crypt
);
pthread_mutex_unlock
(
&
LOCK_crypt
);
return
str
;
return
str
;
...
@@ -2041,7 +2043,7 @@ String *Item_func_make_set::val_str(String *str)
...
@@ -2041,7 +2043,7 @@ String *Item_func_make_set::val_str(String *str)
return
&
my_empty_string
;
return
&
my_empty_string
;
result
=
&
tmp_str
;
result
=
&
tmp_str
;
}
}
if
(
tmp_str
.
append
(
','
)
||
tmp_str
.
append
(
*
res
))
if
(
tmp_str
.
append
(
STRING_WITH_LEN
(
","
),
&
my_charset_bin
)
||
tmp_str
.
append
(
*
res
))
return
&
my_empty_string
;
return
&
my_empty_string
;
}
}
}
}
...
@@ -2699,8 +2701,12 @@ String* Item_func_export_set::val_str(String* str)
...
@@ -2699,8 +2701,12 @@ String* Item_func_export_set::val_str(String* str)
}
}
break
;
break
;
case
3
:
case
3
:
sep_buf
.
set
(
STRING_WITH_LEN
(
","
),
default_charset
());
{
sep
=
&
sep_buf
;
/* errors is not checked - assume "," can always be converted */
uint
errors
;
sep_buf
.
copy
(
STRING_WITH_LEN
(
","
),
&
my_charset_bin
,
collation
.
collation
,
&
errors
);
sep
=
&
sep_buf
;
}
break
;
break
;
default:
default:
DBUG_ASSERT
(
0
);
// cannot happen
DBUG_ASSERT
(
0
);
// cannot happen
...
...
sql/item_strfunc.h
View file @
c2f4e569
...
@@ -43,7 +43,10 @@ class Item_func_md5 :public Item_str_func
...
@@ -43,7 +43,10 @@ class Item_func_md5 :public Item_str_func
{
{
String
tmp_value
;
String
tmp_value
;
public:
public:
Item_func_md5
(
Item
*
a
)
:
Item_str_func
(
a
)
{}
Item_func_md5
(
Item
*
a
)
:
Item_str_func
(
a
)
{
collation
.
set
(
&
my_charset_bin
);
}
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"md5"
;
}
const
char
*
func_name
()
const
{
return
"md5"
;
}
...
@@ -54,7 +57,10 @@ public:
...
@@ -54,7 +57,10 @@ public:
class
Item_func_sha
:
public
Item_str_func
class
Item_func_sha
:
public
Item_str_func
{
{
public:
public:
Item_func_sha
(
Item
*
a
)
:
Item_str_func
(
a
)
{}
Item_func_sha
(
Item
*
a
)
:
Item_str_func
(
a
)
{
collation
.
set
(
&
my_charset_bin
);
}
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"sha"
;
}
const
char
*
func_name
()
const
{
return
"sha"
;
}
...
@@ -333,9 +339,21 @@ public:
...
@@ -333,9 +339,21 @@ public:
class
Item_func_encrypt
:
public
Item_str_func
class
Item_func_encrypt
:
public
Item_str_func
{
{
String
tmp_value
;
String
tmp_value
;
/* Encapsulate common constructor actions */
void
constructor_helper
()
{
collation
.
set
(
&
my_charset_bin
);
}
public:
public:
Item_func_encrypt
(
Item
*
a
)
:
Item_str_func
(
a
)
{}
Item_func_encrypt
(
Item
*
a
)
:
Item_str_func
(
a
)
Item_func_encrypt
(
Item
*
a
,
Item
*
b
)
:
Item_str_func
(
a
,
b
)
{}
{
constructor_helper
();
}
Item_func_encrypt
(
Item
*
a
,
Item
*
b
)
:
Item_str_func
(
a
,
b
)
{
constructor_helper
();
}
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
()
{
maybe_null
=
1
;
max_length
=
13
;
}
void
fix_length_and_dec
()
{
maybe_null
=
1
;
max_length
=
13
;
}
const
char
*
func_name
()
const
{
return
"encrypt"
;
}
const
char
*
func_name
()
const
{
return
"encrypt"
;
}
...
...
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