Find a way to work with TypeNothing in MPP mode
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 1k
- Forks
- 423
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 24
Description
In Clickhouse, a null literal has type Nullable(TypeNothing), and there are some optimization for TypeNothing, we try to use Nullable(TypeNothing) as the type of a null literal when compiling DAG request in #1575, but later, we found it does not work with MPP mode because in MPP mode, TiFlash need to exchange data with other TiFlash node, and it requires that the sender's schema is exactly the same as the receiver's schema. The receiver's schema is inferred in TiDB side, and in most cases, TiDB does not use TypeNothing, which will cause a schema mismatch between ExchangeSender and ExchangeReceiver, so we revert this change in #1627. Since TiFlash has special optimizations for TypeNothing, we should find a way to enable TypeNothing.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the changes referenced in #1575 and #1627 to understand the attempted TypeNothing support and its rollback. Then inspect the ExchangeSender and ExchangeReceiver schema requirements; done means finding a design that enables TypeNothing optimizations without causing schema mismatches in MPP mode.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- databases, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100