mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-19 16:20:50 +00:00
Merge pull request #69576 from bigo-sg/arrayzip_allow_empty
Allow empty arguments for arrayZip/arrayZipUnaligned
This commit is contained in:
commit
2cef99c311
@ -15,7 +15,6 @@ namespace ErrorCodes
|
|||||||
{
|
{
|
||||||
extern const int ILLEGAL_TYPE_OF_ARGUMENT;
|
extern const int ILLEGAL_TYPE_OF_ARGUMENT;
|
||||||
extern const int SIZES_OF_ARRAYS_DONT_MATCH;
|
extern const int SIZES_OF_ARRAYS_DONT_MATCH;
|
||||||
extern const int TOO_FEW_ARGUMENTS_FOR_FUNCTION;
|
|
||||||
extern const int ILLEGAL_COLUMN;
|
extern const int ILLEGAL_COLUMN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,13 +37,6 @@ public:
|
|||||||
|
|
||||||
DataTypePtr getReturnTypeImpl(const ColumnsWithTypeAndName & arguments) const override
|
DataTypePtr getReturnTypeImpl(const ColumnsWithTypeAndName & arguments) const override
|
||||||
{
|
{
|
||||||
if (arguments.empty())
|
|
||||||
throw Exception(
|
|
||||||
ErrorCodes::TOO_FEW_ARGUMENTS_FOR_FUNCTION,
|
|
||||||
"Function {} needs at least one argument; passed {}.",
|
|
||||||
getName(),
|
|
||||||
arguments.size());
|
|
||||||
|
|
||||||
DataTypes arguments_types;
|
DataTypes arguments_types;
|
||||||
for (size_t index = 0; index < arguments.size(); ++index)
|
for (size_t index = 0; index < arguments.size(); ++index)
|
||||||
{
|
{
|
||||||
@ -68,9 +60,16 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
ColumnPtr
|
ColumnPtr
|
||||||
executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & /*result_type*/, size_t input_rows_count) const override
|
executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & result_type, size_t input_rows_count) const override
|
||||||
{
|
{
|
||||||
size_t num_arguments = arguments.size();
|
size_t num_arguments = arguments.size();
|
||||||
|
if (num_arguments == 0)
|
||||||
|
{
|
||||||
|
auto res_col = result_type->createColumn();
|
||||||
|
res_col->insertDefault();
|
||||||
|
return ColumnConst::create(std::move(res_col), input_rows_count);
|
||||||
|
}
|
||||||
|
|
||||||
Columns holders(num_arguments);
|
Columns holders(num_arguments);
|
||||||
Columns tuple_columns(num_arguments);
|
Columns tuple_columns(num_arguments);
|
||||||
|
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
[('a','d'),('b','e'),('c','f')]
|
[('a','d'),('b','e'),('c','f')]
|
||||||
[('a','d','g'),('b','e','h'),('c','f','i')]
|
[('a','d','g'),('b','e','h'),('c','f','i')]
|
||||||
|
[]
|
||||||
|
@ -2,7 +2,7 @@ SELECT arrayZip(['a', 'b', 'c'], ['d', 'e', 'f']);
|
|||||||
|
|
||||||
SELECT arrayZip(['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']);
|
SELECT arrayZip(['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']);
|
||||||
|
|
||||||
SELECT arrayZip(); -- { serverError TOO_FEW_ARGUMENTS_FOR_FUNCTION }
|
SELECT arrayZip();
|
||||||
|
|
||||||
SELECT arrayZip('a', 'b', 'c'); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
|
SELECT arrayZip('a', 'b', 'c'); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
[('a','d'),('b','e'),('c','f')] Array(Tuple(Nullable(String), Nullable(String)))
|
[('a','d'),('b','e'),('c','f')] Array(Tuple(Nullable(String), Nullable(String)))
|
||||||
[('a','d','g'),('b','e','h'),('c','f','i')]
|
[('a','d','g'),('b','e','h'),('c','f','i')]
|
||||||
|
[]
|
||||||
[('a','d'),('b','e'),('c','f'),(NULL,'g')]
|
[('a','d'),('b','e'),('c','f'),(NULL,'g')]
|
||||||
[('a',1),(NULL,2),(NULL,3)]
|
[('a',1),(NULL,2),(NULL,3)]
|
||||||
[('a',1,1.1),('b',2,2.2),('c',NULL,3.3),(NULL,NULL,4.4)]
|
[('a',1,1.1),('b',2,2.2),('c',NULL,3.3),(NULL,NULL,4.4)]
|
||||||
|
@ -2,7 +2,7 @@ SELECT arrayZipUnaligned(['a', 'b', 'c'], ['d', 'e', 'f']) as x, toTypeName(x);
|
|||||||
|
|
||||||
SELECT arrayZipUnaligned(['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']);
|
SELECT arrayZipUnaligned(['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']);
|
||||||
|
|
||||||
SELECT arrayZipUnaligned(); -- { serverError TOO_FEW_ARGUMENTS_FOR_FUNCTION }
|
SELECT arrayZipUnaligned();
|
||||||
|
|
||||||
SELECT arrayZipUnaligned('a', 'b', 'c'); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
|
SELECT arrayZipUnaligned('a', 'b', 'c'); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user