mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 19:41:47 +01:00
1865d59b7a
------------------------------------------------------------------------ r4530 | marko | 2009-03-24 14:02:29 +0200 (Tue, 24 Mar 2009) | 3 lines branches/zip: Remove references to UNIV_HOTBACKUP from files that are not used when building InnoDB Hot Backup. Declare innobase_invalidate_query_cache() in ha_prototypes.h. ------------------------------------------------------------------------ r4531 | marko | 2009-03-24 15:46:12 +0200 (Tue, 24 Mar 2009) | 7 lines branches/zip: Note that buf_page_t::list and buf_page_t::in_flush_list are only protected by buf_pool_mutex, not by the block mutex. buf_page_release(): Remove the assertion on in_flush_list. The function is only holding block->mutex, not buf_pool_mutex. This was reported by Sunny. This was the only piece of code that accessed in_flush_list while not holding buf_pool_mutex. ------------------------------------------------------------------------ r4532 | calvin | 2009-03-24 17:59:45 +0200 (Tue, 24 Mar 2009) | 13 lines branches/zip: Mantis issue #201 - remove innodb_plugin_init() due to new option --ignore_builtin_innodb Starting 5.1.33, MySQL has a new option --ignore_builtin_innodb for using the dynamic plugin. It is required to remove innodb_plugin_init() in the plugin. This patch removes innodb_plugin_init() as well as functions, variables used by innodb_plugin_init(). rb://98 Approved by: Marko ------------------------------------------------------------------------ r4543 | inaam | 2009-03-25 19:18:33 +0200 (Wed, 25 Mar 2009) | 17 lines branches/zip SHOW ENGINE INNODB MUTEX shows all mutexes and rw_locks. This can be overwhelming particularly when the buffer pool is very large (note that each block in buffer pool has at least one mutex, one rw_lock and an additional mutex if rw_lock does not use atomics). With this patch status of following mutexes and rw-locks is not shown: 1) block->mutex 2) block->lock 3) block->lock->mutex (if applicable) 4) All other mutexes and rw-locks for which number of os-waits are zero Addresses issue# 179 rb://99 Approved by: Marko ------------------------------------------------------------------------ r4579 | marko | 2009-03-31 10:40:58 +0300 (Tue, 31 Mar 2009) | 3 lines branches/zip: struct read_view_struct: Add clarifying comments about low_limit_id and up_limit_id. ------------------------------------------------------------------------ r4630 | calvin | 2009-04-02 15:46:47 +0300 (Thu, 02 Apr 2009) | 6 lines branches/zip: Mantis issue #197 - Make srv_spin_wait_delay configurable New parameter innodb_spin_wait_delay to set the maximum delay between polling for a spin lock. 5 is the default. Approved by: Marko (on IM) ------------------------------------------------------------------------ r4631 | marko | 2009-04-02 16:23:12 +0300 (Thu, 02 Apr 2009) | 24 lines branches/zip: Refuse to use newly created indexes that may lack history. This addresses Mantis issue #116. dict_index_t: Enable the storage of trx_id. row_prebuilt_t: Make many fields bit-fields to reduce the memory footprint. Add index_usable. ha_innobase::change_active_index(): Check if the index is usable and set prebuilt->index_usable accordingly. Unfortunately, the return status of this function is ignored by MySQL, and the actual refusal to use the index must be made in row_search_for_mysql(). row_search_for_mysql(): Return DB_MISSING_HISTORY if !prebuilt->index_usable. convert_error_code_to_mysql(): Map DB_MISSING_HISTORY to HA_ERR_TABLE_DEF_CHANGED. innodb-index.test: Add a test case where access to a newly created secondary index must be blocked for old transactions. rb://100 approved by Heikki Tuuri ------------------------------------------------------------------------ r4647 | vasil | 2009-04-06 10:05:25 +0300 (Mon, 06 Apr 2009) | 4 lines branches/zip: Add changelog entry for c4630. ------------------------------------------------------------------------ r4648 | vasil | 2009-04-06 10:07:26 +0300 (Mon, 06 Apr 2009) | 4 lines branches/zip: Fix formatting in ChangeLog to be consistent. ------------------------------------------------------------------------ r4657 | marko | 2009-04-06 15:13:45 +0300 (Mon, 06 Apr 2009) | 1 line branches/zip: Remove the bogus failure reported in Issue #219. ------------------------------------------------------------------------
186 lines
6.7 KiB
C
186 lines
6.7 KiB
C
/*****************************************************************************
|
|
|
|
Copyright (c) 1997, 2009, Innobase Oy. 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
|
|
Foundation; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
|
Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
*****************************************************************************/
|
|
|
|
/******************************************************
|
|
Cursor read
|
|
|
|
Created 2/16/1997 Heikki Tuuri
|
|
*******************************************************/
|
|
|
|
#ifndef read0read_h
|
|
#define read0read_h
|
|
|
|
#include "univ.i"
|
|
|
|
|
|
#include "ut0byte.h"
|
|
#include "ut0lst.h"
|
|
#include "trx0trx.h"
|
|
#include "read0types.h"
|
|
|
|
/*************************************************************************
|
|
Opens a read view where exactly the transactions serialized before this
|
|
point in time are seen in the view. */
|
|
UNIV_INTERN
|
|
read_view_t*
|
|
read_view_open_now(
|
|
/*===============*/
|
|
/* out, own: read view struct */
|
|
dulint cr_trx_id, /* in: trx_id of creating
|
|
transaction, or (0, 0) used in
|
|
purge */
|
|
mem_heap_t* heap); /* in: memory heap from which
|
|
allocated */
|
|
/*************************************************************************
|
|
Makes a copy of the oldest existing read view, or opens a new. The view
|
|
must be closed with ..._close. */
|
|
UNIV_INTERN
|
|
read_view_t*
|
|
read_view_oldest_copy_or_open_new(
|
|
/*==============================*/
|
|
/* out, own: read view struct */
|
|
dulint cr_trx_id, /* in: trx_id of creating
|
|
transaction, or (0, 0) used in
|
|
purge */
|
|
mem_heap_t* heap); /* in: memory heap from which
|
|
allocated */
|
|
/*************************************************************************
|
|
Closes a read view. */
|
|
UNIV_INTERN
|
|
void
|
|
read_view_close(
|
|
/*============*/
|
|
read_view_t* view); /* in: read view */
|
|
/*************************************************************************
|
|
Closes a consistent read view for MySQL. This function is called at an SQL
|
|
statement end if the trx isolation level is <= TRX_ISO_READ_COMMITTED. */
|
|
UNIV_INTERN
|
|
void
|
|
read_view_close_for_mysql(
|
|
/*======================*/
|
|
trx_t* trx); /* in: trx which has a read view */
|
|
/*************************************************************************
|
|
Checks if a read view sees the specified transaction. */
|
|
UNIV_INLINE
|
|
ibool
|
|
read_view_sees_trx_id(
|
|
/*==================*/
|
|
/* out: TRUE if sees */
|
|
read_view_t* view, /* in: read view */
|
|
dulint trx_id);/* in: trx id */
|
|
/*************************************************************************
|
|
Prints a read view to stderr. */
|
|
UNIV_INTERN
|
|
void
|
|
read_view_print(
|
|
/*============*/
|
|
read_view_t* view); /* in: read view */
|
|
/*************************************************************************
|
|
Create a consistent cursor view for mysql to be used in cursors. In this
|
|
consistent read view modifications done by the creating transaction or future
|
|
transactions are not visible. */
|
|
UNIV_INTERN
|
|
cursor_view_t*
|
|
read_cursor_view_create_for_mysql(
|
|
/*==============================*/
|
|
trx_t* cr_trx);/* in: trx where cursor view is created */
|
|
/*************************************************************************
|
|
Close a given consistent cursor view for mysql and restore global read view
|
|
back to a transaction read view. */
|
|
UNIV_INTERN
|
|
void
|
|
read_cursor_view_close_for_mysql(
|
|
/*=============================*/
|
|
trx_t* trx, /* in: trx */
|
|
cursor_view_t* curview); /* in: cursor view to be closed */
|
|
/*************************************************************************
|
|
This function sets a given consistent cursor view to a transaction
|
|
read view if given consistent cursor view is not NULL. Otherwise, function
|
|
restores a global read view to a transaction read view. */
|
|
UNIV_INTERN
|
|
void
|
|
read_cursor_set_for_mysql(
|
|
/*======================*/
|
|
trx_t* trx, /* in: transaction where cursor is set */
|
|
cursor_view_t* curview);/* in: consistent cursor view to be set */
|
|
|
|
/* Read view lists the trx ids of those transactions for which a consistent
|
|
read should not see the modifications to the database. */
|
|
|
|
struct read_view_struct{
|
|
ulint type; /* VIEW_NORMAL, VIEW_HIGH_GRANULARITY */
|
|
dulint undo_no; /* (0, 0) or if type is VIEW_HIGH_GRANULARITY
|
|
transaction undo_no when this high-granularity
|
|
consistent read view was created */
|
|
dulint low_limit_no; /* The view does not need to see the undo
|
|
logs for transactions whose transaction number
|
|
is strictly smaller (<) than this value: they
|
|
can be removed in purge if not needed by other
|
|
views */
|
|
dulint low_limit_id; /* The read should not see any transaction
|
|
with trx id >= this value. In other words,
|
|
this is the "high water mark". */
|
|
dulint up_limit_id; /* The read should see all trx ids which
|
|
are strictly smaller (<) than this value.
|
|
In other words,
|
|
this is the "low water mark". */
|
|
ulint n_trx_ids; /* Number of cells in the trx_ids array */
|
|
dulint* trx_ids; /* Additional trx ids which the read should
|
|
not see: typically, these are the active
|
|
transactions at the time when the read is
|
|
serialized, except the reading transaction
|
|
itself; the trx ids in this array are in a
|
|
descending order. These trx_ids should be
|
|
between the "low" and "high" water marks,
|
|
that is, up_limit_id and low_limit_id. */
|
|
dulint creator_trx_id; /* trx id of creating transaction, or
|
|
(0, 0) used in purge */
|
|
UT_LIST_NODE_T(read_view_t) view_list;
|
|
/* List of read views in trx_sys */
|
|
};
|
|
|
|
/* Read view types */
|
|
#define VIEW_NORMAL 1 /* Normal consistent read view
|
|
where transaction does not see changes
|
|
made by active transactions except
|
|
creating transaction. */
|
|
#define VIEW_HIGH_GRANULARITY 2 /* High-granularity read view where
|
|
transaction does not see changes
|
|
made by active transactions and own
|
|
changes after a point in time when this
|
|
read view was created. */
|
|
|
|
/* Implement InnoDB framework to support consistent read views in
|
|
cursors. This struct holds both heap where consistent read view
|
|
is allocated and pointer to a read view. */
|
|
|
|
struct cursor_view_struct{
|
|
mem_heap_t* heap;
|
|
/* Memory heap for the cursor view */
|
|
read_view_t* read_view;
|
|
/* Consistent read view of the cursor*/
|
|
ulint n_mysql_tables_in_use;
|
|
/* number of Innobase tables used in the
|
|
processing of this cursor */
|
|
};
|
|
|
|
#ifndef UNIV_NONINL
|
|
#include "read0read.ic"
|
|
#endif
|
|
|
|
#endif
|