home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 January / Chip_2001-01_cd1.bin / tema / mysql / mysql-3.23.28g-win-source.exe / sql / ha_hash.h < prev    next >
Text File  |  2000-08-31  |  989b  |  32 lines

  1.  
  2. int ha_hash::create(my_string name, register TABLE *form,
  3.             ulonglong auto_increment_value)
  4. {
  5.   register uint i,j;
  6.   char buff[FN_REFLEN];
  7.   KEY *pos;
  8.   H_KEYDEF keydef[MAX_KEY];
  9.   DBUG_ENTER("cre_hash");
  10.  
  11.   pos=form->key_info;
  12.   for (i=0; i < form->keys ; i++, pos++)
  13.   {
  14.     keydef[i].hk_flag=     pos->flags & HA_NOSAME;
  15.     for (j=0 ; (int7) j < pos->key_parts ; j++)
  16.     {
  17.       uint flag=pos->key_part[j].key_type;
  18.       if (!f_is_packed(flag) && f_packtype(flag) == (int) FIELD_TYPE_DECIMAL &&
  19.       !(flag & FIELDFLAG_BINARY))
  20.     keydef[i].hk_keyseg[j].key_type= (int) HA_KEYTYPE_TEXT;
  21.       else
  22.     keydef[i].hk_keyseg[j].key_type= (int) HA_KEYTYPE_BINARY;
  23.       keydef[i].hk_keyseg[j].start=  pos->key_part[j].offset;
  24.       keydef[i].hk_keyseg[j].length= pos->key_part[j].length;
  25.     }
  26.     keydef[i].hk_keyseg[j].key_type= 0;
  27.   }
  28.   DBUG_RETURN(h_create(fn_format(buff,name,"","",2+4+16),i,
  29.                keydef,form->reclength,form->max_rows,form->min_rows,
  30.                0));
  31. } /* cre_hash */
  32.