_dbug.c
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

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