summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <gbichot@dl145h.mysql.com>2006-09-28 13:19:43 +0200
committerunknown <gbichot@dl145h.mysql.com>2006-09-28 13:19:43 +0200
commit5e2c06a1c7d937b039fb7a2132506cf7703313d1 (patch)
treed7eb3a3db71c34f7b2c9bde03075012adf43e52c
parent80fc43c1fecd63a4927004ff06a1c4d26a389cf5 (diff)
downloadmariadb-git-5e2c06a1c7d937b039fb7a2132506cf7703313d1.tar.gz
In the handlerton, cursor creation function don't have an argument
and so the engine calls current_thd to derive transaction information; instead we now pass THD to those functions, it looks more logical (it makes the implicit current_thd parameter more visible). Approved by Brian and Monty. sql/handler.h: cursor's creation functions in the handlerton need a THD, it's better than have the engine call current_thd sql/sql_cursor.cc: pass the THD instead of letting the engine call current_thd storage/innobase/handler/ha_innodb.cc: use the passed THD instead of current_thd storage/innobase/handler/ha_innodb.h: use the passed THD instead of current_thd
-rw-r--r--sql/handler.h6
-rw-r--r--sql/sql_cursor.cc8
-rw-r--r--storage/innobase/handler/ha_innodb.cc12
-rw-r--r--storage/innobase/handler/ha_innodb.h11
4 files changed, 23 insertions, 14 deletions
diff --git a/sql/handler.h b/sql/handler.h
index 21ddb2c97d9..250d120c533 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -630,9 +630,9 @@ struct handlerton
int (*recover)(XID *xid_list, uint len);
int (*commit_by_xid)(XID *xid);
int (*rollback_by_xid)(XID *xid);
- void *(*create_cursor_read_view)();
- void (*set_cursor_read_view)(void *);
- void (*close_cursor_read_view)(void *);
+ void *(*create_cursor_read_view)(THD *thd);
+ void (*set_cursor_read_view)(THD *thd, void *read_view);
+ void (*close_cursor_read_view)(THD *thd, void *read_view);
handler *(*create)(TABLE_SHARE *table, MEM_ROOT *mem_root);
void (*drop_database)(char* path);
int (*panic)(enum ha_panic_function flag);
diff --git a/sql/sql_cursor.cc b/sql/sql_cursor.cc
index 2784e71ccae..82ee8d72d33 100644
--- a/sql/sql_cursor.cc
+++ b/sql/sql_cursor.cc
@@ -323,7 +323,7 @@ Sensitive_cursor::post_open(THD *thd)
if (ht->create_cursor_read_view)
{
info->ht= ht;
- info->read_view= (ht->create_cursor_read_view)();
+ info->read_view= (ht->create_cursor_read_view)(thd);
++info;
}
}
@@ -433,7 +433,7 @@ Sensitive_cursor::fetch(ulong num_rows)
thd->set_n_backup_active_arena(this, &backup_arena);
for (info= ht_info; info->read_view ; info++)
- (info->ht->set_cursor_read_view)(info->read_view);
+ (info->ht->set_cursor_read_view)(thd, info->read_view);
join->fetch_limit+= num_rows;
@@ -454,7 +454,7 @@ Sensitive_cursor::fetch(ulong num_rows)
reset_thd(thd);
for (info= ht_info; info->read_view; info++)
- (info->ht->set_cursor_read_view)(0);
+ (info->ht->set_cursor_read_view)(thd, 0);
if (error == NESTED_LOOP_CURSOR_LIMIT)
{
@@ -487,7 +487,7 @@ Sensitive_cursor::close()
for (Engine_info *info= ht_info; info->read_view; info++)
{
- (info->ht->close_cursor_read_view)(info->read_view);
+ (info->ht->close_cursor_read_view)(thd, info->read_view);
info->read_view= 0;
info->ht= 0;
}
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index 84533d6c814..004586dd5aa 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -7529,12 +7529,14 @@ This consistent view is then used inside of MySQL when accessing records
using a cursor. */
void*
-innobase_create_cursor_view(void)
-/*=============================*/
- /* out: Pointer to cursor view or NULL */
+innobase_create_cursor_view(
+/*========================*/
+ /* out: pointer to cursor
+ view or NULL */
+ THD* thd) /* in: user thread handle */
{
return(read_cursor_view_create_for_mysql(
- check_trx_exists(current_thd)));
+ check_trx_exists(thd)));
}
/***********************************************************************
@@ -7545,6 +7547,7 @@ corresponding MySQL thread still lacks one. */
void
innobase_close_cursor_view(
/*=======================*/
+ THD* thd, /* in: user thread handle */
void* curview)/* in: Consistent read view to be closed */
{
read_cursor_view_close_for_mysql(check_trx_exists(current_thd),
@@ -7560,6 +7563,7 @@ restored to a transaction read view. */
void
innobase_set_cursor_view(
/*=====================*/
+ THD* thd, /* in: user thread handle */
void* curview)/* in: Consistent cursor view to be set */
{
read_cursor_set_for_mysql(check_trx_exists(current_thd),
diff --git a/storage/innobase/handler/ha_innodb.h b/storage/innobase/handler/ha_innodb.h
index 4d5dc6b52d6..ed52ee9b094 100644
--- a/storage/innobase/handler/ha_innodb.h
+++ b/storage/innobase/handler/ha_innodb.h
@@ -313,9 +313,11 @@ This consistent view is then used inside of MySQL when accessing records
using a cursor. */
void*
-innobase_create_cursor_view(void);
-/*=============================*/
- /* out: Pointer to cursor view or NULL */
+innobase_create_cursor_view(
+/*========================*/
+ /* out: pointer to cursor
+ view or NULL */
+ THD* thd); /* in: user thread handle */
/***********************************************************************
Close the given consistent cursor view of a transaction and restore
@@ -325,8 +327,10 @@ corresponding MySQL thread still lacks one. */
void
innobase_close_cursor_view(
/*=======================*/
+ THD* thd, /* in: user thread handle */
void* curview); /* in: Consistent read view to be closed */
+
/***********************************************************************
Set the given consistent cursor view to a transaction which is created
if the corresponding MySQL thread still lacks one. If the given
@@ -336,4 +340,5 @@ restored to a transaction read view. */
void
innobase_set_cursor_view(
/*=====================*/
+ THD* thd, /* in: user thread handle */
void* curview); /* in: Consistent read view to be set */