pingcap / pingcap/tiflash

Find a way to work with TypeNothing in MPP mode

Open
#1,729 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

component/expression type/enhancement
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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.