_dbug.c
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
  2.    
  3.    This program is free software; you can redistribute it and/or modify
  4.    it under the terms of the GNU General Public License as published by
  5.    the Free Software Foundation; either version 2 of the License, or
  6.    (at your option) any later version.
  7.    
  8.    This program is distributed in the hope that it will be useful,
  9.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11.    GNU General Public License for more details.
  12.    
  13.    You should have received a copy of the GNU General Public License
  14.    along with this program; if not, write to the Free Software
  15.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  16. /* Support rutiner with are using with dbug */
  17. #include "isamdef.h"
  18. /* Print a key in user understandable format */
  19. void _nisam_print_key(FILE *stream, register N_KEYSEG *keyseg, const uchar *key)
  20. {
  21.   int flag;
  22.   short int s_1;
  23.   long int l_1;
  24.   float f_1;
  25.   double d_1;
  26.   uchar *end;
  27.   VOID(fputs("Key: "",stream));
  28.   flag=0;
  29.   for (; keyseg->base.type ;keyseg++)
  30.   {
  31.     if (flag++)
  32.       VOID(putc('-',stream));
  33.     end= (uchar*) key+ keyseg->base.length;
  34.     switch (keyseg->base.type) {
  35.     case HA_KEYTYPE_BINARY:
  36.       if (!(keyseg->base.flag & HA_SPACE_PACK) && keyseg->base.length == 1)
  37.       { /* packed binary digit */
  38. VOID(fprintf(stream,"%d",(uint) *key++));
  39. break;
  40.       }
  41.       /* fall through */
  42.     case HA_KEYTYPE_TEXT:
  43.     case HA_KEYTYPE_NUM:
  44.       if (keyseg->base.flag & HA_SPACE_PACK)
  45.       {
  46. VOID(fprintf(stream,"%.*s",(int) *key,key+1));
  47. key+= (int) *key+1;
  48.       }
  49.       else
  50.       {
  51. VOID(fprintf(stream,"%.*s",(int) keyseg->base.length,key));
  52. key=end;
  53.       }
  54.       break;
  55.     case HA_KEYTYPE_INT8:
  56.       VOID(fprintf(stream,"%d",(int) *((signed char*) key)));
  57.       key=end;
  58.       break;
  59.     case HA_KEYTYPE_SHORT_INT:
  60.       shortget(s_1,key);
  61.       VOID(fprintf(stream,"%d",(int) s_1));
  62.       key=end;
  63.       break;
  64.     case HA_KEYTYPE_USHORT_INT:
  65.       {
  66. ushort u_1;
  67. ushortget(u_1,key);
  68. VOID(fprintf(stream,"%u",(uint) u_1));
  69. key=end;
  70. break;
  71.       }
  72.     case HA_KEYTYPE_LONG_INT:
  73.       longget(l_1,key);
  74.       VOID(fprintf(stream,"%ld",l_1));
  75.       key=end;
  76.       break;
  77.     case HA_KEYTYPE_ULONG_INT:
  78.       longget(l_1,key);
  79.       VOID(fprintf(stream,"%lu",(ulong) l_1));
  80.       key=end;
  81.       break;
  82.     case HA_KEYTYPE_INT24:
  83.       VOID(fprintf(stream,"%d",sint3korr(key)));
  84.       key=end;
  85.       break;
  86.     case HA_KEYTYPE_UINT24:
  87.       VOID(fprintf(stream,"%ld",uint3korr(key)));
  88.       key=end;
  89.       break;
  90.     case HA_KEYTYPE_FLOAT:
  91.       bmove((byte*) &f_1,(byte*) key,(int) sizeof(float));
  92.       VOID(fprintf(stream,"%g",(double) f_1));
  93.       key=end;
  94.       break;
  95.     case HA_KEYTYPE_DOUBLE:
  96.       doubleget(d_1,key);
  97.       VOID(fprintf(stream,"%g",d_1));
  98.       key=end;
  99.       break;
  100. #ifdef HAVE_LONG_LONG
  101.     case HA_KEYTYPE_LONGLONG:
  102.     {
  103.       char buff[21];
  104.       longlong tmp;
  105.       longlongget(tmp,key);
  106.       longlong2str(tmp,buff,-10);
  107.       VOID(fprintf(stream,"%s",buff));
  108.       key=end;
  109.       break;
  110.     }
  111.     case HA_KEYTYPE_ULONGLONG:
  112.     {
  113.       char buff[21];
  114.       longlong tmp;
  115.       longlongget(tmp,key);
  116.       longlong2str(tmp,buff,10);
  117.       VOID(fprintf(stream,"%s",buff));
  118.       key=end;
  119.       break;
  120.     }
  121. #endif
  122.     default: break; /* This never happens */
  123.     }
  124.   }
  125.   VOID(fputs("n",stream));
  126.   return;
  127. } /* print_key */