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
e347eb19
Commit
e347eb19
authored
Nov 13, 2006
by
gkodinov/kgeorge@rakia.gmz
Browse files
Options
Browse Files
Download
Plain Diff
Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into rakia.gmz:/home/kgeorge/mysql/autopush/B19216-4.1-opt
parents
edd8ea53
9a41822b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
29 additions
and
10 deletions
+29
-10
mysql-test/t/mysql_client.test
mysql-test/t/mysql_client.test
+18
-0
sql-common/client.c
sql-common/client.c
+2
-0
sql/protocol.cc
sql/protocol.cc
+9
-9
sql/protocol.h
sql/protocol.h
+0
-1
No files found.
mysql-test/t/mysql_client.test
View file @
e347eb19
...
@@ -33,3 +33,21 @@
...
@@ -33,3 +33,21 @@
#
#
--
exec
echo
'help'
|
$MYSQL
>
$MYSQLTEST_VARDIR
/
tmp
/
bug20328
.
tmp
--
exec
echo
'help'
|
$MYSQL
>
$MYSQLTEST_VARDIR
/
tmp
/
bug20328
.
tmp
--
exec
echo
'help '
|
$MYSQL
>
$MYSQLTEST_VARDIR
/
tmp
/
bug20328
.
tmp
--
exec
echo
'help '
|
$MYSQL
>
$MYSQLTEST_VARDIR
/
tmp
/
bug20328
.
tmp
#
# Bug #19216: Client crashes on long SELECT
#
--
exec
echo
"select"
>
$MYSQLTEST_VARDIR
/
tmp
/
b19216
.
tmp
# 3400 * 20 makes 68000 columns that is more than the max number that can fit
# in a 16 bit number.
let
$i
=
3400
;
while
(
$i
)
{
--
exec
echo
"'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a',"
>>
$MYSQLTEST_VARDIR
/
tmp
/
b19216
.
tmp
dec
$i
;
}
--
exec
echo
"'b';"
>>
$MYSQLTEST_VARDIR
/
tmp
/
b19216
.
tmp
--
disable_query_log
--
exec
$MYSQL
<
$MYSQLTEST_VARDIR
/
tmp
/
b19216
.
tmp
>/
dev
/
null
--
enable_query_log
sql-common/client.c
View file @
e347eb19
...
@@ -1173,6 +1173,8 @@ unpack_fields(MYSQL_DATA *data,MEM_ROOT *alloc,uint fields,
...
@@ -1173,6 +1173,8 @@ unpack_fields(MYSQL_DATA *data,MEM_ROOT *alloc,uint fields,
for
(
row
=
data
->
data
;
row
;
row
=
row
->
next
,
field
++
)
for
(
row
=
data
->
data
;
row
;
row
=
row
->
next
,
field
++
)
{
{
uchar
*
pos
;
uchar
*
pos
;
/* fields count may be wrong */
DBUG_ASSERT
((
field
-
result
)
<
fields
);
cli_fetch_lengths
(
&
lengths
[
0
],
row
->
data
,
default_value
?
8
:
7
);
cli_fetch_lengths
(
&
lengths
[
0
],
row
->
data
,
default_value
?
8
:
7
);
field
->
catalog
=
strdup_root
(
alloc
,(
char
*
)
row
->
data
[
0
]);
field
->
catalog
=
strdup_root
(
alloc
,(
char
*
)
row
->
data
[
0
]);
field
->
db
=
strdup_root
(
alloc
,(
char
*
)
row
->
data
[
1
]);
field
->
db
=
strdup_root
(
alloc
,(
char
*
)
row
->
data
[
1
]);
...
...
sql/protocol.cc
View file @
e347eb19
...
@@ -43,7 +43,7 @@ bool Protocol_prep::net_store_data(const char *from, uint length)
...
@@ -43,7 +43,7 @@ bool Protocol_prep::net_store_data(const char *from, uint length)
packet
->
realloc
(
packet_length
+
9
+
length
))
packet
->
realloc
(
packet_length
+
9
+
length
))
return
1
;
return
1
;
char
*
to
=
(
char
*
)
net_store_length
((
char
*
)
packet
->
ptr
()
+
packet_length
,
char
*
to
=
(
char
*
)
net_store_length
((
char
*
)
packet
->
ptr
()
+
packet_length
,
(
ulonglong
)
length
);
length
);
memcpy
(
to
,
from
,
length
);
memcpy
(
to
,
from
,
length
);
packet
->
length
((
uint
)
(
to
+
length
-
packet
->
ptr
()));
packet
->
length
((
uint
)
(
to
+
length
-
packet
->
ptr
()));
return
0
;
return
0
;
...
@@ -297,8 +297,8 @@ send_ok(THD *thd, ha_rows affected_rows, ulonglong id, const char *message)
...
@@ -297,8 +297,8 @@ send_ok(THD *thd, ha_rows affected_rows, ulonglong id, const char *message)
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
buff
[
0
]
=
0
;
// No fields
buff
[
0
]
=
0
;
// No fields
pos
=
net_store_length
(
buff
+
1
,
(
ulonglong
)
affected_rows
);
pos
=
net_store_length
(
buff
+
1
,
affected_rows
);
pos
=
net_store_length
(
pos
,
(
ulonglong
)
id
);
pos
=
net_store_length
(
pos
,
id
);
if
(
thd
->
client_capabilities
&
CLIENT_PROTOCOL_41
)
if
(
thd
->
client_capabilities
&
CLIENT_PROTOCOL_41
)
{
{
DBUG_PRINT
(
"info"
,
DBUG_PRINT
(
"info"
,
...
@@ -416,7 +416,7 @@ bool send_old_password_request(THD *thd)
...
@@ -416,7 +416,7 @@ bool send_old_password_request(THD *thd)
ulonglong for bigger numbers.
ulonglong for bigger numbers.
*/
*/
char
*
net_store_length
(
char
*
pkg
,
uint
length
)
static
char
*
net_store_length_fast
(
char
*
pkg
,
uint
length
)
{
{
uchar
*
packet
=
(
uchar
*
)
pkg
;
uchar
*
packet
=
(
uchar
*
)
pkg
;
if
(
length
<
251
)
if
(
length
<
251
)
...
@@ -439,7 +439,7 @@ char *net_store_length(char *pkg, uint length)
...
@@ -439,7 +439,7 @@ char *net_store_length(char *pkg, uint length)
char
*
net_store_data
(
char
*
to
,
const
char
*
from
,
uint
length
)
char
*
net_store_data
(
char
*
to
,
const
char
*
from
,
uint
length
)
{
{
to
=
net_store_length
(
to
,
length
);
to
=
net_store_length
_fast
(
to
,
length
);
memcpy
(
to
,
from
,
length
);
memcpy
(
to
,
from
,
length
);
return
to
+
length
;
return
to
+
length
;
}
}
...
@@ -448,7 +448,7 @@ char *net_store_data(char *to,int32 from)
...
@@ -448,7 +448,7 @@ char *net_store_data(char *to,int32 from)
{
{
char
buff
[
20
];
char
buff
[
20
];
uint
length
=
(
uint
)
(
int10_to_str
(
from
,
buff
,
10
)
-
buff
);
uint
length
=
(
uint
)
(
int10_to_str
(
from
,
buff
,
10
)
-
buff
);
to
=
net_store_length
(
to
,
length
);
to
=
net_store_length
_fast
(
to
,
length
);
memcpy
(
to
,
buff
,
length
);
memcpy
(
to
,
buff
,
length
);
return
to
+
length
;
return
to
+
length
;
}
}
...
@@ -457,7 +457,7 @@ char *net_store_data(char *to,longlong from)
...
@@ -457,7 +457,7 @@ char *net_store_data(char *to,longlong from)
{
{
char
buff
[
22
];
char
buff
[
22
];
uint
length
=
(
uint
)
(
longlong10_to_str
(
from
,
buff
,
10
)
-
buff
);
uint
length
=
(
uint
)
(
longlong10_to_str
(
from
,
buff
,
10
)
-
buff
);
to
=
net_store_length
(
to
,
length
);
to
=
net_store_length
_fast
(
to
,
length
);
memcpy
(
to
,
buff
,
length
);
memcpy
(
to
,
buff
,
length
);
return
to
+
length
;
return
to
+
length
;
}
}
...
@@ -520,7 +520,7 @@ bool Protocol::send_fields(List<Item> *list, uint flag)
...
@@ -520,7 +520,7 @@ bool Protocol::send_fields(List<Item> *list, uint flag)
if
(
flag
&
1
)
if
(
flag
&
1
)
{
// Packet with number of elements
{
// Packet with number of elements
char
*
pos
=
net_store_length
(
buff
,
(
uint
)
list
->
elements
);
char
*
pos
=
net_store_length
(
buff
,
list
->
elements
);
(
void
)
my_net_write
(
&
thd
->
net
,
buff
,(
uint
)
(
pos
-
buff
));
(
void
)
my_net_write
(
&
thd
->
net
,
buff
,(
uint
)
(
pos
-
buff
));
}
}
...
@@ -648,7 +648,7 @@ bool Protocol::send_records_num(List<Item> *list, ulonglong records)
...
@@ -648,7 +648,7 @@ bool Protocol::send_records_num(List<Item> *list, ulonglong records)
{
{
char
*
pos
;
char
*
pos
;
char
buff
[
20
];
char
buff
[
20
];
pos
=
net_store_length
(
buff
,
(
uint
)
list
->
elements
);
pos
=
net_store_length
(
buff
,
list
->
elements
);
pos
=
net_store_length
(
pos
,
records
);
pos
=
net_store_length
(
pos
,
records
);
return
my_net_write
(
&
thd
->
net
,
buff
,(
uint
)
(
pos
-
buff
));
return
my_net_write
(
&
thd
->
net
,
buff
,(
uint
)
(
pos
-
buff
));
}
}
...
...
sql/protocol.h
View file @
e347eb19
...
@@ -177,7 +177,6 @@ void send_ok(THD *thd, ha_rows affected_rows=0L, ulonglong id=0L,
...
@@ -177,7 +177,6 @@ void send_ok(THD *thd, ha_rows affected_rows=0L, ulonglong id=0L,
const
char
*
info
=
0
);
const
char
*
info
=
0
);
void
send_eof
(
THD
*
thd
,
bool
no_flush
=
0
);
void
send_eof
(
THD
*
thd
,
bool
no_flush
=
0
);
bool
send_old_password_request
(
THD
*
thd
);
bool
send_old_password_request
(
THD
*
thd
);
char
*
net_store_length
(
char
*
packet
,
uint
length
);
char
*
net_store_data
(
char
*
to
,
const
char
*
from
,
uint
length
);
char
*
net_store_data
(
char
*
to
,
const
char
*
from
,
uint
length
);
char
*
net_store_data
(
char
*
to
,
int32
from
);
char
*
net_store_data
(
char
*
to
,
int32
from
);
char
*
net_store_data
(
char
*
to
,
longlong
from
);
char
*
net_store_data
(
char
*
to
,
longlong
from
);
...
...
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