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
5f556f11
Commit
5f556f11
authored
Jun 26, 2003
by
monty@mashka.mysql.fi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed memory allocation in Unique to not allocate too much memory
parent
7655f05d
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
40 additions
and
28 deletions
+40
-28
myisam/mi_info.c
myisam/mi_info.c
+7
-5
mysys/tree.c
mysys/tree.c
+5
-0
sql/net_serv.cc
sql/net_serv.cc
+3
-0
sql/sql_class.h
sql/sql_class.h
+22
-20
sql/uniques.cc
sql/uniques.cc
+3
-3
No files found.
myisam/mi_info.c
View file @
5f556f11
...
...
@@ -80,15 +80,17 @@ int mi_status(MI_INFO *info, register MI_ISAMINFO *x, uint flag)
(
HA_OPTION_PACK_RECORD
|
HA_OPTION_COMPRESS_RECORD
))
?
0L
:
share
->
base
.
pack_reclength
);
x
->
sortkey
=
-
1
;
/* No clustering */
/* The following should be included even if we are not compiling with
USE_RAID as the client must be able to request it! */
x
->
rec_per_key
=
share
->
state
.
rec_per_key_part
;
x
->
raid_type
=
share
->
base
.
raid_type
;
x
->
raid_chunks
=
share
->
base
.
raid_chunks
;
x
->
raid_chunksize
=
share
->
base
.
raid_chunksize
;
x
->
key_map
=
share
->
state
.
key_map
;
x
->
data_file_name
=
share
->
data_file_name
;
x
->
index_file_name
=
share
->
index_file_name
;
/*
The following should be included even if we are not compiling with
USE_RAID as the client must be able to request it!
*/
x
->
raid_type
=
share
->
base
.
raid_type
;
x
->
raid_chunks
=
share
->
base
.
raid_chunks
;
x
->
raid_chunksize
=
share
->
base
.
raid_chunksize
;
}
if
((
flag
&
HA_STATUS_TIME
)
&&
!
my_fstat
(
info
->
dfile
,
&
state
,
MYF
(
0
)))
x
->
update_time
=
state
.
st_mtime
;
...
...
mysys/tree.c
View file @
5f556f11
...
...
@@ -90,6 +90,11 @@ void init_tree(TREE *tree, uint default_alloc_size, uint memory_limit,
if
(
!
free_element
&&
size
>=
0
&&
((
uint
)
size
<=
sizeof
(
void
*
)
||
((
uint
)
size
&
(
sizeof
(
void
*
)
-
1
))))
{
/*
We know that the data doesn't have to be aligned (like if the key
contains a double), so we can store the data combined with the
TREE_ELEMENT.
*/
tree
->
offset_to_key
=
sizeof
(
TREE_ELEMENT
);
/* Put key after element */
/* Fix allocation size so that we don't lose any memory */
default_alloc_size
/=
(
sizeof
(
TREE_ELEMENT
)
+
size
);
...
...
sql/net_serv.cc
View file @
5f556f11
...
...
@@ -21,6 +21,9 @@
Read packets are reallocated dynamicly when reading big packets.
Each logical packet has the following pre-info:
3 byte length & 1 byte package-number.
This file needs to be written in C as it's used by the libmysql client as a
C file.
*/
#ifdef __WIN__
...
...
sql/sql_class.h
View file @
5f556f11
...
...
@@ -781,11 +781,12 @@ class Unique :public Sql_alloc
TREE
tree
;
byte
*
record_pointers
;
bool
flush
();
uint
size
;
public:
ulong
elements
;
Unique
(
qsort_cmp2
comp_func
,
void
*
comp_func_fixed_arg
,
uint
size
,
ulong
max_in_memory_size_arg
);
uint
size
_arg
,
ulong
max_in_memory_size_arg
);
~
Unique
();
inline
bool
unique_add
(
gptr
ptr
)
{
...
...
@@ -800,26 +801,27 @@ class Unique :public Sql_alloc
friend
int
unique_write_to_ptrs
(
gptr
key
,
element_count
count
,
Unique
*
unique
);
};
class
multi_delete
:
public
select_result
{
TABLE_LIST
*
delete_tables
,
*
table_being_deleted
;
Unique
**
tempfiles
;
THD
*
thd
;
ha_rows
deleted
;
uint
num_of_tables
;
int
error
;
bool
do_delete
,
transactional_tables
,
log_delayed
,
normal_tables
;
public:
multi_delete
(
THD
*
thd
,
TABLE_LIST
*
dt
,
uint
num_of_tables
);
~
multi_delete
();
int
prepare
(
List
<
Item
>
&
list
);
bool
send_fields
(
List
<
Item
>
&
list
,
class
multi_delete
:
public
select_result
{
TABLE_LIST
*
delete_tables
,
*
table_being_deleted
;
Unique
**
tempfiles
;
THD
*
thd
;
ha_rows
deleted
;
uint
num_of_tables
;
int
error
;
bool
do_delete
,
transactional_tables
,
log_delayed
,
normal_tables
;
public:
multi_delete
(
THD
*
thd
,
TABLE_LIST
*
dt
,
uint
num_of_tables
);
~
multi_delete
();
int
prepare
(
List
<
Item
>
&
list
);
bool
send_fields
(
List
<
Item
>
&
list
,
uint
flag
)
{
return
0
;
}
bool
send_data
(
List
<
Item
>
&
items
);
bool
initialize_tables
(
JOIN
*
join
);
void
send_error
(
uint
errcode
,
const
char
*
err
);
int
do_deletes
(
bool
from_send_error
);
bool
send_eof
();
};
bool
send_data
(
List
<
Item
>
&
items
);
bool
initialize_tables
(
JOIN
*
join
);
void
send_error
(
uint
errcode
,
const
char
*
err
);
int
do_deletes
(
bool
from_send_error
);
bool
send_eof
();
};
class
multi_update
:
public
select_result
{
...
...
sql/uniques.cc
View file @
5f556f11
...
...
@@ -49,8 +49,8 @@ int unique_write_to_ptrs(gptr key, element_count count, Unique *unique)
}
Unique
::
Unique
(
qsort_cmp2
comp_func
,
void
*
comp_func_fixed_arg
,
uint
size
,
ulong
max_in_memory_size_arg
)
:
max_in_memory_size
(
max_in_memory_size_arg
),
elements
(
0
)
uint
size
_arg
,
ulong
max_in_memory_size_arg
)
:
max_in_memory_size
(
max_in_memory_size_arg
),
size
(
size_arg
),
elements
(
0
)
{
my_b_clear
(
&
file
);
init_tree
(
&
tree
,
max_in_memory_size
/
16
,
0
,
size
,
comp_func
,
0
,
NULL
,
...
...
@@ -101,7 +101,7 @@ bool Unique::get(TABLE *table)
{
/* Whole tree is in memory; Don't use disk if you don't need to */
if
((
record_pointers
=
table
->
record_pointers
=
(
byte
*
)
my_malloc
(
tree
.
size_of_element
*
tree
.
elements_in_tree
,
MYF
(
0
))))
my_malloc
(
size
*
tree
.
elements_in_tree
,
MYF
(
0
))))
{
(
void
)
tree_walk
(
&
tree
,
(
tree_walk_action
)
unique_write_to_ptrs
,
this
,
left_root_right
);
...
...
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