Commit 0e155240 authored by unknown's avatar unknown
Browse files

Merge rburnett@bk-internal.mysql.com:/home/bk/mysql-5.1-new

into  linux.site:/home/reggie/work/mysql-5.1-bug14354


mysql-test/r/partition_mgm_err.result:
  Auto merged
sql/ha_partition.cc:
  Auto merged
sql/ha_partition.h:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_partition.cc:
  Auto merged
mysql-test/t/partition_mgm_err.test:
  SCCS merged
parents cbfc0f4c f3754552
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -168,6 +168,22 @@ ALTER TABLE t1 DROP PARTITION x0;

DROP TABLE t1;

#
# BUG: 14354 Partitions: data directory clause fails
#
--exec rm -rf $MYSQL_TEST_DIR/var/tmp/bug14354
--exec mkdir $MYSQL_TEST_DIR/var/tmp/bug14354
disable_query_log;
eval CREATE TABLE t1 (id int) PARTITION BY RANGE(id) (
PARTITION p1 VALUES LESS THAN (20) ENGINE=myiasm 
DATA DIRECTORY="$MYSQL_TEST_DIR/var/tmp/bug14354" 
INDEX DIRECTORY="$MYSQL_TEST_DIR/var/tmp/bug14354");
enable_query_log;
--exec test -f $MYSQL_TEST_DIR/var/tmp/bug14354/t1_p1.MYD
--exec test -f $MYSQL_TEST_DIR/var/tmp/bug14354/t1_p1.MYI
DROP TABLE t1;
--exec rm -rf $MYSQL_TEST_DIR/var/tmp/bug14354

#
# Bug# 16534 - Trying to add multiple partitions crashes server
#
+13 −3
Original line number Diff line number Diff line
@@ -1696,7 +1696,7 @@ uint ha_partition::del_ren_cre_table(const char *from,
      error= (*file)->delete_table((const char*) from_buff);
    else
    {
      set_up_table_before_create(table_arg, create_info, i);
      set_up_table_before_create(table_arg, from_buff, create_info, i);
      error= (*file)->create(from_buff, table_arg, create_info);
    }
    name_buffer_ptr= strend(name_buffer_ptr) + 1;
@@ -1770,6 +1770,7 @@ partition_element *ha_partition::find_partition_element(uint part_id)
*/

void ha_partition::set_up_table_before_create(TABLE *table,
                   const char *partition_name_with_path, 
                   HA_CREATE_INFO *info,
                   uint part_id)
{
@@ -1779,6 +1780,15 @@ void ha_partition::set_up_table_before_create(TABLE *table,
    return;                                     // Fatal error
  table->s->max_rows= part_elem->part_max_rows;
  table->s->min_rows= part_elem->part_min_rows;
  char *partition_name= strrchr(partition_name_with_path, FN_LIBCHAR);
  if (part_elem->index_file_name)
    append_file_to_dir(current_thd,
                       (const char**)&part_elem->index_file_name,
                       partition_name+1);
  if (part_elem->data_file_name)
    append_file_to_dir(current_thd,
                       (const char**)&part_elem->data_file_name,
                       partition_name+1);
  info->index_file_name= part_elem->index_file_name;
  info->data_file_name= part_elem->data_file_name;
}
+4 −2
Original line number Diff line number Diff line
@@ -220,7 +220,9 @@ class ha_partition :public handler
  bool new_handlers_from_part_info();
  bool create_handlers();
  void clear_handler_file();
  void set_up_table_before_create(TABLE * table_arg, HA_CREATE_INFO * info,
  void set_up_table_before_create(TABLE *table_arg,
                                  const char *partition_name_with_path,
                                  HA_CREATE_INFO *info,
                                  uint part_id);
  partition_element *find_partition_element(uint part_id);
public:
+2 −0
Original line number Diff line number Diff line
@@ -649,6 +649,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
		      char* packet, uint packet_length);
void log_slow_statement(THD *thd);
bool check_dup(const char *db, const char *name, TABLE_LIST *tables);
bool append_file_to_dir(THD *thd, const char **filename_ptr, 
                        const char *table_name);

bool table_cache_init(void);
void table_cache_free(void);
+2 −4
Original line number Diff line number Diff line
@@ -68,8 +68,6 @@ static bool check_db_used(THD *thd,TABLE_LIST *tables);
static bool check_multi_update_lock(THD *thd);
static void remove_escape(char *name);
static void refresh_status(THD *thd);
static bool append_file_to_dir(THD *thd, const char **filename_ptr,
			       const char *table_name);

const char *any_db="*any*";	// Special symbol for check_access

@@ -6729,7 +6727,7 @@ static void refresh_status(THD *thd)

	/* If pointer is not a null pointer, append filename to it */

static bool append_file_to_dir(THD *thd, const char **filename_ptr,
bool append_file_to_dir(THD *thd, const char **filename_ptr,
                        const char *table_name)
{
  char buff[FN_REFLEN],*ptr, *end;
Loading