void my_print_variables(const struct my_option *options) { uint name_space= 34, length; char buff[255]; const struct my_option *optp; printf("\nVariables (--variable-name=value)\n"); printf("and boolean options {FALSE|TRUE} Value (after reading options)\n"); printf("--------------------------------- -----------------------------\n"); for (optp= options; optp->id; optp++) { if (optp->value) { printf("%s", optp->name); length= strlen(optp->name); for (; length < name_space; length++) putchar(' '); switch (optp->var_type) { case GET_STR: case GET_STR_ALLOC: /* fall through */ printf("%s\n", *((char**) optp->value) ? *((char**) optp->value) : "(No default value)"); break; case GET_BOOL: printf("%s\n", *((my_bool*) optp->value) ? "TRUE" : "FALSE"); break; case GET_INT: printf("%d\n", *((int*) optp->value)); break; case GET_UINT: printf("%d\n", *((uint*) optp->value)); break; case GET_LONG: printf("%lu\n", *((long*) optp->value)); break; case GET_ULONG: printf("%lu\n", *((ulong*) optp->value)); break; case GET_LL: printf("%s\n", llstr(*((longlong*) optp->value), buff)); break; case GET_ULL: longlong2str(*((ulonglong*) optp->value), buff, 10); printf("%s\n", buff); break; default: /* dummy default to avoid compiler warnings */ break; } } } }
void _mi_print_key(FILE *stream, register MI_KEYSEG *keyseg, const uchar *key, uint length) { int flag; short int s_1; long int l_1; float f_1; double d_1; const uchar *end; const uchar *key_end=key+length; VOID(fputs("Key: \"",stream)); flag=0; for (; keyseg->type && key < key_end ;keyseg++) { if (flag++) VOID(putc('-',stream)); end= key+ keyseg->length; if (keyseg->flag & HA_NULL_PART) { if (!*key) { fprintf(stream,"NULL"); continue; } key++; } switch (keyseg->type) { case HA_KEYTYPE_BINARY: if (!(keyseg->flag & HA_SPACE_PACK) && keyseg->length == 1) { /* packed binary digit */ VOID(fprintf(stream,"%d",(uint) *key++)); break; } /* fall through */ case HA_KEYTYPE_TEXT: case HA_KEYTYPE_NUM: if (keyseg->flag & HA_SPACE_PACK) { VOID(fprintf(stream,"%.*s",(int) *key,key+1)); key+= (int) *key+1; } else { VOID(fprintf(stream,"%.*s",(int) keyseg->length,key)); key=end; } break; case HA_KEYTYPE_INT8: VOID(fprintf(stream,"%d",(int) *((signed char*) key))); key=end; break; case HA_KEYTYPE_SHORT_INT: s_1= mi_sint2korr(key); VOID(fprintf(stream,"%d",(int) s_1)); key=end; break; case HA_KEYTYPE_USHORT_INT: { ushort u_1; u_1= mi_uint2korr(key); VOID(fprintf(stream,"%u",(uint) u_1)); key=end; break; } case HA_KEYTYPE_LONG_INT: l_1=mi_sint4korr(key); VOID(fprintf(stream,"%ld",l_1)); key=end; break; case HA_KEYTYPE_ULONG_INT: l_1=mi_sint4korr(key); VOID(fprintf(stream,"%lu",(ulong) l_1)); key=end; break; case HA_KEYTYPE_INT24: VOID(fprintf(stream,"%ld",(long) mi_sint3korr(key))); key=end; break; case HA_KEYTYPE_UINT24: VOID(fprintf(stream,"%lu",(ulong) mi_uint3korr(key))); key=end; break; case HA_KEYTYPE_FLOAT: mi_float4get(f_1,key); VOID(fprintf(stream,"%g",(double) f_1)); key=end; break; case HA_KEYTYPE_DOUBLE: mi_float8get(d_1,key); VOID(fprintf(stream,"%g",d_1)); key=end; break; #ifdef HAVE_LONG_LONG case HA_KEYTYPE_LONGLONG: { char buff[21]; longlong2str(mi_sint8korr(key),buff,-10); VOID(fprintf(stream,"%s",buff)); key=end; break; } case HA_KEYTYPE_ULONGLONG: { char buff[21]; longlong2str(mi_sint8korr(key),buff,10); VOID(fprintf(stream,"%s",buff)); key=end; break; } #endif case HA_KEYTYPE_VARTEXT: /* VARCHAR and TEXT */ case HA_KEYTYPE_VARBINARY: /* VARBINARY and BLOB */ { uint tmp_length; get_key_length(tmp_length,key); VOID(fprintf(stream,"%.*s",(int) tmp_length,key)); key+=tmp_length; break; } default: break; /* This never happens */ } } VOID(fputs("\"\n",stream)); return; } /* print_key */
void _nisam_print_key(FILE *stream, register N_KEYSEG *keyseg, const uchar *key) { int flag; short int s_1; long int l_1; float f_1; double d_1; uchar *end; VOID(fputs("Key: \"",stream)); flag=0; for (; keyseg->base.type ;keyseg++) { if (flag++) VOID(putc('-',stream)); end= (uchar*) key+ keyseg->base.length; switch (keyseg->base.type) { case HA_KEYTYPE_BINARY: if (!(keyseg->base.flag & HA_SPACE_PACK) && keyseg->base.length == 1) { /* packed binary digit */ VOID(fprintf(stream,"%d",(uint) *key++)); break; } /* fall through */ case HA_KEYTYPE_TEXT: case HA_KEYTYPE_NUM: if (keyseg->base.flag & HA_SPACE_PACK) { VOID(fprintf(stream,"%.*s",(int) *key,key+1)); key+= (int) *key+1; } else { VOID(fprintf(stream,"%.*s",(int) keyseg->base.length,key)); key=end; } break; case HA_KEYTYPE_INT8: VOID(fprintf(stream,"%d",(int) *((signed char*) key))); key=end; break; case HA_KEYTYPE_SHORT_INT: shortget(s_1,key); VOID(fprintf(stream,"%d",(int) s_1)); key=end; break; case HA_KEYTYPE_USHORT_INT: { ushort u_1; ushortget(u_1,key); VOID(fprintf(stream,"%u",(uint) u_1)); key=end; break; } case HA_KEYTYPE_LONG_INT: longget(l_1,key); VOID(fprintf(stream,"%ld",l_1)); key=end; break; case HA_KEYTYPE_ULONG_INT: longget(l_1,key); VOID(fprintf(stream,"%lu",(ulong) l_1)); key=end; break; case HA_KEYTYPE_INT24: VOID(fprintf(stream,"%ld",(long) sint3korr(key))); key=end; break; case HA_KEYTYPE_UINT24: VOID(fprintf(stream,"%ld",(long) uint3korr(key))); key=end; break; case HA_KEYTYPE_FLOAT: bmove((byte*) &f_1,(byte*) key,(int) sizeof(float)); VOID(fprintf(stream,"%g",(double) f_1)); key=end; break; case HA_KEYTYPE_DOUBLE: doubleget(d_1,key); VOID(fprintf(stream,"%g",d_1)); key=end; break; #ifdef HAVE_LONG_LONG case HA_KEYTYPE_LONGLONG: { char buff[21]; longlong tmp; longlongget(tmp,key); longlong2str(tmp,buff,-10); VOID(fprintf(stream,"%s",buff)); key=end; break; } case HA_KEYTYPE_ULONGLONG: { char buff[21]; longlong tmp; longlongget(tmp,key); longlong2str(tmp,buff,10); VOID(fprintf(stream,"%s",buff)); key=end; break; } #endif default: break; /* This never happens */ } } VOID(fputs("\n",stream)); return; } /* print_key */
void _mi_print_key(FILE *stream, register HA_KEYSEG *keyseg, const uchar *key, uint length) { int flag; short int s_1; long int l_1; float f_1; double d_1; const uchar *end; const uchar *key_end=key+length; (void) fputs("Key: \"",stream); flag=0; for (; keyseg->type && key < key_end ;keyseg++) { if (flag++) (void) putc('-',stream); end= key+ keyseg->length; if (keyseg->flag & HA_NULL_PART) { /* A NULL value is encoded by a 1-byte flag. Zero means NULL. */ if (! *(key++)) { fprintf(stream,"NULL"); continue; } } switch (keyseg->type) { case HA_KEYTYPE_BINARY: if (!(keyseg->flag & HA_SPACE_PACK) && keyseg->length == 1) { /* packed binary digit */ (void) fprintf(stream,"%d",(uint) *key++); break; } /* fall through */ case HA_KEYTYPE_TEXT: case HA_KEYTYPE_NUM: if (keyseg->flag & HA_SPACE_PACK) { (void) fprintf(stream,"%.*s",(int) *key,key+1); key+= (int) *key+1; } else { (void) fprintf(stream,"%.*s",(int) keyseg->length,key); key=end; } break; case HA_KEYTYPE_INT8: (void) fprintf(stream,"%d",(int) *((signed char*) key)); key=end; break; case HA_KEYTYPE_SHORT_INT: s_1= mi_sint2korr(key); (void) fprintf(stream,"%d",(int) s_1); key=end; break; case HA_KEYTYPE_USHORT_INT: { ushort u_1; u_1= mi_uint2korr(key); (void) fprintf(stream,"%u",(uint) u_1); key=end; break; } case HA_KEYTYPE_LONG_INT: l_1=mi_sint4korr(key); (void) fprintf(stream,"%ld",l_1); key=end; break; case HA_KEYTYPE_ULONG_INT: l_1=mi_sint4korr(key); (void) fprintf(stream,"%lu",(ulong) l_1); key=end; break; case HA_KEYTYPE_INT24: (void) fprintf(stream,"%ld",(long) mi_sint3korr(key)); key=end; break; case HA_KEYTYPE_UINT24: (void) fprintf(stream,"%lu",(ulong) mi_uint3korr(key)); key=end; break; case HA_KEYTYPE_FLOAT: mi_float4get(f_1,key); (void) fprintf(stream,"%g",(double) f_1); key=end; break; case HA_KEYTYPE_DOUBLE: mi_float8get(d_1,key); (void) fprintf(stream,"%g",d_1); key=end; break; #ifdef HAVE_LONG_LONG case HA_KEYTYPE_LONGLONG: { char buff[21]; longlong2str(mi_sint8korr(key),buff,-10); (void) fprintf(stream,"%s",buff); key=end; break; } case HA_KEYTYPE_ULONGLONG: { char buff[21]; longlong2str(mi_sint8korr(key),buff,10); (void) fprintf(stream,"%s",buff); key=end; break; } case HA_KEYTYPE_BIT: { uint i; fputs("0x",stream); for (i=0 ; i < keyseg->length ; i++) fprintf(stream, "%02x", (uint) *key++); key= end; break; } #endif case HA_KEYTYPE_VARTEXT1: /* VARCHAR and TEXT */ case HA_KEYTYPE_VARTEXT2: /* VARCHAR and TEXT */ case HA_KEYTYPE_VARBINARY1: /* VARBINARY and BLOB */ case HA_KEYTYPE_VARBINARY2: /* VARBINARY and BLOB */ { uint tmp_length; get_key_length(tmp_length,key); /* The following command sometimes gives a warning from valgrind. Not yet sure if the bug is in valgrind, glibc or mysqld */ (void) fprintf(stream,"%.*s",(int) tmp_length,key); key+=tmp_length; break; } default: break; /* This never happens */ } } (void) fputs("\"\n",stream); return; } /* print_key */