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
5811df5d
Commit
5811df5d
authored
Nov 09, 2010
by
Michael Widenius
Browse files
Options
Browse Files
Download
Plain Diff
automatic merge
parents
c4b3f430
99e0d496
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
56 additions
and
33 deletions
+56
-33
mysys/safemalloc.c
mysys/safemalloc.c
+4
-0
sql/net_serv.cc
sql/net_serv.cc
+2
-2
sql/protocol.cc
sql/protocol.cc
+3
-0
sql/sp.cc
sql/sp.cc
+1
-1
sql/sql_select.cc
sql/sql_select.cc
+1
-0
sql/sql_show.cc
sql/sql_show.cc
+1
-1
sql/sql_string.cc
sql/sql_string.cc
+9
-9
sql/sql_string.h
sql/sql_string.h
+30
-18
sql/sql_test.cc
sql/sql_test.cc
+2
-1
sql/table.cc
sql/table.cc
+3
-1
No files found.
mysys/safemalloc.c
View file @
5811df5d
...
@@ -224,6 +224,8 @@ void *_myrealloc(register void *ptr, register size_t size,
...
@@ -224,6 +224,8 @@ void *_myrealloc(register void *ptr, register size_t size,
struct
st_irem
*
irem
;
struct
st_irem
*
irem
;
char
*
data
;
char
*
data
;
DBUG_ENTER
(
"_myrealloc"
);
DBUG_ENTER
(
"_myrealloc"
);
DBUG_PRINT
(
"my"
,(
"ptr: 0x%lx size: %lu my_flags: %d"
,
(
long
)
ptr
,
(
ulong
)
size
,
MyFlags
));
if
(
!
ptr
&&
(
MyFlags
&
MY_ALLOW_ZERO_PTR
))
if
(
!
ptr
&&
(
MyFlags
&
MY_ALLOW_ZERO_PTR
))
DBUG_RETURN
(
_mymalloc
(
size
,
filename
,
lineno
,
MyFlags
));
DBUG_RETURN
(
_mymalloc
(
size
,
filename
,
lineno
,
MyFlags
));
...
@@ -245,6 +247,8 @@ void *_myrealloc(register void *ptr, register size_t size,
...
@@ -245,6 +247,8 @@ void *_myrealloc(register void *ptr, register size_t size,
(
void
)
fflush
(
stderr
);
(
void
)
fflush
(
stderr
);
DBUG_RETURN
((
uchar
*
)
NULL
);
DBUG_RETURN
((
uchar
*
)
NULL
);
}
}
DBUG_PRINT
(
"my"
,
(
"old_size: %lu -> new_size: %lu"
,
(
ulong
)
irem
->
datasize
,
(
ulong
)
size
));
if
((
data
=
_mymalloc
(
size
,
filename
,
lineno
,
MyFlags
)))
/* Allocate new area */
if
((
data
=
_mymalloc
(
size
,
filename
,
lineno
,
MyFlags
)))
/* Allocate new area */
{
{
...
...
sql/net_serv.cc
View file @
5811df5d
...
@@ -116,7 +116,7 @@ my_bool my_net_init(NET *net, Vio* vio)
...
@@ -116,7 +116,7 @@ my_bool my_net_init(NET *net, Vio* vio)
net
->
vio
=
vio
;
net
->
vio
=
vio
;
my_net_local_init
(
net
);
/* Set some limits */
my_net_local_init
(
net
);
/* Set some limits */
if
(
!
(
net
->
buff
=
(
uchar
*
)
my_malloc
((
size_t
)
net
->
max_packet
+
if
(
!
(
net
->
buff
=
(
uchar
*
)
my_malloc
((
size_t
)
net
->
max_packet
+
NET_HEADER_SIZE
+
COMP_HEADER_SIZE
,
NET_HEADER_SIZE
+
COMP_HEADER_SIZE
+
1
,
MYF
(
MY_WME
))))
MYF
(
MY_WME
))))
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
net
->
buff_end
=
net
->
buff
+
net
->
max_packet
;
net
->
buff_end
=
net
->
buff
+
net
->
max_packet
;
...
@@ -580,7 +580,7 @@ net_real_write(NET *net,const uchar *packet, size_t len)
...
@@ -580,7 +580,7 @@ net_real_write(NET *net,const uchar *packet, size_t len)
uchar
*
b
;
uchar
*
b
;
uint
header_length
=
NET_HEADER_SIZE
+
COMP_HEADER_SIZE
;
uint
header_length
=
NET_HEADER_SIZE
+
COMP_HEADER_SIZE
;
if
(
!
(
b
=
(
uchar
*
)
my_malloc
(
len
+
NET_HEADER_SIZE
+
if
(
!
(
b
=
(
uchar
*
)
my_malloc
(
len
+
NET_HEADER_SIZE
+
COMP_HEADER_SIZE
,
MYF
(
MY_WME
))))
COMP_HEADER_SIZE
+
1
,
MYF
(
MY_WME
))))
{
{
net
->
error
=
2
;
net
->
error
=
2
;
net
->
last_errno
=
ER_OUT_OF_RESOURCES
;
net
->
last_errno
=
ER_OUT_OF_RESOURCES
;
...
...
sql/protocol.cc
View file @
5811df5d
...
@@ -632,6 +632,9 @@ bool Protocol::send_fields(List<Item> *list, uint flags)
...
@@ -632,6 +632,9 @@ bool Protocol::send_fields(List<Item> *list, uint flags)
uint
count
=
0
;
uint
count
=
0
;
#endif
#endif
/* We have to reallocate it here as a stored procedure may have reset it */
(
void
)
local_packet
->
alloc
(
thd
->
variables
.
net_buffer_length
);
while
((
item
=
it
++
))
while
((
item
=
it
++
))
{
{
char
*
pos
;
char
*
pos
;
...
...
sql/sp.cc
View file @
5811df5d
...
@@ -785,7 +785,7 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp,
...
@@ -785,7 +785,7 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp,
{
{
Parser_state
parser_state
;
Parser_state
parser_state
;
if
(
parser_state
.
init
(
thd
,
defstr
.
c_ptr
(),
defstr
.
length
()))
if
(
parser_state
.
init
(
thd
,
defstr
.
c_ptr
_safe
(),
defstr
.
length
()))
{
{
ret
=
SP_INTERNAL_ERROR
;
ret
=
SP_INTERNAL_ERROR
;
goto
end
;
goto
end
;
...
...
sql/sql_select.cc
View file @
5811df5d
...
@@ -15997,6 +15997,7 @@ change_to_use_tmp_fields(THD *thd, Item **ref_pointer_array,
...
@@ -15997,6 +15997,7 @@ change_to_use_tmp_fields(THD *thd, Item **ref_pointer_array,
char
buff
[
256
];
char
buff
[
256
];
String
str
(
buff
,
sizeof
(
buff
),
&
my_charset_bin
);
String
str
(
buff
,
sizeof
(
buff
),
&
my_charset_bin
);
str
.
length
(
0
);
str
.
length
(
0
);
str
.
extra_allocation
(
1024
);
item
->
print
(
&
str
,
QT_ORDINARY
);
item
->
print
(
&
str
,
QT_ORDINARY
);
item_field
->
name
=
sql_strmake
(
str
.
ptr
(),
str
.
length
());
item_field
->
name
=
sql_strmake
(
str
.
ptr
(),
str
.
length
());
}
}
...
...
sql/sql_show.cc
View file @
5811df5d
...
@@ -4329,7 +4329,7 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
...
@@ -4329,7 +4329,7 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
base_type [(dimension)] [unsigned] [zerofill].
base_type [(dimension)] [unsigned] [zerofill].
For DATA_TYPE column we extract only base type.
For DATA_TYPE column we extract only base type.
*/
*/
tmp_buff
=
strchr
(
type
.
ptr
(),
'('
);
tmp_buff
=
strchr
(
type
.
c_ptr_safe
(),
'('
);
if
(
!
tmp_buff
)
if
(
!
tmp_buff
)
/*
/*
if there is no dimention part then check the presence of
if there is no dimention part then check the presence of
...
...
sql/sql_string.cc
View file @
5811df5d
...
@@ -411,7 +411,7 @@ bool String::append(const String &s)
...
@@ -411,7 +411,7 @@ bool String::append(const String &s)
{
{
if
(
s
.
length
())
if
(
s
.
length
())
{
{
if
(
realloc
(
str_length
+
s
.
length
()))
if
(
realloc
_with_extra_if_needed
(
str_length
+
s
.
length
()))
return
TRUE
;
return
TRUE
;
memcpy
(
Ptr
+
str_length
,
s
.
ptr
(),
s
.
length
());
memcpy
(
Ptr
+
str_length
,
s
.
ptr
(),
s
.
length
());
str_length
+=
s
.
length
();
str_length
+=
s
.
length
();
...
@@ -436,7 +436,7 @@ bool String::append(const char *s,uint32 arg_length)
...
@@ -436,7 +436,7 @@ bool String::append(const char *s,uint32 arg_length)
{
{
uint32
add_length
=
arg_length
*
str_charset
->
mbmaxlen
;
uint32
add_length
=
arg_length
*
str_charset
->
mbmaxlen
;
uint
dummy_errors
;
uint
dummy_errors
;
if
(
realloc
(
str_length
+
add_length
))
if
(
realloc
_with_extra_if_needed
(
str_length
+
add_length
))
return
TRUE
;
return
TRUE
;
str_length
+=
copy_and_convert
(
Ptr
+
str_length
,
add_length
,
str_charset
,
str_length
+=
copy_and_convert
(
Ptr
+
str_length
,
add_length
,
str_charset
,
s
,
arg_length
,
&
my_charset_latin1
,
s
,
arg_length
,
&
my_charset_latin1
,
...
@@ -447,7 +447,7 @@ bool String::append(const char *s,uint32 arg_length)
...
@@ -447,7 +447,7 @@ bool String::append(const char *s,uint32 arg_length)
/*
/*
For an ASCII compatinble string we can just append.
For an ASCII compatinble string we can just append.
*/
*/
if
(
realloc
(
str_length
+
arg_length
))
if
(
realloc
_with_extra_if_needed
(
str_length
+
arg_length
))
return
TRUE
;
return
TRUE
;
memcpy
(
Ptr
+
str_length
,
s
,
arg_length
);
memcpy
(
Ptr
+
str_length
,
s
,
arg_length
);
str_length
+=
arg_length
;
str_length
+=
arg_length
;
...
@@ -478,14 +478,14 @@ bool String::append(const char *s,uint32 arg_length, CHARSET_INFO *cs)
...
@@ -478,14 +478,14 @@ bool String::append(const char *s,uint32 arg_length, CHARSET_INFO *cs)
{
{
uint32
add_length
=
arg_length
/
cs
->
mbminlen
*
str_charset
->
mbmaxlen
;
uint32
add_length
=
arg_length
/
cs
->
mbminlen
*
str_charset
->
mbmaxlen
;
uint
dummy_errors
;
uint
dummy_errors
;
if
(
realloc
(
str_length
+
add_length
))
if
(
realloc
_with_extra_if_needed
(
str_length
+
add_length
))
return
TRUE
;
return
TRUE
;
str_length
+=
copy_and_convert
(
Ptr
+
str_length
,
add_length
,
str_charset
,
str_length
+=
copy_and_convert
(
Ptr
+
str_length
,
add_length
,
str_charset
,
s
,
arg_length
,
cs
,
&
dummy_errors
);
s
,
arg_length
,
cs
,
&
dummy_errors
);
}
}
else
else
{
{
if
(
realloc
(
str_length
+
arg_length
))
if
(
realloc
_with_extra_if_needed
(
str_length
+
arg_length
))
return
TRUE
;
return
TRUE
;
memcpy
(
Ptr
+
str_length
,
s
,
arg_length
);
memcpy
(
Ptr
+
str_length
,
s
,
arg_length
);
str_length
+=
arg_length
;
str_length
+=
arg_length
;
...
@@ -497,7 +497,7 @@ bool String::append(const char *s,uint32 arg_length, CHARSET_INFO *cs)
...
@@ -497,7 +497,7 @@ bool String::append(const char *s,uint32 arg_length, CHARSET_INFO *cs)
#ifdef TO_BE_REMOVED
#ifdef TO_BE_REMOVED
bool
String
::
append
(
FILE
*
file
,
uint32
arg_length
,
myf
my_flags
)
bool
String
::
append
(
FILE
*
file
,
uint32
arg_length
,
myf
my_flags
)
{
{
if
(
realloc
(
str_length
+
arg_length
))
if
(
realloc
_with_extra_if_needed
(
str_length
+
arg_length
))
return
TRUE
;
return
TRUE
;
if
(
my_fread
(
file
,
(
uchar
*
)
Ptr
+
str_length
,
arg_length
,
my_flags
))
if
(
my_fread
(
file
,
(
uchar
*
)
Ptr
+
str_length
,
arg_length
,
my_flags
))
{
{
...
@@ -511,7 +511,7 @@ bool String::append(FILE* file, uint32 arg_length, myf my_flags)
...
@@ -511,7 +511,7 @@ bool String::append(FILE* file, uint32 arg_length, myf my_flags)
bool
String
::
append
(
IO_CACHE
*
file
,
uint32
arg_length
)
bool
String
::
append
(
IO_CACHE
*
file
,
uint32
arg_length
)
{
{
if
(
realloc
(
str_length
+
arg_length
))
if
(
realloc
_with_extra_if_needed
(
str_length
+
arg_length
))
return
TRUE
;
return
TRUE
;
if
(
my_b_read
(
file
,
(
uchar
*
)
Ptr
+
str_length
,
arg_length
))
if
(
my_b_read
(
file
,
(
uchar
*
)
Ptr
+
str_length
,
arg_length
))
{
{
...
@@ -527,7 +527,7 @@ bool String::append_with_prefill(const char *s,uint32 arg_length,
...
@@ -527,7 +527,7 @@ bool String::append_with_prefill(const char *s,uint32 arg_length,
{
{
int
t_length
=
arg_length
>
full_length
?
arg_length
:
full_length
;
int
t_length
=
arg_length
>
full_length
?
arg_length
:
full_length
;
if
(
realloc
(
str_length
+
t_length
))
if
(
realloc
_with_extra_if_needed
(
str_length
+
t_length
))
return
TRUE
;
return
TRUE
;
t_length
=
full_length
-
arg_length
;
t_length
=
full_length
-
arg_length
;
if
(
t_length
>
0
)
if
(
t_length
>
0
)
...
@@ -636,7 +636,7 @@ bool String::replace(uint32 offset,uint32 arg_length,
...
@@ -636,7 +636,7 @@ bool String::replace(uint32 offset,uint32 arg_length,
{
{
if
(
diff
)
if
(
diff
)
{
{
if
(
realloc
(
str_length
+
(
uint32
)
diff
))
if
(
realloc
_with_extra_if_needed
(
str_length
+
(
uint32
)
diff
))
return
TRUE
;
return
TRUE
;
bmove_upp
((
uchar
*
)
Ptr
+
str_length
+
diff
,
(
uchar
*
)
Ptr
+
str_length
,
bmove_upp
((
uchar
*
)
Ptr
+
str_length
+
diff
,
(
uchar
*
)
Ptr
+
str_length
,
str_length
-
offset
-
arg_length
);
str_length
-
offset
-
arg_length
);
...
...
sql/sql_string.h
View file @
5811df5d
...
@@ -53,23 +53,24 @@ uint convert_to_printable(char *to, size_t to_len,
...
@@ -53,23 +53,24 @@ uint convert_to_printable(char *to, size_t to_len,
class
String
class
String
{
{
char
*
Ptr
;
char
*
Ptr
;
uint32
str_length
,
Alloced_length
;
uint32
str_length
,
Alloced_length
,
extra_alloc
;
bool
alloced
;
bool
alloced
;
CHARSET_INFO
*
str_charset
;
CHARSET_INFO
*
str_charset
;
public:
public:
String
()
String
()
{
{
Ptr
=
0
;
str_length
=
Alloced_length
=
0
;
alloced
=
0
;
Ptr
=
0
;
str_length
=
Alloced_length
=
extra_alloc
=
0
;
alloced
=
0
;
str_charset
=
&
my_charset_bin
;
str_charset
=
&
my_charset_bin
;
}
}
String
(
uint32
length_arg
)
String
(
uint32
length_arg
)
{
{
alloced
=
0
;
Alloced_length
=
0
;
(
void
)
real_alloc
(
length_arg
);
alloced
=
0
;
Alloced_length
=
extra_alloc
=
0
;
(
void
)
real_alloc
(
length_arg
);
str_charset
=
&
my_charset_bin
;
str_charset
=
&
my_charset_bin
;
}
}
String
(
const
char
*
str
,
CHARSET_INFO
*
cs
)
String
(
const
char
*
str
,
CHARSET_INFO
*
cs
)
{
{
Ptr
=
(
char
*
)
str
;
str_length
=
(
uint
)
strlen
(
str
);
Alloced_length
=
0
;
alloced
=
0
;
Ptr
=
(
char
*
)
str
;
str_length
=
(
uint32
)
strlen
(
str
);
Alloced_length
=
extra_alloc
=
0
;
alloced
=
0
;
str_charset
=
cs
;
str_charset
=
cs
;
}
}
/*
/*
...
@@ -79,18 +80,18 @@ class String
...
@@ -79,18 +80,18 @@ class String
*/
*/
String
(
const
char
*
str
,
uint32
len
,
CHARSET_INFO
*
cs
)
String
(
const
char
*
str
,
uint32
len
,
CHARSET_INFO
*
cs
)
{
{
Ptr
=
(
char
*
)
str
;
str_length
=
len
;
Alloced_length
=
0
;
alloced
=
0
;
Ptr
=
(
char
*
)
str
;
str_length
=
len
;
Alloced_length
=
extra_alloc
=
0
;
alloced
=
0
;
str_charset
=
cs
;
str_charset
=
cs
;
}
}
String
(
char
*
str
,
uint32
len
,
CHARSET_INFO
*
cs
)
String
(
char
*
str
,
uint32
len
,
CHARSET_INFO
*
cs
)
{
{
Ptr
=
(
char
*
)
str
;
Alloced_length
=
str_length
=
len
;
alloced
=
0
;
Ptr
=
(
char
*
)
str
;
Alloced_length
=
str_length
=
len
;
extra_alloc
=
0
;
alloced
=
0
;
str_charset
=
cs
;
str_charset
=
cs
;
}
}
String
(
const
String
&
str
)
String
(
const
String
&
str
)
{
{
Ptr
=
str
.
Ptr
;
str_length
=
str
.
str_length
;
Ptr
=
str
.
Ptr
;
str_length
=
str
.
str_length
;
Alloced_length
=
str
.
Alloced_length
;
alloced
=
0
;
Alloced_length
=
str
.
Alloced_length
;
extra_alloc
=
0
;
alloced
=
0
;
str_charset
=
str
.
str_charset
;
str_charset
=
str
.
str_charset
;
}
}
static
void
*
operator
new
(
size_t
size
,
MEM_ROOT
*
mem_root
)
throw
()
static
void
*
operator
new
(
size_t
size
,
MEM_ROOT
*
mem_root
)
throw
()
...
@@ -106,8 +107,10 @@ class String
...
@@ -106,8 +107,10 @@ class String
inline
CHARSET_INFO
*
charset
()
const
{
return
str_charset
;
}
inline
CHARSET_INFO
*
charset
()
const
{
return
str_charset
;
}
inline
uint32
length
()
const
{
return
str_length
;}
inline
uint32
length
()
const
{
return
str_length
;}
inline
uint32
alloced_length
()
const
{
return
Alloced_length
;}
inline
uint32
alloced_length
()
const
{
return
Alloced_length
;}
inline
uint32
extra_allocation
()
const
{
return
extra_alloc
;}
inline
char
&
operator
[]
(
uint32
i
)
const
{
return
Ptr
[
i
];
}
inline
char
&
operator
[]
(
uint32
i
)
const
{
return
Ptr
[
i
];
}
inline
void
length
(
uint32
len
)
{
str_length
=
len
;
}
inline
void
length
(
uint32
len
)
{
str_length
=
len
;
}
inline
void
extra_allocation
(
uint32
len
)
{
extra_alloc
=
len
;
}
inline
bool
is_empty
()
const
{
return
(
str_length
==
0
);
}
inline
bool
is_empty
()
const
{
return
(
str_length
==
0
);
}
inline
void
mark_as_const
()
{
Alloced_length
=
0
;}
inline
void
mark_as_const
()
{
Alloced_length
=
0
;}
inline
const
char
*
ptr
()
const
{
return
Ptr
;
}
inline
const
char
*
ptr
()
const
{
return
Ptr
;
}
...
@@ -136,23 +139,21 @@ class String
...
@@ -136,23 +139,21 @@ class String
{
{
DBUG_ASSERT
(
&
str
!=
this
);
DBUG_ASSERT
(
&
str
!=
this
);
free
();
free
();
Ptr
=
(
char
*
)
str
.
ptr
()
+
offset
;
str_length
=
arg_length
;
alloced
=
0
;
Ptr
=
(
char
*
)
str
.
ptr
()
+
offset
;
str_length
=
arg_length
;
if
(
str
.
Alloced_length
)
if
(
str
.
Alloced_length
)
Alloced_length
=
str
.
Alloced_length
-
offset
;
Alloced_length
=
str
.
Alloced_length
-
offset
;
else
Alloced_length
=
0
;
str_charset
=
str
.
str_charset
;
str_charset
=
str
.
str_charset
;
}
}
inline
void
set
(
char
*
str
,
uint32
arg_length
,
CHARSET_INFO
*
cs
)
inline
void
set
(
char
*
str
,
uint32
arg_length
,
CHARSET_INFO
*
cs
)
{
{
free
();
free
();
Ptr
=
(
char
*
)
str
;
str_length
=
Alloced_length
=
arg_length
;
alloced
=
0
;
Ptr
=
(
char
*
)
str
;
str_length
=
Alloced_length
=
arg_length
;
str_charset
=
cs
;
str_charset
=
cs
;
}
}
inline
void
set
(
const
char
*
str
,
uint32
arg_length
,
CHARSET_INFO
*
cs
)
inline
void
set
(
const
char
*
str
,
uint32
arg_length
,
CHARSET_INFO
*
cs
)
{
{
free
();
free
();
Ptr
=
(
char
*
)
str
;
str_length
=
arg_length
;
Alloced_length
=
0
;
alloced
=
0
;
Ptr
=
(
char
*
)
str
;
str_length
=
arg_length
;
str_charset
=
cs
;
str_charset
=
cs
;
}
}
bool
set_ascii
(
const
char
*
str
,
uint32
arg_length
);
bool
set_ascii
(
const
char
*
str
,
uint32
arg_length
);
...
@@ -203,11 +204,11 @@ class String
...
@@ -203,11 +204,11 @@ class String
if
(
alloced
)
if
(
alloced
)
{
{
alloced
=
0
;
alloced
=
0
;
Alloced_length
=
0
;
my_free
(
Ptr
,
MYF
(
0
));
my_free
(
Ptr
,
MYF
(
0
));
Ptr
=
0
;
str_length
=
0
;
/* Safety */
}
}
Alloced_length
=
extra_alloc
=
0
;
Ptr
=
0
;
str_length
=
0
;
/* Safety */
}
}
inline
bool
alloc
(
uint32
arg_length
)
inline
bool
alloc
(
uint32
arg_length
)
{
{
...
@@ -217,9 +218,21 @@ class String
...
@@ -217,9 +218,21 @@ class String
}
}
bool
real_alloc
(
uint32
arg_length
);
// Empties old string
bool
real_alloc
(
uint32
arg_length
);
// Empties old string
bool
realloc
(
uint32
arg_length
);
bool
realloc
(
uint32
arg_length
);
inline
void
shrink
(
uint32
arg_length
)
// Shrink buffer
bool
realloc_with_extra
(
uint32
arg_length
)
{
if
(
extra_alloc
<
4096
)
extra_alloc
=
extra_alloc
*
2
+
128
;
return
realloc
(
arg_length
+
extra_alloc
);
}
bool
realloc_with_extra_if_needed
(
uint32
arg_length
)
{
{
if
(
arg_length
<
Alloced_length
)
if
(
arg_length
<
Alloced_length
)
return
0
;
return
realloc_with_extra
(
arg_length
);
}
inline
void
shrink
(
uint32
arg_length
)
// Shrink buffer
{
if
(
ALIGN_SIZE
(
arg_length
+
1
)
<
Alloced_length
)
{
{
char
*
new_ptr
;
char
*
new_ptr
;
if
(
!
(
new_ptr
=
(
char
*
)
my_realloc
(
Ptr
,
arg_length
,
MYF
(
0
))))
if
(
!
(
new_ptr
=
(
char
*
)
my_realloc
(
Ptr
,
arg_length
,
MYF
(
0
))))
...
@@ -246,7 +259,6 @@ class String
...
@@ -246,7 +259,6 @@ class String
DBUG_ASSERT
(
!
s
.
uses_buffer_owned_by
(
this
));
DBUG_ASSERT
(
!
s
.
uses_buffer_owned_by
(
this
));
free
();
free
();
Ptr
=
s
.
Ptr
;
str_length
=
s
.
str_length
;
Alloced_length
=
s
.
Alloced_length
;
Ptr
=
s
.
Ptr
;
str_length
=
s
.
str_length
;
Alloced_length
=
s
.
Alloced_length
;
alloced
=
0
;
}
}
return
*
this
;
return
*
this
;
}
}
...
@@ -281,7 +293,7 @@ class String
...
@@ -281,7 +293,7 @@ class String
}
}
else
else
{
{
if
(
realloc
(
str_length
+
1
))
if
(
realloc
_with_extra
(
str_length
+
1
))
return
1
;
return
1
;
Ptr
[
str_length
++
]
=
chr
;
Ptr
[
str_length
++
]
=
chr
;
}
}
...
...
sql/sql_test.cc
View file @
5811df5d
...
@@ -57,9 +57,10 @@ print_where(COND *cond,const char *info, enum_query_type query_type)
...
@@ -57,9 +57,10 @@ print_where(COND *cond,const char *info, enum_query_type query_type)
{
{
if
(
cond
)
if
(
cond
)
{
{
char
buff
[
256
];
char
buff
[
1024
];
String
str
(
buff
,(
uint32
)
sizeof
(
buff
),
system_charset_info
);
String
str
(
buff
,(
uint32
)
sizeof
(
buff
),
system_charset_info
);
str
.
length
(
0
);
str
.
length
(
0
);
str
.
extra_allocation
(
1024
);
cond
->
print
(
&
str
,
query_type
);
cond
->
print
(
&
str
,
query_type
);
str
.
append
(
'\0'
);
str
.
append
(
'\0'
);
DBUG_LOCK_FILE
;
DBUG_LOCK_FILE
;
...
...
sql/table.cc
View file @
5811df5d
...
@@ -3328,11 +3328,13 @@ Table_check_intact::check(TABLE *table, const TABLE_FIELD_DEF *table_def)
...
@@ -3328,11 +3328,13 @@ Table_check_intact::check(TABLE *table, const TABLE_FIELD_DEF *table_def)
is backward compatible.
is backward compatible.
*/
*/
}
}
char
buffer
[
STRING_BUFFER_USUAL_SIZE
];
char
buffer
[
1024
];
for
(
i
=
0
;
i
<
table_def
->
count
;
i
++
,
field_def
++
)
for
(
i
=
0
;
i
<
table_def
->
count
;
i
++
,
field_def
++
)
{
{
String
sql_type
(
buffer
,
sizeof
(
buffer
),
system_charset_info
);
String
sql_type
(
buffer
,
sizeof
(
buffer
),
system_charset_info
);
sql_type
.
length
(
0
);
sql_type
.
length
(
0
);
/* Allocate min 256 characters at once */
sql_type
.
extra_allocation
(
256
);
if
(
i
<
table
->
s
->
fields
)
if
(
i
<
table
->
s
->
fields
)
{
{
Field
*
field
=
table
->
field
[
i
];
Field
*
field
=
table
->
field
[
i
];
...
...
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