summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/myisam.h2
-rw-r--r--include/mysql/plugin.h2
-rw-r--r--mysql-test/collections/default.experimental2
-rw-r--r--mysql-test/r/subselect4.result21
-rw-r--r--mysql-test/t/subselect4.test16
-rw-r--r--mysys/my_getopt.c10
-rw-r--r--sql/events.cc2
-rw-r--r--sql/events.h2
-rw-r--r--sql/item_cmpfunc.cc2
-rw-r--r--sql/mysqld.cc8
-rw-r--r--sql/mysqld.h6
-rw-r--r--sql/sql_class.cc4
-rw-r--r--sql/sql_class.h12
-rw-r--r--sql/sql_plugin.cc8
-rw-r--r--sql/sys_vars.h14
-rw-r--r--storage/example/ha_example.cc2
-rw-r--r--storage/myisam/mi_static.c4
17 files changed, 76 insertions, 41 deletions
diff --git a/include/myisam.h b/include/myisam.h
index 3efc65a900a..c4076ead403 100644
--- a/include/myisam.h
+++ b/include/myisam.h
@@ -249,7 +249,7 @@ typedef struct st_columndef /* column information */
extern char * myisam_log_filename; /* Name of logfile */
extern ulong myisam_block_size;
-extern uint myisam_concurrent_insert;
+extern ulong myisam_concurrent_insert;
extern my_bool myisam_flush,myisam_delay_key_write,myisam_single_user;
extern my_off_t myisam_max_temp_length;
extern ulong myisam_data_pointer_size;
diff --git a/include/mysql/plugin.h b/include/mysql/plugin.h
index 1a14314b244..19cf0ed050d 100644
--- a/include/mysql/plugin.h
+++ b/include/mysql/plugin.h
@@ -327,7 +327,7 @@ DECLARE_MYSQL_SYSVAR_SIMPLE(name, unsigned long long) = { \
#name, comment, check, update, &varname, def, min, max, blk }
#define MYSQL_SYSVAR_ENUM(name, varname, opt, comment, check, update, def, typelib) \
-DECLARE_MYSQL_SYSVAR_TYPELIB(name, unsigned int) = { \
+DECLARE_MYSQL_SYSVAR_TYPELIB(name, unsigned long) = { \
PLUGIN_VAR_ENUM | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, &varname, def, typelib }
diff --git a/mysql-test/collections/default.experimental b/mysql-test/collections/default.experimental
index 800044242ac..7609a4799e3 100644
--- a/mysql-test/collections/default.experimental
+++ b/mysql-test/collections/default.experimental
@@ -19,7 +19,6 @@ main.mysqlbinlog_row @solaris # Bug#52202 2010-03-22 alik mysqlbinlog
main.mysqlbinlog_row_innodb @solaris # Bug#52202 2010-03-22 alik mysqlbinlog_row* fail in daily-trunk on Sol10 x86_64 debug_max
main.mysqlbinlog_row_myisam @solaris # Bug#52202 2010-03-22 alik mysqlbinlog_row* fail in daily-trunk on Sol10 x86_64 debug_max
main.outfile_loaddata @solaris # Bug#46895 2010-01-20 alik Test "outfile_loaddata" fails (reproducible)
-main.plugin* @solaris # Bug#47146 Linking problem with example plugin when dtrace enabled
main.signal_demo3 @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
main.sp @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
main.type_float @freebsd # Bug#38965 2010-05-04 alik test cases gis-rtree, type_float, type_newdecimal fail in embedded server
@@ -32,7 +31,6 @@ rpl.rpl_heartbeat_2slaves # BUG#43828 2009-10-22 luis fails spora
rpl.rpl_innodb_bug28430* # Bug#46029
rpl.rpl_innodb_bug30888* @solaris # Bug#47646 2009-09-25 alik rpl.rpl_innodb_bug30888 fails sporadically on Solaris
rpl.rpl_killed_ddl @windows # Bug#47638 2010-01-20 alik The rpl_killed_ddl test fails on Windows
-rpl.rpl_plugin_load* @solaris # Bug#47146
rpl.rpl_row_sp011* @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
sys_vars.max_sp_recursion_depth_func @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
diff --git a/mysql-test/r/subselect4.result b/mysql-test/r/subselect4.result
index dd4bf599ad0..2e638ddb9ab 100644
--- a/mysql-test/r/subselect4.result
+++ b/mysql-test/r/subselect4.result
@@ -60,6 +60,27 @@ FROM t3 WHERE 1 = 0 GROUP BY 1;
DROP TABLE t1,t2,t3;
End of 5.0 tests.
#
+# Bug#54568: create view cause Assertion failed: 0,
+# file .\item_subselect.cc, line 836
+#
+EXPLAIN SELECT 1 LIKE ( 1 IN ( SELECT 1 ) );
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1249 Select 2 was reduced during optimization
+DESCRIBE SELECT 1 LIKE ( 1 IN ( SELECT 1 ) );
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1249 Select 2 was reduced during optimization
+# None of the below should crash
+CREATE VIEW v1 AS SELECT 1 LIKE ( 1 IN ( SELECT 1 ) );
+CREATE VIEW v2 AS SELECT 1 LIKE '%' ESCAPE ( 1 IN ( SELECT 1 ) );
+DROP VIEW v1, v2;
+#
+# End of 5.1 tests.
+#
+#
# Bug#53236 Segfault in DTCollation::set(DTCollation&)
#
CREATE TABLE t1 (
diff --git a/mysql-test/t/subselect4.test b/mysql-test/t/subselect4.test
index fb0f58bf804..a2c71c664c4 100644
--- a/mysql-test/t/subselect4.test
+++ b/mysql-test/t/subselect4.test
@@ -64,6 +64,22 @@ DROP TABLE t1,t2,t3;
--echo End of 5.0 tests.
--echo #
+--echo # Bug#54568: create view cause Assertion failed: 0,
+--echo # file .\item_subselect.cc, line 836
+--echo #
+EXPLAIN SELECT 1 LIKE ( 1 IN ( SELECT 1 ) );
+DESCRIBE SELECT 1 LIKE ( 1 IN ( SELECT 1 ) );
+--echo # None of the below should crash
+CREATE VIEW v1 AS SELECT 1 LIKE ( 1 IN ( SELECT 1 ) );
+CREATE VIEW v2 AS SELECT 1 LIKE '%' ESCAPE ( 1 IN ( SELECT 1 ) );
+DROP VIEW v1, v2;
+
+
+--echo #
+--echo # End of 5.1 tests.
+--echo #
+
+--echo #
--echo # Bug#53236 Segfault in DTCollation::set(DTCollation&)
--echo #
diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c
index e9fa6f6bee2..1c5bf0b6b1c 100644
--- a/mysys/my_getopt.c
+++ b/mysys/my_getopt.c
@@ -611,16 +611,16 @@ static int setval(const struct my_option *opts, void *value, char *argument,
Accept an integer representation of the enumerated item.
*/
char *endptr;
- uint arg= (uint) strtoul(argument, &endptr, 10);
+ ulong arg= strtoul(argument, &endptr, 10);
if (*endptr || arg >= opts->typelib->count)
{
res= EXIT_ARGUMENT_INVALID;
goto ret;
}
- *(uint*)value= arg;
+ *(ulong*)value= arg;
}
else
- *(uint*)value= type - 1;
+ *(ulong*)value= type - 1;
}
break;
case GET_SET:
@@ -1016,7 +1016,7 @@ static void init_one_value(const struct my_option *option, void *variable,
*((int*) variable)= (int) getopt_ll_limit_value((int) value, option, NULL);
break;
case GET_ENUM:
- *((uint*) variable)= (uint) value;
+ *((ulong*) variable)= (ulong) value;
break;
case GET_UINT:
*((uint*) variable)= (uint) getopt_ull_limit_value((uint) value, option, NULL);
@@ -1292,7 +1292,7 @@ void my_print_variables(const struct my_option *options)
printf("\n");
break;
case GET_ENUM:
- printf("%s\n", get_type(optp->typelib, *(uint*) value));
+ printf("%s\n", get_type(optp->typelib, *(ulong*) value));
break;
case GET_STR:
case GET_STR_ALLOC: /* fall through */
diff --git a/sql/events.cc b/sql/events.cc
index 5379ec2c9eb..99304a1c460 100644
--- a/sql/events.cc
+++ b/sql/events.cc
@@ -76,7 +76,7 @@
Event_queue *Events::event_queue;
Event_scheduler *Events::scheduler;
Event_db_repository *Events::db_repository;
-uint Events::opt_event_scheduler= Events::EVENTS_OFF;
+ulong Events::opt_event_scheduler= Events::EVENTS_OFF;
mysql_mutex_t Events::LOCK_event_metadata;
bool Events::check_system_tables_error= FALSE;
diff --git a/sql/events.h b/sql/events.h
index c84c37b881d..1482e736d29 100644
--- a/sql/events.h
+++ b/sql/events.h
@@ -91,7 +91,7 @@ public:
*/
enum enum_opt_event_scheduler { EVENTS_OFF, EVENTS_ON, EVENTS_DISABLED };
/* Protected using LOCK_global_system_variables only. */
- static uint opt_event_scheduler;
+ static ulong opt_event_scheduler;
static mysql_mutex_t LOCK_event_metadata;
static bool check_if_system_tables_error();
static bool start();
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index 85565b735d4..c18b79371df 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -4617,7 +4617,7 @@ bool Item_func_like::fix_fields(THD *thd, Item **ref)
return TRUE;
}
- if (escape_item->const_item())
+ if (escape_item->const_item() && !thd->lex->view_prepare_mode)
{
/* If we are on execution stage */
String *escape_str= escape_item->val_str(&cmp.value1);
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index afc515a9d8c..eaa3e27cf29 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -439,10 +439,10 @@ static bool calling_initgroups= FALSE; /**< Used in SIGSEGV handler. */
#endif
uint mysqld_port, test_flags, select_errors, dropping_tables, ha_open_options;
uint mysqld_port_timeout;
-uint delay_key_write_options;
+ulong delay_key_write_options;
uint protocol_version;
uint lower_case_table_names;
-uint tc_heuristic_recover= 0;
+ulong tc_heuristic_recover= 0;
uint volatile thread_count;
int32 thread_running;
ulong thread_created;
@@ -453,7 +453,7 @@ ulong slow_launch_time, slave_open_temp_tables;
ulong open_files_limit, max_binlog_size, max_relay_log_size;
ulong slave_trans_retries;
uint slave_net_timeout;
-uint slave_exec_mode_options;
+ulong slave_exec_mode_options;
ulonglong slave_type_conversions_options;
ulong thread_cache_size=0, thread_pool_size= 0;
ulong binlog_cache_size=0;
@@ -552,7 +552,7 @@ char *mysql_data_home= const_cast<char*>(".");
const char *mysql_real_data_home_ptr= mysql_real_data_home;
char server_version[SERVER_VERSION_LENGTH];
char *mysqld_unix_port, *opt_mysql_tmpdir;
-uint thread_handling;
+ulong thread_handling;
/** name of reference on left expression in rewritten IN subquery */
const char *in_left_expr_name= "<left expr>";
diff --git a/sql/mysqld.h b/sql/mysqld.h
index 22e757e6e8a..9605128166d 100644
--- a/sql/mysqld.h
+++ b/sql/mysqld.h
@@ -105,7 +105,7 @@ extern uint connection_count;
extern my_bool opt_safe_user_create;
extern my_bool opt_safe_show_db, opt_local_infile, opt_myisam_use_mmap;
extern my_bool opt_slave_compressed_protocol, use_temp_pool;
-extern uint slave_exec_mode_options;
+extern ulong slave_exec_mode_options;
extern ulonglong slave_type_conversions_options;
extern my_bool opt_readonly, lower_case_file_system;
extern my_bool opt_enable_named_pipe, opt_sync_frm, opt_allow_suspicious_udfs;
@@ -136,7 +136,7 @@ extern my_bool relay_log_purge, opt_innodb_safe_binlog, opt_innodb;
extern my_bool relay_log_recovery;
extern uint test_flags,select_errors,ha_open_options;
extern uint protocol_version, mysqld_port, dropping_tables;
-extern uint delay_key_write_options;
+extern ulong delay_key_write_options;
extern char *opt_logname, *opt_slow_logname;
extern char *opt_backup_history_logname, *opt_backup_progress_logname,
*opt_backup_settings_name;
@@ -300,7 +300,7 @@ extern ulong specialflag;
extern uint mysql_data_home_len;
extern uint mysql_real_data_home_len;
extern const char *mysql_real_data_home_ptr;
-extern uint thread_handling;
+extern ulong thread_handling;
extern MYSQL_PLUGIN_IMPORT char *mysql_data_home;
extern char server_version[SERVER_VERSION_LENGTH];
extern MYSQL_PLUGIN_IMPORT char mysql_real_data_home[];
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 60a871e9e88..87935890965 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -3640,7 +3640,7 @@ int THD::decide_logging_format(TABLE_LIST *tables)
{
DBUG_ENTER("THD::decide_logging_format");
DBUG_PRINT("info", ("query: %s", query()));
- DBUG_PRINT("info", ("variables.binlog_format: %u",
+ DBUG_PRINT("info", ("variables.binlog_format: %lu",
variables.binlog_format));
DBUG_PRINT("info", ("lex->get_stmt_unsafe_flags(): 0x%x",
lex->get_stmt_unsafe_flags()));
@@ -4000,7 +4000,7 @@ int THD::decide_logging_format(TABLE_LIST *tables)
DBUG_PRINT("info", ("decision: no logging since "
"mysql_bin_log.is_open() = %d "
"and (options & OPTION_BIN_LOG) = 0x%llx "
- "and binlog_format = %u "
+ "and binlog_format = %lu "
"and binlog_filter->db_ok(db) = %d",
mysql_bin_log.is_open(),
(variables.option_bits & OPTION_BIN_LOG),
diff --git a/sql/sql_class.h b/sql/sql_class.h
index b23b65dae2f..e348fbc1ad1 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -114,7 +114,7 @@ extern bool volatile shutdown_in_progress;
#define TC_HEURISTIC_RECOVER_COMMIT 1
#define TC_HEURISTIC_RECOVER_ROLLBACK 2
-extern uint tc_heuristic_recover;
+extern ulong tc_heuristic_recover;
typedef struct st_user_var_events
{
@@ -426,13 +426,13 @@ typedef struct system_variables
ulong log_warnings;
ulong group_concat_max_len;
- uint binlog_format; ///< binlog format for this thd (see enum_binlog_format)
+ ulong 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;
- uint updatable_views_with_limit;
+ ulong completion_type;
+ ulong query_cache_type;
+ ulong tx_isolation;
+ ulong updatable_views_with_limit;
uint max_user_connections;
/**
In slave thread we need to know in behalf of which
diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc
index 7e8c1fed999..e3323260373 100644
--- a/sql/sql_plugin.cc
+++ b/sql/sql_plugin.cc
@@ -3025,11 +3025,11 @@ static int construct_options(MEM_ROOT *mem_root, struct st_plugin_int *tmp,
Allocate temporary space for the value of the tristate.
This option will have a limited lifetime and is not used beyond
server initialization.
- GET_ENUM value is an unsigned integer.
+ GET_ENUM value is an unsigned long integer.
*/
options[0].value= options[1].value=
- (uchar **)alloc_root(mem_root, sizeof(uint));
- *((uint*) options[0].value)= (uint) options[0].def_value;
+ (uchar **)alloc_root(mem_root, sizeof(ulong));
+ *((ulong*) options[0].value)= (ulong) options[0].def_value;
options+= 2;
}
@@ -3328,7 +3328,7 @@ static int test_plugin_options(MEM_ROOT *tmp_root, struct st_plugin_int *tmp,
list is always the <plugin name> option value.
*/
if (!tmp->is_mandatory)
- plugin_load_policy= (enum_plugin_load_policy)*(uint*)opts[0].value;
+ plugin_load_policy= (enum_plugin_load_policy)*(ulong*)opts[0].value;
}
disable_plugin= (plugin_load_policy == PLUGIN_OFF);
diff --git a/sql/sys_vars.h b/sql/sys_vars.h
index ca3fc99deba..ee6b429b04a 100644
--- a/sql/sys_vars.h
+++ b/sql/sys_vars.h
@@ -271,28 +271,28 @@ public:
deprecated_version, substitute)
{
option.var_type= GET_ENUM;
- global_var(uint)= def_val;
+ global_var(ulong)= def_val;
DBUG_ASSERT(def_val < typelib.count);
- DBUG_ASSERT(size == sizeof(uint));
+ DBUG_ASSERT(size == sizeof(ulong));
}
bool session_update(THD *thd, set_var *var)
{
- session_var(thd, uint)= var->save_result.ulonglong_value;
+ session_var(thd, ulong)= var->save_result.ulonglong_value;
return false;
}
bool global_update(THD *thd, set_var *var)
{
- global_var(uint)= var->save_result.ulonglong_value;
+ global_var(ulong)= var->save_result.ulonglong_value;
return false;
}
void session_save_default(THD *thd, set_var *var)
- { var->save_result.ulonglong_value= global_var(uint); }
+ { var->save_result.ulonglong_value= global_var(ulong); }
void global_save_default(THD *thd, set_var *var)
{ var->save_result.ulonglong_value= option.def_value; }
uchar *session_value_ptr(THD *thd, LEX_STRING *base)
- { return (uchar*)typelib.type_names[session_var(thd, uint)]; }
+ { return (uchar*)typelib.type_names[session_var(thd, ulong)]; }
uchar *global_value_ptr(THD *thd, LEX_STRING *base)
- { return (uchar*)typelib.type_names[global_var(uint)]; }
+ { return (uchar*)typelib.type_names[global_var(ulong)]; }
};
/**
diff --git a/storage/example/ha_example.cc b/storage/example/ha_example.cc
index 810859d2675..306f8eaeccd 100644
--- a/storage/example/ha_example.cc
+++ b/storage/example/ha_example.cc
@@ -912,7 +912,7 @@ int ha_example::create(const char *name, TABLE *table_arg,
struct st_mysql_storage_engine example_storage_engine=
{ MYSQL_HANDLERTON_INTERFACE_VERSION };
-static uint srv_enum_var= 0;
+static ulong srv_enum_var= 0;
static ulong srv_ulong_var= 0;
const char *enum_var_names[]=
diff --git a/storage/myisam/mi_static.c b/storage/myisam/mi_static.c
index 073b127f1a3..55967fc9001 100644
--- a/storage/myisam/mi_static.c
+++ b/storage/myisam/mi_static.c
@@ -33,9 +33,9 @@ uint myisam_quick_table_bits=9;
ulong myisam_block_size= MI_KEY_BLOCK_LENGTH; /* Best by test */
my_bool myisam_flush=0, myisam_delay_key_write=0, myisam_single_user=0;
#if defined(THREAD) && !defined(DONT_USE_RW_LOCKS)
-uint myisam_concurrent_insert= 2;
+ulong myisam_concurrent_insert= 2;
#else
-uint myisam_concurrent_insert= 0;
+ulong myisam_concurrent_insert= 0;
#endif
ulonglong myisam_max_temp_length= MAX_FILE_SIZE;
ulong myisam_data_pointer_size=4;