|
19 | 19 | #include <ma_odbc.h>
|
20 | 20 | #include <stdint.h>
|
21 | 21 |
|
| 22 | +#define MADB_FIELD_IS_BINARY(_field) ((_field).charsetnr == BINARY_CHARSETNR) |
22 | 23 |
|
23 | 24 | void CloseMultiStatements(MADB_Stmt *Stmt)
|
24 | 25 | {
|
@@ -363,23 +364,23 @@ char *MADB_GetTypeName(MYSQL_FIELD Field)
|
363 | 364 | return "date";
|
364 | 365 | case MYSQL_TYPE_VARCHAR:
|
365 | 366 | case MYSQL_TYPE_VAR_STRING:
|
366 |
| - return (Field.flags & BINARY_FLAG) ? "varbinary" : "varchar"; |
| 367 | + return MADB_FIELD_IS_BINARY(Field) ? "varbinary" : "varchar"; |
367 | 368 | case MYSQL_TYPE_BIT:
|
368 | 369 | return "bit";
|
369 | 370 | case MYSQL_TYPE_ENUM:
|
370 | 371 | return "enum";
|
371 | 372 | case MYSQL_TYPE_SET:
|
372 | 373 | return "set";
|
373 | 374 | case MYSQL_TYPE_TINY_BLOB:
|
374 |
| - return (Field.flags & BINARY_FLAG) ? "tinyblob" : "tinytext"; |
| 375 | + return MADB_FIELD_IS_BINARY(Field) ? "tinyblob" : "tinytext"; |
375 | 376 | case MYSQL_TYPE_MEDIUM_BLOB:
|
376 |
| - return (Field.flags & BINARY_FLAG) ? "mediumblob" : "mediumtext"; |
| 377 | + return MADB_FIELD_IS_BINARY(Field) ? "mediumblob" : "mediumtext"; |
377 | 378 | case MYSQL_TYPE_LONG_BLOB:
|
378 |
| - return (Field.flags & BINARY_FLAG) ? "longblob" : "longtext"; |
| 379 | + return MADB_FIELD_IS_BINARY(Field) ? "longblob" : "longtext"; |
379 | 380 | case MYSQL_TYPE_BLOB:
|
380 |
| - return (Field.flags & BINARY_FLAG) ? "blob" : "text"; |
| 381 | + return MADB_FIELD_IS_BINARY(Field) ? "blob" : "text"; |
381 | 382 | case MYSQL_TYPE_STRING:
|
382 |
| - return (Field.flags & BINARY_FLAG) ? "binary" : "char"; |
| 383 | + return MADB_FIELD_IS_BINARY(Field) ? "binary" : "char"; |
383 | 384 | case MYSQL_TYPE_GEOMETRY:
|
384 | 385 | return "geometry";
|
385 | 386 | default:
|
@@ -467,8 +468,7 @@ size_t MADB_GetDataSize(MADB_DescRecord *Record, MYSQL_FIELD Field, CHARSET_INFO
|
467 | 468 | return Field.length;
|
468 | 469 | default:
|
469 | 470 | {
|
470 |
| - if (Field.flags & BINARY_FLAG || Field.charsetnr == BINARY_CHARSETNR |
471 |
| - || charset == NULL || charset->char_maxlen < 2/*i.e.0||1*/) |
| 471 | + if (MADB_FIELD_IS_BINARY(Field) || charset == NULL || charset->char_maxlen < 2/*i.e.0||1*/) |
472 | 472 | {
|
473 | 473 | return Field.length;
|
474 | 474 | }
|
@@ -526,7 +526,7 @@ size_t MADB_GetDisplaySize(MYSQL_FIELD Field, CHARSET_INFO *charset)
|
526 | 526 | case MYSQL_TYPE_VARCHAR:
|
527 | 527 | case MYSQL_TYPE_VAR_STRING:
|
528 | 528 | {
|
529 |
| - if (Field.flags & BINARY_FLAG || Field.charsetnr == BINARY_CHARSETNR) |
| 529 | + if (MADB_FIELD_IS_BINARY(Field)) |
530 | 530 | {
|
531 | 531 | return Field.length*2; /* ODBC specs says we should give 2 characters per byte to display binaray data in hex form */
|
532 | 532 | }
|
@@ -688,13 +688,13 @@ SQLSMALLINT MADB_GetODBCType(MYSQL_FIELD *field)
|
688 | 688 | case MYSQL_TYPE_BLOB:
|
689 | 689 | case MYSQL_TYPE_MEDIUM_BLOB:
|
690 | 690 | case MYSQL_TYPE_LONG_BLOB:
|
691 |
| - return field->flags & BINARY_FLAG ? SQL_LONGVARBINARY : SQL_LONGVARCHAR; |
| 691 | + return MADB_FIELD_IS_BINARY(*field) ? SQL_LONGVARBINARY : SQL_LONGVARCHAR; |
692 | 692 | case MYSQL_TYPE_LONGLONG:
|
693 | 693 | return SQL_BIGINT;
|
694 |
| - case MYSQL_TYPE_STRING: |
695 |
| - return field->flags & BINARY_FLAG ? SQL_BINARY : SQL_CHAR; |
| 694 | + case MYSQL_TYPE_STRING: |
| 695 | + return MADB_FIELD_IS_BINARY(*field) ? SQL_BINARY : SQL_CHAR; |
696 | 696 | case MYSQL_TYPE_VAR_STRING:
|
697 |
| - return field->flags & BINARY_FLAG ? SQL_VARBINARY : SQL_VARCHAR; |
| 697 | + return MADB_FIELD_IS_BINARY(*field) ? SQL_VARBINARY : SQL_VARCHAR; |
698 | 698 | case MYSQL_TYPE_SET:
|
699 | 699 | case MYSQL_TYPE_ENUM:
|
700 | 700 | return SQL_CHAR;
|
|
0 commit comments