MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / dumpViewContent

Method dumpViewContent

src/Client/BuzzHouse/Generator/QueryOracle.cpp:1393–1437  ·  view source on GitHub ↗

View oracle: dump all columns with explicit ORDER BY

Source from the content-addressed store, hash-verified

1391
1392/// View oracle: dump all columns with explicit ORDER BY
1393void QueryOracle::dumpViewContent(RandomGenerator & rg, const SQLView & v, SQLQuery & sq1, SQLQuery & sq2)
1394{
1395 TopSelect * ts = sq1.mutable_single_query()->mutable_explain()->mutable_inner_query()->mutable_select();
1396 SelectIntoFile * sif = ts->mutable_intofile();
1397 Select * sel = ts->mutable_sel();
1398 SelectStatementCore * ssc = sel->mutable_select_core();
1399 JoinedTableOrFunction * jtf = ssc->mutable_from()->mutable_tos()->mutable_join_clause()->mutable_tos()->mutable_joined_table();
1400
1401 v.setName(jtf->mutable_tof()->mutable_est(), false);
1402 jtf->set_final(v.supportsFinal());
1403
1404 bool first = true;
1405 uint32_t col_idx = 0;
1406 OrderByList * obs = ssc->mutable_orderby()->mutable_olist();
1407
1408 for (const auto & col : v.cols)
1409 {
1410 ExprOrderingTerm * eot = first ? obs->mutable_ord_term() : obs->add_extra_ord_terms();
1411 const String alias = "a" + std::to_string(col_idx++);
1412
1413 ExprColAlias * eca = ssc->add_result_columns()->mutable_eca();
1414 eca->mutable_expr()->mutable_comp_expr()->mutable_expr_stc()->mutable_col()->mutable_path()->mutable_col()->set_column(col);
1415 eca->mutable_col_alias()->set_column(alias);
1416 eot->mutable_expr()->mutable_comp_expr()->mutable_expr_stc()->mutable_col()->mutable_path()->mutable_col()->set_column(alias);
1417 if (rg.nextBool())
1418 {
1419 eot->set_asc_desc(rg.nextBool() ? AscDesc::ASC : AscDesc::DESC);
1420 }
1421 if (rg.nextBool())
1422 {
1423 eot->set_nulls_order(
1424 rg.nextBool() ? ExprOrderingTerm_NullsOrder::ExprOrderingTerm_NullsOrder_FIRST
1425 : ExprOrderingTerm_NullsOrder::ExprOrderingTerm_NullsOrder_LAST);
1426 }
1427 first = false;
1428 }
1429
1430 finishSettings(sel->mutable_setting_values());
1431 ts->set_format(rg.pickRandomly(rg.pickRandomly(QueryOracle::oracleFormats)));
1432 const auto err = std::filesystem::remove(qcfile);
1433 UNUSED(err);
1434 sif->set_path(qcfile.generic_string());
1435 sif->set_step(SelectIntoFile_SelectIntoFileStep::SelectIntoFile_SelectIntoFileStep_TRUNCATE);
1436 sq2.CopyFrom(sq1);
1437}
1438
1439void QueryOracle::generateImportQuery(
1440 RandomGenerator & rg, StatementGenerator & gen, const SQLTable & t, const SQLQuery & sq2, SQLQuery & sq4) const

Callers 1

buzzHouseMethod · 0.80

Calls 6

finishSettingsFunction · 0.85
to_stringFunction · 0.50
removeFunction · 0.50
setNameMethod · 0.45
supportsFinalMethod · 0.45
nextBoolMethod · 0.45

Tested by

no test coverage detected