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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
1dc65faf
Commit
1dc65faf
authored
Mar 22, 2006
by
tomas@poseidon.ndb.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into poseidon.ndb.mysql.com:/home/tomas/mysql-5.1-new
parents
f9c16f26
fe779f7a
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
94 additions
and
24 deletions
+94
-24
libmysql/libmysql.c
libmysql/libmysql.c
+2
-1
mysql-test/r/ctype_cp932_binlog_stm.result
mysql-test/r/ctype_cp932_binlog_stm.result
+29
-0
mysql-test/t/ctype_cp932_binlog_stm.test
mysql-test/t/ctype_cp932_binlog_stm.test
+24
-0
sql/item.cc
sql/item.cc
+1
-18
sql/log_event.cc
sql/log_event.cc
+31
-0
sql/mysql_priv.h
sql/mysql_priv.h
+2
-0
sql/sp_head.cc
sql/sp_head.cc
+5
-5
No files found.
libmysql/libmysql.c
View file @
1dc65faf
...
@@ -2816,10 +2816,11 @@ my_bool STDCALL mysql_stmt_attr_get(MYSQL_STMT *stmt,
...
@@ -2816,10 +2816,11 @@ my_bool STDCALL mysql_stmt_attr_get(MYSQL_STMT *stmt,
{
{
switch
(
attr_type
)
{
switch
(
attr_type
)
{
case
STMT_ATTR_UPDATE_MAX_LENGTH
:
case
STMT_ATTR_UPDATE_MAX_LENGTH
:
*
(
my_bool
*
)
value
=
stmt
->
update_max_length
;
break
;
break
;
case
STMT_ATTR_CURSOR_TYPE
:
case
STMT_ATTR_CURSOR_TYPE
:
*
(
ulong
*
)
value
=
stmt
->
flags
;
*
(
ulong
*
)
value
=
stmt
->
flags
;
break
;
break
;
case
STMT_ATTR_PREFETCH_ROWS
:
case
STMT_ATTR_PREFETCH_ROWS
:
*
(
ulong
*
)
value
=
stmt
->
prefetch_rows
;
*
(
ulong
*
)
value
=
stmt
->
prefetch_rows
;
break
;
break
;
...
...
mysql-test/r/ctype_cp932_binlog_stm.result
View file @
1dc65faf
...
@@ -15,3 +15,32 @@ SELECT HEX(f1) FROM t1;
...
@@ -15,3 +15,32 @@ SELECT HEX(f1) FROM t1;
HEX(f1)
HEX(f1)
8300
8300
DROP table t1;
DROP table t1;
CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1,
s2 CHAR(50) CHARACTER SET cp932,
d DECIMAL(10,2))|
CREATE PROCEDURE bug18293 (IN ins1 CHAR(50),
IN ins2 CHAR(50) CHARACTER SET cp932,
IN ind DECIMAL(10,2))
BEGIN
INSERT INTO t4 VALUES (ins1, ins2, ind);
END|
CALL bug18293("Foo's a Bar", _cp932 0xED40ED41ED42, 47.93)|
SELECT HEX(s1),HEX(s2),d FROM t4|
HEX(s1) HEX(s2) d
466F6F2773206120426172 ED40ED41ED42 47.93
DROP PROCEDURE bug18293|
DROP TABLE t4|
SHOW BINLOG EVENTS FROM 397|
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 397 Query 1 560 use `test`; CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1,
s2 CHAR(50) CHARACTER SET cp932,
d DECIMAL(10,2))
master-bin.000001 560 Query 1 805 use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE bug18293 (IN ins1 CHAR(50),
IN ins2 CHAR(50) CHARACTER SET cp932,
IN ind DECIMAL(10,2))
BEGIN
INSERT INTO t4 VALUES (ins1, ins2, ind);
END
master-bin.000001 805 Query 1 1010 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1'Foo\'s a Bar'), NAME_CONST('ins2',_cp932 0xED40ED41ED42), NAME_CONST('ind',47.93))
master-bin.000001 1010 Query 1 1096 use `test`; DROP PROCEDURE bug18293
master-bin.000001 1096 Query 1 1172 use `test`; DROP TABLE t4
mysql-test/t/ctype_cp932_binlog_stm.test
View file @
1dc65faf
...
@@ -3,3 +3,27 @@
...
@@ -3,3 +3,27 @@
--
source
include
/
have_binlog_format_statement
.
inc
--
source
include
/
have_binlog_format_statement
.
inc
--
source
extra
/
binlog_tests
/
ctype_cp932_binlog
.
test
--
source
extra
/
binlog_tests
/
ctype_cp932_binlog
.
test
#
# Bug#18293: Values in stored procedure written to binlog unescaped
#
delimiter
|
;
CREATE
TABLE
t4
(
s1
CHAR
(
50
)
CHARACTER
SET
latin1
,
s2
CHAR
(
50
)
CHARACTER
SET
cp932
,
d
DECIMAL
(
10
,
2
))
|
CREATE
PROCEDURE
bug18293
(
IN
ins1
CHAR
(
50
),
IN
ins2
CHAR
(
50
)
CHARACTER
SET
cp932
,
IN
ind
DECIMAL
(
10
,
2
))
BEGIN
INSERT
INTO
t4
VALUES
(
ins1
,
ins2
,
ind
);
END
|
CALL
bug18293
(
"Foo's a Bar"
,
_cp932
0xED40ED41ED42
,
47.93
)
|
SELECT
HEX
(
s1
),
HEX
(
s2
),
d
FROM
t4
|
DROP
PROCEDURE
bug18293
|
DROP
TABLE
t4
|
SHOW
BINLOG
EVENTS
FROM
397
|
delimiter
;
|
# End of 5.0 tests
sql/item.cc
View file @
1dc65faf
...
@@ -2646,25 +2646,8 @@ const String *Item_param::query_val_str(String* str) const
...
@@ -2646,25 +2646,8 @@ const String *Item_param::query_val_str(String* str) const
case
STRING_VALUE
:
case
STRING_VALUE
:
case
LONG_DATA_VALUE
:
case
LONG_DATA_VALUE
:
{
{
char
*
buf
,
*
ptr
;
str
->
length
(
0
);
str
->
length
(
0
);
if
(
str
->
reserve
(
str_value
.
length
()
*
2
+
3
))
append_query_string
(
value
.
cs_info
.
character_set_client
,
&
str_value
,
str
);
break
;
buf
=
str
->
c_ptr_quick
();
ptr
=
buf
;
if
(
value
.
cs_info
.
character_set_client
->
escape_with_backslash_is_dangerous
)
{
ptr
=
str_to_hex
(
ptr
,
str_value
.
ptr
(),
str_value
.
length
());
}
else
{
*
ptr
++=
'\''
;
ptr
+=
escape_string_for_mysql
(
str_value
.
charset
(),
ptr
,
0
,
str_value
.
ptr
(),
str_value
.
length
());
*
ptr
++=
'\''
;
}
str
->
length
((
uint32
)
(
ptr
-
buf
));
break
;
break
;
}
}
case
NULL_VALUE
:
case
NULL_VALUE
:
...
...
sql/log_event.cc
View file @
1dc65faf
...
@@ -256,6 +256,37 @@ char *str_to_hex(char *to, const char *from, uint len)
...
@@ -256,6 +256,37 @@ char *str_to_hex(char *to, const char *from, uint len)
return
to
;
// pointer to end 0 of 'to'
return
to
;
// pointer to end 0 of 'to'
}
}
/*
Append a version of the 'from' string suitable for use in a query to
the 'to' string. To generate a correct escaping, the character set
information in 'csinfo' is used.
*/
#ifndef MYSQL_CLIENT
int
append_query_string
(
CHARSET_INFO
*
csinfo
,
String
const
*
from
,
String
*
to
)
{
char
*
beg
,
*
ptr
;
uint32
const
orig_len
=
to
->
length
();
if
(
to
->
reserve
(
orig_len
+
from
->
length
()
*
2
+
3
))
return
1
;
beg
=
to
->
c_ptr_quick
()
+
to
->
length
();
ptr
=
beg
;
if
(
csinfo
->
escape_with_backslash_is_dangerous
)
ptr
=
str_to_hex
(
ptr
,
from
->
ptr
(),
from
->
length
());
else
{
*
ptr
++=
'\''
;
ptr
+=
escape_string_for_mysql
(
from
->
charset
(),
ptr
,
0
,
from
->
ptr
(),
from
->
length
());
*
ptr
++=
'\''
;
}
to
->
length
(
orig_len
+
ptr
-
beg
);
return
0
;
}
#endif
/*
/*
Prints a "session_var=value" string. Used by mysqlbinlog to print some SET
Prints a "session_var=value" string. Used by mysqlbinlog to print some SET
commands just before it prints a query.
commands just before it prints a query.
...
...
sql/mysql_priv.h
View file @
1dc65faf
...
@@ -547,6 +547,8 @@ bool delete_precheck(THD *thd, TABLE_LIST *tables);
...
@@ -547,6 +547,8 @@ bool delete_precheck(THD *thd, TABLE_LIST *tables);
bool
insert_precheck
(
THD
*
thd
,
TABLE_LIST
*
tables
);
bool
insert_precheck
(
THD
*
thd
,
TABLE_LIST
*
tables
);
bool
create_table_precheck
(
THD
*
thd
,
TABLE_LIST
*
tables
,
bool
create_table_precheck
(
THD
*
thd
,
TABLE_LIST
*
tables
,
TABLE_LIST
*
create_table
);
TABLE_LIST
*
create_table
);
int
append_query_string
(
CHARSET_INFO
*
csinfo
,
String
const
*
from
,
String
*
to
);
void
get_default_definer
(
THD
*
thd
,
LEX_USER
*
definer
);
void
get_default_definer
(
THD
*
thd
,
LEX_USER
*
definer
);
LEX_USER
*
create_default_definer
(
THD
*
thd
);
LEX_USER
*
create_default_definer
(
THD
*
thd
);
...
...
sql/sp_head.cc
View file @
1dc65faf
...
@@ -80,8 +80,8 @@ sp_map_item_type(enum enum_field_types type)
...
@@ -80,8 +80,8 @@ sp_map_item_type(enum enum_field_types type)
/*
/*
Return a string representation of the Item value.
Return a string representation of the Item value.
NOTE:
this is a legacy-compatible implementation. It fails if the value
NOTE:
If the item has a string result type, the string is escaped
contains non-ordinary symbols, which should be escaped
.
according to its character set
.
SYNOPSIS
SYNOPSIS
item a pointer to the Item
item a pointer to the Item
...
@@ -119,9 +119,9 @@ sp_get_item_value(Item *item, String *str)
...
@@ -119,9 +119,9 @@ sp_get_item_value(Item *item, String *str)
buf
.
append
(
'_'
);
buf
.
append
(
'_'
);
buf
.
append
(
result
->
charset
()
->
csname
);
buf
.
append
(
result
->
charset
()
->
csname
);
buf
.
append
(
'\''
);
if
(
result
->
charset
()
->
escape_with_backslash_is_dangerous
)
buf
.
append
(
*
result
);
buf
.
append
(
' '
);
buf
.
append
(
'\''
);
append_query_string
(
result
->
charset
(),
result
,
&
buf
);
str
->
copy
(
buf
);
str
->
copy
(
buf
);
return
str
;
return
str
;
...
...
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