Bug #25879: THD::options isn't set with ulonglong values and \

	variables

Bits higher than 2**31 were impossible to set on THD::options.  It's
probably a remnant from a time when options was a 32-bit integer.

Now, use unsigned long-long constants and variables to set and clear
THD::options.
---
Pulled comments back to column 49.
parent 7c298786
......@@ -29,3 +29,5 @@
4554a95d7txO1DuO9G3nAizI3SkFAA
4554b3722d71SbPiI2Gx-RhbZjmuIQ
4558b3d73Cxjlb7Wv1oytdSTthxDfw
45ba4faf2oqu6eR8fqecR3LfSNcYUg
45ba5238-NKl80QVXzdGo8hO9M75Xg
......@@ -20,6 +20,9 @@
except the part which must be in the server and in the client.
*/
#ifndef MYSQL_PRIV_H_INCLUDED
#define MYSQL_PRIV_H_INCLUDED
#ifndef MYSQL_CLIENT
#include <my_global.h>
......@@ -296,55 +299,56 @@ MY_LOCALE *my_locale_by_name(const char *name);
TODO: separate three contexts above, move them to separate bitfields.
*/
#define SELECT_DISTINCT (1L << 0) // SELECT, user
#define SELECT_STRAIGHT_JOIN (1L << 1) // SELECT, user
#define SELECT_DESCRIBE (1L << 2) // SELECT, user
#define SELECT_SMALL_RESULT (1L << 3) // SELECT, user
#define SELECT_BIG_RESULT (1L << 4) // SELECT, user
#define OPTION_FOUND_ROWS (1L << 5) // SELECT, user
#define OPTION_TO_QUERY_CACHE (1L << 6) // SELECT, user
#define SELECT_NO_JOIN_CACHE (1L << 7) // intern
#define OPTION_BIG_TABLES (1L << 8) // THD, user
#define OPTION_BIG_SELECTS (1L << 9) // THD, user
#define OPTION_LOG_OFF (1L << 10) // THD, user
#define OPTION_UPDATE_LOG (1L << 11) // THD, user, unused
#define TMP_TABLE_ALL_COLUMNS (1L << 12) // SELECT, intern
#define OPTION_WARNINGS (1L << 13) // THD, user
#define OPTION_AUTO_IS_NULL (1L << 14) // THD, user, binlog
#define OPTION_FOUND_COMMENT (1L << 15) // SELECT, intern, parser
#define OPTION_SAFE_UPDATES (1L << 16) // THD, user
#define OPTION_BUFFER_RESULT (1L << 17) // SELECT, user
#define OPTION_BIN_LOG (1L << 18) // THD, user
#define OPTION_NOT_AUTOCOMMIT (1L << 19) // THD, user
#define OPTION_BEGIN (1L << 20) // THD, intern
#define OPTION_TABLE_LOCK (1L << 21) // THD, intern
#define OPTION_QUICK (1L << 22) // SELECT (for DELETE)
#define OPTION_QUOTE_SHOW_CREATE (1L << 23) // THD, user
#define SELECT_DISTINCT (1ULL << 0) // SELECT, user
#define SELECT_STRAIGHT_JOIN (1ULL << 1) // SELECT, user
#define SELECT_DESCRIBE (1ULL << 2) // SELECT, user
#define SELECT_SMALL_RESULT (1ULL << 3) // SELECT, user
#define SELECT_BIG_RESULT (1ULL << 4) // SELECT, user
#define OPTION_FOUND_ROWS (1ULL << 5) // SELECT, user
#define OPTION_TO_QUERY_CACHE (1ULL << 6) // SELECT, user
#define SELECT_NO_JOIN_CACHE (1ULL << 7) // intern
#define OPTION_BIG_TABLES (1ULL << 8) // THD, user
#define OPTION_BIG_SELECTS (1ULL << 9) // THD, user
#define OPTION_LOG_OFF (1ULL << 10) // THD, user
#define OPTION_UPDATE_LOG (1ULL << 11) // THD, user, unused
#define TMP_TABLE_ALL_COLUMNS (1ULL << 12) // SELECT, intern
#define OPTION_WARNINGS (1ULL << 13) // THD, user
#define OPTION_AUTO_IS_NULL (1ULL << 14) // THD, user, binlog
#define OPTION_FOUND_COMMENT (1ULL << 15) // SELECT, intern, parser
#define OPTION_SAFE_UPDATES (1ULL << 16) // THD, user
#define OPTION_BUFFER_RESULT (1ULL << 17) // SELECT, user
#define OPTION_BIN_LOG (1ULL << 18) // THD, user
#define OPTION_NOT_AUTOCOMMIT (1ULL << 19) // THD, user
#define OPTION_BEGIN (1ULL << 20) // THD, intern
#define OPTION_TABLE_LOCK (1ULL << 21) // THD, intern
#define OPTION_QUICK (1ULL << 22) // SELECT (for DELETE)
#define OPTION_QUOTE_SHOW_CREATE (1ULL << 23) // THD, user
/* Thr following is used to detect a conflict with DISTINCT
in the user query has requested */
#define SELECT_ALL (1L << 24) // SELECT, user, parser
#define SELECT_ALL (1ULL << 24) // SELECT, user, parser
/* Set if we are updating a non-transaction safe table */
#define OPTION_STATUS_NO_TRANS_UPDATE (1L << 25) // THD, intern
#define OPTION_STATUS_NO_TRANS_UPDATE (1ULL << 25) // THD, intern
/* The following can be set when importing tables in a 'wrong order'
to suppress foreign key checks */
#define OPTION_NO_FOREIGN_KEY_CHECKS (1L << 26) // THD, user, binlog
#define OPTION_NO_FOREIGN_KEY_CHECKS (1ULL << 26) // THD, user, binlog
/* The following speeds up inserts to InnoDB tables by suppressing unique
key checks in some cases */
#define OPTION_RELAXED_UNIQUE_CHECKS (1L << 27) // THD, user, binlog
#define SELECT_NO_UNLOCK (1L << 28) // SELECT, intern
#define OPTION_SCHEMA_TABLE (1L << 29) // SELECT, intern
#define OPTION_RELAXED_UNIQUE_CHECKS (1ULL << 27) // THD, user, binlog
#define SELECT_NO_UNLOCK (1ULL << 28) // SELECT, intern
#define OPTION_SCHEMA_TABLE (1ULL << 29) // SELECT, intern
/* Flag set if setup_tables already done */
#define OPTION_SETUP_TABLES_DONE (1L << 30) // intern
#define OPTION_SETUP_TABLES_DONE (1ULL << 30) // intern
/* If not set then the thread will ignore all warnings with level notes. */
#define OPTION_SQL_NOTES (1UL << 31) // THD, user
#define OPTION_SQL_NOTES (1ULL << 31) // THD, user
/*
Force the used temporary table to be a MyISAM table (because we will use
fulltext functions when reading from it.
*/
#define TMP_TABLE_FORCE_MYISAM (LL(1) << 32)
#define TMP_TABLE_FORCE_MYISAM (1ULL << 32)
/*
Maximum length of time zone name that we support
......@@ -1682,3 +1686,5 @@ inline void kill_delayed_threads(void) {}
#endif
#endif /* MYSQL_CLIENT */
#endif
......@@ -457,11 +457,11 @@ class sys_var_thd_bit :public sys_var_thd
sys_check_func check_func;
sys_update_func update_func;
public:
ulong bit_flag;
ulonglong bit_flag;
bool reverse;
sys_var_thd_bit(const char *name_arg,
sys_check_func c_func, sys_update_func u_func,
ulong bit, bool reverse_arg=0)
ulonglong bit, bool reverse_arg=0)
:sys_var_thd(name_arg), check_func(c_func), update_func(u_func),
bit_flag(bit), reverse(reverse_arg)
{}
......
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