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

Method dumpTableContent

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

Dump and read table oracle

Source from the content-addressed store, hash-verified

844
845/// Dump and read table oracle
846void QueryOracle::dumpTableContent(
847 RandomGenerator & rg,
848 StatementGenerator & gen,
849 const DumpOracleStrategy strategy,
850 const bool test_content,
851 const SQLTable & t,
852 SQLQuery & sq1,
853 SQLQuery & sq2)
854{
855 TopSelect * ts = sq1.mutable_single_query()->mutable_explain()->mutable_inner_query()->mutable_select();
856 SelectIntoFile * sif = ts->mutable_intofile();
857 Select * sel = ts->mutable_sel();
858 SelectStatementCore * ssc = sel->mutable_select_core();
859 JoinedTableOrFunction * jtf = ssc->mutable_from()->mutable_tos()->mutable_join_clause()->mutable_tos()->mutable_joined_table();
860
861 insertOnTableOrCluster(rg, gen, t, false, jtf->mutable_tof());
862 jtf->set_final(t.supportsFinal());
863 switch (strategy)
864 {
865 case DumpOracleStrategy::REINSERT_TABLE:
866 case DumpOracleStrategy::OPTIMIZE:
867 case DumpOracleStrategy::REATTACH:
868 case DumpOracleStrategy::BACKUP_RESTORE:
869 case DumpOracleStrategy::RENAME_BACK:
870 case DumpOracleStrategy::FREEZE_UNFREEZE:
871 case DumpOracleStrategy::MOVE_PARTITION:
872 case DumpOracleStrategy::REPLACE_PARTITION:
873 case DumpOracleStrategy::ALTER_COLUMN:
874 case DumpOracleStrategy::ALTER_TABLE: {
875 /// Dump entire table and compare contents
876 bool first = true;
877 uint32_t col_idx = 0;
878 OrderByList * obs = ssc->mutable_orderby()->mutable_olist();
879
880 gen.flatTableColumnPath(0, t.cols, [](const SQLColumn & c) { return c.canBeInserted(); });
881 for (const auto & entry : gen.entries)
882 {
883 ExprOrderingTerm * eot = first ? obs->mutable_ord_term() : obs->add_extra_ord_terms();
884 const String alias = "a" + std::to_string(col_idx++);
885
886 ExprColAlias * eca = ssc->add_result_columns()->mutable_eca();
887 gen.columnPathRef(entry, eca->mutable_expr());
888 eca->mutable_col_alias()->set_column(alias);
889 eot->mutable_expr()->mutable_comp_expr()->mutable_expr_stc()->mutable_col()->mutable_path()->mutable_col()->set_column(
890 alias);
891 if (rg.nextBool())
892 {
893 eot->set_asc_desc(rg.nextBool() ? AscDesc::ASC : AscDesc::DESC);
894 }
895 if (rg.nextBool())
896 {
897 eot->set_nulls_order(
898 rg.nextBool() ? ExprOrderingTerm_NullsOrder::ExprOrderingTerm_NullsOrder_FIRST
899 : ExprOrderingTerm_NullsOrder::ExprOrderingTerm_NullsOrder_LAST);
900 }
901 first = false;
902 }
903 gen.entries.clear();

Callers 1

buzzHouseMethod · 0.80

Calls 9

finishSettingsFunction · 0.85
flatTableColumnPathMethod · 0.80
canBeInsertedMethod · 0.80
to_stringFunction · 0.50
removeFunction · 0.50
supportsFinalMethod · 0.45
columnPathRefMethod · 0.45
nextBoolMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected