1#include "iostream_debug_helpers.h"
2
3#include <iostream>
4#include <Client/Connection.h>
5#include <Core/Block.h>
6#include <Core/ColumnWithTypeAndName.h>
7#include <Core/Field.h>
8#include <Core/NamesAndTypes.h>
9#include <DataStreams/IBlockInputStream.h>
10#include <DataTypes/IDataType.h>
11#include <Functions/IFunction.h>
12#include <IO/WriteBufferFromOStream.h>
13#include <Interpreters/ExpressionAnalyzer.h>
14#include <Interpreters/ExpressionActions.h>
15#include <Parsers/IAST.h>
16#include <Storages/IStorage.h>
17#include <Common/COW.h>
18#include <Common/FieldVisitors.h>
19
20namespace DB
21{
22
23template <>
24std::ostream & operator<< <Field>(std::ostream & stream, const Field & what)
25{
26 stream << applyVisitor(FieldVisitorDump(), what);
27 return stream;
28}
29
30std::ostream & operator<<(std::ostream & stream, const IBlockInputStream & what)
31{
32 stream << "IBlockInputStream(name = " << what.getName() << ")";
33 return stream;
34}
35
36std::ostream & operator<<(std::ostream & stream, const NameAndTypePair & what)
37{
38 stream << "NameAndTypePair(name = " << what.name << ", type = " << what.type << ")";
39 return stream;
40}
41
42std::ostream & operator<<(std::ostream & stream, const IDataType & what)
43{
44 stream << "IDataType(name = " << what.getName() << ", default = " << what.getDefault() << ")";
45 return stream;
46}
47
48std::ostream & operator<<(std::ostream & stream, const IStorage & what)
49{
50 stream << "IStorage(name = " << what.getName() << ", tableName = " << what.getTableName() << ") {"
51 << what.getColumns().getAllPhysical().toString() << "}";
52 return stream;
53}
54
55std::ostream & operator<<(std::ostream & stream, const TableStructureReadLock &)
56{
57 stream << "TableStructureReadLock()";
58 return stream;
59}
60
61std::ostream & operator<<(std::ostream & stream, const IFunctionOverloadResolver & what)
62{
63 stream << "IFunction(name = " << what.getName() << ", variadic = " << what.isVariadic() << ", args = " << what.getNumberOfArguments()
64 << ")";
65 return stream;
66}
67
68std::ostream & operator<<(std::ostream & stream, const Block & what)
69{
70 stream << "Block("
71 << "num_columns = " << what.columns() << "){" << what.dumpStructure() << "}";
72 return stream;
73}
74
75std::ostream & operator<<(std::ostream & stream, const ColumnWithTypeAndName & what)
76{
77 stream << "ColumnWithTypeAndName(name = " << what.name << ", type = " << *what.type << ", column = ";
78 return dumpValue(stream, what.column) << ")";
79}
80
81std::ostream & operator<<(std::ostream & stream, const IColumn & what)
82{
83 stream << "IColumn(" << what.dumpStructure() << ")";
84 stream << "{";
85 for (size_t i = 0; i < what.size(); ++i)
86 {
87 if (i)
88 stream << ", ";
89 stream << applyVisitor(FieldVisitorDump(), what[i]);
90 }
91 stream << "}";
92
93 return stream;
94}
95
96std::ostream & operator<<(std::ostream & stream, const Packet & what)
97{
98 stream << "Packet("
99 << "type = " << what.type;
100 // types description: Core/Protocol.h
101 if (what.exception)
102 stream << "exception = " << what.exception.get();
103 // TODO: profile_info
104 stream << ") {" << what.block << "}";
105 return stream;
106}
107
108std::ostream & operator<<(std::ostream & stream, const ExpressionAction & what)
109{
110 stream << "ExpressionAction(" << what.toString() << ")";
111 return stream;
112}
113
114std::ostream & operator<<(std::ostream & stream, const ExpressionActions & what)
115{
116 stream << "ExpressionActions(" << what.dumpActions() << ")";
117 return stream;
118}
119
120std::ostream & operator<<(std::ostream & stream, const SyntaxAnalyzerResult & what)
121{
122 stream << "SyntaxAnalyzerResult{";
123 stream << "storage=" << what.storage << "; ";
124 if (!what.source_columns.empty())
125 {
126 stream << "source_columns=";
127 dumpValue(stream, what.source_columns);
128 stream << "; ";
129 }
130 if (!what.aliases.empty())
131 {
132 stream << "aliases=";
133 dumpValue(stream, what.aliases);
134 stream << "; ";
135 }
136 if (!what.array_join_result_to_source.empty())
137 {
138 stream << "array_join_result_to_source=";
139 dumpValue(stream, what.array_join_result_to_source);
140 stream << "; ";
141 }
142 if (!what.array_join_alias_to_name.empty())
143 {
144 stream << "array_join_alias_to_name=";
145 dumpValue(stream, what.array_join_alias_to_name);
146 stream << "; ";
147 }
148 if (!what.array_join_name_to_alias.empty())
149 {
150 stream << "array_join_name_to_alias=";
151 dumpValue(stream, what.array_join_name_to_alias);
152 stream << "; ";
153 }
154 stream << "rewrite_subqueries=" << what.rewrite_subqueries << "; ";
155 stream << "}";
156
157 return stream;
158}
159
160}
161