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
db79f4cf
Commit
db79f4cf
authored
Oct 08, 2015
by
Sergei Golubchik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
5.5.45-37.4
parent
1b0c81c9
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
116 additions
and
27 deletions
+116
-27
storage/xtradb/dict/dict0dict.c
storage/xtradb/dict/dict0dict.c
+14
-6
storage/xtradb/include/row0purge.h
storage/xtradb/include/row0purge.h
+12
-1
storage/xtradb/include/srv0srv.h
storage/xtradb/include/srv0srv.h
+0
-1
storage/xtradb/include/univ.i
storage/xtradb/include/univ.i
+1
-1
storage/xtradb/os/os0file.c
storage/xtradb/os/os0file.c
+12
-1
storage/xtradb/row/row0purge.c
storage/xtradb/row/row0purge.c
+77
-16
storage/xtradb/srv/srv0srv.c
storage/xtradb/srv/srv0srv.c
+0
-1
No files found.
storage/xtradb/dict/dict0dict.c
View file @
db79f4cf
...
...
@@ -2667,10 +2667,14 @@ dict_foreign_remove_from_cache(
if
(
rbt
!=
NULL
&&
foreign
->
id
!=
NULL
)
{
const
ib_rbt_node_t
*
node
=
rbt_lookup
(
rbt
,
foreign
->
id
);
dict_foreign_t
*
val
=
*
(
dict_foreign_t
**
)
node
->
value
;
if
(
val
==
foreign
)
{
rbt_delete
(
rbt
,
foreign
->
id
);
if
(
node
!=
NULL
)
{
dict_foreign_t
*
val
=
*
(
dict_foreign_t
**
)
node
->
value
;
if
(
val
==
foreign
)
{
rbt_delete
(
rbt
,
foreign
->
id
);
}
}
}
}
...
...
@@ -2686,10 +2690,14 @@ dict_foreign_remove_from_cache(
if
(
rbt
!=
NULL
&&
foreign
->
id
!=
NULL
)
{
const
ib_rbt_node_t
*
node
=
rbt_lookup
(
rbt
,
foreign
->
id
);
dict_foreign_t
*
val
=
*
(
dict_foreign_t
**
)
node
->
value
;
if
(
val
==
foreign
)
{
rbt_delete
(
rbt
,
foreign
->
id
);
if
(
node
!=
NULL
)
{
dict_foreign_t
*
val
=
*
(
dict_foreign_t
**
)
node
->
value
;
if
(
val
==
foreign
)
{
rbt_delete
(
rbt
,
foreign
->
id
);
}
}
}
}
...
...
storage/xtradb/include/row0purge.h
View file @
db79f4cf
/*****************************************************************************
Copyright (c) 1997, 20
09, Innobase Oy
. All Rights Reserved.
Copyright (c) 1997, 20
15, Oracle and/or its affiliates
. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
...
...
@@ -111,6 +111,17 @@ struct purge_node_struct{
purge of a row */
};
#ifdef UNIV_DEBUG
/***********************************************************//**
Validate the persisent cursor in the purge node. The purge node has two
references to the clustered index record - one via the ref member, and the
other via the persistent cursor. These two references must match each
other if the found_clust flag is set.
@return true if the persistent cursor is consistent with the ref member.*/
ibool
row_purge_validate_pcur
(
purge_node_t
*
node
);
#endif
/* UNIV_DEBUG */
#ifndef UNIV_NONINL
#include "row0purge.ic"
#endif
...
...
storage/xtradb/include/srv0srv.h
View file @
db79f4cf
...
...
@@ -264,7 +264,6 @@ extern ulint srv_ibuf_active_contract;
extern
ulint
srv_ibuf_accel_rate
;
extern
ulint
srv_checkpoint_age_target
;
extern
ulint
srv_flush_neighbor_pages
;
extern
ulint
srv_enable_unsafe_group_commit
;
extern
ulint
srv_read_ahead
;
extern
ulint
srv_adaptive_flushing_method
;
...
...
storage/xtradb/include/univ.i
View file @
db79f4cf
...
...
@@ -64,7 +64,7 @@ component, i.e. we show M.N.P as M.N */
(
INNODB_VERSION_MAJOR
<<
8
|
INNODB_VERSION_MINOR
)
#
ifndef
PERCONA_INNODB_VERSION
#
define
PERCONA_INNODB_VERSION
37.
3
#
define
PERCONA_INNODB_VERSION
37.
4
#
endif
#
define
INNODB_VERSION_STR
MYSQL_SERVER_VERSION
...
...
storage/xtradb/os/os0file.c
View file @
db79f4cf
/***********************************************************************
Copyright (c) 1995, 201
0, Innobase Oy
. All Rights Reserved.
Copyright (c) 1995, 201
5, Oracle and/or its affiliates
. All Rights Reserved.
Copyright (c) 2009, Percona Inc.
Portions of this file contain modifications contributed and copyrighted
...
...
@@ -1288,16 +1288,19 @@ os_file_create_simple_no_error_handling_func(
#else
/* __WIN__ */
os_file_t
file
;
int
create_flag
;
const
char
*
mode_str
=
NULL
;
ut_a
(
name
);
if
(
create_mode
==
OS_FILE_OPEN
)
{
mode_str
=
"OPEN"
;
if
(
access_type
==
OS_FILE_READ_ONLY
)
{
create_flag
=
O_RDONLY
;
}
else
{
create_flag
=
O_RDWR
;
}
}
else
if
(
create_mode
==
OS_FILE_CREATE
)
{
mode_str
=
"CREATE"
;
create_flag
=
O_RDWR
|
O_CREAT
|
O_EXCL
;
}
else
{
create_flag
=
0
;
...
...
@@ -1322,6 +1325,14 @@ os_file_create_simple_no_error_handling_func(
#endif
}
else
{
*
success
=
TRUE
;
/* This function is always called for data files, we should
disable OS caching (O_DIRECT) here as we do in
os_file_create_func(), so we open the same file in the same
mode, see man page of open(2). */
if
(
srv_unix_file_flush_method
==
SRV_UNIX_O_DIRECT
)
{
os_file_set_nocache
(
file
,
name
,
mode_str
);
}
}
return
(
file
);
...
...
storage/xtradb/row/row0purge.c
View file @
db79f4cf
/*****************************************************************************
Copyright (c) 1997, 201
1
, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 1997, 201
5
, Oracle and/or its affiliates. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
...
...
@@ -43,6 +43,7 @@ Created 3/14/1997 Heikki Tuuri
#include "row0vers.h"
#include "row0mysql.h"
#include "log0log.h"
#include "rem0cmp.h"
/*************************************************************************
IMPORTANT NOTE: Any operation that generates redo MUST check that there
...
...
@@ -80,7 +81,7 @@ row_purge_node_create(
/***********************************************************//**
Repositions the pcur in the purge node on the clustered index record,
if found.
if found.
If the record is not found, close pcur.
@return TRUE if the record was found */
static
ibool
...
...
@@ -90,23 +91,28 @@ row_purge_reposition_pcur(
purge_node_t
*
node
,
/*!< in: row purge node */
mtr_t
*
mtr
)
/*!< in: mtr */
{
ibool
found
;
if
(
node
->
found_clust
)
{
found
=
btr_pcur_restore_position
(
mode
,
&
(
node
->
pcur
),
mtr
);
ut_ad
(
row_purge_validate_pcur
(
node
)
);
return
(
found
);
}
node
->
found_clust
=
btr_pcur_restore_position
(
mode
,
&
(
node
->
pcur
),
mtr
);
}
else
{
node
->
found_clust
=
row_search_on_row_ref
(
&
(
node
->
pcur
),
mode
,
node
->
table
,
node
->
ref
,
mtr
);
found
=
row_search_on_row_ref
(
&
(
node
->
pcur
),
mode
,
node
->
table
,
node
->
ref
,
mtr
);
node
->
found_clust
=
found
;
if
(
node
->
found_clust
)
{
btr_pcur_store_position
(
&
(
node
->
pcur
),
mtr
);
}
}
if
(
found
)
{
btr_pcur_store_position
(
&
(
node
->
pcur
),
mtr
);
/* Close the current cursor if we fail to position it correctly. */
if
(
!
node
->
found_clust
)
{
btr_pcur_close
(
&
node
->
pcur
);
}
return
(
found
);
return
(
node
->
found_clust
);
}
/***********************************************************//**
...
...
@@ -143,8 +149,8 @@ row_purge_remove_clust_if_poss_low(
if
(
!
success
)
{
/* The record is already removed */
btr_pcur_commit_specify_mtr
(
pcur
,
&
mtr
);
/* Persistent cursor is closed if reposition fails. */
mtr_commit
(
&
mtr
);
return
(
TRUE
);
}
...
...
@@ -258,7 +264,12 @@ row_purge_poss_sec(
btr_pcur_get_rec
(
&
node
->
pcur
),
&
mtr
,
index
,
entry
);
btr_pcur_commit_specify_mtr
(
&
node
->
pcur
,
&
mtr
);
/* Persistent cursor is closed if reposition fails. */
if
(
node
->
found_clust
)
{
btr_pcur_commit_specify_mtr
(
&
node
->
pcur
,
&
mtr
);
}
else
{
mtr_commit
(
&
mtr
);
}
return
(
can_delete
);
}
...
...
@@ -806,3 +817,53 @@ row_purge_step(
return
(
thr
);
}
#ifdef UNIV_DEBUG
/***********************************************************//**
Validate the persisent cursor in the purge node. The purge node has two
references to the clustered index record - one via the ref member, and the
other via the persistent cursor. These two references must match each
other if the found_clust flag is set.
@return true if the stored copy of persistent cursor is consistent
with the ref member.*/
ibool
row_purge_validate_pcur
(
purge_node_t
*
node
)
{
dict_index_t
*
clust_index
;
ulint
*
offsets
;
int
st
;
if
(
!
node
->
found_clust
)
{
return
(
TRUE
);
}
if
(
node
->
index
==
NULL
)
{
return
(
TRUE
);
}
if
(
node
->
pcur
.
old_stored
!=
BTR_PCUR_OLD_STORED
)
{
return
(
TRUE
);
}
clust_index
=
node
->
pcur
.
btr_cur
.
index
;
offsets
=
rec_get_offsets
(
node
->
pcur
.
old_rec
,
clust_index
,
NULL
,
node
->
pcur
.
old_n_fields
,
&
node
->
heap
);
/* Here we are comparing the purge ref record and the stored initial
part in persistent cursor. Both cases we store n_uniq fields of the
cluster index and so it is fine to do the comparison. We note this
dependency here as pcur and ref belong to different modules. */
st
=
cmp_dtuple_rec
(
node
->
ref
,
node
->
pcur
.
old_rec
,
offsets
);
if
(
st
!=
0
)
{
fprintf
(
stderr
,
"Purge node pcur validation failed
\n
"
);
dtuple_print
(
stderr
,
node
->
ref
);
rec_print
(
stderr
,
node
->
pcur
.
old_rec
,
clust_index
);
return
(
FALSE
);
}
return
(
TRUE
);
}
#endif
/* UNIV_DEBUG */
storage/xtradb/srv/srv0srv.c
View file @
db79f4cf
...
...
@@ -427,7 +427,6 @@ UNIV_INTERN ulint srv_ibuf_accel_rate = 100;
UNIV_INTERN
ulint
srv_checkpoint_age_target
=
0
;
UNIV_INTERN
ulint
srv_flush_neighbor_pages
=
1
;
/* 0:disable 1:area 2:contiguous */
UNIV_INTERN
ulint
srv_enable_unsafe_group_commit
=
0
;
/* 0:disable 1:enable */
UNIV_INTERN
ulint
srv_read_ahead
=
3
;
/* 1: random 2: linear 3: Both */
UNIV_INTERN
ulint
srv_adaptive_flushing_method
=
0
;
/* 0: native 1: estimate 2: keep_average */
...
...
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