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;
}