Skip to content

Commit da6a2e8

Browse files
committed
Address review comments
1 parent 2a523c1 commit da6a2e8

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

cpp/src/arrow/flight/sql/odbc/odbc_impl/odbc_statement.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "arrow/flight/sql/odbc/odbc_impl/spi/result_set_metadata.h"
2626
#include "arrow/flight/sql/odbc/odbc_impl/spi/statement.h"
2727
#include "arrow/flight/sql/odbc/odbc_impl/types.h"
28+
#include "arrow/type.h"
2829

2930
#include <sql.h>
3031
#include <sqlext.h>
@@ -746,8 +747,8 @@ SQLRETURN ODBCStatement::GetData(SQLSMALLINT record_number, SQLSMALLINT c_type,
746747
// Get precision and scale from IRD (implementation row descriptor) as defaults.
747748
// These can be overridden by ARD (application row descriptor) if specified.
748749
const DescriptorRecord& ird_record = ird_->GetRecords()[record_number - 1];
749-
int precision = ird_record.precision > 0 ? ird_record.precision
750-
: 38; // Default to max decimal precision
750+
int precision =
751+
ird_record.precision > 0 ? ird_record.precision : Decimal128Type::kMaxPrecision;
751752
int scale = ird_record.scale;
752753

753754
if (c_type == SQL_ARD_TYPE) {

cpp/src/arrow/flight/sql/odbc/tests/statement_test.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,8 @@ TEST_F(StatementRemoteTest, TestSQLExecDirectVarbinaryQueryDefaultType) {
646646
EXPECT_EQ('\xEF', varbinary_val[2]);
647647
}
648648

649-
TYPED_TEST(StatementTest, TestGetDataPrecisionScaleUsesIRDAsDefault) {
649+
// TODO(GH-48730): Enable this test when ARD/IRD descriptor support is fully implemented
650+
TYPED_TEST(StatementTest, DISABLED_TestGetDataPrecisionScaleUsesIRDAsDefault) {
650651
// Verify that SQLGetData uses IRD precision/scale as defaults when ARD values are unset
651652
std::wstring wsql = L"SELECT CAST('123.45' AS NUMERIC) as decimal_col;";
652653
std::vector<SQLWCHAR> sql(wsql.begin(), wsql.end());
@@ -692,7 +693,8 @@ TYPED_TEST(StatementTest, TestGetDataPrecisionScaleUsesIRDAsDefault) {
692693
EXPECT_EQ(static_cast<SQLSMALLINT>(ird_scale), numeric_val.scale);
693694
}
694695

695-
TYPED_TEST(StatementTest, TestGetDataPrecisionScaleUsesARDWhenSet) {
696+
// TODO(GH-48730): Enable this test when ARD/IRD descriptor support is fully implemented
697+
TYPED_TEST(StatementTest, DISABLED_TestGetDataPrecisionScaleUsesARDWhenSet) {
696698
// Verify that SQLGetData uses ARD precision/scale when set, for both SQL_ARD_TYPE and
697699
// SQL_C_DEFAULT
698700
std::wstring wsql = L"SELECT CAST('123.45' AS NUMERIC) as decimal_col;";

0 commit comments

Comments
 (0)