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
40b368af
Commit
40b368af
authored
Mar 04, 2006
by
konstantin@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/opt/local/work/mysql-4.1-root
parents
c5a638ce
7178f247
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
48 additions
and
6 deletions
+48
-6
mysql-test/r/ps.result
mysql-test/r/ps.result
+14
-0
mysql-test/t/ps.test
mysql-test/t/ps.test
+22
-1
sql/field.cc
sql/field.cc
+2
-3
sql/field.h
sql/field.h
+1
-1
sql/sql_parse.cc
sql/sql_parse.cc
+2
-0
sql/sql_table.cc
sql/sql_table.cc
+7
-1
No files found.
mysql-test/r/ps.result
View file @
40b368af
...
...
@@ -733,3 +733,17 @@ count(*)
5
deallocate prepare stmt;
drop table t1;
prepare stmt from 'create table t1 (a varchar(10) character set utf8)';
execute stmt;
insert into t1 (a) values (repeat('a', 20));
select length(a) from t1;
length(a)
10
drop table t1;
execute stmt;
insert into t1 (a) values (repeat('a', 20));
select length(a) from t1;
length(a)
10
drop table t1;
deallocate prepare stmt;
mysql-test/t/ps.test
View file @
40b368af
...
...
@@ -763,5 +763,26 @@ execute stmt using @like;
deallocate
prepare
stmt
;
drop
table
t1
;
# End of 4.1 tests
#
# Bug#13134 "Length of VARCHAR() utf8 column is increasing when table is
# recreated with PS/SP"
#
prepare
stmt
from
'create table t1 (a varchar(10) character set utf8)'
;
execute
stmt
;
--
disable_warnings
insert
into
t1
(
a
)
values
(
repeat
(
'a'
,
20
));
--
enable_warnings
select
length
(
a
)
from
t1
;
drop
table
t1
;
execute
stmt
;
--
disable_warnings
insert
into
t1
(
a
)
values
(
repeat
(
'a'
,
20
));
--
enable_warnings
# Check that the data is truncated to the same length
select
length
(
a
)
from
t1
;
drop
table
t1
;
deallocate
prepare
stmt
;
# End of 4.1 tests
sql/field.cc
View file @
40b368af
...
...
@@ -6516,13 +6516,11 @@ bool Field_num::eq_def(Field *field)
create_field::create_length_to_internal_length()
DESCRIPTION
Convert create_field::length from number of characters to number of bytes,
save original value in chars_length.
Convert create_field::length from number of characters to number of bytes.
*/
void
create_field
::
create_length_to_internal_length
(
void
)
{
chars_length
=
length
;
switch
(
sql_type
)
{
case
MYSQL_TYPE_TINY_BLOB
:
case
MYSQL_TYPE_MEDIUM_BLOB
:
...
...
@@ -6775,6 +6773,7 @@ create_field::create_field(Field *old_field,Field *orig_field)
break
;
}
char_length
=
length
;
decimals
=
old_field
->
decimals
();
if
(
sql_type
==
FIELD_TYPE_STRING
)
{
...
...
sql/field.h
View file @
40b368af
...
...
@@ -1188,7 +1188,7 @@ public:
/*
The value of 'length' before a call to create_length_to_internal_length
*/
uint32
char
s
_length
;
uint32
char_length
;
uint
decimals
,
flags
,
pack_length
;
Field
::
utype
unireg_check
;
TYPELIB
*
interval
;
// Which interval to use
...
...
sql/sql_parse.cc
View file @
40b368af
...
...
@@ -4480,6 +4480,7 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
NOT_FIXED_DEC
-
1
)
:
0
;
new_field
->
sql_type
=
type
;
new_field
->
length
=
0
;
new_field
->
char_length
=
0
;
new_field
->
change
=
change
;
new_field
->
interval
=
0
;
new_field
->
pack_length
=
0
;
...
...
@@ -4750,6 +4751,7 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
FIELD_TYPE_STRING
:
new_field
->
sql_type
,
new_field
->
length
);
new_field
->
char_length
=
new_field
->
length
;
lex
->
create_list
.
push_back
(
new_field
);
lex
->
last_field
=
new_field
;
DBUG_RETURN
(
0
);
...
...
sql/sql_table.cc
View file @
40b368af
...
...
@@ -488,6 +488,12 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
for
(
field_no
=
0
;
(
sql_field
=
it
++
)
;
field_no
++
)
{
/*
Initialize length from its original value (number of characters),
which was set in the parser. This is necessary if we're
executing a prepared statement for the second time.
*/
sql_field
->
length
=
sql_field
->
char_length
;
if
(
!
sql_field
->
charset
)
sql_field
->
charset
=
create_info
->
default_table_charset
;
/*
...
...
@@ -665,7 +671,7 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
sql_field
->
charset
=
(
dup_field
->
charset
?
dup_field
->
charset
:
create_info
->
default_table_charset
);
sql_field
->
length
=
dup_field
->
char
s
_length
;
sql_field
->
length
=
dup_field
->
char_length
;
sql_field
->
pack_length
=
dup_field
->
pack_length
;
sql_field
->
create_length_to_internal_length
();
sql_field
->
decimals
=
dup_field
->
decimals
;
...
...
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