Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ on:

env:
BUILD_TYPE: Release
CLICKHOUSE_SERVER_IMAGE: "clickhouse/clickhouse-server:22.3"
CLICKHOUSE_SECURE_HOST: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST_SMT }}
CLICKHOUSE_SERVER_IMAGE: "clickhouse/clickhouse-server:25.10"
CLICKHOUSE_SECURE_HOST: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST_SMT_PROD }}
CLICKHOUSE_SECURE_USER: default
CLICKHOUSE_SECURE_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT }}
CLICKHOUSE_SECURE_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT_PROD }}

jobs:
build:
Expand Down Expand Up @@ -128,7 +128,7 @@ jobs:
- name: Test - Start ClickHouse server in background
run: |
docker pull ${CLICKHOUSE_SERVER_IMAGE}
docker run -d --name clickhouse -p 9000:9000 ${CLICKHOUSE_SERVER_IMAGE}
docker run -d --name clickhouse -p 9000:9000 -e CLICKHOUSE_SKIP_USER_SETUP=1 ${CLICKHOUSE_SERVER_IMAGE}
docker ps -a
docker stats -a --no-stream
## Check and wait until CH is ready to accept connections
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ on:
env:
BUILD_TYPE: Release
CLICKHOUSE_USER: default
CLICKHOUSE_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT }}
CLICKHOUSE_SECURE_HOST: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST_SMT }}
CLICKHOUSE_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT_PROD }}
CLICKHOUSE_SECURE_HOST: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST_SMT_PROD }}
CLICKHOUSE_SECURE_PORT: 9440
CLICKHOUSE_SECURE_USER: default
CLICKHOUSE_SECURE_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT }}
CLICKHOUSE_SECURE_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT_PROD }}
CLICKHOUSE_SECURE_DB: default

jobs:
Expand Down Expand Up @@ -74,7 +74,7 @@ jobs:
run: |
wget https://github.com/filimonov/go-tlsoffloader/releases/download/v0.1.2/go-tlsoffloader_0.1.2_Darwin_x86_64.tar.gz
tar -xvzf go-tlsoffloader_0.1.2_Darwin_x86_64.tar.gz
./go-tlsoffloader -l localhost:9000 -b ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST_SMT }}:9440 &
./go-tlsoffloader -l localhost:9000 -b ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST_SMT_PROD }}:9440 &

- name: Test
working-directory: ${{github.workspace}}/build/ut
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/windows_mingw.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ on:
env:
BUILD_TYPE: Release
CLICKHOUSE_USER: default
CLICKHOUSE_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT }}
CLICKHOUSE_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT_PROD }}

#
# CLICKHOUSE_HOST: localhost
Expand Down Expand Up @@ -87,7 +87,7 @@ jobs:
run: |
wget https://github.com/filimonov/go-tlsoffloader/releases/download/v0.1.2/go-tlsoffloader_0.1.2_Windows_x86_64.tar.gz
tar -xvzf go-tlsoffloader_0.1.2_Windows_x86_64.tar.gz
./go-tlsoffloader.exe -l localhost:9000 -b ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST_SMT }}:9440 &
./go-tlsoffloader.exe -l localhost:9000 -b ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST_SMT_PROD }}:9440 &

- name: Test
env:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/windows_msvc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ on:
env:
BUILD_TYPE: Release
CLICKHOUSE_USER: default
CLICKHOUSE_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT }}
CLICKHOUSE_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT_PROD }}
# CLICKHOUSE_HOST: localhost
# CLICKHOUSE_PORT: 9000
# CLICKHOUSE_USER: default
Expand Down Expand Up @@ -61,7 +61,7 @@ jobs:
choco install wget
wget https://github.com/filimonov/go-tlsoffloader/releases/download/v0.1.2/go-tlsoffloader_0.1.2_Windows_x86_64.tar.gz
tar -xvzf go-tlsoffloader_0.1.2_Windows_x86_64.tar.gz
./go-tlsoffloader.exe -l localhost:9000 -b ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST_SMT }}:9440 &
./go-tlsoffloader.exe -l localhost:9000 -b ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST_SMT_PROD }}:9440 &

