Commit 419ca715 authored by unknown's avatar unknown
Browse files

Merge rurik.mysql.com:/home/igor/mysql-4.0

into rurik.mysql.com:/home/igor/dev/mysql-4.0-0

parents 95036003 7a02bd9c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -545,3 +545,4 @@ vio/test-sslserver
vio/viotest-ssl
scripts/make_win_binary_distribution
EXCEPTIONS-CLIENT
support-files/my-innodb-heavy-4G.cnf
+27 −2
Original line number Diff line number Diff line
@@ -2200,8 +2200,9 @@ static int com_source(String *buffer, char *line)
static int
com_use(String *buffer __attribute__((unused)), char *line)
{
  char *tmp;
  char buff[256];
  char *tmp, buff[FN_REFLEN + 1];
  MYSQL_RES *res;
  MYSQL_ROW row;

  while (isspace(*line))
    line++;
@@ -2214,6 +2215,30 @@ com_use(String *buffer __attribute__((unused)), char *line)
    put_info("USE must be followed by a database name",INFO_ERROR);
    return 0;
  }
  /*
    We need to recheck the current database, because it may change
    under our feet, for example if DROP DATABASE or RENAME DATABASE
    (latter one not yet available by the time the comment was written)
  */
  /*  Let's reset current_db, assume it's gone */
  my_free(current_db, MYF(MY_ALLOW_ZERO_PTR));
  current_db= 0;
  /*
    We don't care about in case of an error below because current_db
    was just set to 0.
  */
  if (!mysql_query(&mysql, "SELECT DATABASE()") &&
      (res= mysql_use_result(&mysql)))
  {
    row= mysql_fetch_row(res);
    if (row[0])
    {
      current_db= my_strdup(row[0], MYF(MY_WME));
    }
    (void) mysql_fetch_row(res);               // Read eof
    mysql_free_result(res);
  }

  if (!current_db || cmp_database(current_db,tmp))
  {
    if (one_database)
+4 −4
Original line number Diff line number Diff line
@@ -413,8 +413,8 @@ static int process_all_tables_in_db(char *database)
  LINT_INIT(res);
  if (use_db(database))
    return 1;
  if (!(mysql_query(sock, "SHOW TABLES") ||
	(res = mysql_store_result(sock))))
  if (mysql_query(sock, "SHOW TABLES") ||
	!((res= mysql_store_result(sock))))
    return 1;

  if (opt_all_in_1)
+14 −14
Original line number Diff line number Diff line
@@ -34,14 +34,17 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking)
{
  int save_errno,errpos=0;
  uint files=0,i,dir_length,length,key_parts;
  ulonglong file_offset;
  ulonglong file_offset=0;
  char name_buff[FN_REFLEN*2],buff[FN_REFLEN],*end;
  MYRG_INFO *m_info=0;
  File fd;
  IO_CACHE file;
  MI_INFO *isam=0;
  uint found_merge_insert_method= 0;
  DBUG_ENTER("myrg_open");

  LINT_INIT(key_parts);

  bzero((char*) &file,sizeof(file));
  if ((fd=my_open(fn_format(name_buff,name,"",MYRG_NAME_EXT,4),
		  O_RDONLY | O_SHARE,MYF(0))) < 0)
@@ -72,7 +75,7 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking)
      if (!strncmp(buff+1,"INSERT_METHOD=",14))
      {			/* Lookup insert method */
	int tmp=find_type(buff+15,&merge_insert_method,2);
	m_info->merge_insert_method = (uint) (tmp >= 0 ? tmp : 0);
	found_merge_insert_method = (uint) (tmp >= 0 ? tmp : 0);
      }
      continue;		/* Skip comments */
    }
@@ -85,7 +88,7 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking)
    }
    if (!(isam=mi_open(buff,mode,(handle_locking?HA_OPEN_WAIT_IF_LOCKED:0))))
      goto err;
    if (!m_info)
    if (!m_info)                                /* First file */
    {
      key_parts=isam->s->base.key_parts;
      if (!(m_info= (MYRG_INFO*) my_malloc(sizeof(MYRG_INFO) +
@@ -97,15 +100,10 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking)
      {
        m_info->open_tables=(MYRG_TABLE *) (m_info+1);
        m_info->rec_per_key_part=(ulong *) (m_info->open_tables+files);
      }
      else
      {
        m_info->open_tables=0;
        m_info->rec_per_key_part=0;
      }
        m_info->tables= files;
        files= 0;
      }
      m_info->reclength=isam->s->base.reclength;
      file_offset=files=0;
      errpos=3;
    }
    m_info->open_tables[files].table= isam;
@@ -122,7 +120,8 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking)
    m_info->del+= isam->state->del;
    m_info->data_file_length+= isam->state->data_file_length;
    for (i=0; i < key_parts; i++)
      m_info->rec_per_key_part[i]+=isam->s->state.rec_per_key_part[i] / m_info->tables;
      m_info->rec_per_key_part[i]+= (isam->s->state.rec_per_key_part[i] /
                                     m_info->tables);
  }

  if (!m_info && !(m_info= (MYRG_INFO*) my_malloc(sizeof(MYRG_INFO),
@@ -130,6 +129,7 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking)
    goto err;
  /* Don't mark table readonly, for ALTER TABLE ... UNION=(...) to work */
  m_info->options&= ~(HA_OPTION_COMPRESS_RECORD | HA_OPTION_READ_ONLY_DATA);
  m_info->merge_insert_method= found_merge_insert_method;

  if (sizeof(my_off_t) == 4 && file_offset > (ulonglong) (ulong) ~0L)
  {
+51 −0
Original line number Diff line number Diff line
slave stop;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
slave start;
drop database if exists mysqltest1;
create database mysqltest1 /*!40100 character set latin2 */;
use mysqltest1;
drop table if exists t1;
create table t1 (a varchar(255) character set latin2, b varchar(4));
SET CHARACTER SET cp1250_latin2;
INSERT INTO t1 VALUES ('','80');
INSERT INTO t1 VALUES ('','90');
INSERT INTO t1 VALUES ('','A0');
INSERT INTO t1 VALUES ('','B0');
INSERT INTO t1 VALUES ('','C0');
INSERT INTO t1 VALUES ('','D0');
INSERT INTO t1 VALUES ('','E0');
INSERT INTO t1 VALUES ('','F0');
select "--- on master ---";
--- on master ---
--- on master ---
select hex(a),b from t1 order by b;
hex(a)	b
A9A6ABAEAC	80
B9B6BBBEBC	90
A3A1AAAF	A0
B3B1BAA5B5BF	B0
C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF	C0
D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF	D0
E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF	E0
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF	F0
show binlog events from 1979;
Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
master-bin.001	1979	Query	1	1979	use `mysqltest1`; SET CHARACTER SET DEFAULT
use mysqltest1;
select "--- on slave ---";
--- on slave ---
--- on slave ---
select hex(a),b from t1 order by b;
hex(a)	b
A9A6ABAEAC	80
B9B6BBBEBC	90
A3A1AAAF	A0
B3B1BAA5B5BF	B0
C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF	C0
D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF	D0
E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF	E0
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF	F0
drop database mysqltest1;
Loading