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
7a89041d
Commit
7a89041d
authored
Oct 26, 2004
by
tomas@poseidon.ndb.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1-ndb
into poseidon.ndb.mysql.com:/home/tomas/mysql-4.1
parents
64eb1621
6c4263ed
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
67 additions
and
29 deletions
+67
-29
Build-tools/mysql-copyright
Build-tools/mysql-copyright
+9
-3
mysql-test/r/ctype_utf8.result
mysql-test/r/ctype_utf8.result
+13
-0
mysql-test/t/ctype_utf8.test
mysql-test/t/ctype_utf8.test
+12
-0
sql/sql_parse.cc
sql/sql_parse.cc
+33
-26
No files found.
Build-tools/mysql-copyright
View file @
7a89041d
...
...
@@ -3,7 +3,7 @@
# Untar a MySQL distribution, change the copyright texts,
# pack it up again to a given directory
$VER
=
"
1.
4
";
$VER
=
"
1.
5
";
use
Cwd
;
use
File::
Basename
;
...
...
@@ -134,7 +134,6 @@ sub main
# remove temporary directory
chdir
(
$WD
)
or
print
"
$! Unable to move up one dir
\n
";
`
cd
$WD
`;
my
$cwd
=
getcwd
();
print
"
current dir is
$cwd
\n
"
if
$opt_verbose
;
if
(
-
e
$dir
)
{
...
...
@@ -231,7 +230,14 @@ sub run_autotools
# File "configure.in" has already been modified by "trim_the_fat()"
`
aclocal && autoheader && aclocal && automake && autoconf
`;
# It must be ensured that the timestamps of the relevant files are really
# ascending, for otherwise the Makefile may cause a re-run of these
# autotools. Experience shows that deletion is the only safe way.
unlink
("
config.h.in
")
or
die
"
Can't delete
$destdir
/config.h.in: $!
\n
";
unlink
("
aclocal.m4
")
or
die
"
Can't delete
$destdir
/aclocal.m4: $!
\n
";
# These sleep commands also ensure the ascending order.
`
aclocal && sleep 2 && autoheader && sleep 2 && automake && sleep 2 && autoconf
`;
die
"
'./configure' was not produced!
"
unless
(
-
f
"
configure
");
if
(
-
d
"
autom4te.cache
")
{
...
...
mysql-test/r/ctype_utf8.result
View file @
7a89041d
...
...
@@ -799,3 +799,16 @@ select * from t1 where b like 'foob%';
a b
2 foobar
drop table t1;
create table t1 (
a enum('петя','вася','анюта') character set utf8 not null default 'анюта',
b set('петя','вася','анюта') character set utf8 not null default 'анюта'
);
create table t2 select concat(a,_utf8'') as a, concat(b,_utf8'')as b from t1;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` char(5) character set utf8 NOT NULL default '',
`b` char(15) character set utf8 NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t2;
drop table t1;
mysql-test/t/ctype_utf8.test
View file @
7a89041d
...
...
@@ -644,3 +644,15 @@ create table t1 (
insert
into
t1
values
(
1
,
'foo'
),(
2
,
'foobar'
);
select
*
from
t1
where
b
like
'foob%'
;
drop
table
t1
;
#
# Test for calculate_interval_lengths() function
#
create
table
t1
(
a
enum
(
'петя'
,
'вася'
,
'анюта'
)
character
set
utf8
not
null
default
'анюта'
,
b
set
(
'петя'
,
'вася'
,
'анюта'
)
character
set
utf8
not
null
default
'анюта'
);
create
table
t2
select
concat
(
a
,
_utf8
''
)
as
a
,
concat
(
b
,
_utf8
''
)
as
b
from
t1
;
show
create
table
t2
;
drop
table
t2
;
drop
table
t1
;
sql/sql_parse.cc
View file @
7a89041d
...
...
@@ -4091,6 +4091,31 @@ bool mysql_test_parse_for_slave(THD *thd, char *inBuf, uint length)
#endif
/*
Calculate interval lengths.
Strip trailing spaces from all strings.
After this function call:
- ENUM uses max_length
- SET uses tot_length.
*/
void
calculate_interval_lengths
(
THD
*
thd
,
TYPELIB
*
interval
,
uint
*
max_length
,
uint
*
tot_length
)
{
const
char
**
pos
;
uint
*
len
;
CHARSET_INFO
*
cs
=
thd
->
variables
.
character_set_client
;
*
max_length
=
*
tot_length
=
0
;
for
(
pos
=
interval
->
type_names
,
len
=
interval
->
type_lengths
;
*
pos
;
pos
++
,
len
++
)
{
*
len
=
(
uint
)
strip_sp
((
char
*
)
*
pos
);
uint
length
=
cs
->
cset
->
numchars
(
cs
,
*
pos
,
*
pos
+
*
len
);
*
tot_length
+=
length
;
set_if_bigger
(
*
max_length
,
length
);
}
}
/*****************************************************************************
** Store field definition for create
** Return 0 if ok
...
...
@@ -4405,19 +4430,10 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
if
(
new_field
->
pack_length
>
4
)
new_field
->
pack_length
=
8
;
new_field
->
interval
=
interval
;
new_field
->
length
=
0
;
uint
*
lengths
;
const
char
**
pos
;
for
(
pos
=
interval
->
type_names
,
lengths
=
interval
->
type_lengths
;
*
pos
;
pos
++
,
lengths
++
)
{
CHARSET_INFO
*
cs
=
thd
->
variables
.
character_set_client
;
uint
length
=
(
uint
)
strip_sp
((
char
*
)
*
pos
)
+
1
;
set_if_smaller
(
*
lengths
,
length
);
length
=
cs
->
cset
->
numchars
(
cs
,
*
pos
,
*
pos
+
length
);
new_field
->
length
+=
length
;
}
new_field
->
length
--
;
uint
dummy_max_length
;
calculate_interval_lengths
(
thd
,
interval
,
&
dummy_max_length
,
&
new_field
->
length
);
new_field
->
length
+=
(
interval
->
count
-
1
);
set_if_smaller
(
new_field
->
length
,
MAX_FIELD_WIDTH
-
1
);
if
(
default_value
)
{
...
...
@@ -4442,19 +4458,10 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
{
new_field
->
interval
=
interval
;
new_field
->
pack_length
=
interval
->
count
<
256
?
1
:
2
;
// Should be safe
new_field
->
length
=
(
uint
)
strip_sp
((
char
*
)
interval
->
type_names
[
0
]);
set_if_smaller
(
interval
->
type_lengths
[
0
],
new_field
->
length
);
uint
*
lengths
;
const
char
**
pos
;
for
(
pos
=
interval
->
type_names
+
1
,
lengths
=
interval
->
type_lengths
+
1
;
*
pos
;
pos
++
,
lengths
++
)
{
CHARSET_INFO
*
cs
=
thd
->
variables
.
character_set_client
;
uint
length
=
(
uint
)
strip_sp
((
char
*
)
*
pos
);
set_if_smaller
(
*
lengths
,
length
);
length
=
cs
->
cset
->
numchars
(
cs
,
*
pos
,
*
pos
+
length
);
set_if_bigger
(
new_field
->
length
,
length
);
}
uint
dummy_tot_length
;
calculate_interval_lengths
(
thd
,
interval
,
&
new_field
->
length
,
&
dummy_tot_length
);
set_if_smaller
(
new_field
->
length
,
MAX_FIELD_WIDTH
-
1
);
if
(
default_value
)
{
...
...
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