@@ -74,7 +74,9 @@ struct VariantBooleanConversion {
7474 static bool Convert (const VariantLogicalType type_id, uint32_t byte_offset, const_data_ptr_t value, bool &ret,
7575 const EmptyConversionPayloadFromVariant &payload, string &error) {
7676 if (type_id != VariantLogicalType::BOOL_FALSE && type_id != VariantLogicalType::BOOL_TRUE) {
77- error = StringUtil::Format (" Can't convert from VARIANT(%s)" , EnumUtil::ToString (type_id));
77+ if (error.empty ()) {
78+ error = StringUtil::Format (" Can't convert from VARIANT(%s)" , EnumUtil::ToString (type_id));
79+ }
7880 return false ;
7981 }
8082 ret = type_id == VariantLogicalType::BOOL_TRUE;
@@ -89,7 +91,9 @@ struct VariantDirectConversion {
8991 static bool Convert (const VariantLogicalType type_id, uint32_t byte_offset, const_data_ptr_t value, T &ret,
9092 const EmptyConversionPayloadFromVariant &payload, string &error) {
9193 if (type_id != TYPE_ID) {
92- error = StringUtil::Format (" Can't convert from VARIANT(%s)" , EnumUtil::ToString (type_id));
94+ if (error.empty ()) {
95+ error = StringUtil::Format (" Can't convert from VARIANT(%s)" , EnumUtil::ToString (type_id));
96+ }
9397 return false ;
9498 }
9599 ret = Load<T>(value + byte_offset);
@@ -99,7 +103,9 @@ struct VariantDirectConversion {
99103 static bool Convert (const VariantLogicalType type_id, uint32_t byte_offset, const_data_ptr_t value, T &ret,
100104 const StringConversionPayload &payload, string &error) {
101105 if (type_id != TYPE_ID) {
102- error = StringUtil::Format (" Can't convert from VARIANT(%s)" , EnumUtil::ToString (type_id));
106+ if (error.empty ()) {
107+ error = StringUtil::Format (" Can't convert from VARIANT(%s)" , EnumUtil::ToString (type_id));
108+ }
103109 return false ;
104110 }
105111 auto ptr = value + byte_offset;
@@ -117,7 +123,9 @@ struct VariantDecimalConversion {
117123 static bool Convert (const VariantLogicalType type_id, uint32_t byte_offset, const_data_ptr_t value, T &ret,
118124 const DecimalConversionPayloadFromVariant &payload, string &error) {
119125 if (type_id != TYPE_ID) {
120- error = StringUtil::Format (" Can't convert from VARIANT(%s)" , EnumUtil::ToString (type_id));
126+ if (error.empty ()) {
127+ error = StringUtil::Format (" Can't convert from VARIANT(%s)" , EnumUtil::ToString (type_id));
128+ }
121129 return false ;
122130 }
123131 auto ptr = value + byte_offset;
0 commit comments