This commit is contained in:
nikitamikhaylov 2020-12-17 05:20:56 +03:00
parent 77df818c5f
commit db362e4585
4 changed files with 17 additions and 6 deletions

View File

@ -158,12 +158,16 @@ public:
__msan_unpoison(dst_pos, outlen);
source += srclen + 1;
dst_pos += outlen + 1;
dst_pos += outlen;
*dst_pos = '\0';
dst_pos += 1;
dst_offsets[row] = dst_pos - dst;
src_offset_prev = src_offsets[row];
}
__msan_unpoison(dst_pos, reserve);
dst_data.resize(dst_pos - dst);
return dst_column;

View File

@ -62,11 +62,11 @@ namespace DB
typename ColVecTo::Container & vec_to = col_to->getData();
ColumnUInt8::MutablePtr col_null_map_to;
ColumnUInt8::Container * vec_null_map_to [[maybe_unused]] = nullptr;
UInt8 * vec_null_map_to [[maybe_unused]] = nullptr;
if constexpr (nullOnErrors)
{
col_null_map_to = ColumnUInt8::create(input_rows_count);
vec_null_map_to = &col_null_map_to->getData();
vec_null_map_to = col_null_map_to->getData().data();
}
size_t current_offset = 0;
@ -83,12 +83,14 @@ namespace DB
{
const GregorianDate<> date(read_buffer);
vec_to[i] = date.toModifiedJulianDay<typename ToDataType::FieldType>();
(*vec_null_map_to)[i] = false;
vec_null_map_to[i] = false;
}
catch (const Exception & e)
{
if (e.code() == ErrorCodes::CANNOT_PARSE_INPUT_ASSERTION_FAILED || e.code() == ErrorCodes::CANNOT_PARSE_DATE)
(*vec_null_map_to)[i] = true;
if (e.code() == ErrorCodes::CANNOT_PARSE_INPUT_ASSERTION_FAILED || e.code() == ErrorCodes::CANNOT_PARSE_DATE) {
vec_to[i] = static_cast<Int32>(0);
vec_null_map_to[i] = true;
}
else
throw;
}

View File

@ -0,0 +1 @@
Ok.

View File

@ -0,0 +1,4 @@
SELECT tryBase64Decode(( SELECT countSubstrings(toModifiedJulianDayOrNull('\0'), '') ) AS n, ( SELECT regionIn('l. ') ) AS srocpnuv); -- { serverError 43 }
SELECT countSubstrings(toModifiedJulianDayOrNull('\0'), ''); -- { serverError 43 }
SELECT countSubstrings(toInt32OrNull('123qwe123'), ''); -- { serverError 43 }
SELECT 'Ok.';