Commit 5392be95 authored by unknown's avatar unknown
Browse files

Merge bk-internal.mysql.com:/home/bk/mysql-4.1-maint

into  zippy.(none):/home/cmiller/work/mysql/m41-maint--07AB5

parents 4bdc4251 26ddd5cb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1058,3 +1058,4 @@ vio/test-sslclient
vio/test-sslserver
vio/viotest-ssl
libmysql/libmysql.ver
libmysqld/sql_locale.cc
+1 −0
Original line number Diff line number Diff line
@@ -73,5 +73,6 @@ hours:
[jonas:]checkout:get
[tomas:]checkout:get
[guilhem:]checkout:get
[pekka:]checkout:get
checkout:edit
eoln:unix
+1 −1
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
	key.cc lock.cc log.cc log_event.cc sql_state.c \
	protocol.cc net_serv.cc opt_range.cc \
	opt_sum.cc procedure.cc records.cc sql_acl.cc \
	sql_load.cc discover.cc \
	sql_load.cc discover.cc sql_locale.cc \
	sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc \
	sql_crypt.cc sql_db.cc sql_delete.cc sql_error.cc sql_insert.cc \
	sql_lex.cc sql_list.cc sql_manager.cc sql_map.cc sql_parse.cc \
+3 −2
Original line number Diff line number Diff line
@@ -1155,12 +1155,13 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend)
	      */
              int search_result= (keyinfo->flag & HA_SPATIAL) ?
                rtree_find_first(info, key, info->lastkey, key_length,
                                 SEARCH_SAME) : 
                                 MBR_EQUAL | MBR_DATA) : 
                _mi_search(info,keyinfo,info->lastkey,key_length,
                           SEARCH_SAME, info->s->state.key_root[key]);
              if (search_result)
              {
                mi_check_print_error(param,"Record at: %10s  Can't find key for index: %2d",
                mi_check_print_error(param,"Record at: %10s  "
                                     "Can't find key for index: %2d",
                                     llstr(start_recpos,llbuff),key+1);
                if (error++ > MAXERR || !(param->testflag & T_VERBOSE))
                  goto err2;
+46 −7
Original line number Diff line number Diff line
@@ -59,6 +59,8 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
  my_off_t key_root[MI_MAX_POSSIBLE_KEY],key_del[MI_MAX_KEY_BLOCK_SIZE];
  MI_CREATE_INFO tmp_create_info;
  DBUG_ENTER("mi_create");
  DBUG_PRINT("enter", ("keys: %u  columns: %u  uniques: %u  flags: %u",
                      keys, columns, uniques, flags));

  if (!ci)
  {
@@ -447,6 +449,16 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
			       uniques * MI_UNIQUEDEF_SIZE +
			       (key_segs + unique_key_parts)*HA_KEYSEG_SIZE+
			       columns*MI_COLUMNDEF_SIZE);
  DBUG_PRINT("info", ("info_length: %u", info_length));
  /* There are only 16 bits for the total header length. */
  if (info_length > 65535)
  {
    my_printf_error(0, "MyISAM table '%s' has too many columns and/or "
                    "indexes and/or unique constraints.",
                    MYF(0), name + dirname_length(name));
    my_errno= HA_WRONG_CREATE_OPTION;
    goto err;
  }

  bmove(share.state.header.file_version,(byte*) myisam_file_magic,4);
  ci->old_options=options| (ci->old_options & HA_OPTION_TEMP_COMPRESS_RECORD ?
@@ -519,8 +531,19 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,

  if (ci->index_file_name)
  {
    fn_format(filename, ci->index_file_name,"",MI_NAME_IEXT,4);
    fn_format(linkname,name, "",MI_NAME_IEXT,4);
    if (options & HA_OPTION_TMP_TABLE)
    {
      char *path;
      /* chop off the table name, tempory tables use generated name */
      if ((path= strrchr(ci->index_file_name, FN_LIBCHAR)))
        *path= '\0';
      fn_format(filename, name, ci->index_file_name, MI_NAME_IEXT,
                MY_REPLACE_DIR | MY_UNPACK_FILENAME);
    }
    else
      fn_format(filename, ci->index_file_name, "",
                MI_NAME_IEXT, MY_UNPACK_FILENAME);
    fn_format(linkname, name, "", MI_NAME_IEXT, MY_UNPACK_FILENAME);
    linkname_ptr= linkname;
    /*
      Don't create the table if the link or file exists to ensure that one
@@ -575,8 +598,19 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
    {
      if (ci->data_file_name)
      {
	fn_format(filename, ci->data_file_name,"",MI_NAME_DEXT,4);
	fn_format(linkname, name, "",MI_NAME_DEXT,4);
        if (options & HA_OPTION_TMP_TABLE)
        {
          char *path;
          /* chop off the table name, tempory tables use generated name */
          if ((path= strrchr(ci->data_file_name, FN_LIBCHAR)))
            *path= '\0';
          fn_format(filename, name, ci->data_file_name, MI_NAME_DEXT,
                    MY_REPLACE_DIR | MY_UNPACK_FILENAME);
        }
        else
          fn_format(filename, ci->data_file_name, "",
                    MI_NAME_DEXT, MY_UNPACK_FILENAME);
        fn_format(linkname, name, "", MI_NAME_DEXT, MY_UNPACK_FILENAME);
        linkname_ptr= linkname;
        create_flag= 0;
      }
@@ -594,6 +628,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
    errpos=3;
  }

  DBUG_PRINT("info", ("write state info and base info"));
  if (mi_state_info_write(file, &share.state, 2) ||
      mi_base_info_write(file, &share.base))
    goto err;
@@ -607,6 +642,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
#endif

  /* Write key and keyseg definitions */
  DBUG_PRINT("info", ("write key and keyseg definitions"));
  for (i=0 ; i < share.base.keys - uniques; i++)
  {
    uint sp_segs=(keydefs[i].flag & HA_SPATIAL) ? 2*SPDIMS : 0;
@@ -655,6 +691,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
  }

  /* Save unique definition */
  DBUG_PRINT("info", ("write unique definitions"));
  for (i=0 ; i < share.state.header.uniques ; i++)
  {
    if (mi_uniquedef_write(file, &uniquedefs[i]))
@@ -665,6 +702,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
	goto err;
    }
  }
  DBUG_PRINT("info", ("write field definitions"));
  for (i=0 ; i < share.base.fields ; i++)
    if (mi_recinfo_write(file, &recinfo[i]))
      goto err;
@@ -679,6 +717,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
#endif

	/* Enlarge files */
  DBUG_PRINT("info", ("enlarge to keystart: %lu", (ulong) share.base.keystart));
  if (my_chsize(file,(ulong) share.base.keystart,0,MYF(0)))
    goto err;

Loading