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
e487aad9
Commit
e487aad9
authored
Aug 03, 2005
by
lenz@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge lgrimmer@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/space/my/mysql-5.0
parents
eab37e1d
2895faed
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
98 additions
and
57 deletions
+98
-57
innobase/buf/buf0buf.c
innobase/buf/buf0buf.c
+9
-0
innobase/include/read0read.h
innobase/include/read0read.h
+3
-5
innobase/include/trx0trx.h
innobase/include/trx0trx.h
+5
-6
innobase/read/read0read.c
innobase/read/read0read.c
+3
-3
innobase/row/row0sel.c
innobase/row/row0sel.c
+10
-2
innobase/srv/srv0srv.c
innobase/srv/srv0srv.c
+4
-0
innobase/srv/srv0start.c
innobase/srv/srv0start.c
+10
-0
innobase/trx/trx0trx.c
innobase/trx/trx0trx.c
+4
-16
sql/ha_innodb.cc
sql/ha_innodb.cc
+38
-16
sql/ha_innodb.h
sql/ha_innodb.h
+12
-9
No files found.
innobase/buf/buf0buf.c
View file @
e487aad9
...
...
@@ -1776,6 +1776,15 @@ buf_page_create(
buf_flush_free_margin
();
frame
=
block
->
frame
;
/* Reset to zero the file flush lsn field in the page; if the first
page of an ibdata file is 'created' in this function into the buffer
pool then we lose the original contents of the file flush lsn stamp.
Then InnoDB could in a crash recovery print a big, false, corruption
warning if the stamp contains an lsn bigger than the ib_logfile lsn. */
memset
(
frame
+
FIL_PAGE_FILE_FLUSH_LSN
,
0
,
8
);
#ifdef UNIV_DEBUG
buf_dbg_counter
++
;
...
...
innobase/include/read0read.h
View file @
e487aad9
...
...
@@ -68,7 +68,6 @@ 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
...
...
@@ -78,10 +77,9 @@ 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 and restore global read view
back to a transaction. */
Close a given consistent cursor view for
mysql
and restore global read view
back to a transaction
read view
. */
void
read_cursor_view_close_for_mysql
(
...
...
@@ -90,7 +88,7 @@ read_cursor_view_close_for_mysql(
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. Otherwic
e, function
read view if given consistent cursor view is not
NULL. Otherwis
e, function
restores a global read view to a transaction read view. */
void
...
...
innobase/include/trx0trx.h
View file @
e487aad9
...
...
@@ -606,14 +606,13 @@ struct trx_struct{
/* memory heap for the global read
view */
read_view_t
*
global_read_view
;
/* consistent read view used in the
transaction is stored here if
transaction is using a consistent
read view associated to a cursor */
/* consistent read view associated
to a transaction or NULL */
read_view_t
*
read_view
;
/* consistent read view used in the
transaction or NULL, this read view
can be normal read view associated
to a transaction or read view
if defined can be normal read view
associated to a transaction (i.e.
same as global_read_view) or read view
associated to a cursor */
/*------------------------------*/
UT_LIST_BASE_NODE_T
(
trx_named_savept_t
)
...
...
innobase/read/read0read.c
View file @
e487aad9
...
...
@@ -347,8 +347,8 @@ read_cursor_view_create_for_mysql(
}
/*************************************************************************
Close a given consistent cursor view for and restore global read view
back to a transaction. */
Close a given consistent cursor view for
mysql
and restore global read view
back to a transaction
read view
. */
void
read_cursor_view_close_for_mysql
(
...
...
@@ -372,7 +372,7 @@ read_cursor_view_close_for_mysql(
/*************************************************************************
This function sets a given consistent cursor view to a transaction
read view if given consistent cursor view is not
null. Otherwic
e, function
read view if given consistent cursor view is not
NULL. Otherwis
e, function
restores a global read view to a transaction read view. */
void
...
...
innobase/row/row0sel.c
View file @
e487aad9
...
...
@@ -3100,6 +3100,13 @@ row_search_for_mysql(
"http://dev.mysql.com/doc/mysql/en/InnoDB_troubleshooting_datadict.html
\n
"
"InnoDB: how you can resolve the problem.
\n
"
,
prebuilt
->
table
->
name
);
/* Restore a global read view back to a transaction. This
forces MySQL always to set a cursor view before fetch from
a cursor. */
trx
->
read_view
=
trx
->
global_read_view
;
return
(
DB_ERROR
);
}
...
...
@@ -4091,8 +4098,9 @@ normal_return:
}
func_exit:
/* Restore a global read view back to transaction. This forces
MySQL always to set cursor view before fetch if it is used. */
/* Restore a global read view back to a transaction. This
forces MySQL always to set a cursor view before fetch from
a cursor. */
trx
->
read_view
=
trx
->
global_read_view
;
...
...
innobase/srv/srv0srv.c
View file @
e487aad9
...
...
@@ -1711,6 +1711,10 @@ srv_printf_innodb_monitor(
fprintf
(
file
,
"%ld queries inside InnoDB, %lu queries in queue
\n
"
,
(
long
)
srv_conc_n_threads
,
(
ulong
)
srv_conc_n_waiting_threads
);
fprintf
(
file
,
"%lu read views open inside InnoDB
\n
"
,
UT_LIST_GET_LEN
(
trx_sys
->
view_list
));
n_reserved
=
fil_space_get_n_reserved_extents
(
0
);
if
(
n_reserved
>
0
)
{
fprintf
(
file
,
...
...
innobase/srv/srv0start.c
View file @
e487aad9
...
...
@@ -1833,6 +1833,16 @@ innobase_shutdown_for_mysql(void)
srv_free
();
os_sync_free
();
/* Check that all read views are closed except read view owned
by a purge. */
if
(
UT_LIST_GET_LEN
(
trx_sys
->
view_list
)
>
1
)
{
fprintf
(
stderr
,
"InnoDB: Error: all read views were not closed before shutdown:
\n
"
"InnoDB: %lu read views open
\n
"
,
UT_LIST_GET_LEN
(
trx_sys
->
view_list
)
-
1
);
}
/* 5. Free all allocated memory and the os_fast_mutex created in
ut0mem.c */
...
...
innobase/trx/trx0trx.c
View file @
e487aad9
...
...
@@ -833,26 +833,14 @@ trx_commit_off_kernel(
lock_release_off_kernel
(
trx
);
if
(
trx
->
read_view
)
{
/* If transaction has a global read view this case
means that transaction has been using a consistent
read view associated to a cursor. Only the global
read view associated to a transaction is closed
and read view is then removed from the transaction.
If read view associated to a cursor is still used
it must be re-registered to another transaction. */
if
(
UNIV_LIKELY_NULL
(
trx
->
global_read_view
))
{
trx
->
read_view
=
trx
->
global_read_view
;
}
read_view_close
(
trx
->
read_view
);
if
(
trx
->
global_read_view
)
{
read_view_close
(
trx
->
global_read_view
);
mem_heap_empty
(
trx
->
global_read_view_heap
);
trx
->
read_view
=
NULL
;
trx
->
global_read_view
=
NULL
;
}
trx
->
read_view
=
NULL
;
if
(
must_flush_log
)
{
mutex_exit
(
&
kernel_mutex
);
...
...
sql/ha_innodb.cc
View file @
e487aad9
...
...
@@ -538,7 +538,7 @@ innobase_mysql_prepare_print_arbitrary_thd(void)
}
/*****************************************************************
Relases the mutex reserved by innobase_mysql_prepare_print_arbitrary_thd().
Rel
e
ases the mutex reserved by innobase_mysql_prepare_print_arbitrary_thd().
NOTE that /mysql/innobase/lock/lock0lock.c must contain the prototype for this
function! */
extern
"C"
...
...
@@ -1700,7 +1700,7 @@ innobase_store_binlog_offset_and_flush_log(
/* Commits the mini-transaction */
mtr_commit(&mtr);
/* Syncronous flush of the log buffer to disk */
/* Sync
h
ronous flush of the log buffer to disk */
log_buffer_flush_to_disk();
}
#endif
...
...
@@ -2132,15 +2132,34 @@ innobase_savepoint(
/*********************************************************************
Frees a possible InnoDB trx object associated with the current THD. */
static
int
static
int
innobase_close_connection
(
/*======================*/
/* out: 0 or error number */
THD
*
thd
)
/* in: handle to the MySQL thread of the user
whose resources should be free'd */
{
trx_free_for_mysql
((
trx_t
*
)
thd
->
ha_data
[
innobase_hton
.
slot
]);
trx_t
*
trx
;
trx
=
(
trx_t
*
)
thd
->
ha_data
[
innobase_hton
.
slot
];
ut_a
(
trx
);
if
(
trx
->
conc_state
!=
TRX_NOT_STARTED
)
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: Warning: MySQL is closing a connection"
"InnoDB: that has an active InnoDB transaction. We roll back that
\n
"
"InnoDB: transaction. %lu row modifications to roll back.
\n
"
,
(
ulong
)
trx
->
undo_no
.
low
);
}
innobase_rollback_trx
(
trx
);
trx_free_for_mysql
(
trx
);
return
(
0
);
}
...
...
@@ -2834,7 +2853,7 @@ ha_innobase::store_key_val_for_row(
/* All indexes on BLOB and TEXT are column prefix
indexes, and we may need to truncate the data to be
stored in the k
a
y value: */
stored in the k
e
y value: */
if
(
blob_len
>
key_part
->
length
)
{
blob_len
=
key_part
->
length
;
...
...
@@ -7117,7 +7136,7 @@ int
innobase_rollback_by_xid
(
/*=====================*/
/* out: 0 or error number */
XID
*
xid
)
/* in: X/Open XA transaction iden
f
ification */
XID
*
xid
)
/* in: X/Open XA transaction iden
t
ification */
{
trx_t
*
trx
;
...
...
@@ -7131,9 +7150,10 @@ innobase_rollback_by_xid(
}
/***********************************************************************
This function creates a consistent view for a cursor and start a transaction
if it has not been started. This consistent view is then used inside of MySQL
when accesing records using a cursor. */
Create a consistent view for a cursor based on current transaction
which is created if the corresponding MySQL thread still lacks one.
This consistent view is then used inside of MySQL when accessing records
using a cursor. */
void
*
innobase_create_cursor_view
(
void
)
...
...
@@ -7145,9 +7165,9 @@ innobase_create_cursor_view(void)
}
/***********************************************************************
This function closes the given consistent cursor view. Note that
global read view
is restored to a transaction and a transaction is
started if it has not been started
. */
Close the given consistent cursor view of a transaction and restore
global read view
to a transaction read view. Transaction is created if the
corresponding MySQL thread still lacks one
. */
void
innobase_close_cursor_view
(
...
...
@@ -7159,13 +7179,15 @@ innobase_close_cursor_view(
}
/***********************************************************************
This function sets the given consistent cursor view to a transaction.
If a transaction does not exist, transaction is started. */
Set the given consistent cursor view to a transaction which is created
if the corresponding MySQL thread still lacks one. If the given
consistent cursor view is NULL global read view of a transaction is
restored to a transaction read view. */
void
innobase_set_cursor_view
(
/*=====================*/
void
*
curview
)
/* in: Consistent cursor view to be
closed
*/
void
*
curview
)
/* in: Consistent cursor view to be
set
*/
{
read_cursor_set_for_mysql
(
check_trx_exists
(
current_thd
),
(
cursor_view_t
*
)
curview
);
...
...
sql/ha_innodb.h
View file @
e487aad9
...
...
@@ -302,7 +302,7 @@ which is in the prepared state */
int
innobase_rollback_by_xid
(
/* out: 0 or error number */
XID
*
xid
);
/* in : X/Open XA Transaction Iden
f
ification */
XID
*
xid
);
/* in : X/Open XA Transaction Iden
t
ification */
int
innobase_xa_end
(
THD
*
thd
);
...
...
@@ -312,9 +312,10 @@ int innobase_repl_report_sent_binlog(THD *thd, char *log_file_name,
my_off_t
end_offset
);
/***********************************************************************
This function creates a consistent view for a cursor and start a transaction
if it has not been started. This consistent view is then used inside of MySQL
when accesing records using a cursor. */
Create a consistent view for a cursor based on current transaction
which is created if the corresponding MySQL thread still lacks one.
This consistent view is then used inside of MySQL when accessing records
using a cursor. */
void
*
innobase_create_cursor_view
(
void
);
...
...
@@ -322,9 +323,9 @@ innobase_create_cursor_view(void);
/* out: Pointer to cursor view or NULL */
/***********************************************************************
This function closes the given consistent cursor view. Note that
global read view
is restored to a transaction and a transaction is
started if it has not been started
. */
Close the given consistent cursor view of a transaction and restore
global read view
to a transaction read view. Transaction is created if the
corresponding MySQL thread still lacks one
. */
void
innobase_close_cursor_view
(
...
...
@@ -332,8 +333,10 @@ innobase_close_cursor_view(
void
*
curview
);
/* in: Consistent read view to be closed */
/***********************************************************************
This function sets the given consistent cursor view to a transaction.
If a transaction does not exist, transaction is started. */
Set the given consistent cursor view to a transaction which is created
if the corresponding MySQL thread still lacks one. If the given
consistent cursor view is NULL global read view of a transaction is
restored to a transaction read view. */
void
innobase_set_cursor_view
(
...
...
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