2017-04-26 02:50:03 +00:00
|
|
|
#pragma once
|
|
|
|
#include <iostream>
|
|
|
|
|
2017-12-20 16:42:18 +00:00
|
|
|
namespace DB
|
|
|
|
{
|
2019-10-22 07:10:59 +00:00
|
|
|
|
2019-10-28 05:42:51 +00:00
|
|
|
// Use template to disable implicit casting for certain overloaded types such as Field, which leads
|
|
|
|
// to overload resolution ambiguity.
|
|
|
|
class Field;
|
|
|
|
template <typename T, typename U = std::enable_if_t<std::is_same_v<T, Field>>>
|
|
|
|
std::ostream & operator<<(std::ostream & stream, const T & what);
|
2019-10-22 07:10:59 +00:00
|
|
|
|
2017-12-20 16:42:18 +00:00
|
|
|
class IBlockInputStream;
|
|
|
|
std::ostream & operator<<(std::ostream & stream, const IBlockInputStream & what);
|
2017-04-26 02:50:03 +00:00
|
|
|
|
2017-12-25 21:57:29 +00:00
|
|
|
struct NameAndTypePair;
|
|
|
|
std::ostream & operator<<(std::ostream & stream, const NameAndTypePair & what);
|
2017-04-26 02:50:03 +00:00
|
|
|
|
2017-12-20 16:42:18 +00:00
|
|
|
class IDataType;
|
|
|
|
std::ostream & operator<<(std::ostream & stream, const IDataType & what);
|
2017-04-26 02:50:03 +00:00
|
|
|
|
2017-12-20 16:42:18 +00:00
|
|
|
class IStorage;
|
|
|
|
std::ostream & operator<<(std::ostream & stream, const IStorage & what);
|
2017-04-26 15:14:28 +00:00
|
|
|
|
2019-12-15 06:34:43 +00:00
|
|
|
class IFunctionOverloadResolver;
|
|
|
|
std::ostream & operator<<(std::ostream & stream, const IFunctionOverloadResolver & what);
|
|
|
|
|
2018-02-02 08:33:36 +00:00
|
|
|
class IFunctionBase;
|
|
|
|
std::ostream & operator<<(std::ostream & stream, const IFunctionBase & what);
|
2017-04-28 18:57:26 +00:00
|
|
|
|
2017-12-20 16:42:18 +00:00
|
|
|
class Block;
|
|
|
|
std::ostream & operator<<(std::ostream & stream, const Block & what);
|
2017-04-28 18:57:26 +00:00
|
|
|
|
2017-12-20 16:42:18 +00:00
|
|
|
struct ColumnWithTypeAndName;
|
|
|
|
std::ostream & operator<<(std::ostream & stream, const ColumnWithTypeAndName & what);
|
2017-04-28 18:57:26 +00:00
|
|
|
|
2017-12-20 16:42:18 +00:00
|
|
|
class IColumn;
|
|
|
|
std::ostream & operator<<(std::ostream & stream, const IColumn & what);
|
2017-10-13 17:47:59 +00:00
|
|
|
|
2019-11-15 16:34:43 +00:00
|
|
|
struct Packet;
|
|
|
|
std::ostream & operator<<(std::ostream & stream, const Packet & what);
|
2017-06-22 15:57:37 +00:00
|
|
|
|
2019-05-25 11:03:12 +00:00
|
|
|
class ExpressionActions;
|
|
|
|
std::ostream & operator<<(std::ostream & stream, const ExpressionActions & what);
|
|
|
|
|
2020-07-22 17:13:05 +00:00
|
|
|
struct TreeRewriterResult;
|
|
|
|
std::ostream & operator<<(std::ostream & stream, const TreeRewriterResult & what);
|
2017-12-20 16:42:18 +00:00
|
|
|
}
|
2017-04-28 18:57:26 +00:00
|
|
|
|
2017-04-26 15:14:28 +00:00
|
|
|
/// some operator<< should be declared before operator<<(... std::shared_ptr<>)
|
2018-04-09 13:52:39 +00:00
|
|
|
#include <common/iostream_debug_helpers.h>
|