fix stack overflow issue when using initializer_list

This commit is contained in:
Hui Wang 2020-02-25 16:22:35 +01:00
parent e9af153819
commit 7be4e3c89a
2 changed files with 6 additions and 5 deletions

View File

@ -292,7 +292,7 @@ public:
static MutablePtr create(Args &&... args) { return MutablePtr(new Derived(std::forward<Args>(args)...)); } static MutablePtr create(Args &&... args) { return MutablePtr(new Derived(std::forward<Args>(args)...)); }
template <typename T> template <typename T>
static MutablePtr create(std::initializer_list<T> && arg) { return create(std::forward<std::initializer_list<T>>(arg)); } static MutablePtr create(std::initializer_list<T> && arg) { return MutablePtr(new Derived(std::forward<std::initializer_list<T>>(arg))); }
typename Base::MutablePtr clone() const override { return typename Base::MutablePtr(new Derived(*derived())); } typename Base::MutablePtr clone() const override { return typename Base::MutablePtr(new Derived(*derived())); }

View File

@ -30,13 +30,13 @@ try
ColumnWithTypeAndName column1; ColumnWithTypeAndName column1;
column1.name = "Sign"; column1.name = "Sign";
column1.type = std::make_shared<DataTypeInt8>(); column1.type = std::make_shared<DataTypeInt8>();
column1.column = ColumnInt8::create({1, -1}); column1.column = ColumnInt8::create({static_cast<int8_t>(1), static_cast<int8_t>(-1)});
block1.insert(column1); block1.insert(column1);
ColumnWithTypeAndName column2; ColumnWithTypeAndName column2;
column2.name = "CounterID"; column2.name = "CounterID";
column2.type = std::make_shared<DataTypeUInt32>(); column2.type = std::make_shared<DataTypeUInt32>();
column2.column = ColumnUInt32::create({123, 123}); column2.column = ColumnUInt32::create({static_cast<uint32_t>(123), static_cast<uint32_t>(123)});
block1.insert(column2); block1.insert(column2);
} }
@ -46,13 +46,13 @@ try
ColumnWithTypeAndName column1; ColumnWithTypeAndName column1;
column1.name = "Sign"; column1.name = "Sign";
column1.type = std::make_shared<DataTypeInt8>(); column1.type = std::make_shared<DataTypeInt8>();
column1.column = ColumnInt8::create({1, 1}); column1.column = ColumnInt8::create({static_cast<int8_t>(1), static_cast<int8_t>(1)});
block2.insert(column1); block2.insert(column1);
ColumnWithTypeAndName column2; ColumnWithTypeAndName column2;
column2.name = "CounterID"; column2.name = "CounterID";
column2.type = std::make_shared<DataTypeUInt32>(); column2.type = std::make_shared<DataTypeUInt32>();
column2.column = ColumnUInt32::create({123, 456}); column2.column = ColumnUInt32::create({static_cast<uint32_t>(123), static_cast<uint32_t>(456)});
block2.insert(column2); block2.insert(column2);
} }
@ -76,6 +76,7 @@ try
return 0; return 0;
} }
catch (const DB::Exception & e) catch (const DB::Exception & e)
{ {
std::cerr << e.what() << ", " << e.displayText() << std::endl; std::cerr << e.what() << ", " << e.displayText() << std::endl;