mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge remote-tracking branch 'origin/10.2' into bb-10.2-ext
This commit is contained in:
@ -1041,6 +1041,21 @@ public:
|
||||
|
||||
LEX_CSTRING name; /* name for named prepared statements */
|
||||
LEX *lex; // parse tree descriptor
|
||||
/*
|
||||
LEX which represents current statement (conventional, SP or PS)
|
||||
|
||||
For example during view parsing THD::lex will point to the views LEX and
|
||||
THD::stmt_lex will point to LEX of the statement where the view will be
|
||||
included
|
||||
|
||||
Currently it is used to have always correct select numbering inside
|
||||
statement (LEX::current_select_number) without storing and restoring a
|
||||
global counter which was THD::select_number.
|
||||
|
||||
TODO: make some unified statement representation (now SP has different)
|
||||
to store such data like LEX::current_select_number.
|
||||
*/
|
||||
LEX *stmt_lex;
|
||||
/*
|
||||
Points to the query associated with this statement. It's const, but
|
||||
we need to declare it char * because all table handlers are written
|
||||
@ -1198,6 +1213,29 @@ typedef struct st_xid_state {
|
||||
/* Error reported by the Resource Manager (RM) to the Transaction Manager. */
|
||||
uint rm_error;
|
||||
XID_cache_element *xid_cache_element;
|
||||
|
||||
/**
|
||||
Check that XA transaction has an uncommitted work. Report an error
|
||||
to the user in case when there is an uncommitted work for XA transaction.
|
||||
|
||||
@return result of check
|
||||
@retval false XA transaction is NOT in state IDLE, PREPARED
|
||||
or ROLLBACK_ONLY.
|
||||
@retval true XA transaction is in state IDLE or PREPARED
|
||||
or ROLLBACK_ONLY.
|
||||
*/
|
||||
|
||||
bool check_has_uncommitted_xa() const
|
||||
{
|
||||
if (xa_state == XA_IDLE ||
|
||||
xa_state == XA_PREPARED ||
|
||||
xa_state == XA_ROLLBACK_ONLY)
|
||||
{
|
||||
my_error(ER_XAER_RMFAIL, MYF(0), xa_state_names[xa_state]);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
} XID_STATE;
|
||||
|
||||
void xid_cache_init(void);
|
||||
@ -2872,7 +2910,6 @@ public:
|
||||
uint tmp_table, global_disable_checkpoint;
|
||||
uint server_status,open_options;
|
||||
enum enum_thread_type system_thread;
|
||||
uint select_number; //number of select (used for EXPLAIN)
|
||||
/*
|
||||
Current or next transaction isolation level.
|
||||
When a connection is established, the value is taken from
|
||||
@ -3655,10 +3692,14 @@ public:
|
||||
|
||||
void change_item_tree(Item **place, Item *new_value)
|
||||
{
|
||||
DBUG_ENTER("THD::change_item_tree");
|
||||
DBUG_PRINT("enter", ("Register: %p (%p) <- %p",
|
||||
*place, place, new_value));
|
||||
/* TODO: check for OOM condition here */
|
||||
if (!stmt_arena->is_conventional())
|
||||
nocheck_register_item_tree_change(place, *place, mem_root);
|
||||
*place= new_value;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
/**
|
||||
Make change in item tree after checking whether it needs registering
|
||||
@ -4537,7 +4578,7 @@ public:
|
||||
void set_local_lex(sp_lex_local *sublex)
|
||||
{
|
||||
DBUG_ASSERT(lex->sphead);
|
||||
lex= sublex;
|
||||
lex= stmt_lex= sublex;
|
||||
/* Reset part of parser state which needs this. */
|
||||
m_parser_state->m_yacc.reset_before_substatement();
|
||||
}
|
||||
|
Reference in New Issue
Block a user