ClickHouse / ClickHouse/ch-go

Support for AggregateFunction data type

Open
#372 2 comments 2 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
428
Forks
84
Avg merge
9d 6h
Merged PRs (30d)
4

Description

This is a parent issue to add support for the data type [`AggregateFunction`](https://clickhouse.com/docs/en/sql-reference/data-types/aggregatefunction). Several different categories of quantile functions can be used with `AggregateFunction`. I think each of them deserves their own type as they have custom serialization/deserialization. I would like to help with this effort starting with `quantile(s)DDSketch` and `quantileBFloat16` and more to follow. I have a quick prototype for DDSketch here https://github.com/ClickHouse/ch-go/compare/main...srikanthccv:ch-go:ddsketch.

@ernado do you have anything in mind how the API should look like?
```[tasklist]
### Tasks
- [ ] Add support for uniq AggregateFunction
- [ ] Add support for anyIf AggregateFunction
- [ ] Add support for quantiles AggregateFunction
- [ ] Add support for quantilesDeterministic AggregateFunction
- [ ] Add support for quantilesTiming(Weighted) AggregateFunction
- [ ] Add support for quantilesExact(Weighted) AggregateFunction
- [ ] Add support for quantilesTDigest AggregateFunction
- [ ] Add support for quantilesBFloat16 AggregateFunction
- [ ] Add support for quantilesDDSketch AggregateFunction
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the ClickHouse AggregateFunction documentation and the linked DDSketch prototype to understand the proposed serialization and deserialization approach. Resolve the API shape with the maintainer, then use the task list to define which AggregateFunction categories are in scope; done means the selected categories are supported.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.