mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 23:21:59 +00:00
dbms: development [#CONV-2504].
This commit is contained in:
parent
cd7e317362
commit
9f5cc680a4
@ -27,13 +27,13 @@ public:
|
||||
typedef std::vector<size_t> Offsets_t;
|
||||
|
||||
/** Создать пустой столбец массивов, с типом значений, как в столбце nested_column */
|
||||
ColumnArray(SharedPtr<IColumn> nested_column)
|
||||
ColumnArray(ColumnPtr nested_column)
|
||||
: data(nested_column)
|
||||
{
|
||||
data->clear();
|
||||
}
|
||||
|
||||
SharedPtr<IColumn> cloneEmpty() const
|
||||
ColumnPtr cloneEmpty() const
|
||||
{
|
||||
return new ColumnArray(data->cloneEmpty());
|
||||
}
|
||||
@ -119,7 +119,7 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
SharedPtr<IColumn> data;
|
||||
ColumnPtr data;
|
||||
Offsets_t offsets;
|
||||
};
|
||||
|
||||
|
@ -21,7 +21,7 @@ class ColumnConst : public IColumn
|
||||
public:
|
||||
ColumnConst(size_t s_, T & data_) : s(s_), data(data_) {}
|
||||
|
||||
SharedPtr<IColumn> cloneEmpty() const { return new ColumnConst(0, data); }
|
||||
ColumnPtr cloneEmpty() const { return new ColumnConst(0, data); }
|
||||
size_t size() const { return s; }
|
||||
Field operator[](size_t n) const { return data; }
|
||||
void cut(size_t start, size_t length) { s = length; }
|
||||
@ -37,7 +37,7 @@ public:
|
||||
const T & getData() const { return data; }
|
||||
|
||||
/** Преобразование из константы в полноценный столбец */
|
||||
virtual SharedPtr<IColumn> convertToFullColumn() const = 0;
|
||||
virtual ColumnPtr convertToFullColumn() const = 0;
|
||||
|
||||
private:
|
||||
size_t s;
|
||||
|
@ -20,13 +20,13 @@ class ColumnFixedArray : public IColumn
|
||||
{
|
||||
public:
|
||||
/** Создать пустой столбец массивов фиксированного размера n, со типом значений, как в столбце nested_column */
|
||||
ColumnFixedArray(SharedPtr<IColumn> nested_column, size_t n_)
|
||||
ColumnFixedArray(ColumnPtr nested_column, size_t n_)
|
||||
: data(nested_column), n(n_)
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
||||
SharedPtr<IColumn> cloneEmpty() const
|
||||
ColumnPtr cloneEmpty() const
|
||||
{
|
||||
return new ColumnFixedArray(data->cloneEmpty(), n);
|
||||
}
|
||||
@ -83,7 +83,7 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
SharedPtr<IColumn> data;
|
||||
ColumnPtr data;
|
||||
const size_t n;
|
||||
};
|
||||
|
||||
|
@ -26,7 +26,7 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
SharedPtr<IColumn> cloneEmpty() const
|
||||
ColumnPtr cloneEmpty() const
|
||||
{
|
||||
return new ColumnFixedString(n);
|
||||
}
|
||||
|
@ -25,13 +25,13 @@ public:
|
||||
typedef std::vector<Flag_t> Nulls_t;
|
||||
|
||||
/** Создать пустой столбец, с типом значений, как в столбце nested_column */
|
||||
ColumnNullable(SharedPtr<IColumn> nested_column)
|
||||
ColumnNullable(ColumnPtr nested_column)
|
||||
: data(nested_column)
|
||||
{
|
||||
data.clear();
|
||||
}
|
||||
|
||||
SharedPtr<IColumn> cloneEmpty() const
|
||||
ColumnPtr cloneEmpty() const
|
||||
{
|
||||
return new ColumnNullable(data->cloneEmpty());
|
||||
}
|
||||
@ -111,7 +111,7 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
SharedPtr<IColumn> data;
|
||||
ColumnPtr data;
|
||||
Nulls_t nulls;
|
||||
};
|
||||
|
||||
|
@ -26,7 +26,7 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
SharedPtr<IColumn> cloneEmpty() const
|
||||
ColumnPtr cloneEmpty() const
|
||||
{
|
||||
return new ColumnString;
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
#include <DB/Core/Exception.h>
|
||||
#include <DB/Core/ErrorCodes.h>
|
||||
#include <DB/Column/IColumn.h>
|
||||
#include <DB/Columns/IColumn.h>
|
||||
|
||||
|
||||
namespace DB
|
||||
@ -43,7 +43,7 @@ public:
|
||||
checkSizes();
|
||||
}
|
||||
|
||||
SharedPtr<IColumn> cloneEmpty() const
|
||||
ColumnPtr cloneEmpty() const
|
||||
{
|
||||
Container_t new_data(data.size());
|
||||
for (size_t i = 0; i < data.size(); ++i)
|
||||
@ -94,7 +94,7 @@ public:
|
||||
|
||||
/// манипуляция с Tuple
|
||||
|
||||
void insertColumn(size_t pos, SharedPtr<IColumn> & column)
|
||||
void insertColumn(size_t pos, ColumnPtr & column)
|
||||
{
|
||||
if (pos > data.size())
|
||||
throw Exception("Position out of bound in ColumnTuple::insertColumn().",
|
||||
|
@ -24,7 +24,7 @@ public:
|
||||
ColumnVector() {}
|
||||
ColumnVector(size_t n) : data(n) {}
|
||||
|
||||
SharedPtr<IColumn> cloneEmpty() const
|
||||
ColumnPtr cloneEmpty() const
|
||||
{
|
||||
return new ColumnVector<T>;
|
||||
}
|
||||
|
@ -1,18 +0,0 @@
|
||||
#ifndef DBMS_COLUMNS_COLUMNS_H
|
||||
#define DBMS_COLUMNS_COLUMNS_H
|
||||
|
||||
#include <vector>
|
||||
#include <Poco/SharedPtr.h>
|
||||
#include <DB/Columns/IColumn.h>
|
||||
|
||||
|
||||
namespace DB
|
||||
{
|
||||
|
||||
using Poco::SharedPtr;
|
||||
|
||||
typedef std::vector<SharedPtr<IColumn> > Columns;
|
||||
|
||||
}
|
||||
|
||||
#endif
|
@ -49,6 +49,9 @@ public:
|
||||
};
|
||||
|
||||
|
||||
typedef SharedPtr<IColumn> ColumnPtr;
|
||||
typedef std::vector<ColumnPtr> Columns;
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -17,8 +17,8 @@ using Poco::SharedPtr;
|
||||
|
||||
struct ColumnWithNameAndType
|
||||
{
|
||||
SharedPtr<IColumn> column;
|
||||
SharedPtr<IDataType> type;
|
||||
ColumnPtr column;
|
||||
DataTypePtr type;
|
||||
String name;
|
||||
};
|
||||
|
||||
|
@ -2,11 +2,16 @@
|
||||
#define DBMS_CORE_FIELD_H
|
||||
|
||||
#include <vector>
|
||||
#include <sstream>
|
||||
|
||||
#include <boost/variant.hpp>
|
||||
#include <boost/variant/recursive_variant.hpp>
|
||||
#include <boost/variant/static_visitor.hpp>
|
||||
|
||||
#include <Poco/NumberFormatter.h>
|
||||
|
||||
#include <mysqlxx/mysqlxx.h>
|
||||
|
||||
#include <DB/Core/Types.h>
|
||||
|
||||
|
||||
@ -64,6 +69,39 @@ public:
|
||||
FieldType::Enum operator() (const Array & x) const { return FieldType::Array; }
|
||||
};
|
||||
|
||||
/** Возвращает строковый дамп типа */
|
||||
class FieldVisitorDump : public boost::static_visitor<std::string>
|
||||
{
|
||||
public:
|
||||
std::string operator() (const Null & x) const { return "NULL"; }
|
||||
std::string operator() (const UInt64 & x) const { return "UInt64_" + Poco::NumberFormatter::format(x); }
|
||||
std::string operator() (const Int64 & x) const { return "Int64_" + Poco::NumberFormatter::format(x); }
|
||||
std::string operator() (const Float64 & x) const { return "Float64_" + Poco::NumberFormatter::format(x); }
|
||||
|
||||
std::string operator() (const String & x) const
|
||||
{
|
||||
std::stringstream s;
|
||||
s << mysqlxx::quote << x;
|
||||
return s.str();
|
||||
}
|
||||
|
||||
std::string operator() (const Array & x) const
|
||||
{
|
||||
std::stringstream s;
|
||||
|
||||
s << "Array_[";
|
||||
for (Array::const_iterator it = x.begin(); it != x.end(); ++it)
|
||||
{
|
||||
if (it != x.begin())
|
||||
s << ", ";
|
||||
s << boost::apply_visitor(FieldVisitorDump(), *it);
|
||||
}
|
||||
s << "]";
|
||||
|
||||
return s.str();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template <typename T> struct NearestFieldType;
|
||||
|
||||
|
@ -17,7 +17,7 @@ using Poco::SharedPtr;
|
||||
|
||||
struct NameAndType
|
||||
{
|
||||
SharedPtr<IDataType> type;
|
||||
DataTypePtr type;
|
||||
String name;
|
||||
};
|
||||
|
||||
|
@ -14,7 +14,7 @@ namespace DB
|
||||
|
||||
using Poco::SharedPtr;
|
||||
|
||||
typedef std::map<std::string, SharedPtr<IDataType> > NamesAndTypes;
|
||||
typedef std::map<std::string, DataTypePtr> NamesAndTypes;
|
||||
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,9 @@
|
||||
#ifndef DBMS_DATA_STREAMS_TABSEPARATEDROWINPUTSTREAM_H
|
||||
#define DBMS_DATA_STREAMS_TABSEPARATEDROWINPUTSTREAM_H
|
||||
#pragma once
|
||||
|
||||
#include <Poco/SharedPtr.h>
|
||||
|
||||
#include <DB/IO/ReadBuffer.h>
|
||||
#include <DB/DataTypes/DataTypes.h>
|
||||
#include <DB/DataTypes/IDataType.h>
|
||||
#include <DB/DataStreams/IRowInputStream.h>
|
||||
|
||||
|
||||
@ -29,5 +28,3 @@ private:
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1,10 +1,9 @@
|
||||
#ifndef DBMS_DATA_STREAMS_TABSEPARATEDROWOUTPUTSTREAM_H
|
||||
#define DBMS_DATA_STREAMS_TABSEPARATEDROWOUTPUTSTREAM_H
|
||||
#pragma once
|
||||
|
||||
#include <Poco/SharedPtr.h>
|
||||
|
||||
#include <DB/IO/WriteBuffer.h>
|
||||
#include <DB/DataTypes/DataTypes.h>
|
||||
#include <DB/DataTypes/IDataType.h>
|
||||
#include <DB/DataStreams/IRowOutputStream.h>
|
||||
|
||||
|
||||
@ -33,4 +32,3 @@ private:
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -16,7 +16,7 @@ public:
|
||||
DataTypeDate() {}
|
||||
|
||||
std::string getName() const { return "Date"; }
|
||||
SharedPtr<IDataType> clone() const { return new DataTypeDate; }
|
||||
DataTypePtr clone() const { return new DataTypeDate; }
|
||||
|
||||
void serializeText(const Field & field, WriteBuffer & ostr) const
|
||||
{
|
||||
|
@ -16,7 +16,7 @@ public:
|
||||
DataTypeDateTime() {}
|
||||
|
||||
std::string getName() const { return "DateTime"; }
|
||||
SharedPtr<IDataType> clone() const { return new DataTypeDateTime; }
|
||||
DataTypePtr clone() const { return new DataTypeDateTime; }
|
||||
|
||||
void serializeText(const Field & field, WriteBuffer & ostr) const
|
||||
{
|
||||
|
@ -27,7 +27,7 @@ public:
|
||||
return "FixedString(" + Poco::NumberFormatter::format(n) + ")";
|
||||
}
|
||||
|
||||
SharedPtr<IDataType> clone() const
|
||||
DataTypePtr clone() const
|
||||
{
|
||||
return new DataTypeFixedString(n);
|
||||
}
|
||||
@ -46,7 +46,7 @@ public:
|
||||
void serializeTextQuoted(const Field & field, WriteBuffer & ostr, bool compatible = false) const;
|
||||
void deserializeTextQuoted(Field & field, ReadBuffer & istr, bool compatible = false) const;
|
||||
|
||||
SharedPtr<IColumn> createColumn() const;
|
||||
ColumnPtr createColumn() const;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ public:
|
||||
return "String";
|
||||
}
|
||||
|
||||
SharedPtr<IDataType> clone() const
|
||||
DataTypePtr clone() const
|
||||
{
|
||||
return new DataTypeString;
|
||||
}
|
||||
@ -41,7 +41,7 @@ public:
|
||||
void serializeTextQuoted(const Field & field, WriteBuffer & ostr, bool compatible = false) const;
|
||||
void deserializeTextQuoted(Field & field, ReadBuffer & istr, bool compatible = false) const;
|
||||
|
||||
SharedPtr<IColumn> createColumn() const;
|
||||
ColumnPtr createColumn() const;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -1,20 +0,0 @@
|
||||
#ifndef DBMS_DATA_TYPES_DATATYPES_H
|
||||
#define DBMS_DATA_TYPES_DATATYPES_H
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <Poco/SharedPtr.h>
|
||||
|
||||
#include <DB/DataTypes/IDataType.h>
|
||||
|
||||
|
||||
namespace DB
|
||||
{
|
||||
|
||||
using Poco::SharedPtr;
|
||||
|
||||
typedef std::vector<SharedPtr<IDataType> > DataTypes;
|
||||
|
||||
}
|
||||
|
||||
#endif
|
@ -17,7 +17,7 @@ struct DataTypeFromFieldType;
|
||||
{ \
|
||||
public: \
|
||||
std::string getName() const { return #TYPE; } \
|
||||
SharedPtr<IDataType> clone() const { return new DataType ## TYPE; } \
|
||||
DataTypePtr clone() const { return new DataType ## TYPE; } \
|
||||
}; \
|
||||
\
|
||||
template <> struct DataTypeFromFieldType<TYPE> \
|
||||
|
@ -14,14 +14,14 @@ class DataTypeVarUInt : public IDataTypeNumberVariable<UInt64, ColumnUInt64>
|
||||
{
|
||||
public:
|
||||
std::string getName() const { return "VarUInt"; }
|
||||
SharedPtr<IDataType> clone() const { return new DataTypeVarUInt; }
|
||||
DataTypePtr clone() const { return new DataTypeVarUInt; }
|
||||
};
|
||||
|
||||
class DataTypeVarInt : public IDataTypeNumberVariable<Int64, ColumnInt64>
|
||||
{
|
||||
public:
|
||||
std::string getName() const { return "VarInt"; }
|
||||
SharedPtr<IDataType> clone() const { return new DataTypeVarInt; }
|
||||
DataTypePtr clone() const { return new DataTypeVarInt; }
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
#ifndef DBMS_DATA_TYPES_IDATATYPE_H
|
||||
#define DBMS_DATA_TYPES_IDATATYPE_H
|
||||
#pragma once
|
||||
|
||||
#include <Poco/SharedPtr.h>
|
||||
|
||||
@ -61,6 +60,9 @@ public:
|
||||
virtual ~IDataType() {}
|
||||
};
|
||||
|
||||
|
||||
typedef Poco::SharedPtr<IDataType> DataTypePtr;
|
||||
typedef std::vector<DataTypePtr> DataTypes;
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -51,7 +51,7 @@ public:
|
||||
x.resize(size / sizeof(typename ColumnType::value_type));
|
||||
}
|
||||
|
||||
SharedPtr<IColumn> createColumn() const
|
||||
ColumnPtr createColumn() const
|
||||
{
|
||||
return new ColumnType;
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
SharedPtr<IColumn> createColumn() const
|
||||
ColumnPtr createColumn() const
|
||||
{
|
||||
return new ColumnType;
|
||||
}
|
||||
|
@ -1,10 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include <Poco/SharedPtr.h>
|
||||
|
||||
#include <DB/Core/Names.h>
|
||||
#include <DB/Core/Block.h>
|
||||
#include <DB/Core/ColumnNumbers.h>
|
||||
#include <DB/DataTypes/IDataType.h>
|
||||
#include <DB/DataTypes/DataTypes.h>
|
||||
|
||||
|
||||
namespace DB
|
||||
@ -40,4 +41,9 @@ public:
|
||||
};
|
||||
|
||||
|
||||
using Poco::SharedPtr;
|
||||
|
||||
typedef SharedPtr<IFunction> FunctionPtr;
|
||||
|
||||
|
||||
}
|
||||
|
@ -23,6 +23,12 @@ public:
|
||||
|
||||
/** Получить кусок текста, откуда был получен этот элемент. */
|
||||
StringRange getRange() { return range; }
|
||||
|
||||
/** Получить всех детей. */
|
||||
ASTs getChildren() { return children; }
|
||||
|
||||
/** Получить текст, который идентифицирует этот элемент. */
|
||||
String getID() { return "ExpressionList"; }
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define DBMS_PARSERS_ASTFUNCTION_H
|
||||
|
||||
#include <DB/Parsers/IAST.h>
|
||||
#include <DB/Functions/IFunction.h>
|
||||
|
||||
|
||||
namespace DB
|
||||
@ -18,11 +19,25 @@ public:
|
||||
/// параметры
|
||||
ASTPtr arguments;
|
||||
|
||||
/// сама функция
|
||||
FunctionPtr function;
|
||||
|
||||
ASTFunction() {}
|
||||
ASTFunction(StringRange range_) : range(range_) {}
|
||||
|
||||
/** Получить кусок текста, откуда был получен этот элемент. */
|
||||
StringRange getRange() { return range; }
|
||||
|
||||
/** Получить всех детей. */
|
||||
ASTs getChildren()
|
||||
{
|
||||
ASTs res;
|
||||
res.push_back(arguments);
|
||||
return res;
|
||||
}
|
||||
|
||||
/** Получить текст, который идентифицирует этот элемент. */
|
||||
String getID() { return "Function_" + name; }
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
#ifndef DBMS_PARSERS_ASTIDENTIFIER_H
|
||||
#define DBMS_PARSERS_ASTIDENTIFIER_H
|
||||
|
||||
#include <DB/DataTypes/IDataType.h>
|
||||
#include <DB/Parsers/IAST.h>
|
||||
|
||||
|
||||
@ -15,12 +16,20 @@ public:
|
||||
StringRange range;
|
||||
/// имя
|
||||
String name;
|
||||
/// тип
|
||||
DataTypePtr type;
|
||||
|
||||
ASTIdentifier() {}
|
||||
ASTIdentifier(StringRange range_, const String & name_) : range(range_), name(name_) {}
|
||||
|
||||
/** Получить кусок текста, откуда был получен этот элемент. */
|
||||
StringRange getRange() { return range; }
|
||||
|
||||
/** Получить всех детей. */
|
||||
ASTs getChildren() { return ASTs(); }
|
||||
|
||||
/** Получить текст, который идентифицирует этот элемент. */
|
||||
String getID() { return "Identifier_" + name; }
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -22,6 +22,12 @@ public:
|
||||
|
||||
/** Получить кусок текста, откуда был получен этот элемент. */
|
||||
StringRange getRange() { return range; }
|
||||
|
||||
/** Получить всех детей. */
|
||||
ASTs getChildren() { return ASTs(); }
|
||||
|
||||
/** Получить текст, который идентифицирует этот элемент. */
|
||||
String getID() { return "Literal_" + boost::apply_visitor(FieldVisitorDump(), value); }
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -21,6 +21,30 @@ public:
|
||||
|
||||
/** Получить кусок текста, откуда был получен этот элемент. */
|
||||
StringRange getRange() { return range; }
|
||||
|
||||
/** Получить всех детей. */
|
||||
ASTs getChildren()
|
||||
{
|
||||
ASTs res;
|
||||
if (!select.isNull())
|
||||
res.push_back(select);
|
||||
if (!from.isNull())
|
||||
res.push_back(from);
|
||||
if (!where.isNull())
|
||||
res.push_back(where);
|
||||
if (!group.isNull())
|
||||
res.push_back(group);
|
||||
if (!having.isNull())
|
||||
res.push_back(having);
|
||||
if (!order.isNull())
|
||||
res.push_back(order);
|
||||
if (!limit.isNull())
|
||||
res.push_back(limit);
|
||||
return res;
|
||||
}
|
||||
|
||||
/** Получить текст, который идентифицирует этот элемент. */
|
||||
String getID() { return "SelectQuery"; };
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -1,7 +1,8 @@
|
||||
#ifndef DBMS_PARSERS_IAST_H
|
||||
#define DBMS_PARSERS_IAST_H
|
||||
#pragma once
|
||||
|
||||
#include <list>
|
||||
#include <sstream>
|
||||
|
||||
#include <Poco/SharedPtr.h>
|
||||
|
||||
#include <DB/Core/Types.h>
|
||||
@ -19,15 +20,50 @@ using Poco::SharedPtr;
|
||||
class IAST
|
||||
{
|
||||
public:
|
||||
typedef std::list<SharedPtr<IAST> > ASTs;
|
||||
|
||||
/** Получить кусок текста, откуда был получен этот элемент. */
|
||||
virtual StringRange getRange() = 0;
|
||||
|
||||
/** Получить всех детей. */
|
||||
virtual ASTs getChildren() = 0;
|
||||
|
||||
/** Получить текст, который идентифицирует этот элемент. */
|
||||
virtual String getID() = 0;
|
||||
|
||||
/** Получить текст, который идентифицирует этот элемент и всё поддерево.
|
||||
* Обычно он содержит идентификатор элемента и getTreeID от всех детей.
|
||||
*/
|
||||
virtual String getTreeID()
|
||||
{
|
||||
std::stringstream s;
|
||||
s << getID();
|
||||
|
||||
ASTs children = getChildren();
|
||||
if (!children.empty())
|
||||
{
|
||||
s << "(";
|
||||
for (ASTs::iterator it = children.begin(); it != children.end(); ++it)
|
||||
{
|
||||
if (it != children.begin())
|
||||
s << ", ";
|
||||
s << (*it)->getTreeID();
|
||||
}
|
||||
s << ")";
|
||||
}
|
||||
|
||||
return s.str();
|
||||
}
|
||||
|
||||
IAST() : calculated(false) {}
|
||||
virtual ~IAST() {}
|
||||
|
||||
/// Было ли соответствующее выражение вычислено.
|
||||
bool calculated;
|
||||
};
|
||||
|
||||
|
||||
typedef Poco::SharedPtr<IAST> ASTPtr;
|
||||
typedef SharedPtr<IAST> ASTPtr;
|
||||
typedef std::list<ASTPtr> ASTs;
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -105,7 +105,7 @@ void DataTypeFixedString::deserializeTextQuoted(Field & field, ReadBuffer & istr
|
||||
}
|
||||
|
||||
|
||||
SharedPtr<IColumn> DataTypeFixedString::createColumn() const
|
||||
ColumnPtr DataTypeFixedString::createColumn() const
|
||||
{
|
||||
return new ColumnFixedString(n);
|
||||
}
|
||||
|
@ -131,7 +131,7 @@ void DataTypeString::deserializeTextQuoted(Field & field, ReadBuffer & istr, boo
|
||||
}
|
||||
|
||||
|
||||
SharedPtr<IColumn> DataTypeString::createColumn() const
|
||||
ColumnPtr DataTypeString::createColumn() const
|
||||
{
|
||||
return new ColumnString;
|
||||
}
|
||||
|
@ -23,6 +23,8 @@ int main(int argc, char ** argv)
|
||||
std::cout << "Success." << std::endl;
|
||||
DB::formatAST(*ast, std::cout);
|
||||
std::cout << std::endl;
|
||||
|
||||
std::cout << std::endl << ast->getTreeID() << std::endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user