mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 23:21:59 +00:00
Merge pull request #67454 from ClickHouse/24.7-testing-and-docs
24.7 add missing documentation and testing
This commit is contained in:
commit
1fd9464947
@ -0,0 +1,90 @@
|
||||
---
|
||||
slug: /en/sql-reference/aggregate-functions/reference/groupconcat
|
||||
sidebar_position: 363
|
||||
sidebar_label: groupConcat
|
||||
title: groupConcat
|
||||
---
|
||||
|
||||
Calculates a concatenated string from a group of strings, optionally separated by a delimiter, and optionally limited by a maximum number of elements.
|
||||
|
||||
**Syntax**
|
||||
|
||||
``` sql
|
||||
groupConcat(expression [, delimiter] [, limit]);
|
||||
```
|
||||
|
||||
**Arguments**
|
||||
|
||||
- `expression` — The expression or column name that outputs strings to be concatenated..
|
||||
- `delimiter` — A [string](../../../sql-reference/data-types/string.md) that will be used to separate concatenated values. This parameter is optional and defaults to an empty string if not specified.
|
||||
- `limit` — A positive [integer](../../../sql-reference/data-types/int-uint.md) specifying the maximum number of elements to concatenate. If more elements are present, excess elements are ignored. This parameter is optional.
|
||||
|
||||
:::note
|
||||
If delimiter is specified without limit, it must be the first parameter following the expression. If both delimiter and limit are specified, delimiter must precede limit.
|
||||
:::
|
||||
|
||||
**Returned value**
|
||||
|
||||
- Returns a [string](../../../sql-reference/data-types/string.md) consisting of the concatenated values of the column or expression. If the group has no elements or only null elements, and the function does not specify a handling for only null values, the result is a nullable string with a null value.
|
||||
|
||||
**Examples**
|
||||
|
||||
Input table:
|
||||
|
||||
``` text
|
||||
┌─id─┬─name─┐
|
||||
│ 1 │ John│
|
||||
│ 2 │ Jane│
|
||||
│ 3 │ Bob│
|
||||
└────┴──────┘
|
||||
```
|
||||
|
||||
1. Basic usage without a delimiter:
|
||||
|
||||
Query:
|
||||
|
||||
``` sql
|
||||
SELECT groupConcat(Name) FROM Employees;
|
||||
```
|
||||
|
||||
Result:
|
||||
|
||||
``` text
|
||||
JohnJaneBob
|
||||
```
|
||||
|
||||
This concatenates all names into one continuous string without any separator.
|
||||
|
||||
|
||||
2. Using comma as a delimiter:
|
||||
|
||||
Query:
|
||||
|
||||
``` sql
|
||||
SELECT groupConcat(Name, ', ', 2) FROM Employees;
|
||||
```
|
||||
|
||||
Result:
|
||||
|
||||
``` text
|
||||
John, Jane, Bob
|
||||
```
|
||||
|
||||
This output shows the names separated by a comma followed by a space.
|
||||
|
||||
|
||||
3. Limiting the number of concatenated elements
|
||||
|
||||
Query:
|
||||
|
||||
``` sql
|
||||
SELECT groupConcat(Name, ', ', 2) FROM Employees;
|
||||
```
|
||||
|
||||
Result:
|
||||
|
||||
``` text
|
||||
John, Jane
|
||||
```
|
||||
|
||||
This query limits the output to the first two names, even though there are more names in the table.
|
@ -1588,6 +1588,7 @@
|
||||
"groupBitmapXorResample"
|
||||
"groupBitmapXorSimpleState"
|
||||
"groupBitmapXorState"
|
||||
"groupConcat"
|
||||
"groupUniqArray"
|
||||
"groupUniqArrayArgMax"
|
||||
"groupUniqArrayArgMin"
|
||||
|
@ -0,0 +1,17 @@
|
||||
<clickhouse>
|
||||
<!-- Native interface with TLS.
|
||||
You have to configure certificate to enable this interface.
|
||||
See the openSSL section below.
|
||||
-->
|
||||
<tcp_port_secure>9440</tcp_port_secure>
|
||||
|
||||
<!-- Used with https_port and tcp_port_secure. Full ssl options list: https://github.com/ClickHouse-Extras/poco/blob/master/NetSSL_OpenSSL/include/Poco/Net/SSLManager.h#L71 -->
|
||||
<openSSL replace="replace">
|
||||
<server> <!-- Used for https server AND secure tcp port -->
|
||||
<certificateFile>/etc/clickhouse-server/config.d/self-cert.pem</certificateFile>
|
||||
<privateKeyFile>/etc/clickhouse-server/config.d/self-key.pem</privateKeyFile>
|
||||
<caConfig>/etc/clickhouse-server/config.d/ca-cert.pem</caConfig>
|
||||
<verificationMode>strict</verificationMode>
|
||||
</server>
|
||||
</openSSL>
|
||||
</clickhouse>
|
@ -17,6 +17,19 @@ instance = cluster.add_instance(
|
||||
"certs/self-cert.pem",
|
||||
"certs/ca-cert.pem",
|
||||
],
|
||||
with_zookeeper=False,
|
||||
)
|
||||
|
||||
|
||||
node1 = cluster.add_instance(
|
||||
"node1",
|
||||
main_configs=[
|
||||
"configs/ssl_config_strict.xml",
|
||||
"certs/self-key.pem",
|
||||
"certs/self-cert.pem",
|
||||
"certs/ca-cert.pem",
|
||||
],
|
||||
with_zookeeper=False,
|
||||
)
|
||||
|
||||
|
||||
@ -90,3 +103,25 @@ def test_connection_accept():
|
||||
)
|
||||
== "1\n"
|
||||
)
|
||||
|
||||
|
||||
def test_strict_reject():
|
||||
with pytest.raises(Exception) as err:
|
||||
execute_query_native(node1, "SELECT 1", "<clickhouse></clickhouse>")
|
||||
assert "certificate verify failed" in str(err.value)
|
||||
|
||||
|
||||
def test_strict_reject_with_config():
|
||||
with pytest.raises(Exception) as err:
|
||||
execute_query_native(node1, "SELECT 1", config_accept)
|
||||
assert "alert certificate required" in str(err.value)
|
||||
|
||||
|
||||
def test_strict_connection_reject():
|
||||
with pytest.raises(Exception) as err:
|
||||
execute_query_native(
|
||||
node1,
|
||||
"SELECT 1",
|
||||
config_connection_accept.format(ip_address=f"{instance.ip_address}"),
|
||||
)
|
||||
assert "certificate verify failed" in str(err.value)
|
||||
|
@ -1733,6 +1733,7 @@ groupBitmap
|
||||
groupBitmapAnd
|
||||
groupBitmapOr
|
||||
groupBitmapXor
|
||||
groupConcat
|
||||
groupUniqArray
|
||||
grouparray
|
||||
grouparrayinsertat
|
||||
@ -1749,6 +1750,7 @@ groupbitmapor
|
||||
groupbitmapxor
|
||||
groupbitor
|
||||
groupbitxor
|
||||
groupconcat
|
||||
groupuniqarray
|
||||
grpc
|
||||
grpcio
|
||||
|
Loading…
Reference in New Issue
Block a user