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
00196be7
Commit
00196be7
authored
May 04, 2010
by
Jimmy Yang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix bug #53165, Setting innodb_change_buffering=DEFAULT produces incorrect result.
rb://295
approved by Marko
parent
6327a4f0
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
58 additions
and
21 deletions
+58
-21
storage/innobase/handler/ha_innodb.cc
storage/innobase/handler/ha_innodb.cc
+58
-21
No files found.
storage/innobase/handler/ha_innodb.cc
View file @
00196be7
...
@@ -10543,7 +10543,35 @@ innodb_old_blocks_pct_update(
...
@@ -10543,7 +10543,35 @@ innodb_old_blocks_pct_update(
}
}
/*************************************************************//**
/*************************************************************//**
Check if it is a valid value of innodb_change_buffering. This function is
Find the corresponding ibuf_use_t value that indexes into
innobase_change_buffering_values[] array for the input
change buffering option name.
@return corresponding IBUF_USE_* value for the input variable
name, or IBUF_USE_COUNT if not able to find a match */
static
ibuf_use_t
innodb_find_change_buffering_value
(
/*===============================*/
const
char
*
input_name
)
/*!< in: input change buffering
option name */
{
ulint
use
;
for
(
use
=
0
;
use
<
UT_ARR_SIZE
(
innobase_change_buffering_values
);
use
++
)
{
/* found a match */
if
(
!
innobase_strcasecmp
(
input_name
,
innobase_change_buffering_values
[
use
]))
{
return
((
ibuf_use_t
)
use
);
}
}
/* Did not find any match */
return
(
IBUF_USE_COUNT
);
}
/*************************************************************//**
Check if it is a valid value of innodb_change_buffering. This function is
registered as a callback with MySQL.
registered as a callback with MySQL.
@return 0 for valid innodb_change_buffering */
@return 0 for valid innodb_change_buffering */
static
static
...
@@ -10567,19 +10595,22 @@ innodb_change_buffering_validate(
...
@@ -10567,19 +10595,22 @@ innodb_change_buffering_validate(
change_buffering_input
=
value
->
val_str
(
value
,
buff
,
&
len
);
change_buffering_input
=
value
->
val_str
(
value
,
buff
,
&
len
);
if
(
change_buffering_input
!=
NULL
)
{
if
(
change_buffering_input
!=
NULL
)
{
ulin
t
use
;
ibuf_use_
t
use
;
for
(
use
=
0
;
use
<
UT_ARR_SIZE
(
innobase_change_buffering_values
);
use
=
innodb_find_change_buffering_value
(
use
++
)
{
change_buffering_input
);
if
(
!
innobase_strcasecmp
(
change_buffering_input
,
if
(
use
!=
IBUF_USE_COUNT
)
{
innobase_change_buffering_values
[
use
]))
{
/* Find a matching change_buffering option value. */
*
(
ibuf_use_t
*
)
save
=
(
ibuf_use_t
)
use
;
*
static_cast
<
const
char
**>
(
save
)
=
return
(
0
);
innobase_change_buffering_values
[
use
];
}
return
(
0
);
}
}
}
}
/* No corresponding change buffering option for user supplied
"change_buffering_input" */
return
(
1
);
return
(
1
);
}
}
...
@@ -10590,21 +10621,27 @@ static
...
@@ -10590,21 +10621,27 @@ static
void
void
innodb_change_buffering_update
(
innodb_change_buffering_update
(
/*===========================*/
/*===========================*/
THD
*
thd
,
/*!< in: thread handle */
THD
*
thd
,
/*!< in: thread handle */
struct
st_mysql_sys_var
*
var
,
/*!< in: pointer to
struct
st_mysql_sys_var
*
var
,
/*!< in: pointer to
system variable */
system variable */
void
*
var_ptr
,
/*!< out: where the
void
*
var_ptr
,
/*!< out: where the
formal string goes */
formal string goes */
const
void
*
save
)
/*!< in: immediate result
const
void
*
save
)
/*!< in: immediate result
from check function */
from check function */
{
{
ibuf_use_t
use
;
ut_a
(
var_ptr
!=
NULL
);
ut_a
(
var_ptr
!=
NULL
);
ut_a
(
save
!=
NULL
);
ut_a
(
save
!=
NULL
);
ut_a
((
*
(
ibuf_use_t
*
)
save
)
<
IBUF_USE_COUNT
);
ibuf_use
=
*
(
const
ibuf_use_t
*
)
save
;
use
=
innodb_find_change_buffering_value
(
*
static_cast
<
const
char
*
const
*>
(
save
));
ut_a
(
use
<
IBUF_USE_COUNT
);
*
(
const
char
**
)
var_ptr
=
innobase_change_buffering_values
[
ibuf_use
];
ibuf_use
=
use
;
*
static_cast
<
const
char
**>
(
var_ptr
)
=
*
static_cast
<
const
char
*
const
*>
(
save
);
}
}
static
int
show_innodb_vars
(
THD
*
thd
,
SHOW_VAR
*
var
,
char
*
buff
)
static
int
show_innodb_vars
(
THD
*
thd
,
SHOW_VAR
*
var
,
char
*
buff
)
...
@@ -10959,7 +10996,7 @@ static MYSQL_SYSVAR_STR(change_buffering, innobase_change_buffering,
...
@@ -10959,7 +10996,7 @@ static MYSQL_SYSVAR_STR(change_buffering, innobase_change_buffering,
"Buffer changes to reduce random access: "
"Buffer changes to reduce random access: "
"OFF, ON, inserting, deleting, changing, or purging."
,
"OFF, ON, inserting, deleting, changing, or purging."
,
innodb_change_buffering_validate
,
innodb_change_buffering_validate
,
innodb_change_buffering_update
,
NULL
);
innodb_change_buffering_update
,
"all"
);
static
MYSQL_SYSVAR_ULONG
(
read_ahead_threshold
,
srv_read_ahead_threshold
,
static
MYSQL_SYSVAR_ULONG
(
read_ahead_threshold
,
srv_read_ahead_threshold
,
PLUGIN_VAR_RQCMDARG
,
PLUGIN_VAR_RQCMDARG
,
...
...
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