Skip to content

Commit

Permalink
DebugString methods for debug prints (ydb-platform#1198)
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanmorozov333 authored Jan 22, 2024
1 parent 477e168 commit 5d10402
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 2 deletions.
40 changes: 40 additions & 0 deletions ydb/core/formats/arrow/program.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@ class TColumnInfo {
}

public:
TString DebugString() const {
return TStringBuilder() << (GeneratedFlag ? "G:" : "") << ColumnName;
}

static TColumnInfo Generated(const ui32 columnId, const std::string& columnName) {
return TColumnInfo(columnId, columnName, true);
}
Expand Down Expand Up @@ -233,6 +237,12 @@ class TAssign {
const arrow::compute::FunctionOptions* GetOptions() const { return FuncOpts.get(); }

IStepFunction<TAssign>::TPtr GetFunction(arrow::compute::ExecContext* ctx) const;
TString DebugString() const {
return TStringBuilder() <<
"{op=" << Operation << ";column=" << Column.DebugString() << ";" << (Constant ? "const=" + Constant->ToString() + ";" : "NO;")
<< (KernelFunction ? ("kernel=" + KernelFunction->name() + ";") : "NO;")
<< "}";
}
private:
const TColumnInfo Column;
EOperation Operation{EOperation::Unspecified};
Expand Down Expand Up @@ -312,6 +322,27 @@ class TProgramStep {
public:
using TDatumBatch = TDatumBatch;

TString DebugString() const {
TStringBuilder sb;
sb << "{";
sb << "assignes=[";
for (auto&& i : Assignes) {
sb << i.DebugString() << ";";
}
sb << "];";
sb << "group_by_count = " << GroupBy.size() << "; ";
sb << "group_by_keys_count=" << GroupByKeys.size() << ";";

sb << "projections=[";
for (auto&& i : Projection) {
sb << i.DebugString() << ";";
}
sb << "];";

sb << "}";
return sb;
}

std::set<std::string> GetColumnsInUsage() const;

const std::set<ui32>& GetFilterOriginalColumnIds() const;
Expand Down Expand Up @@ -391,6 +422,15 @@ struct TProgram {
std::set<std::string> GetEarlyFilterColumns() const;
std::set<std::string> GetProcessingColumns() const;
std::shared_ptr<NArrow::TColumnFilter> ApplyEarlyFilter(std::shared_ptr<arrow::Table>& batch, const bool useFilter) const;
TString DebugString() const {
TStringBuilder sb;
sb << "[";
for (auto&& i : Steps) {
sb << i->DebugString() << ";";
}
sb << "]";
return sb;
}
};

inline arrow::Status ApplyProgram(
Expand Down
27 changes: 27 additions & 0 deletions ydb/core/tx/columnshard/splitter/stats.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,14 @@ class TSimpleSerializationStat {
Y_ABORT_UNLESS(RawBytes);
}

TString DebugString() const {
return TStringBuilder() << "{"
<< "serialized_bytes=" << SerializedBytes << ";"
<< "records=" << RecordsCount << ";"
<< "raw_bytes=" << RawBytes << ";"
<< "}";
}

double GetSerializedBytesPerRecord() const {
AFL_VERIFY(RecordsCount);
return 1.0 * SerializedBytes / RecordsCount;
Expand Down Expand Up @@ -77,6 +85,10 @@ class TBatchSerializationStat {
RawBytesPerRecord = 1.0 * rawBytes / recordsCount;
}

TString DebugString() const {
return TStringBuilder() << "{sbpr=" << SerializedBytesPerRecord << ";rbpr=" << RawBytesPerRecord << "}";
}

TBatchSerializationStat(const TSimpleSerializationStat& simple) {
SerializedBytesPerRecord = simple.GetSerializedBytesPerRecord();
RawBytesPerRecord = simple.GetRawBytesPerRecord();
Expand Down Expand Up @@ -114,6 +126,7 @@ class TBatchSerializationStat {

class TColumnSerializationStat: public TSimpleSerializationStat {
private:
using TBase = TSimpleSerializationStat;
YDB_READONLY(ui32, ColumnId, 0);
YDB_READONLY_DEF(std::string, ColumnName);
public:
Expand All @@ -133,6 +146,10 @@ class TColumnSerializationStat: public TSimpleSerializationStat {
return result;
}

TString DebugString() const {
return TStringBuilder() << "{id=" << ColumnId << ";name=" << ColumnName << ";details=" << TBase::DebugString() << "}";
}

void Merge(const TSimpleSerializationStat& item) {
SerializedBytes += item.GetSerializedBytes();
RawBytes += item.GetRawBytes();
Expand All @@ -146,6 +163,16 @@ class TSerializationStats {
std::map<ui32, TColumnSerializationStat*> StatsByColumnId;
std::map<std::string, TColumnSerializationStat*> StatsByColumnName;
public:
TString DebugString() const {
TStringBuilder sb;
sb << "{columns=";
for (auto&& i : ColumnStat) {
sb << i.DebugString();
}
sb << ";}";
return sb;
}

void Merge(const TSerializationStats& item) {
for (auto&& i : item.ColumnStat) {
AddStat(i);
Expand Down
1 change: 1 addition & 0 deletions ydb/core/tx/program/program.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -475,6 +475,7 @@ bool TProgramContainer::Init(const IColumnResolver& columnResolver, NKikimrSchem
return false;
}

ProgramProto = programProto;
if (IS_DEBUG_LOG_ENABLED(NKikimrServices::TX_COLUMNSHARD)) {
TString out;
::google::protobuf::TextFormat::PrintToString(programProto, &out);
Expand Down
11 changes: 9 additions & 2 deletions ydb/core/tx/program/program.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,21 @@ class IColumnResolver {

class TProgramContainer {
private:
NKikimrSSA::TProgram ProgramProto;
std::shared_ptr<NSsa::TProgram> Program;
std::shared_ptr<arrow::RecordBatch> ProgramParameters; // TODO
TKernelsRegistry KernelsRegistry;
std::optional<std::set<std::string>> OverrideProcessingColumnsSet;
std::optional<std::vector<TString>> OverrideProcessingColumnsVector;
public:
TString ProtoDebugString() const {
return ProgramProto.DebugString();
}

TString DebugString() const {
return Program ? Program->DebugString() : "NO_PROGRAM";
}

bool HasOverridenProcessingColumnIds() const {
return !!OverrideProcessingColumnsVector;
}
Expand Down Expand Up @@ -75,8 +84,6 @@ class TProgramContainer {

std::set<std::string> GetEarlyFilterColumns() const;
std::set<std::string> GetProcessingColumns() const;

bool HasEarlyFilterOnly() const;
private:
bool ParseProgram(const IColumnResolver& columnResolver, const NKikimrSSA::TProgram& program, TString& error);
};
Expand Down

0 comments on commit 5d10402

Please sign in to comment.