Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
6e89039
Backport #87442 to 25.8: Fix bool decoding in parquet reader v3
robot-clickhouse Sep 30, 2025
20570cc
Backport #88105 to 25.8: Fix uncaught exception due noexcept tryGetCr…
robot-clickhouse Oct 7, 2025
40cacd9
Update autogenerated version to 25.8.9.20 and contributors
robot-clickhouse Oct 7, 2025
3830a70
Merge pull request #88174 from ClickHouse/backport/25.8/88105
clickhouse-gh[bot] Oct 7, 2025
0b375d7
Backport #86560 to 25.8: Fix stack overflow in quantileDD merge
robot-clickhouse Oct 8, 2025
c346ce9
Merge pull request #88224 from ClickHouse/backport/25.8/86560
clickhouse-gh[bot] Oct 8, 2025
b25dc06
Backport #88153 to 25.8: Fix redundant host resolution in DDL Worker
robot-clickhouse Oct 8, 2025
02ec3a1
Merge pull request #88256 from ClickHouse/backport/25.8/88153
clickhouse-gh[bot] Oct 8, 2025
b7c8d8b
Backport #88213 to 25.8: Fix propagation of `is_shared` flag in `Colu…
robot-clickhouse Oct 9, 2025
b22201a
Update autogenerated version to 25.8.10.7 and contributors
robot-clickhouse Oct 9, 2025
0f2a845
Backport #88278 to 25.8: Update Azure sdk with Content-Length fix
robot-clickhouse Oct 9, 2025
72e4f78
Merge pull request #88300 from ClickHouse/backport/25.8/88278
SmitaRKulkarni Oct 10, 2025
f796fe7
Backport #88290 to 25.8: Fix object storages with correlated subqueries
robot-clickhouse Oct 10, 2025
3a7a768
Backport #88330 to 25.8: Add missing checks for canContainMergeTreeTa…
robot-clickhouse Oct 10, 2025
51e57a3
Merge pull request #88356 from ClickHouse/backport/25.8/88330
azat Oct 11, 2025
5fbf50b
Backport #87826 to 25.8: Fix AzureBlobStorage copy
robot-clickhouse Oct 12, 2025
f9125f7
Fix includes in AzureObjectStorage
SmitaRKulkarni Oct 12, 2025
5d92144
Merge pull request #88390 from ClickHouse/backport/25.8/87826
clickhouse-gh[bot] Oct 12, 2025
3f5e3cb
Backport #88089 to 25.8: Add a URI normalization for the `SOURCE` gra…
robot-clickhouse Oct 13, 2025
74f8b18
Backport #88401 to 25.8: Fix quadratic complexity in `countMatches`
robot-clickhouse Oct 13, 2025
e3979ed
Backport #87987 to 25.8: Fix index analysis with session_timezone spe…
robot-clickhouse Oct 13, 2025
82c2b31
Backport #88339 to 25.8: fix threads count for inserts
robot-clickhouse Oct 13, 2025
8d516fc
Merge pull request #88284 from ClickHouse/backport/25.8/88213
fm4v Oct 13, 2025
02e8bae
Backport #88217 to 25.8: max_cpu_share alone should determine the har…
robot-clickhouse Oct 13, 2025
0b7fb42
Merge pull request #88451 from ClickHouse/backport/25.8/88339
CheSema Oct 13, 2025
18203e8
Merge pull request #88459 from ClickHouse/backport/25.8/88217
clickhouse-gh[bot] Oct 13, 2025
3db67e4
Merge pull request #88436 from ClickHouse/backport/25.8/87987
azat Oct 13, 2025
876b961
Backport #87660 to 25.8: backups: use cloned storage client with over…
robot-clickhouse Oct 14, 2025
9364aef
Backport #87798 to 25.8: Fix reading null map subcolumn from Variants…
robot-clickhouse Oct 14, 2025
9e77704
Backport #87903 to 25.8: Add more information for Iceberg SELECT quer…
robot-clickhouse Oct 14, 2025
139bd4f
Merge pull request #88537 from ClickHouse/backport/25.8/87903
clickhouse-gh[bot] Oct 14, 2025
1d5db7a
Merge pull request #88492 from ClickHouse/backport/25.8/87660
jkartseva Oct 15, 2025
7d3738c
Backport #88544 to 25.8: Fix `ColumnBLOB should be converted to a reg…
robot-clickhouse Oct 15, 2025
25fc43f
Merge pull request #88581 from ClickHouse/backport/25.8/88544
clickhouse-gh[bot] Oct 15, 2025
438a73f
Backport #87029 to 25.8: Fix auto cluster functions schema handling
robot-clickhouse Oct 15, 2025
16b7b9a
Merge pull request #88430 from ClickHouse/backport/25.8/88401
alexey-milovidov Oct 15, 2025
dcc7561
Merge pull request #88420 from ClickHouse/backport/25.8/88089
alexey-milovidov Oct 15, 2025
7a4076f
Merge pull request #88594 from ClickHouse/backport/25.8/87029
thevar1able Oct 16, 2025
4e6df7f
Backport #88484 to 25.8: Dynamic `backups.max_attempts_after_bad_vers…
robot-clickhouse Oct 16, 2025
a39fb56
Backport #88154 to 25.8: Cleanup stale replicas from DDL Worker repli…
robot-clickhouse Oct 16, 2025
684e873
Merge pull request #88656 from ClickHouse/backport/25.8/88154
clickhouse-gh[bot] Oct 16, 2025
17fafc3
Merge pull request #87948 from ClickHouse/backport/25.8/87442
alexey-milovidov Oct 16, 2025
dcdda50
Fix wrong conflict resolution
Felixoid Oct 17, 2025
976a559
Reuse cluster_conf in backup_restore_on_cluster
Felixoid Oct 16, 2025
5426bfc
Backport #88605 to 25.8: Fix potential crash caused by concurrent mut…
robot-clickhouse Oct 17, 2025
dd40e50
Merge pull request #88649 from ClickHouse/backport/25.8/88484
Felixoid Oct 17, 2025
261935c
Merge pull request #88716 from ClickHouse/backport/25.8/88605
clickhouse-gh[bot] Oct 17, 2025
1139895
Backport #88513 to 25.8: Keeper improvement: add config for checking …
robot-clickhouse Oct 17, 2025
0570c95
Merge pull request #88742 from ClickHouse/backport/25.8/88513
clickhouse-gh[bot] Oct 17, 2025
1145dbf
Backport #88746 to 25.8: Startup clickhouse-keeper on boot
robot-clickhouse Oct 17, 2025
b6ff78c
Merge pull request #88764 from ClickHouse/backport/25.8/88746
clickhouse-gh[bot] Oct 17, 2025
0e23fd0
Backport #88617 to 25.8: cleanup temporary table entry from snapshot_…
robot-clickhouse Oct 18, 2025
ab168b0
Merge pull request #88781 from ClickHouse/backport/25.8/88617
nickitat Oct 20, 2025
c37f56c
Backport #88814 to 25.8: Catch exceptions when async logging fails to…
robot-clickhouse Oct 21, 2025
5c7cc01
Backport #87789 to 25.8: Fix Insert Select with CTE
robot-clickhouse Oct 21, 2025
27f3f97
Backport #86184 to 25.8: Fix inferring Date/DateTime/DateTime64 on da…
robot-clickhouse Oct 21, 2025
0da2a01
Merge pull request #88835 from ClickHouse/backport/25.8/88814
Algunenano Oct 21, 2025
9dc7370
Merge pull request #88843 from ClickHouse/backport/25.8/87789
clickhouse-gh[bot] Oct 21, 2025
35b8f5b
Merge pull request #88848 from ClickHouse/backport/25.8/86184
clickhouse-gh[bot] Oct 21, 2025
8edd4d4
Backport #88802 to 25.8: Better access validation for `TableFunctionL…
robot-clickhouse Oct 22, 2025
d1b1b44
Backport #88671 to 25.8: Don't try to mark non-existing entries as fi…
robot-clickhouse Oct 22, 2025
5bc8926
Merge pull request #88906 from ClickHouse/backport/25.8/88671
clickhouse-gh[bot] Oct 22, 2025
52d657d
Merge pull request #88509 from ClickHouse/backport/25.8/87798
rienath Oct 23, 2025
b8b9ce2
Merge pull request #88890 from ClickHouse/backport/25.8/88802
pufit Oct 23, 2025
3339b7b
Backport #88914 to 25.8: Fix bug in `reverseUTF8`
robot-clickhouse Oct 24, 2025
ee93c6b
Backport #88828 to 25.8: Revert "Revert "Fix coalescing merge tree fo…
robot-clickhouse Oct 24, 2025
26b4a0e
Backport #88672 to 25.8: Add profiling and logging on merge destruction
robot-clickhouse Oct 24, 2025
65df4a1
Merge pull request #88952 from ClickHouse/backport/25.8/88828
clickhouse-gh[bot] Oct 24, 2025
849cc12
Backport #88968 to 25.8: Fix SET DEFINER access check for ephemeral u…
robot-clickhouse Oct 25, 2025
1d50502
Merge pull request #88976 from ClickHouse/backport/25.8/88968
clickhouse-gh[bot] Oct 25, 2025
b473271
Merge pull request #88940 from ClickHouse/backport/25.8/88914
alexey-milovidov Oct 26, 2025
bee4dbc
Merge pull request #88336 from ClickHouse/backport/25.8/88290
alexey-milovidov Oct 27, 2025
fa39320
Merge pull request #88961 from ClickHouse/backport/25.8/88672
yariks5s Oct 27, 2025
f2cdeaa
Rebase CICD on v25.8.11.66-lts
strtgbb Oct 28, 2025
5d3bf68
Merge branch 'antalya-25.8' into rebase-cicd-v25.8.11.66-lts
strtgbb Oct 28, 2025
e91df8c
update regression hash
strtgbb Oct 28, 2025
1deac88
Merge branch 'antalya-25.8' into rebase-cicd-v25.8.11.66-lts
strtgbb Oct 29, 2025
6abb18c
revert test_storage_iceberg/test.py to upstream
strtgbb Oct 29, 2025
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
4 changes: 2 additions & 2 deletions .github/workflows/master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4178,7 +4178,7 @@ jobs:
secrets: inherit
with:
runner_type: altinity-on-demand, altinity-regression-tester
commit: fc19ce3a7322a10ab791de755c950a56744a12e7
commit: 4a249bc0422d93c6e466edbe5af74fcb0f564820
arch: release
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
timeout_minutes: 300
Expand All @@ -4190,7 +4190,7 @@ jobs:
secrets: inherit
with:
runner_type: altinity-on-demand, altinity-regression-tester-aarch64
commit: fc19ce3a7322a10ab791de755c950a56744a12e7
commit: 4a249bc0422d93c6e466edbe5af74fcb0f564820
arch: aarch64
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
timeout_minutes: 300
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4134,7 +4134,7 @@ jobs:
secrets: inherit
with:
runner_type: altinity-on-demand, altinity-regression-tester
commit: fc19ce3a7322a10ab791de755c950a56744a12e7
commit: 4a249bc0422d93c6e466edbe5af74fcb0f564820
arch: release
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
timeout_minutes: 300
Expand All @@ -4146,7 +4146,7 @@ jobs:
secrets: inherit
with:
runner_type: altinity-on-demand, altinity-regression-tester-aarch64
commit: fc19ce3a7322a10ab791de755c950a56744a12e7
commit: 4a249bc0422d93c6e466edbe5af74fcb0f564820
arch: aarch64
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
timeout_minutes: 300
Expand Down
2 changes: 1 addition & 1 deletion ci/praktika/yaml_additional_templates.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class AltinityWorkflowTemplates:
echo "Workflow Run Report: [View Report]($REPORT_LINK)" >> $GITHUB_STEP_SUMMARY
"""
# Additional jobs
REGRESSION_HASH = "fc19ce3a7322a10ab791de755c950a56744a12e7"
REGRESSION_HASH = "4a249bc0422d93c6e466edbe5af74fcb0f564820"
ALTINITY_JOBS = {
"GrypeScan": r"""
GrypeScanServer:
Expand Down
10 changes: 5 additions & 5 deletions cmake/autogenerated_versions.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

