bool column_meta::get_attribute()

in modules/platforms/cpp/ignite/odbc/meta/column_meta.cpp [184:291]


bool column_meta::get_attribute(uint16_t field_id, SQLLEN &value) const {
    switch (field_id) {
        case SQL_DESC_FIXED_PREC_SCALE: {
            if (m_scale == -1)
                value = SQL_FALSE;
            else
                value = SQL_TRUE;

            break;
        }

        case SQL_DESC_AUTO_UNIQUE_VALUE: {
            value = SQL_FALSE;

            break;
        }

        case SQL_DESC_CASE_SENSITIVE: {
            if (m_data_type == ignite_type::STRING)
                value = SQL_TRUE;
            else
                value = SQL_FALSE;

            break;
        }

        case SQL_DESC_CONCISE_TYPE:
        case SQL_DESC_TYPE: {
            value = ignite_type_to_sql_type(m_data_type);

            break;
        }

        case SQL_DESC_DISPLAY_SIZE: {
            value = ignite_type_display_size(m_data_type);

            break;
        }

        case SQL_DESC_LENGTH:
        case SQL_DESC_OCTET_LENGTH:
        case SQL_COLUMN_LENGTH: {
            if (m_precision == -1)
                value = ignite_type_transfer_length(m_data_type);
            else
                value = m_precision;

            break;
        }

        case SQL_DESC_NULLABLE: {
            value = nullability_to_sql(m_nullability);

            break;
        }

        case SQL_DESC_NUM_PREC_RADIX: {
            value = ignite_type_num_precision_radix(m_data_type);

            break;
        }

        case SQL_DESC_PRECISION:
        case SQL_COLUMN_PRECISION: {
            value = m_precision < 0 ? 0 : m_precision;

            break;
        }

        case SQL_DESC_SCALE:
        case SQL_COLUMN_SCALE: {
            value = m_scale < 0 ? 0 : m_scale;

            break;
        }

        case SQL_DESC_SEARCHABLE: {
            value = SQL_PRED_BASIC;

            break;
        }

        case SQL_DESC_UNNAMED: {
            value = m_column_name.empty() ? SQL_UNNAMED : SQL_NAMED;

            break;
        }

        case SQL_DESC_UNSIGNED: {
            value = is_ignite_type_unsigned(m_data_type) ? SQL_TRUE : SQL_FALSE;

            break;
        }

        case SQL_DESC_UPDATABLE: {
            value = SQL_ATTR_READWRITE_UNKNOWN;

            break;
        }

        default:
            return false;
    }

    LOG_MSG("value: " << value);

    return true;
}