提交 41d006d4 编写于 作者: N Nikita Mikhailov 提交者: Nikita Mikhaylov

try fix stress

上级 2475143e
......@@ -28,6 +28,7 @@ void SettingsProfileElement::init(const ASTSettingsProfileElement & ast, const A
if (id_mode)
return parse<UUID>(name_);
assert(manager);
/// NOLINTNEXTLINE(clang-analyzer-core.CallAndMessage)
return manager->getID<SettingsProfile>(name_);
};
......
......@@ -26,6 +26,7 @@ namespace ErrorCodes
namespace
{
// NOLINTNEXTLINE(cert-dcl50-cpp)
__attribute__((__noinline__)) int64_t our_syscall(...)
{
__asm__ __volatile__ (R"(
......
......@@ -220,6 +220,7 @@ checkAndGetNestedArrayOffset(const IColumn ** columns, size_t num_arguments)
else if (*offsets_i != *offsets)
throw Exception("Lengths of all arrays passed to aggregate function must be equal.", ErrorCodes::SIZES_OF_ARRAYS_DOESNT_MATCH);
}
/// NOLINTNEXTLINE(clang-analyzer-core.CallAndMessage)
return {nested_columns, offsets->data()};
}
......
......@@ -63,7 +63,7 @@ class PointFromColumnParser
public:
PointFromColumnParser(ColumnPtr col_) : col(col_)
{
const auto & tuple = static_cast<const ColumnTuple &>(*col_);
const auto & tuple = dynamic_cast<const ColumnTuple &>(*col_);
const auto & tuple_columns = tuple.getColumns();
#ifndef NDEBUG
......@@ -116,7 +116,7 @@ public:
}
private:
/// Note, this is needed to prevent use-after-free.
/// To prevent use-after-free and increase column lifetime.
ColumnPtr col;
#ifndef NDEBUG
size_t size;
......@@ -130,8 +130,9 @@ class RingFromColumnParser
{
public:
RingFromColumnParser(ColumnPtr col_)
: offsets(static_cast<const ColumnArray &>(*col_).getOffsets())
, point_parser(static_cast<const ColumnArray &>(*col_).getDataPtr())
: col(col_)
, offsets(dynamic_cast<const ColumnArray &>(*col_).getOffsets())
, point_parser(dynamic_cast<const ColumnArray &>(*col_).getDataPtr())
{
}
......@@ -165,6 +166,8 @@ public:
}
private:
/// To prevent use-after-free and increase column lifetime.
ColumnPtr col;
const IColumn::Offsets & offsets;
const PointFromColumnParser<Point> point_parser;
};
......@@ -174,7 +177,8 @@ class PolygonFromColumnParser
{
public:
PolygonFromColumnParser(ColumnPtr col_)
: offsets(static_cast<const ColumnArray &>(*col_).getOffsets())
: col(col_)
, offsets(static_cast<const ColumnArray &>(*col_).getOffsets())
, ring_parser(static_cast<const ColumnArray &>(*col_).getDataPtr())
{}
......@@ -203,6 +207,8 @@ public:
}
private:
/// To prevent use-after-free and increase column lifetime.
ColumnPtr col;
const IColumn::Offsets & offsets;
const RingFromColumnParser<Point> ring_parser;
};
......@@ -212,7 +218,8 @@ class MultiPolygonFromColumnParser
{
public:
MultiPolygonFromColumnParser(ColumnPtr col_)
: offsets(static_cast<const ColumnArray &>(*col_).getOffsets())
: col(col_)
, offsets(static_cast<const ColumnArray &>(*col_).getOffsets())
, polygon_parser(static_cast<const ColumnArray &>(*col_).getDataPtr())
{}
......@@ -235,6 +242,8 @@ public:
}
private:
/// To prevent use-after-free and increase column lifetime.
ColumnPtr col;
const IColumn::Offsets & offsets;
const PolygonFromColumnParser<Point> polygon_parser;
};
......
......@@ -65,6 +65,7 @@ struct Memory : boost::noncopyable, Allocator
size_t size() const { return m_size; }
const char & operator[](size_t i) const { return m_data[i]; }
/// NOLINTNEXTLINE(clang-analyzer-core.uninitialized.UndefReturn)
char & operator[](size_t i) { return m_data[i]; }
const char * data() const { return m_data; }
char * data() { return m_data; }
......
......@@ -181,6 +181,7 @@ inline void readDecimalText(ReadBuffer & buf, T & x, uint32_t precision, uint32_
/// Too many digits after point. Just cut off excessive digits.
auto divisor = intExp10OfSize<typename T::NativeType>(divisor_exp);
assert(divisor > 0); /// This is for Clang Static Analyzer. It is not smart enough to infer it automatically.
/// NOLINTNEXTLINE(clang-analyzer-core.DivideZero)
x.value /= divisor;
scale = 0;
return;
......
......@@ -185,6 +185,7 @@ StoragePtr StorageFactory::get(
{
/// Storage creator modified empty arguments list, so we should modify the query
assert(storage_def && storage_def->engine && !storage_def->engine->arguments);
/// NOLINTNEXTLINE(clang-analyzer-core.NullDereference)
storage_def->engine->arguments = std::make_shared<ASTExpressionList>();
storage_def->engine->children.push_back(storage_def->engine->arguments);
storage_def->engine->arguments->children = empty_engine_args;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册