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

Method generateImportQuery

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

Source from the content-addressed store, hash-verified

1437}
1438
1439void QueryOracle::generateImportQuery(
1440 RandomGenerator & rg, StatementGenerator & gen, const SQLTable & t, const SQLQuery & sq2, SQLQuery & sq4) const
1441{
1442 Insert * nins = sq4.mutable_single_query()->mutable_explain()->mutable_inner_query()->mutable_insert();
1443 InsertFromFile * iff = nins->mutable_insert_file();
1444 const Insert & oins = sq2.single_query().explain().inner_query().insert();
1445 const FileFunc & ff = oins.tof().tfunc().file();
1446 const InFormat & inf = !outIn.contains(ff.outformat()) || (!can_test_oracle_result && rg.nextSmallNumber() < 4)
1447 ? rg.pickValueRandomlyFromMap(outIn)
1448 : outIn.at(ff.outformat());
1449
1450 insertOnTableOrCluster(rg, gen, t, false, nins->mutable_tof());
1451 gen.flatTableColumnPath(skip_nested_node | flat_nested, t.cols, [](const SQLColumn & c) { return c.canBeInserted(); });
1452 for (const auto & entry : gen.entries)
1453 {
1454 gen.columnPathRef(entry, nins->add_cols());
1455 }
1456 gen.entries.clear();
1457 const std::string & base_filename = ff.path().substr(ff.path().find_last_of(std::filesystem::path::preferred_separator) + 1);
1458 const std::filesystem::path & ifile = fc.client_file_path / base_filename;
1459 iff->set_path(ifile.generic_string());
1460 iff->set_format(inf);
1461 if (ff.has_fcomp())
1462 {
1463 iff->set_fcomp(ff.fcomp());
1464 }
1465
1466 if (!can_test_oracle_result && rg.nextSmallNumber() < 10)
1467 {
1468 /// If can't test success, swap settings sometimes
1469 gen.generateSettingValues(rg, formatSettings, nins->mutable_setting_values());
1470 }
1471 else if (oins.has_setting_values())
1472 {
1473 SettingValues * svs = nins->mutable_setting_values();
1474
1475 svs->CopyFrom(oins.setting_values());
1476 }
1477 if (can_test_oracle_result && inf == InFormat::IN_CSV)
1478 {
1479 SettingValues * svs = nins->mutable_setting_values();
1480 SetValue * sv = svs->has_set_value() ? svs->add_other_values() : svs->mutable_set_value();
1481
1482 /// The oracle expects to read all the lines from the file
1483 sv->set_property("input_format_csv_detect_header");
1484 sv->set_value("0");
1485 }
1486 if (can_test_oracle_result)
1487 {
1488 /// Ensure deleted mask and patch parts are applied
1489 finishSettings(nins->mutable_setting_values());
1490 }
1491}
1492
1493/// Run query with different settings oracle
1494bool QueryOracle::generateFirstSetting(RandomGenerator & rg, SQLQuery & sq1)

Callers

nothing calls this directly

Calls 14

finishSettingsFunction · 0.85
fileMethod · 0.80
nextSmallNumberMethod · 0.80
flatTableColumnPathMethod · 0.80
canBeInsertedMethod · 0.80
generateSettingValuesMethod · 0.80
set_valueMethod · 0.80
insertMethod · 0.45
explainMethod · 0.45
containsMethod · 0.45
atMethod · 0.45
columnPathRefMethod · 0.45

Tested by

no test coverage detected