MCPcopy Create free account
hub / github.com/bytedance/bolt / parseOrderByClauses

Function parseOrderByClauses

bolt/exec/tests/utils/PlanBuilder.cpp:318–343  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

316
317namespace {
318std::pair<
319 std::vector<std::shared_ptr<const core::FieldAccessTypedExpr>>,
320 std::vector<core::SortOrder>>
321parseOrderByClauses(
322 const std::vector<std::string>& keys,
323 const RowTypePtr& inputType,
324 memory::MemoryPool* pool) {
325 std::vector<std::shared_ptr<const core::FieldAccessTypedExpr>> sortingKeys;
326 std::vector<core::SortOrder> sortingOrders;
327 for (const auto& key : keys) {
328 auto [untypedExpr, sortOrder] = parse::parseOrderByExpr(key);
329 auto typedExpr =
330 core::Expressions::inferTypes(untypedExpr, inputType, pool);
331
332 auto sortingKey =
333 std::dynamic_pointer_cast<const core::FieldAccessTypedExpr>(typedExpr);
334 BOLT_CHECK_NOT_NULL(
335 sortingKey,
336 "ORDER BY clause must use a column name, not an expression: {}",
337 key);
338 sortingKeys.emplace_back(sortingKey);
339 sortingOrders.emplace_back(sortOrder);
340 }
341
342 return {sortingKeys, sortingOrders};
343}
344} // namespace
345
346PlanBuilder& PlanBuilder::mergeExchange(

Callers 2

PlanBuilder.cppFile · 0.85
createLocalMergeNodeFunction · 0.85

Calls 1

parseOrderByExprFunction · 0.50

Tested by

no test coverage detected