mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
MDEV-6067: Partitioned table DML sometimes binlogged without XID event
Revert the old patch revid:monty@askmonty.org-20100325133339-7mkel6valai0b4lb This patch caused the InnoDB part of the transaction to not be marked read-write in some cases, which messes up XA commit (and likely other stuff as well).
This commit is contained in:
parent
e772cbd7b7
commit
68bad3c7c0
3 changed files with 5 additions and 21 deletions
|
@ -3245,14 +3245,11 @@ int handler::ha_check(THD *thd, HA_CHECK_OPT *check_opt)
|
|||
if it is started.
|
||||
*/
|
||||
|
||||
inline
|
||||
void
|
||||
handler::mark_trx_read_write_part2()
|
||||
handler::mark_trx_read_write()
|
||||
{
|
||||
Ha_trx_info *ha_info= &ha_thd()->ha_data[ht->slot].ha_info[0];
|
||||
|
||||
/* Don't call this function again for this statement */
|
||||
mark_trx_done= TRUE;
|
||||
|
||||
/*
|
||||
When a storage engine method is called, the transaction must
|
||||
have been started, unless it's a DDL call, for which the
|
||||
|
|
|
@ -1255,7 +1255,6 @@ public:
|
|||
enum {NONE=0, INDEX, RND} inited;
|
||||
bool locked;
|
||||
bool implicit_emptied; /* Can be !=0 only if HEAP */
|
||||
bool mark_trx_done;
|
||||
bool cloned; /* 1 if this was created with clone */
|
||||
const COND *pushed_cond;
|
||||
/**
|
||||
|
@ -1300,7 +1299,7 @@ public:
|
|||
ref(0), key_used_on_scan(MAX_KEY), active_index(MAX_KEY),
|
||||
ref_length(sizeof(my_off_t)),
|
||||
ft_handler(0), inited(NONE),
|
||||
locked(FALSE), implicit_emptied(FALSE), mark_trx_done(FALSE), cloned(0),
|
||||
locked(FALSE), implicit_emptied(FALSE), cloned(0),
|
||||
pushed_cond(0), next_insert_id(0), insert_id_for_cur_row(0),
|
||||
auto_inc_intervals_count(0)
|
||||
{
|
||||
|
@ -1360,13 +1359,6 @@ public:
|
|||
}
|
||||
int ha_rnd_init_with_error(bool scan) __attribute__ ((warn_unused_result));
|
||||
int ha_reset();
|
||||
/* Tell handler (not storage engine) this is start of a new statement */
|
||||
void ha_start_of_new_statement()
|
||||
{
|
||||
ft_handler= 0;
|
||||
mark_trx_done= FALSE;
|
||||
}
|
||||
|
||||
/* this is necessary in many places, e.g. in HANDLER command */
|
||||
int ha_index_or_rnd_end()
|
||||
{
|
||||
|
@ -1996,12 +1988,8 @@ protected:
|
|||
|
||||
private:
|
||||
/* Private helpers */
|
||||
void mark_trx_read_write_part2();
|
||||
inline void mark_trx_read_write()
|
||||
{
|
||||
if (!mark_trx_done)
|
||||
mark_trx_read_write_part2();
|
||||
}
|
||||
inline void mark_trx_read_write();
|
||||
private:
|
||||
inline void increment_statistics(ulong SSV::*offset) const;
|
||||
inline void decrement_statistics(ulong SSV::*offset) const;
|
||||
|
||||
|
|
|
@ -3029,7 +3029,6 @@ TABLE *open_table(THD *thd, TABLE_LIST *table_list, MEM_ROOT *mem_root,
|
|||
table->status=STATUS_NO_RECORD;
|
||||
table->insert_values= 0;
|
||||
table->fulltext_searched= 0;
|
||||
table->file->ha_start_of_new_statement();
|
||||
table->file->ft_handler= 0;
|
||||
/*
|
||||
Check that there is no reference to a condition from an earlier query
|
||||
|
|
Loading…
Add table
Reference in a new issue