# NOTE: VERSION_REVISION has nothing common with DBMS_TCP_PROTOCOL_VERSION,
# only DBMS_TCP_PROTOCOL_VERSION should be incremented on protocol changes.
SET(VERSION_REVISION 54509)
SET(VERSION_REVISION 54511)
SET(VERSION_MAJOR 25)
SET(VERSION_MINOR 8)
SET(VERSION_PATCH 9)
SET(VERSION_GITHASH 8a2475033080b4a8d57b7771f52140af663dd4e0)
SET(VERSION_DESCRIBE v25.8.9.20000.altinityantalya)
SET(VERSION_STRING 25.8.9.20000.altinityantalya)
SET(VERSION_PATCH 11)
SET(VERSION_GITHASH 02ec3a1ea1e08fb18d2d9638f00b2b557fa1cc1c)
SET(VERSION_DESCRIBE v25.8.11.20000.altinityantalya)
SET(VERSION_STRING 25.8.11.20000.altinityantalya)
# end of autochange

# This is the 'base' tweak of the version, build scripts will
Expand Down
2 changes: 1 addition & 1 deletion contrib/azure
17 changes: 17 additions & 0 deletions docs/en/sql-reference/statements/grant.md
Original file line number Diff line number Diff line change
Expand Up @@ -680,6 +680,23 @@ GRANT READ ON S3('s3://foo/.*') TO john
GRANT READ ON S3('s3://bar/.*') TO john
```

:::warning
Source filter takes **regexp** as a parameter, so a grant
`GRANT READ ON URL('http://www.google.com') TO john;`

will allow queries
```sql
SELECT * FROM url('https://www.google.com');
SELECT * FROM url('https://www-google.com');
```

because `.` is treated as an `Any Single Character` in the regexps.
This may lead to potential vulnerability. The correct grant should be
```sql
GRANT READ ON URL('https://www\.google\.com') TO john;
```
:::

**Re-granting with GRANT OPTION:**

If the original grant has `WITH GRANT OPTION`, it can be re-granted using `GRANT CURRENT GRANTS`:
Expand Down
19 changes: 19 additions & 0 deletions packages/clickhouse-keeper.postinstall
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,25 @@ if [ "$1" = configure ] || [ -n "$not_deb_os" ]; then
"${KEEPER_USER}"
fi

if [ -x "/bin/systemctl" ] && [ -f /lib/systemd/system/clickhouse-keeper.service ] && [ -d /run/systemd/system ]; then
# if old rc.d service present - remove it
if [ -x "/etc/init.d/clickhouse-keeper" ] && [ -x "/usr/sbin/update-rc.d" ]; then
/usr/sbin/update-rc.d clickhouse-keeper remove
fi

/bin/systemctl daemon-reload
/bin/systemctl enable clickhouse-keeper
else
# If you downgrading to version older than 1.1.54336 run: systemctl disable clickhouse-keeper
if [ -x "/etc/init.d/clickhouse-keeper" ]; then
if [ -x "/usr/sbin/update-rc.d" ]; then
/usr/sbin/update-rc.d clickhouse-keeper defaults 19 19 >/dev/null || exit $?
else
echo # Other OS
fi
fi
fi

chown -R "${KEEPER_USER}:${KEEPER_GROUP}" "${KEEPER_CONFDIR}"
chmod 0755 "${KEEPER_CONFDIR}"

Expand Down
64 changes: 34 additions & 30 deletions src/AggregateFunctions/DDSketch.h
Original file line number Diff line number Diff line change
@@ -1,49 +1,49 @@
#pragma once

#include <memory> // for std::unique_ptr
#include <cmath>
#include <stdexcept>
#include <limits>
#include <iostream>
#include <memory> // for std::unique_ptr
#include <base/types.h>

#include <IO/ReadBuffer.h>
#include <IO/WriteBuffer.h>

#include <AggregateFunctions/DDSketch/DDSketchEncoding.h>
#include <AggregateFunctions/DDSketch/Mapping.h>
#include <AggregateFunctions/DDSketch/Store.h>
#include <AggregateFunctions/DDSketch/DDSketchEncoding.h>
#include <IO/ReadBuffer.h>
#include <IO/ReadHelpers.h>
#include <IO/WriteBuffer.h>
#include <IO/WriteHelpers.h>
#include <Common/Exception.h>

namespace DB
{

namespace ErrorCodes
{
extern const int BAD_ARGUMENTS;
extern const int INCORRECT_DATA;
extern const int BAD_ARGUMENTS;
extern const int INCORRECT_DATA;
}

class DDSketchDenseLogarithmic
{
public:
explicit DDSketchDenseLogarithmic(Float64 relative_accuracy = 0.01)
: mapping(std::make_unique<DDSketchLogarithmicMapping>(relative_accuracy)),
store(std::make_unique<DDSketchDenseStore>()),
negative_store(std::make_unique<DDSketchDenseStore>()),
zero_count(0.0),
count(0.0)
: mapping(std::make_unique<DDSketchLogarithmicMapping>(relative_accuracy))
, store(std::make_unique<DDSketchDenseStore>())
, negative_store(std::make_unique<DDSketchDenseStore>())
, zero_count(0.0)
, count(0.0)
{
}

DDSketchDenseLogarithmic(std::unique_ptr<DDSketchLogarithmicMapping> mapping_,
std::unique_ptr<DDSketchDenseStore> store_,
std::unique_ptr<DDSketchDenseStore> negative_store_,
Float64 zero_count_)
: mapping(std::move(mapping_)),
store(std::move(store_)),
negative_store(std::move(negative_store_)),
zero_count(zero_count_),
count(store->count + negative_store->count + zero_count_)
DDSketchDenseLogarithmic(
std::unique_ptr<DDSketchLogarithmicMapping> mapping_,
std::unique_ptr<DDSketchDenseStore> store_,
std::unique_ptr<DDSketchDenseStore> negative_store_,
Float64 zero_count_)
: mapping(std::move(mapping_))
, store(std::move(store_))
, negative_store(std::move(negative_store_))
, zero_count(zero_count_)
, count(store->count + negative_store->count + zero_count_)
{
}

Expand Down Expand Up @@ -97,7 +97,11 @@ class DDSketchDenseLogarithmic
return quantile_value;
}

void copy(const DDSketchDenseLogarithmic& other)
Float64 getGamma() const { return mapping->getGamma(); }

Float64 getCount() const { return count; }

void copy(const DDSketchDenseLogarithmic & other)
{
Float64 rel_acc = (other.mapping->getGamma() - 1) / (other.mapping->getGamma() + 1);
mapping = std::make_unique<DDSketchLogarithmicMapping>(rel_acc);
Expand All @@ -109,9 +113,9 @@ class DDSketchDenseLogarithmic
count = other.count;
}

void merge(const DDSketchDenseLogarithmic& other)
void merge(const DDSketchDenseLogarithmic & other)
{
if (mapping->getGamma() != other.mapping->getGamma())
if (*mapping != *other.mapping)
{
// modify the one with higher precision to match the one with lower precision
if (mapping->getGamma() > other.mapping->getGamma())
Expand Down Expand Up @@ -147,7 +151,7 @@ class DDSketchDenseLogarithmic

/// NOLINTBEGIN(readability-static-accessed-through-instance)

void serialize(WriteBuffer& buf) const
void serialize(WriteBuffer & buf) const
{
// Write the mapping
writeBinary(enc.FlagIndexMappingBaseLogarithmic.byte, buf);
Expand All @@ -165,7 +169,7 @@ class DDSketchDenseLogarithmic
writeBinary(zero_count, buf);
}

void deserialize(ReadBuffer& buf)
void deserialize(ReadBuffer & buf)
{
// Read the mapping
UInt8 flag = 0;
Expand Down Expand Up @@ -219,7 +223,7 @@ class DDSketchDenseLogarithmic
auto new_positive_store = std::make_unique<DDSketchDenseStore>();
auto new_negative_store = std::make_unique<DDSketchDenseStore>();

auto remap_store = [this, &new_mapping](DDSketchDenseStore& old_store, std::unique_ptr<DDSketchDenseStore>& target_store)
auto remap_store = [this, &new_mapping](DDSketchDenseStore & old_store, std::unique_ptr<DDSketchDenseStore> & target_store)
{
for (int i = 0; i < old_store.length(); ++i)
{
Expand Down
8 changes: 5 additions & 3 deletions src/AggregateFunctions/DDSketch/DDSketchEncoding.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#pragma once

#include <vector>
#include <stdexcept>
#include <base/types.h>

/**
* An encoded DDSketch comprises multiple contiguous blocks (sequences of bytes).
Expand Down Expand Up @@ -36,7 +35,10 @@ class DDSketchEncoding
{
public:
UInt8 byte;
Flag(UInt8 t, UInt8 s) : byte(t | s) { }
Flag(UInt8 t, UInt8 s)
: byte(t | s)
{
}
[[maybe_unused]] UInt8 Type() const { return byte & flagTypeMask; }
[[maybe_unused]] UInt8 SubFlag() const { return byte & subFlagMask; }
};
Expand Down
59 changes: 27 additions & 32 deletions src/AggregateFunctions/DDSketch/Mapping.h
Original file line number Diff line number Diff line change
@@ -1,26 +1,29 @@
#pragma once

#include <base/types.h>
#include <cmath>
#include <stdexcept>
#include <limits>
#include <base/types.h>

#include <IO/ReadBuffer.h>
#include <IO/ReadHelpers.h>
#include <IO/WriteBuffer.h>
#include <IO/WriteHelpers.h>
#include <Common/Exception.h>

namespace DB
{

namespace ErrorCodes
{
extern const int BAD_ARGUMENTS;
extern const int BAD_ARGUMENTS;
}

class DDSketchLogarithmicMapping
{
public:
explicit DDSketchLogarithmicMapping(Float64 relative_accuracy_, Float64 offset_ = 0.0)
: relative_accuracy(relative_accuracy_), offset(offset_)
: relative_accuracy(relative_accuracy_)
, offset(offset_)
{
if (relative_accuracy <= 0 || relative_accuracy >= 1)
{
Expand All @@ -44,48 +47,40 @@ class DDSketchLogarithmicMapping
return static_cast<int>(logGamma(value) + offset);
}

Float64 value(int key) const
{
return lowerBound(key) * (1 + relative_accuracy);
}
Float64 value(int key) const { return lowerBound(key) * (1 + relative_accuracy); }

Float64 logGamma(Float64 value) const
{
return std::log(value) * multiplier;
}
Float64 logGamma(Float64 value) const { return std::log(value) * multiplier; }

Float64 powGamma(Float64 value) const
{
return std::exp(value / multiplier);
}
Float64 powGamma(Float64 value) const { return std::exp(value / multiplier); }

Float64 lowerBound(int index) const
{
return powGamma(static_cast<Float64>(index) - offset);
}
Float64 lowerBound(int index) const { return powGamma(static_cast<Float64>(index) - offset); }

Float64 getGamma() const
{
return gamma;
}
Float64 getGamma() const { return gamma; }

Float64 getMinPossible() const
{
return min_possible;
}
Float64 getMinPossible() const { return min_possible; }

[[maybe_unused]] Float64 getMaxPossible() const
[[maybe_unused]] Float64 getMaxPossible() const { return max_possible; }

bool operator==(const DDSketchLogarithmicMapping & other) const
{
return max_possible;
if (gamma == other.gamma)
{
return true;
}

auto [min, max] = std::minmax(gamma, other.gamma);
const Float64 difference = max - min;
const Float64 acceptable = (std::nextafter(min, max) - min) * min;
return difference <= acceptable;
}

void serialize(WriteBuffer& buf) const
void serialize(WriteBuffer & buf) const
{
writeBinary(gamma, buf);
writeBinary(offset, buf);
}

void deserialize(ReadBuffer& buf)
void deserialize(ReadBuffer & buf)
{
readBinary(gamma, buf);
readBinary(offset, buf);
Expand Down
Loading
Loading