| 648 | //------------------------------------------------------------------------------ |
| 649 | |
| 650 | int vtkMySQLQuery::GetFieldType(int column) |
| 651 | { |
| 652 | if (!this->Active) |
| 653 | { |
| 654 | vtkErrorMacro(<< "GetFieldType(): Query is not active!"); |
| 655 | return VTK_VOID; |
| 656 | } |
| 657 | else if (column < 0 || column >= this->GetNumberOfFields()) |
| 658 | { |
| 659 | vtkErrorMacro(<< "GetFieldType(): Illegal field index " << column); |
| 660 | return VTK_VOID; |
| 661 | } |
| 662 | else |
| 663 | { |
| 664 | vtkMySQLDatabase* dbContainer = static_cast<vtkMySQLDatabase*>(this->Database); |
| 665 | assert(dbContainer != nullptr); |
| 666 | if (!dbContainer->IsOpen()) |
| 667 | { |
| 668 | vtkErrorMacro(<< "Cannot get field type. Database is closed."); |
| 669 | return VTK_VOID; |
| 670 | } |
| 671 | |
| 672 | MYSQL_FIELD* field = mysql_fetch_field_direct(this->Internals->Result, column); |
| 673 | if (field == nullptr) |
| 674 | { |
| 675 | vtkErrorMacro(<< "GetFieldType(): MySQL returned null field for column " << column); |
| 676 | return -1; |
| 677 | } |
| 678 | else |
| 679 | { |
| 680 | |
| 681 | switch (field->type) |
| 682 | { |
| 683 | case MYSQL_TYPE_ENUM: |
| 684 | case MYSQL_TYPE_TINY: |
| 685 | case MYSQL_TYPE_INT24: |
| 686 | case MYSQL_TYPE_YEAR: |
| 687 | return VTK_INT; |
| 688 | |
| 689 | case MYSQL_TYPE_SHORT: |
| 690 | return VTK_SHORT; |
| 691 | |
| 692 | case MYSQL_TYPE_LONG: |
| 693 | case MYSQL_TYPE_LONGLONG: |
| 694 | return VTK_LONG; |
| 695 | |
| 696 | case MYSQL_TYPE_TIMESTAMP: |
| 697 | case MYSQL_TYPE_DATE: |
| 698 | case MYSQL_TYPE_TIME: |
| 699 | case MYSQL_TYPE_DATETIME: |
| 700 | case MYSQL_TYPE_NEWDATE: |
| 701 | return VTK_STRING; // Just return the raw string. |
| 702 | |
| 703 | #if MYSQL_VERSION_ID >= 50000 |
| 704 | case MYSQL_TYPE_BIT: |
| 705 | return VTK_BIT; |
| 706 | #endif |
| 707 |
no test coverage detected