Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
c78256ad
C
ClickHouse
项目概览
2dot5
/
ClickHouse
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
ClickHouse
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
c78256ad
编写于
3月 03, 2021
作者:
A
alexey-milovidov
提交者:
GitHub
3月 03, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #21327 from amosbird/hasequalvalue
IColunm::hasEqualValues()
上级
fbe0a14a
494c2dba
变更
24
隐藏空白更改
内联
并排
Showing
24 changed file
with
97 addition
and
0 deletion
+97
-0
src/Columns/ColumnAggregateFunction.h
src/Columns/ColumnAggregateFunction.h
+5
-0
src/Columns/ColumnArray.cpp
src/Columns/ColumnArray.cpp
+4
-0
src/Columns/ColumnArray.h
src/Columns/ColumnArray.h
+1
-0
src/Columns/ColumnCompressed.h
src/Columns/ColumnCompressed.h
+4
-0
src/Columns/ColumnConst.h
src/Columns/ColumnConst.h
+2
-0
src/Columns/ColumnDecimal.cpp
src/Columns/ColumnDecimal.cpp
+6
-0
src/Columns/ColumnDecimal.h
src/Columns/ColumnDecimal.h
+1
-0
src/Columns/ColumnFixedString.h
src/Columns/ColumnFixedString.h
+5
-0
src/Columns/ColumnFunction.h
src/Columns/ColumnFunction.h
+5
-0
src/Columns/ColumnLowCardinality.cpp
src/Columns/ColumnLowCardinality.cpp
+7
-0
src/Columns/ColumnLowCardinality.h
src/Columns/ColumnLowCardinality.h
+2
-0
src/Columns/ColumnMap.cpp
src/Columns/ColumnMap.cpp
+5
-0
src/Columns/ColumnMap.h
src/Columns/ColumnMap.h
+1
-0
src/Columns/ColumnNullable.cpp
src/Columns/ColumnNullable.cpp
+5
-0
src/Columns/ColumnNullable.h
src/Columns/ColumnNullable.h
+1
-0
src/Columns/ColumnString.cpp
src/Columns/ColumnString.cpp
+5
-0
src/Columns/ColumnString.h
src/Columns/ColumnString.h
+2
-0
src/Columns/ColumnTuple.cpp
src/Columns/ColumnTuple.cpp
+5
-0
src/Columns/ColumnTuple.h
src/Columns/ColumnTuple.h
+1
-0
src/Columns/ColumnVector.h
src/Columns/ColumnVector.h
+5
-0
src/Columns/IColumn.h
src/Columns/IColumn.h
+6
-0
src/Columns/IColumnDummy.h
src/Columns/IColumnDummy.h
+2
-0
src/Columns/IColumnImpl.h
src/Columns/IColumnImpl.h
+12
-0
src/Columns/IColumnUnique.h
src/Columns/IColumnUnique.h
+5
-0
未找到文件。
src/Columns/ColumnAggregateFunction.h
浏览文件 @
c78256ad
...
...
@@ -198,6 +198,11 @@ public:
throw
Exception
(
"Method compareColumn is not supported for ColumnAggregateFunction"
,
ErrorCodes
::
NOT_IMPLEMENTED
);
}
bool
hasEqualValues
()
const
override
{
throw
Exception
(
"Method hasEqualValues is not supported for ColumnAggregateFunction"
,
ErrorCodes
::
NOT_IMPLEMENTED
);
}
void
getPermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
Permutation
&
res
)
const
override
;
void
updatePermutation
(
bool
reverse
,
size_t
limit
,
int
,
Permutation
&
res
,
EqualRanges
&
equal_range
)
const
override
;
...
...
src/Columns/ColumnArray.cpp
浏览文件 @
c78256ad
...
...
@@ -370,6 +370,10 @@ void ColumnArray::compareColumn(const IColumn & rhs, size_t rhs_row_num,
compare_results
,
direction
,
nan_direction_hint
);
}
bool
ColumnArray
::
hasEqualValues
()
const
{
return
hasEqualValuesImpl
<
ColumnArray
>
();
}
namespace
{
...
...
src/Columns/ColumnArray.h
浏览文件 @
c78256ad
...
...
@@ -78,6 +78,7 @@ public:
PaddedPODArray
<
UInt64
>
*
row_indexes
,
PaddedPODArray
<
Int8
>
&
compare_results
,
int
direction
,
int
nan_direction_hint
)
const
override
;
int
compareAtWithCollation
(
size_t
n
,
size_t
m
,
const
IColumn
&
rhs_
,
int
nan_direction_hint
,
const
Collator
&
collator
)
const
override
;
bool
hasEqualValues
()
const
override
;
void
getPermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
Permutation
&
res
)
const
override
;
void
updatePermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
Permutation
&
res
,
EqualRanges
&
equal_range
)
const
override
;
void
getPermutationWithCollation
(
const
Collator
&
collator
,
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
Permutation
&
res
)
const
override
;
...
...
src/Columns/ColumnCompressed.h
浏览文件 @
c78256ad
...
...
@@ -96,6 +96,10 @@ public:
{
throwMustBeDecompressed
();
}
bool
hasEqualValues
()
const
override
{
throwMustBeDecompressed
();
}
void
getPermutation
(
bool
,
size_t
,
int
,
Permutation
&
)
const
override
{
throwMustBeDecompressed
();
}
void
updatePermutation
(
bool
,
size_t
,
int
,
Permutation
&
,
EqualRanges
&
)
const
override
{
throwMustBeDecompressed
();
}
ColumnPtr
replicate
(
const
Offsets
&
)
const
override
{
throwMustBeDecompressed
();
}
...
...
src/Columns/ColumnConst.h
浏览文件 @
c78256ad
...
...
@@ -206,6 +206,8 @@ public:
PaddedPODArray
<
UInt64
>
*
row_indexes
,
PaddedPODArray
<
Int8
>
&
compare_results
,
int
direction
,
int
nan_direction_hint
)
const
override
;
bool
hasEqualValues
()
const
override
{
return
true
;
}
MutableColumns
scatter
(
ColumnIndex
num_columns
,
const
Selector
&
selector
)
const
override
;
void
gather
(
ColumnGathererStream
&
)
override
...
...
src/Columns/ColumnDecimal.cpp
浏览文件 @
c78256ad
...
...
@@ -58,6 +58,12 @@ void ColumnDecimal<T>::compareColumn(const IColumn & rhs, size_t rhs_row_num,
compare_results
,
direction
,
nan_direction_hint
);
}
template
<
typename
T
>
bool
ColumnDecimal
<
T
>::
hasEqualValues
()
const
{
return
this
->
template
hasEqualValuesImpl
<
ColumnDecimal
<
T
>
>
();
}
template
<
typename
T
>
StringRef
ColumnDecimal
<
T
>::
serializeValueIntoArena
(
size_t
n
,
Arena
&
arena
,
char
const
*&
begin
)
const
{
...
...
src/Columns/ColumnDecimal.h
浏览文件 @
c78256ad
...
...
@@ -136,6 +136,7 @@ public:
void
compareColumn
(
const
IColumn
&
rhs
,
size_t
rhs_row_num
,
PaddedPODArray
<
UInt64
>
*
row_indexes
,
PaddedPODArray
<
Int8
>
&
compare_results
,
int
direction
,
int
nan_direction_hint
)
const
override
;
bool
hasEqualValues
()
const
override
;
void
getPermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
IColumn
::
Permutation
&
res
)
const
override
;
void
updatePermutation
(
bool
reverse
,
size_t
limit
,
int
,
IColumn
::
Permutation
&
res
,
EqualRanges
&
equal_range
)
const
override
;
...
...
src/Columns/ColumnFixedString.h
浏览文件 @
c78256ad
...
...
@@ -132,6 +132,11 @@ public:
compare_results
,
direction
,
nan_direction_hint
);
}
bool
hasEqualValues
()
const
override
{
return
hasEqualValuesImpl
<
ColumnFixedString
>
();
}
void
getPermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
Permutation
&
res
)
const
override
;
void
updatePermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
Permutation
&
res
,
EqualRanges
&
equal_range
)
const
override
;
...
...
src/Columns/ColumnFunction.h
浏览文件 @
c78256ad
...
...
@@ -128,6 +128,11 @@ public:
throw
Exception
(
"compareColumn is not implemented for "
+
getName
(),
ErrorCodes
::
NOT_IMPLEMENTED
);
}
bool
hasEqualValues
()
const
override
{
throw
Exception
(
"hasEqualValues is not implemented for "
+
getName
(),
ErrorCodes
::
NOT_IMPLEMENTED
);
}
void
getPermutation
(
bool
,
size_t
,
int
,
Permutation
&
)
const
override
{
throw
Exception
(
"getPermutation is not implemented for "
+
getName
(),
ErrorCodes
::
NOT_IMPLEMENTED
);
...
...
src/Columns/ColumnLowCardinality.cpp
浏览文件 @
c78256ad
...
...
@@ -311,6 +311,13 @@ void ColumnLowCardinality::compareColumn(const IColumn & rhs, size_t rhs_row_num
compare_results
,
direction
,
nan_direction_hint
);
}
bool
ColumnLowCardinality
::
hasEqualValues
()
const
{
if
(
getDictionary
().
size
()
<=
1
)
return
true
;
return
getIndexes
().
hasEqualValues
();
}
void
ColumnLowCardinality
::
getPermutationImpl
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
Permutation
&
res
,
const
Collator
*
collator
)
const
{
if
(
limit
==
0
)
...
...
src/Columns/ColumnLowCardinality.h
浏览文件 @
c78256ad
...
...
@@ -126,6 +126,8 @@ public:
int
compareAtWithCollation
(
size_t
n
,
size_t
m
,
const
IColumn
&
rhs
,
int
nan_direction_hint
,
const
Collator
&
)
const
override
;
bool
hasEqualValues
()
const
override
;
void
getPermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
Permutation
&
res
)
const
override
;
void
updatePermutation
(
bool
reverse
,
size_t
limit
,
int
,
IColumn
::
Permutation
&
res
,
EqualRanges
&
equal_range
)
const
override
;
...
...
src/Columns/ColumnMap.cpp
浏览文件 @
c78256ad
...
...
@@ -187,6 +187,11 @@ void ColumnMap::compareColumn(const IColumn & rhs, size_t rhs_row_num,
compare_results
,
direction
,
nan_direction_hint
);
}
bool
ColumnMap
::
hasEqualValues
()
const
{
return
hasEqualValuesImpl
<
ColumnMap
>
();
}
void
ColumnMap
::
getPermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
Permutation
&
res
)
const
{
nested
->
getPermutation
(
reverse
,
limit
,
nan_direction_hint
,
res
);
...
...
src/Columns/ColumnMap.h
浏览文件 @
c78256ad
...
...
@@ -72,6 +72,7 @@ public:
void
compareColumn
(
const
IColumn
&
rhs
,
size_t
rhs_row_num
,
PaddedPODArray
<
UInt64
>
*
row_indexes
,
PaddedPODArray
<
Int8
>
&
compare_results
,
int
direction
,
int
nan_direction_hint
)
const
override
;
bool
hasEqualValues
()
const
override
;
void
getExtremes
(
Field
&
min
,
Field
&
max
)
const
override
;
void
getPermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
Permutation
&
res
)
const
override
;
void
updatePermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
IColumn
::
Permutation
&
res
,
EqualRanges
&
equal_range
)
const
override
;
...
...
src/Columns/ColumnNullable.cpp
浏览文件 @
c78256ad
...
...
@@ -271,6 +271,11 @@ void ColumnNullable::compareColumn(const IColumn & rhs, size_t rhs_row_num,
compare_results
,
direction
,
nan_direction_hint
);
}
bool
ColumnNullable
::
hasEqualValues
()
const
{
return
hasEqualValuesImpl
<
ColumnNullable
>
();
}
void
ColumnNullable
::
getPermutationImpl
(
bool
reverse
,
size_t
limit
,
int
null_direction_hint
,
Permutation
&
res
,
const
Collator
*
collator
)
const
{
/// Cannot pass limit because of unknown amount of NULLs.
...
...
src/Columns/ColumnNullable.h
浏览文件 @
c78256ad
...
...
@@ -94,6 +94,7 @@ public:
PaddedPODArray
<
UInt64
>
*
row_indexes
,
PaddedPODArray
<
Int8
>
&
compare_results
,
int
direction
,
int
nan_direction_hint
)
const
override
;
int
compareAtWithCollation
(
size_t
n
,
size_t
m
,
const
IColumn
&
rhs
,
int
null_direction_hint
,
const
Collator
&
)
const
override
;
bool
hasEqualValues
()
const
override
;
void
getPermutation
(
bool
reverse
,
size_t
limit
,
int
null_direction_hint
,
Permutation
&
res
)
const
override
;
void
updatePermutation
(
bool
reverse
,
size_t
limit
,
int
null_direction_hint
,
Permutation
&
res
,
EqualRanges
&
equal_range
)
const
override
;
void
getPermutationWithCollation
(
const
Collator
&
collator
,
bool
reverse
,
size_t
limit
,
int
null_direction_hint
,
Permutation
&
res
)
const
override
;
...
...
src/Columns/ColumnString.cpp
浏览文件 @
c78256ad
...
...
@@ -287,6 +287,11 @@ void ColumnString::compareColumn(
compare_results
,
direction
,
nan_direction_hint
);
}
bool
ColumnString
::
hasEqualValues
()
const
{
return
hasEqualValuesImpl
<
ColumnString
>
();
}
template
<
bool
positive
>
struct
ColumnString
::
Cmp
{
...
...
src/Columns/ColumnString.h
浏览文件 @
c78256ad
...
...
@@ -240,6 +240,8 @@ public:
PaddedPODArray
<
UInt64
>
*
row_indexes
,
PaddedPODArray
<
Int8
>
&
compare_results
,
int
direction
,
int
nan_direction_hint
)
const
override
;
bool
hasEqualValues
()
const
override
;
/// Variant of compareAt for string comparison with respect of collation.
int
compareAtWithCollation
(
size_t
n
,
size_t
m
,
const
IColumn
&
rhs_
,
int
,
const
Collator
&
collator
)
const
override
;
...
...
src/Columns/ColumnTuple.cpp
浏览文件 @
c78256ad
...
...
@@ -312,6 +312,11 @@ int ColumnTuple::compareAtWithCollation(size_t n, size_t m, const IColumn & rhs,
return
compareAtImpl
(
n
,
m
,
rhs
,
nan_direction_hint
,
&
collator
);
}
bool
ColumnTuple
::
hasEqualValues
()
const
{
return
hasEqualValuesImpl
<
ColumnTuple
>
();
}
template
<
bool
positive
>
struct
ColumnTuple
::
Less
{
...
...
src/Columns/ColumnTuple.h
浏览文件 @
c78256ad
...
...
@@ -76,6 +76,7 @@ public:
PaddedPODArray
<
UInt64
>
*
row_indexes
,
PaddedPODArray
<
Int8
>
&
compare_results
,
int
direction
,
int
nan_direction_hint
)
const
override
;
int
compareAtWithCollation
(
size_t
n
,
size_t
m
,
const
IColumn
&
rhs
,
int
nan_direction_hint
,
const
Collator
&
collator
)
const
override
;
bool
hasEqualValues
()
const
override
;
void
getExtremes
(
Field
&
min
,
Field
&
max
)
const
override
;
void
getPermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
Permutation
&
res
)
const
override
;
void
updatePermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
IColumn
::
Permutation
&
res
,
EqualRanges
&
equal_ranges
)
const
override
;
...
...
src/Columns/ColumnVector.h
浏览文件 @
c78256ad
...
...
@@ -205,6 +205,11 @@ public:
compare_results
,
direction
,
nan_direction_hint
);
}
bool
hasEqualValues
()
const
override
{
return
this
->
template
hasEqualValuesImpl
<
Self
>();
}
void
getPermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
IColumn
::
Permutation
&
res
)
const
override
;
void
updatePermutation
(
bool
reverse
,
size_t
limit
,
int
nan_direction_hint
,
IColumn
::
Permutation
&
res
,
EqualRanges
&
equal_range
)
const
override
;
...
...
src/Columns/IColumn.h
浏览文件 @
c78256ad
...
...
@@ -266,6 +266,9 @@ public:
PaddedPODArray
<
UInt64
>
*
row_indexes
,
PaddedPODArray
<
Int8
>
&
compare_results
,
int
direction
,
int
nan_direction_hint
)
const
=
0
;
/// Check if all elements in the column have equal values. Return true if column is empty.
virtual
bool
hasEqualValues
()
const
=
0
;
/** Returns a permutation that sorts elements of this column,
* i.e. perm[i]-th element of source column should be i-th element of sorted column.
* reverse - reverse ordering (acsending).
...
...
@@ -467,6 +470,9 @@ protected:
PaddedPODArray
<
UInt64
>
*
row_indexes
,
PaddedPODArray
<
Int8
>
&
compare_results
,
int
direction
,
int
nan_direction_hint
)
const
;
template
<
typename
Derived
>
bool
hasEqualValuesImpl
()
const
;
};
using
ColumnPtr
=
IColumn
::
Ptr
;
...
...
src/Columns/IColumnDummy.h
浏览文件 @
c78256ad
...
...
@@ -40,6 +40,8 @@ public:
{
}
bool
hasEqualValues
()
const
override
{
return
true
;
}
Field
operator
[](
size_t
)
const
override
{
throw
Exception
(
"Cannot get value from "
+
getName
(),
ErrorCodes
::
NOT_IMPLEMENTED
);
}
void
get
(
size_t
,
Field
&
)
const
override
{
throw
Exception
(
"Cannot get value from "
+
getName
(),
ErrorCodes
::
NOT_IMPLEMENTED
);
}
void
insert
(
const
Field
&
)
override
{
throw
Exception
(
"Cannot insert element into "
+
getName
(),
ErrorCodes
::
NOT_IMPLEMENTED
);
}
...
...
src/Columns/IColumnImpl.h
浏览文件 @
c78256ad
...
...
@@ -127,4 +127,16 @@ void IColumn::doCompareColumn(const Derived & rhs, size_t rhs_row_num,
}
}
template
<
typename
Derived
>
bool
IColumn
::
hasEqualValuesImpl
()
const
{
size_t
num_rows
=
size
();
for
(
size_t
i
=
1
;
i
<
num_rows
;
++
i
)
{
if
(
compareAt
(
i
,
0
,
static_cast
<
const
Derived
&>
(
*
this
),
false
)
!=
0
)
return
false
;
}
return
true
;
}
}
src/Columns/IColumnUnique.h
浏览文件 @
c78256ad
...
...
@@ -172,6 +172,11 @@ public:
{
throw
Exception
(
"Method compareColumn is not supported for ColumnUnique."
,
ErrorCodes
::
NOT_IMPLEMENTED
);
}
bool
hasEqualValues
()
const
override
{
throw
Exception
(
"Method hasEqualValues is not supported for ColumnUnique."
,
ErrorCodes
::
NOT_IMPLEMENTED
);
}
};
using
ColumnUniquePtr
=
IColumnUnique
::
ColumnUniquePtr
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录