diff options
author | unknown <gbichot@dl145h.mysql.com> | 2006-09-28 13:19:43 +0200 |
---|---|---|
committer | unknown <gbichot@dl145h.mysql.com> | 2006-09-28 13:19:43 +0200 |
commit | 5e2c06a1c7d937b039fb7a2132506cf7703313d1 (patch) | |
tree | d7eb3a3db71c34f7b2c9bde03075012adf43e52c | |
parent | 80fc43c1fecd63a4927004ff06a1c4d26a389cf5 (diff) | |
download | mariadb-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.h | 6 | ||||
-rw-r--r-- | sql/sql_cursor.cc | 8 | ||||
-rw-r--r-- | storage/innobase/handler/ha_innodb.cc | 12 | ||||
-rw-r--r-- | storage/innobase/handler/ha_innodb.h | 11 |
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 */ |