MCPcopy Create free account
hub / github.com/ByConity/ByConity / rewriteSampleForDistributedTable

Function rewriteSampleForDistributedTable

src/Storages/SelectQueryInfo.cpp:159–175  ·  view source on GitHub ↗

For distributed query, rewrite sample ast by dividing sample_size. We assume data is evenly distributed and it is reasonable to divided sample_size into several parts.

Source from the content-addressed store, hash-verified

157// For distributed query, rewrite sample ast by dividing sample_size.
158// We assume data is evenly distributed and it is reasonable to divided sample_size into several parts.
159ASTPtr rewriteSampleForDistributedTable(const ASTPtr & query_ast, size_t shard_size)
160{
161 ASTPtr rewrite_ast = query_ast->clone();
162 ASTSelectQuery * select = rewrite_ast->as<ASTSelectQuery>();
163 if (select && select->sampleSize())
164 {
165 ASTSampleRatio * sample = select->sampleSize()->as<ASTSampleRatio>();
166 if (!sample)
167 return rewrite_ast;
168 ASTSampleRatio::BigNum numerator = sample->ratio.numerator;
169 ASTSampleRatio::BigNum denominator = sample->ratio.denominator;
170 if (numerator <= 1 || denominator > 1)
171 return rewrite_ast;
172 sample->ratio.numerator = (sample->ratio.numerator + 1) / shard_size;
173 }
174 return rewrite_ast;
175}
176
177}

Callers 2

allocateMethod · 0.85
executeQueryFunction · 0.85

Calls 2

sampleSizeMethod · 0.80
cloneMethod · 0.45

Tested by

no test coverage detected