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.
parent 8b80901d
...@@ -630,9 +630,9 @@ struct handlerton ...@@ -630,9 +630,9 @@ struct handlerton
int (*recover)(XID *xid_list, uint len); int (*recover)(XID *xid_list, uint len);
int (*commit_by_xid)(XID *xid); int (*commit_by_xid)(XID *xid);
int (*rollback_by_xid)(XID *xid); int (*rollback_by_xid)(XID *xid);
void *(*create_cursor_read_view)(); void *(*create_cursor_read_view)(THD *thd);
void (*set_cursor_read_view)(void *); void (*set_cursor_read_view)(THD *thd, void *read_view);
void (*close_cursor_read_view)(void *); void (*close_cursor_read_view)(THD *thd, void *read_view);
handler *(*create)(TABLE_SHARE *table, MEM_ROOT *mem_root); handler *(*create)(TABLE_SHARE *table, MEM_ROOT *mem_root);
void (*drop_database)(char* path); void (*drop_database)(char* path);
int (*panic)(enum ha_panic_function flag); int (*panic)(enum ha_panic_function flag);
......
...@@ -323,7 +323,7 @@ Sensitive_cursor::post_open(THD *thd) ...@@ -323,7 +323,7 @@ Sensitive_cursor::post_open(THD *thd)
if (ht->create_cursor_read_view) if (ht->create_cursor_read_view)
{ {
info->ht= ht; info->ht= ht;
info->read_view= (ht->create_cursor_read_view)(); info->read_view= (ht->create_cursor_read_view)(thd);
++info; ++info;
} }
} }
...@@ -433,7 +433,7 @@ Sensitive_cursor::fetch(ulong num_rows) ...@@ -433,7 +433,7 @@ Sensitive_cursor::fetch(ulong num_rows)
thd->set_n_backup_active_arena(this, &backup_arena); thd->set_n_backup_active_arena(this, &backup_arena);
for (info= ht_info; info->read_view ; info++) 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; join->fetch_limit+= num_rows;
...@@ -454,7 +454,7 @@ Sensitive_cursor::fetch(ulong num_rows) ...@@ -454,7 +454,7 @@ Sensitive_cursor::fetch(ulong num_rows)
reset_thd(thd); reset_thd(thd);
for (info= ht_info; info->read_view; info++) 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) if (error == NESTED_LOOP_CURSOR_LIMIT)
{ {
...@@ -487,7 +487,7 @@ Sensitive_cursor::close() ...@@ -487,7 +487,7 @@ Sensitive_cursor::close()
for (Engine_info *info= ht_info; info->read_view; info++) 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->read_view= 0;
info->ht= 0; info->ht= 0;
} }
......
...@@ -7529,12 +7529,14 @@ This consistent view is then used inside of MySQL when accessing records ...@@ -7529,12 +7529,14 @@ This consistent view is then used inside of MySQL when accessing records
using a cursor. */ using a cursor. */
void* void*
innobase_create_cursor_view(void) innobase_create_cursor_view(
/*=============================*/ /*========================*/
/* out: Pointer to cursor view or NULL */ /* out: pointer to cursor
view or NULL */
THD* thd) /* in: user thread handle */
{ {
return(read_cursor_view_create_for_mysql( 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. */ ...@@ -7545,6 +7547,7 @@ corresponding MySQL thread still lacks one. */
void void
innobase_close_cursor_view( innobase_close_cursor_view(
/*=======================*/ /*=======================*/
THD* thd, /* in: user thread handle */
void* curview)/* in: Consistent read view to be closed */ void* curview)/* in: Consistent read view to be closed */
{ {
read_cursor_view_close_for_mysql(check_trx_exists(current_thd), read_cursor_view_close_for_mysql(check_trx_exists(current_thd),
...@@ -7560,6 +7563,7 @@ restored to a transaction read view. */ ...@@ -7560,6 +7563,7 @@ restored to a transaction read view. */
void void
innobase_set_cursor_view( innobase_set_cursor_view(
/*=====================*/ /*=====================*/
THD* thd, /* in: user thread handle */
void* curview)/* in: Consistent cursor view to be set */ void* curview)/* in: Consistent cursor view to be set */
{ {
read_cursor_set_for_mysql(check_trx_exists(current_thd), read_cursor_set_for_mysql(check_trx_exists(current_thd),
......
...@@ -313,9 +313,11 @@ This consistent view is then used inside of MySQL when accessing records ...@@ -313,9 +313,11 @@ This consistent view is then used inside of MySQL when accessing records
using a cursor. */ using a cursor. */
void* void*
innobase_create_cursor_view(void); innobase_create_cursor_view(
/*=============================*/ /*========================*/
/* out: Pointer to cursor view or NULL */ /* out: pointer to cursor
view or NULL */
THD* thd); /* in: user thread handle */
/*********************************************************************** /***********************************************************************
Close the given consistent cursor view of a transaction and restore Close the given consistent cursor view of a transaction and restore
...@@ -325,8 +327,10 @@ corresponding MySQL thread still lacks one. */ ...@@ -325,8 +327,10 @@ corresponding MySQL thread still lacks one. */
void void
innobase_close_cursor_view( innobase_close_cursor_view(
/*=======================*/ /*=======================*/
THD* thd, /* in: user thread handle */
void* curview); /* in: Consistent read view to be closed */ void* curview); /* in: Consistent read view to be closed */
/*********************************************************************** /***********************************************************************
Set the given consistent cursor view to a transaction which is created Set the given consistent cursor view to a transaction which is created
if the corresponding MySQL thread still lacks one. If the given if the corresponding MySQL thread still lacks one. If the given
...@@ -336,4 +340,5 @@ restored to a transaction read view. */ ...@@ -336,4 +340,5 @@ restored to a transaction read view. */
void void
innobase_set_cursor_view( innobase_set_cursor_view(
/*=====================*/ /*=====================*/
THD* thd, /* in: user thread handle */
void* curview); /* in: Consistent read view to be set */ void* curview); /* in: Consistent read view to be set */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment