diff options
author | Alexander Nozdrin <alik@sun.com> | 2010-06-07 12:47:04 +0400 |
---|---|---|
committer | Alexander Nozdrin <alik@sun.com> | 2010-06-07 12:47:04 +0400 |
commit | 8a247e963dcaa12b70e9aae0c9f3cb831d30f4a7 (patch) | |
tree | 4268070936d3c9dbd27165b1d9c1593e17ec0d61 /sql/sql_class.h | |
parent | e4ab99764249f90a83c7f384eadc913331c59aee (diff) | |
parent | 75dce25ca8276f56c45f747c9a9a1b4046b6efca (diff) | |
download | mariadb-git-8a247e963dcaa12b70e9aae0c9f3cb831d30f4a7.tar.gz |
Manual merge from mysql-trunk-bugfixing.
Conflicts:
- BUILD/SETUP.sh
- mysql-test/mysql-test-run.pl
- mysql-test/r/partition_error.result
- mysql-test/t/disabled.def
- mysql-test/t/partition_error.test
- sql/share/errmsg-utf8.txt
Diffstat (limited to 'sql/sql_class.h')
-rw-r--r-- | sql/sql_class.h | 68 |
1 files changed, 58 insertions, 10 deletions
diff --git a/sql/sql_class.h b/sql/sql_class.h index 93433ff85c8..25b136bc4ca 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -428,6 +428,7 @@ typedef struct system_variables uint binlog_format; ///< binlog format for this thd (see enum_binlog_format) my_bool binlog_direct_non_trans_update; + my_bool sql_log_bin; uint completion_type; uint query_cache_type; uint tx_isolation; @@ -1672,8 +1673,6 @@ public: /* <> 0 if we are inside of trigger or stored function. */ uint in_sub_stmt; - /* TRUE when the current top has SQL_LOG_BIN ON */ - bool sql_log_bin_toplevel; /* container for handler's private per-connection data */ Ha_data ha_data[MAX_HA]; @@ -2119,8 +2118,6 @@ public: char scramble[SCRAMBLE_LENGTH+1]; bool slave_thread, one_shot_set; - bool locked, some_tables_deleted; - bool last_cuted_field; bool no_errors, password; /** Set to TRUE if execution of the current compound statement @@ -2369,10 +2366,6 @@ public: { return limit_found_rows; } - inline bool active_transaction() - { - return server_status & SERVER_STATUS_IN_TRANS; - } /** Returns TRUE if session is in a multi-statement transaction mode. @@ -2383,11 +2376,60 @@ public: OPTION_BEGIN: Regardless of the autocommit status, a multi-statement transaction can be explicitly started with the statements "START TRANSACTION", "BEGIN [WORK]", "[COMMIT | ROLLBACK] AND CHAIN", etc. + + Note: this doesn't tell you whether a transaction is active. + A session can be in multi-statement transaction mode, and yet + have no active transaction, e.g., in case of: + set @@autocommit=0; + set @a= 3; <-- these statements don't + set transaction isolation level serializable; <-- start an active + flush tables; <-- transaction + + I.e. for the above scenario this function returns TRUE, even + though no active transaction has begun. + @sa in_active_multi_stmt_transaction() */ - inline bool in_multi_stmt_transaction() + inline bool in_multi_stmt_transaction_mode() { return variables.option_bits & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN); } + /** + TRUE if the session is in a multi-statement transaction mode + (@sa in_multi_stmt_transaction_mode()) *and* there is an + active transaction, i.e. there is an explicit start of a + transaction with BEGIN statement, or implicit with a + statement that uses a transactional engine. + + For example, these scenarios don't start an active transaction + (even though the server is in multi-statement transaction mode): + + set @@autocommit=0; + select * from nontrans_table; + set @var=TRUE; + flush tables; + + Note, that even for a statement that starts a multi-statement + transaction (i.e. select * from trans_table), this + flag won't be set until we open the statement's tables + and the engines register themselves for the transaction + (see trans_register_ha()), + hence this method is reliable to use only after + open_tables() has completed. + + Why do we need a flag? + ---------------------- + We need to maintain a (at first glance redundant) + session flag, rather than looking at thd->transaction.all.ha_list + because of explicit start of a transaction with BEGIN. + + I.e. in case of + BEGIN; + select * from nontrans_t1; <-- in_active_multi_stmt_transaction() is true + */ + inline bool in_active_multi_stmt_transaction() + { + return server_status & SERVER_STATUS_IN_TRANS; + } inline bool fill_derived_tables() { return !stmt_arena->is_stmt_prepare() && !lex->only_view_structure(); @@ -3582,6 +3624,12 @@ public: */ #define CF_PROTECT_AGAINST_GRL (1U << 10) +/** + Identifies statements that may generate row events + and that may end up in the binary log. +*/ +#define CF_CAN_GENERATE_ROW_EVENTS (1U << 11) + /* Bits in server_command_flags */ /** @@ -3642,7 +3690,7 @@ inline bool add_group_to_list(THD *thd, Item *item, bool asc) three calling-info parameters. */ extern "C" -const char *set_thd_proc_info(THD *thd, const char *info, +const char *set_thd_proc_info(void *thd_arg, const char *info, const char *calling_func, const char *calling_file, const unsigned int calling_line); |