- name: Test
env:
Expand Down
3 changes: 3 additions & 0 deletions clickhouse/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ SET ( clickhouse-cpp-lib-src
columns/map.cpp
columns/string.cpp
columns/tuple.cpp
columns/time.cpp
columns/uuid.cpp

columns/itemview.cpp
Expand Down Expand Up @@ -67,6 +68,7 @@ SET ( clickhouse-cpp-lib-src
columns/nullable.h
columns/numeric.h
columns/string.h
columns/time.h
columns/tuple.h
columns/utils.h
columns/uuid.h
Expand Down Expand Up @@ -226,6 +228,7 @@ INSTALL(FILES columns/nullable.h DESTINATION include/clickhouse/columns/)
INSTALL(FILES columns/numeric.h DESTINATION include/clickhouse/columns/)
INSTALL(FILES columns/map.h DESTINATION include/clickhouse/columns/)
INSTALL(FILES columns/string.h DESTINATION include/clickhouse/columns/)
INSTALL(FILES columns/time.h DESTINATION include/clickhouse/columns/)
INSTALL(FILES columns/tuple.h DESTINATION include/clickhouse/columns/)
INSTALL(FILES columns/utils.h DESTINATION include/clickhouse/columns/)
INSTALL(FILES columns/uuid.h DESTINATION include/clickhouse/columns/)
Expand Down
1 change: 1 addition & 0 deletions clickhouse/client.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include "columns/map.h"
#include "columns/string.h"
#include "columns/tuple.h"
#include "columns/time.h"
#include "columns/uuid.h"

#include <chrono>
Expand Down
9 changes: 8 additions & 1 deletion clickhouse/columns/factory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "nullable.h"
#include "numeric.h"
#include "string.h"
#include "./time.h" // `./` avoids possible conflicts with standard C time.h
#include "tuple.h"
#include "uuid.h"

Expand Down Expand Up @@ -108,7 +109,6 @@ static ColumnRef CreateTerminalColumn(const TypeAst& ast) {
return std::make_shared<ColumnDate>();
case Type::Date32:
return std::make_shared<ColumnDate32>();

case Type::IPv4:
return std::make_shared<ColumnIPv4>();
case Type::IPv6:
Expand All @@ -129,6 +129,13 @@ static ColumnRef CreateTerminalColumn(const TypeAst& ast) {
case Type::MultiPolygon:
return std::make_shared<ColumnMultiPolygon>();

case Type::Time:
return std::make_shared<ColumnTime>();
case Type::Time64:
if (ast.elements.empty()) {
return nullptr;
}
return std::make_shared<ColumnTime64>(GetASTChildElement(ast, 0).value);
default:
return nullptr;
}
Expand Down
2 changes: 2 additions & 0 deletions clickhouse/columns/itemview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,15 @@ void ItemView::ValidateData(Type::Code type, DataType data) {
case Type::Code::Date32:
case Type::Code::IPv4:
case Type::Code::Decimal32:
case Type::Code::Time:
return AssertSize({4});

case Type::Code::Int64:
case Type::Code::UInt64:
case Type::Code::Float64:
case Type::Code::DateTime64:
case Type::Code::Decimal64:
case Type::Code::Time64:
return AssertSize({8});

case Type::Code::String:
Expand Down
155 changes: 155 additions & 0 deletions clickhouse/columns/time.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
#include "time.h"

namespace clickhouse {

ColumnTime::ColumnTime()
: ColumnTime(Type::CreateTime(), std::make_shared<ColumnInt32>()) {}

ColumnTime::ColumnTime(std::vector<int32_t>&& data)
: ColumnTime(Type::CreateTime(), std::make_shared<ColumnInt32>(std::move(data))) {}

ColumnTime::ColumnTime(TypeRef type, std::shared_ptr<ColumnInt32> data)
: Column(std::move(type)),
data_(std::move(data))
{}

void ColumnTime::Append(ValueType value) {
data_->Append(value);
}

ColumnTime::ValueType ColumnTime::At(size_t n) const {
return data_->At(n);
}

std::vector<int32_t>& ColumnTime::GetWritableData() {
return data_->GetWritableData();
}

void ColumnTime::Reserve(size_t new_cap) {
data_->Reserve(new_cap);
}

size_t ColumnTime::Capacity() const {
return data_->Capacity();
}

void ColumnTime::Append(ColumnRef column) {
if (auto col = column->As<ColumnTime>()) {
data_->Append(col->data_);
}
}

bool ColumnTime::LoadBody(InputStream* input, size_t rows) {
return data_->LoadBody(input, rows);
}

void ColumnTime::Clear() {
data_->Clear();
}

void ColumnTime::SaveBody(OutputStream* output) {
data_->SaveBody(output);
}

size_t ColumnTime::Size() const {
return data_->Size();
}

ColumnRef ColumnTime::Slice(size_t begin, size_t len) const {
auto sliced_data = data_->Slice(begin, len)->As<ColumnInt32>();
return ColumnRef{new ColumnTime(type_, sliced_data)};
}

ColumnRef ColumnTime::CloneEmpty() const {
return ColumnRef{new ColumnTime(type_, data_->CloneEmpty()->As<ColumnInt32>())};
}

void ColumnTime::Swap(Column& other) {
auto & col = dynamic_cast<ColumnTime &>(other);
data_.swap(col.data_);
}

ItemView ColumnTime::GetItem(size_t index) const {
return ItemView{Type::Time, data_->GetItem(index)};
}

ColumnTime64::ColumnTime64(size_t precision)
: ColumnTime64(Type::CreateTime64(precision), std::make_shared<ColumnInt64>())
{}

ColumnTime64::ColumnTime64(size_t precision, std::vector<int64_t>&& data)
: ColumnTime64(Type::CreateTime64(precision), std::make_shared<ColumnInt64>(std::move(data)))
{}

ColumnTime64::ColumnTime64(TypeRef type, std::shared_ptr<ColumnInt64> data)
: Column(std::move(type)),
data_(std::move(data)),
precision_{type_->As<Time64Type>()->GetPrecision()}
{}

void ColumnTime64::Append(ValueType value) {
data_->Append(value);
}

ColumnTime64::ValueType ColumnTime64::At(size_t n) const {
return data_->At(n);
}

std::vector<int64_t>& ColumnTime64::GetWritableData() {
return data_->GetWritableData();
}

void ColumnTime64::Reserve(size_t new_cap) {
data_->Reserve(new_cap);
}

size_t ColumnTime64::Capacity() const {
return data_->Capacity();
}

void ColumnTime64::Append(ColumnRef column) {
if (auto col = column->As<ColumnTime64>()) {
data_->Append(col->data_);
}
}

bool ColumnTime64::LoadBody(InputStream* input, size_t rows) {
return data_->LoadBody(input, rows);
}

void ColumnTime64::Clear() {
data_->Clear();
}

void ColumnTime64::SaveBody(OutputStream* output) {
data_->SaveBody(output);
}

size_t ColumnTime64::Size() const {
return data_->Size();
}

ColumnRef ColumnTime64::Slice(size_t begin, size_t len) const {
auto sliced_data = data_->Slice(begin, len)->As<ColumnInt64>();
return ColumnRef{new ColumnTime64(type_, sliced_data)};
}

ColumnRef ColumnTime64::CloneEmpty() const {
return ColumnRef{new ColumnTime64(type_, data_->CloneEmpty()->As<ColumnInt64>())};
}

void ColumnTime64::Swap(Column& other) {
auto & col = dynamic_cast<ColumnTime64 &>(other);
if (col.GetPrecision() != GetPrecision()) {
throw ValidationError("Can't swap Time64 columns when precisions are not the same: "
+ std::to_string(GetPrecision()) + "(this) != "
+ std::to_string(col.GetPrecision()) + "(that)");
}
data_.swap(col.data_);
}

ItemView ColumnTime64::GetItem(size_t index) const {
return ItemView{Type::Time64, data_->GetItem(index)};
}

} // namespace clickhouse
Loading
Loading