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
194593b8
Commit
194593b8
authored
Apr 27, 2005
by
marko@hundin.mysql.fi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix bugs found in previous optimizations.
Make rec_get_deleted_flag() return zero/nonzero instead of FALSE/TRUE.
parent
b3d6f517
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
37 additions
and
36 deletions
+37
-36
innobase/btr/btr0btr.c
innobase/btr/btr0btr.c
+6
-3
innobase/btr/btr0cur.c
innobase/btr/btr0cur.c
+13
-9
innobase/include/page0page.ic
innobase/include/page0page.ic
+1
-1
innobase/include/rem0rec.h
innobase/include/rem0rec.h
+3
-3
innobase/include/rem0rec.ic
innobase/include/rem0rec.ic
+9
-10
innobase/rem/rem0rec.c
innobase/rem/rem0rec.c
+2
-7
innobase/row/row0sel.c
innobase/row/row0sel.c
+1
-1
innobase/row/row0vers.c
innobase/row/row0vers.c
+2
-2
No files found.
innobase/btr/btr0btr.c
View file @
194593b8
...
...
@@ -1273,17 +1273,20 @@ btr_page_get_sure_split_rec(
supremum record of page */
if
(
rec
==
ins_rec
)
{
next_rec
=
NULL
;
rec
=
NULL
;
goto
func_exit
;
}
else
if
(
rec
==
NULL
)
{
next_rec
=
page_rec_get_next
(
ins_rec
);
}
else
{
next_rec
=
page_rec_get_next
(
rec
);
}
if
(
!
page_rec_is_supremum
(
next_rec
)))
{
ut_ad
(
next_rec
);
if
(
!
page_rec_is_supremum
(
next_rec
))
{
rec
=
next_rec
;
}
}
func_exit:
if
(
UNIV_LIKELY_NULL
(
heap
))
{
mem_heap_free
(
heap
);
}
...
...
@@ -1323,7 +1326,7 @@ btr_page_insert_fits(
ut_ad
(
!
split_rec
==
!
offsets
);
ut_ad
(
!
offsets
||
page_is_comp
(
page
)
==
!
!
rec_offs_comp
(
offsets
));
||
!
page_is_comp
(
page
)
==
!
rec_offs_comp
(
offsets
));
ut_ad
(
!
offsets
||
rec_offs_validate
(
split_rec
,
cursor
->
index
,
offsets
));
...
...
innobase/btr/btr0cur.c
View file @
194593b8
...
...
@@ -1426,7 +1426,7 @@ btr_cur_update_in_place(
rec_t
*
rec
;
dulint
roll_ptr
=
ut_dulint_zero
;
trx_t
*
trx
;
ibool
was_delete_marked
;
ulint
was_delete_marked
;
mem_heap_t
*
heap
=
NULL
;
ulint
offsets_
[
REC_OFFS_NORMAL_SIZE
];
ulint
*
offsets
=
offsets_
;
...
...
@@ -1434,6 +1434,7 @@ btr_cur_update_in_place(
rec
=
btr_cur_get_rec
(
cursor
);
index
=
cursor
->
index
;
ut_ad
(
!!
page_rec_is_comp
(
rec
)
==
index
->
table
->
comp
);
trx
=
thr_get_trx
(
thr
);
offsets
=
rec_get_offsets
(
rec
,
index
,
offsets
,
ULINT_UNDEFINED
,
&
heap
);
...
...
@@ -1547,6 +1548,7 @@ btr_cur_optimistic_update(
page
=
btr_cur_get_page
(
cursor
);
rec
=
btr_cur_get_rec
(
cursor
);
index
=
cursor
->
index
;
ut_ad
(
!!
page_rec_is_comp
(
rec
)
==
index
->
table
->
comp
);
heap
=
mem_heap_create
(
1024
);
offsets
=
rec_get_offsets
(
rec
,
index
,
NULL
,
ULINT_UNDEFINED
,
&
heap
);
...
...
@@ -1596,8 +1598,8 @@ btr_cur_optimistic_update(
old_rec_size
=
rec_offs_size
(
offsets
);
new_rec_size
=
rec_get_converted_size
(
index
,
new_entry
);
if
(
new_rec_size
>=
page_get_free_space_of_empty
(
page_is_comp
(
page
))
/
2
)
{
if
(
UNIV_UNLIKELY
(
new_rec_size
>=
page_get_free_space_of_empty
(
page_is_comp
(
page
))
/
2
)
)
{
mem_heap_free
(
heap
);
...
...
@@ -1607,8 +1609,9 @@ btr_cur_optimistic_update(
max_size
=
old_rec_size
+
page_get_max_insert_size_after_reorganize
(
page
,
1
);
if
(
page_get_data_size
(
page
)
-
old_rec_size
+
new_rec_size
<
BTR_CUR_PAGE_COMPRESS_LIMIT
)
{
if
(
UNIV_UNLIKELY
(
page_get_data_size
(
page
)
-
old_rec_size
+
new_rec_size
<
BTR_CUR_PAGE_COMPRESS_LIMIT
))
{
/* The page would become too empty */
...
...
@@ -2034,14 +2037,14 @@ btr_cur_parse_del_mark_set_clust_rec(
page_t
*
page
)
/* in: page or NULL */
{
ulint
flags
;
ibool
val
;
ulint
val
;
ulint
pos
;
dulint
trx_id
;
dulint
roll_ptr
;
ulint
offset
;
rec_t
*
rec
;
ut_ad
(
!!
page_is_comp
(
page
)
==
index
->
table
->
comp
);
ut_ad
(
!
page
||
!
!
page_is_comp
(
page
)
==
index
->
table
->
comp
);
if
(
end_ptr
<
ptr
+
2
)
{
...
...
@@ -2127,6 +2130,7 @@ btr_cur_del_mark_set_clust_rec(
rec
=
btr_cur_get_rec
(
cursor
);
index
=
cursor
->
index
;
ut_ad
(
!!
page_rec_is_comp
(
rec
)
==
index
->
table
->
comp
);
offsets
=
rec_get_offsets
(
rec
,
index
,
offsets
,
ULINT_UNDEFINED
,
&
heap
);
if
(
btr_cur_print_record_ops
&&
thr
)
{
...
...
@@ -2135,7 +2139,7 @@ btr_cur_del_mark_set_clust_rec(
}
ut_ad
(
index
->
type
&
DICT_CLUSTERED
);
ut_ad
(
rec_get_deleted_flag
(
rec
,
index
->
table
->
comp
)
==
FALSE
);
ut_ad
(
!
rec_get_deleted_flag
(
rec
,
rec_offs_comp
(
offsets
))
);
err
=
lock_clust_rec_modify_check_and_lock
(
flags
,
rec
,
index
,
offsets
,
thr
);
...
...
@@ -2230,7 +2234,7 @@ btr_cur_parse_del_mark_set_sec_rec(
byte
*
end_ptr
,
/* in: buffer end */
page_t
*
page
)
/* in: page or NULL */
{
ibool
val
;
ulint
val
;
ulint
offset
;
rec_t
*
rec
;
...
...
innobase/include/page0page.ic
View file @
194593b8
...
...
@@ -593,10 +593,10 @@ page_rec_set_next(
ut_ad(page_rec_check(rec));
ut_ad(!page_rec_is_supremum(rec));
ut_ad(!page_rec_is_infimum(next));
page = ut_align_down(rec, UNIV_PAGE_SIZE);
if (next) {
ut_ad(!page_rec_is_infimum(next));
ut_a(page == ut_align_down(next, UNIV_PAGE_SIZE));
offs = (ulint) (next - page);
} else {
...
...
innobase/include/rem0rec.h
View file @
194593b8
...
...
@@ -162,10 +162,10 @@ rec_set_info_and_status_bits(
/**********************************************************
The following function tells if record is delete marked. */
UNIV_INLINE
ibool
ulint
rec_get_deleted_flag
(
/*=================*/
/* out:
TRUE
if delete marked */
/* out:
nonzero
if delete marked */
rec_t
*
rec
,
/* in: physical record */
ulint
comp
);
/* in: nonzero=compact page format */
/**********************************************************
...
...
@@ -176,7 +176,7 @@ rec_set_deleted_flag(
/*=================*/
rec_t
*
rec
,
/* in: physical record */
ulint
comp
,
/* in: nonzero=compact page format */
ibool
flag
);
/* in: TRUE
if delete marked */
ulint
flag
);
/* in: nonzero
if delete marked */
/**********************************************************
The following function tells if a new-style record is a node pointer. */
UNIV_INLINE
...
...
innobase/include/rem0rec.ic
View file @
194593b8
...
...
@@ -578,19 +578,21 @@ rec_set_info_and_status_bits(
/**********************************************************
The following function tells if record is delete marked. */
UNIV_INLINE
ibool
ulint
rec_get_deleted_flag(
/*=================*/
/* out:
TRUE
if delete marked */
/* out:
nonzero
if delete marked */
rec_t* rec, /* in: physical record */
ulint comp) /* in: nonzero=compact page format */
{
if (UNIV_EXPECT(comp, REC_OFFS_COMPACT)) {
return(0 != rec_get_bit_field_1(rec, REC_NEW_INFO_BITS,
REC_INFO_DELETED_FLAG, REC_INFO_BITS_SHIFT));
return(UNIV_UNLIKELY(rec_get_bit_field_1(rec,
REC_NEW_INFO_BITS, REC_INFO_DELETED_FLAG,
REC_INFO_BITS_SHIFT)));
} else {
return(0 != rec_get_bit_field_1(rec, REC_OLD_INFO_BITS,
REC_INFO_DELETED_FLAG, REC_INFO_BITS_SHIFT));
return(UNIV_UNLIKELY(rec_get_bit_field_1(rec,
REC_OLD_INFO_BITS, REC_INFO_DELETED_FLAG,
REC_INFO_BITS_SHIFT)));
}
}
...
...
@@ -602,13 +604,10 @@ rec_set_deleted_flag(
/*=================*/
rec_t* rec, /* in: physical record */
ulint comp, /* in: nonzero=compact page format */
ibool flag) /* in: TRUE
if delete marked */
ulint flag) /* in: nonzero
if delete marked */
{
ulint val;
ut_ad(TRUE == 1);
ut_ad(flag <= TRUE);
val = rec_get_info_bits(rec, comp);
if (flag) {
...
...
innobase/rem/rem0rec.c
View file @
194593b8
...
...
@@ -218,20 +218,15 @@ rec_init_offsets(
We do not advance offs, and we set
the length to zero and enable the
SQL NULL flag in offsets[]. */
len
=
REC_OFFS_SQL_NULL
;
len
=
offs
|
REC_OFFS_SQL_NULL
;
goto
resolved
;
}
null_mask
<<=
1
;
ut_ad
(
!
field
->
fixed_len
);
goto
variable_length
;
}
if
(
UNIV_UNLIKELY
(
!
field
->
fixed_len
))
{
dtype_t
*
type
;
variable_length:
/* Variable-length field: read the length */
type
=
dict_col_get_type
(
dtype_t
*
type
=
dict_col_get_type
(
dict_field_get_col
(
field
));
len
=
*
lens
--
;
if
(
UNIV_UNLIKELY
(
dtype_get_len
(
type
)
>
255
)
...
...
innobase/row/row0sel.c
View file @
194593b8
...
...
@@ -3459,7 +3459,7 @@ rec_loop:
/* PHASE 4: Look for matching records in a loop */
rec
=
btr_pcur_get_rec
(
pcur
);
ut_ad
(
!
page_rec_is_comp
(
rec
)
==
!
index
->
table
->
comp
);
ut_ad
(
!
!
page_rec_is_comp
(
rec
)
==
index
->
table
->
comp
);
#ifdef UNIV_SEARCH_DEBUG
/*
fputs("Using ", stderr);
...
...
innobase/row/row0vers.c
View file @
194593b8
...
...
@@ -57,8 +57,8 @@ row_vers_impl_x_locked_off_kernel(
dtuple_t
*
entry
=
NULL
;
/* assignment to eliminate compiler
warning */
trx_t
*
trx
;
ibool
vers_del
;
ibool
rec_del
;
ulint
vers_del
;
ulint
rec_del
;
ulint
err
;
mtr_t
mtr
;
ulint
comp
;
...
...
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