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
70a0500d
Commit
70a0500d
authored
Mar 09, 2017
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove some InnoDB purge definitions from trx0types.h.
parent
7a30d86e
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
129 additions
and
132 deletions
+129
-132
storage/innobase/include/trx0purge.h
storage/innobase/include/trx0purge.h
+129
-34
storage/innobase/include/trx0types.h
storage/innobase/include/trx0types.h
+0
-98
No files found.
storage/innobase/include/trx0purge.h
View file @
70a0500d
...
...
@@ -113,8 +113,135 @@ purge_state_t
trx_purge_state
(
void
);
/*=================*/
// Forward declaration
struct
TrxUndoRsegsIterator
;
/** Rollback segements from a given transaction with trx-no
scheduled for purge. */
class
TrxUndoRsegs
{
private:
typedef
std
::
vector
<
trx_rseg_t
*
,
ut_allocator
<
trx_rseg_t
*>
>
trx_rsegs_t
;
public:
typedef
trx_rsegs_t
::
iterator
iterator
;
/** Default constructor */
TrxUndoRsegs
()
:
m_trx_no
()
{
}
explicit
TrxUndoRsegs
(
trx_id_t
trx_no
)
:
m_trx_no
(
trx_no
)
{
// Do nothing
}
/** Get transaction number
@return trx_id_t - get transaction number. */
trx_id_t
get_trx_no
()
const
{
return
(
m_trx_no
);
}
/** Add rollback segment.
@param rseg rollback segment to add. */
void
push_back
(
trx_rseg_t
*
rseg
)
{
m_rsegs
.
push_back
(
rseg
);
}
/** Erase the element pointed by given iterator.
@param[in] iterator iterator */
void
erase
(
iterator
&
it
)
{
m_rsegs
.
erase
(
it
);
}
/** Number of registered rsegs.
@return size of rseg list. */
ulint
size
()
const
{
return
(
m_rsegs
.
size
());
}
/**
@return an iterator to the first element */
iterator
begin
()
{
return
(
m_rsegs
.
begin
());
}
/**
@return an iterator to the end */
iterator
end
()
{
return
(
m_rsegs
.
end
());
}
/** Append rollback segments from referred instance to current
instance. */
void
append
(
const
TrxUndoRsegs
&
append_from
)
{
ut_ad
(
get_trx_no
()
==
append_from
.
get_trx_no
());
m_rsegs
.
insert
(
m_rsegs
.
end
(),
append_from
.
m_rsegs
.
begin
(),
append_from
.
m_rsegs
.
end
());
}
/** Compare two TrxUndoRsegs based on trx_no.
@param elem1 first element to compare
@param elem2 second element to compare
@return true if elem1 > elem2 else false.*/
bool
operator
()(
const
TrxUndoRsegs
&
lhs
,
const
TrxUndoRsegs
&
rhs
)
{
return
(
lhs
.
m_trx_no
>
rhs
.
m_trx_no
);
}
/** Compiler defined copy-constructor/assignment operator
should be fine given that there is no reference to a memory
object outside scope of class object.*/
private:
/** The rollback segments transaction number. */
trx_id_t
m_trx_no
;
/** Rollback segments of a transaction, scheduled for purge. */
trx_rsegs_t
m_rsegs
;
};
typedef
std
::
priority_queue
<
TrxUndoRsegs
,
std
::
vector
<
TrxUndoRsegs
,
ut_allocator
<
TrxUndoRsegs
>
>
,
TrxUndoRsegs
>
purge_pq_t
;
/**
Chooses the rollback segment with the smallest trx_no. */
struct
TrxUndoRsegsIterator
{
/** Constructor */
TrxUndoRsegsIterator
(
trx_purge_t
*
purge_sys
);
/** Sets the next rseg to purge in m_purge_sys.
@return page size of the table for which the log is.
NOTE: if rseg is NULL when this function returns this means that
there are no rollback segments to purge and then the returned page
size object should not be used. */
const
page_size_t
set_next
();
private:
// Disable copying
TrxUndoRsegsIterator
(
const
TrxUndoRsegsIterator
&
);
TrxUndoRsegsIterator
&
operator
=
(
const
TrxUndoRsegsIterator
&
);
/** The purge system pointer */
trx_purge_t
*
m_purge_sys
;
/** The current element to process */
TrxUndoRsegs
m_trx_undo_rsegs
;
/** Track the current element in m_trx_undo_rseg */
TrxUndoRsegs
::
iterator
m_iter
;
/** Sentinel value */
static
const
TrxUndoRsegs
NullElement
;
};
/** This is the purge pointer/iterator. We need both the undo no and the
transaction no up to which purge has parsed and applied the records. */
...
...
@@ -467,38 +594,6 @@ struct trx_purge_rec_t {
roll_ptr_t
roll_ptr
;
/*!< File pointr to UNDO record */
};
/**
Chooses the rollback segment with the smallest trx_no. */
struct
TrxUndoRsegsIterator
{
/** Constructor */
TrxUndoRsegsIterator
(
trx_purge_t
*
purge_sys
);
/** Sets the next rseg to purge in m_purge_sys.
@return page size of the table for which the log is.
NOTE: if rseg is NULL when this function returns this means that
there are no rollback segments to purge and then the returned page
size object should not be used. */
const
page_size_t
set_next
();
private:
// Disable copying
TrxUndoRsegsIterator
(
const
TrxUndoRsegsIterator
&
);
TrxUndoRsegsIterator
&
operator
=
(
const
TrxUndoRsegsIterator
&
);
/** The purge system pointer */
trx_purge_t
*
m_purge_sys
;
/** The current element to process */
TrxUndoRsegs
m_trx_undo_rsegs
;
/** Track the current element in m_trx_undo_rseg */
TrxUndoRsegs
::
iterator
m_iter
;
/** Sentinel value */
static
const
TrxUndoRsegs
NullElement
;
};
#ifndef UNIV_NONINL
#include "trx0purge.ic"
#endif
/* UNIV_NOINL */
...
...
storage/innobase/include/trx0types.h
View file @
70a0500d
...
...
@@ -174,104 +174,6 @@ typedef ib_mutex_t UndoMutex;
typedef
ib_mutex_t
PQMutex
;
typedef
ib_mutex_t
TrxSysMutex
;
/** Rollback segements from a given transaction with trx-no
scheduled for purge. */
class
TrxUndoRsegs
{
private:
typedef
std
::
vector
<
trx_rseg_t
*
,
ut_allocator
<
trx_rseg_t
*>
>
trx_rsegs_t
;
public:
typedef
trx_rsegs_t
::
iterator
iterator
;
/** Default constructor */
TrxUndoRsegs
()
:
m_trx_no
()
{
}
explicit
TrxUndoRsegs
(
trx_id_t
trx_no
)
:
m_trx_no
(
trx_no
)
{
// Do nothing
}
/** Get transaction number
@return trx_id_t - get transaction number. */
trx_id_t
get_trx_no
()
const
{
return
(
m_trx_no
);
}
/** Add rollback segment.
@param rseg rollback segment to add. */
void
push_back
(
trx_rseg_t
*
rseg
)
{
m_rsegs
.
push_back
(
rseg
);
}
/** Erase the element pointed by given iterator.
@param[in] iterator iterator */
void
erase
(
iterator
&
it
)
{
m_rsegs
.
erase
(
it
);
}
/** Number of registered rsegs.
@return size of rseg list. */
ulint
size
()
const
{
return
(
m_rsegs
.
size
());
}
/**
@return an iterator to the first element */
iterator
begin
()
{
return
(
m_rsegs
.
begin
());
}
/**
@return an iterator to the end */
iterator
end
()
{
return
(
m_rsegs
.
end
());
}
/** Append rollback segments from referred instance to current
instance. */
void
append
(
const
TrxUndoRsegs
&
append_from
)
{
ut_ad
(
get_trx_no
()
==
append_from
.
get_trx_no
());
m_rsegs
.
insert
(
m_rsegs
.
end
(),
append_from
.
m_rsegs
.
begin
(),
append_from
.
m_rsegs
.
end
());
}
/** Compare two TrxUndoRsegs based on trx_no.
@param elem1 first element to compare
@param elem2 second element to compare
@return true if elem1 > elem2 else false.*/
bool
operator
()(
const
TrxUndoRsegs
&
lhs
,
const
TrxUndoRsegs
&
rhs
)
{
return
(
lhs
.
m_trx_no
>
rhs
.
m_trx_no
);
}
/** Compiler defined copy-constructor/assignment operator
should be fine given that there is no reference to a memory
object outside scope of class object.*/
private:
/** The rollback segments transaction number. */
trx_id_t
m_trx_no
;
/** Rollback segments of a transaction, scheduled for purge. */
trx_rsegs_t
m_rsegs
;
};
typedef
std
::
priority_queue
<
TrxUndoRsegs
,
std
::
vector
<
TrxUndoRsegs
,
ut_allocator
<
TrxUndoRsegs
>
>
,
TrxUndoRsegs
>
purge_pq_t
;
typedef
std
::
vector
<
trx_id_t
,
ut_allocator
<
trx_id_t
>
>
trx_ids_t
;
/** Mapping read-write transactions from id to transaction instance, for
...
...
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