diff --git a/dbms/include/DB/Columns/ColumnNullable.h b/dbms/include/DB/Columns/ColumnNullable.h deleted file mode 100644 index 0f071c07c14..00000000000 --- a/dbms/include/DB/Columns/ColumnNullable.h +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef DBMS_CORE_COLUMN_NULLABLE_H -#define DBMS_CORE_COLUMN_NULLABLE_H - -#include - -#include -#include - -#include - - -namespace DB -{ - -using Poco::SharedPtr; - -/** Cтолбeц значений, которые могут принимать значения некоторого типа или NULL. - * В памяти он представлен, как столбец вложенного типа, - * а также как массив флагов, является ли соответствующий элемент NULL-ом. - */ -class ColumnNullable : public IColumn -{ -public: - typedef char Flag_t; - typedef std::vector Nulls_t; - - /** Создать пустой столбец, с типом значений, как в столбце nested_column */ - ColumnNullable(ColumnPtr nested_column) - : data(nested_column) - { - data.clear(); - } - - ColumnPtr cloneEmpty() const - { - return new ColumnNullable(data->cloneEmpty()); - } - - size_t size() const - { - return data->size(); - } - - Field operator[](size_t n) const - { - return nulls[n] ? boost::none : (*data)[n]; - } - - void cut(size_t start, size_t length) - { - if (length == 0 || start + length > nulls.size()) - throw Exception("Parameter out of bound in IColumnNullable::cut() method.", - ErrorCodes::PARAMETER_OUT_OF_BOUND); - - if (start == 0) - nulls.resize(length); - else - { - Nulls_t tmp(length); - memcpy(&tmp[0], &nulls[start], length * sizeof(nulls[0])); - tmp.swap(nulls); - } - - data->cut(start, length); - } - - void insert(const Field & x) - { - if (x == boost::none) - { - data->insertDefault(); - nulls.push_back(1); - } - else - { - data->insert(x); - nulls.push_back(0); - } - } - - void insertDefault() - { - insert(Null()); - } - - void clear() - { - data.clear(); - nulls.clear(); - } - - /** Более эффективные методы манипуляции */ - IColumn & getData() - { - return *data; - } - - const IColumn & getData() const - { - return *data; - } - - Nulls_t & getNulls() - { - return nulls; - } - - const Nulls_t & getNulls() const - { - return nulls; - } - -private: - ColumnPtr data; - Nulls_t nulls; -}; - - -} - -#endif diff --git a/dbms/include/DB/Columns/ColumnTuple.h b/dbms/include/DB/Columns/ColumnTuple.h deleted file mode 100644 index a5584b5ec80..00000000000 --- a/dbms/include/DB/Columns/ColumnTuple.h +++ /dev/null @@ -1,123 +0,0 @@ -#ifndef DBMS_CORE_COLUMN_TUPLE_H -#define DBMS_CORE_COLUMN_TUPLE_H - -#include - -#include - -#include -#include -#include - - -namespace DB -{ - -using Poco::SharedPtr; - -/** Столбец со значениями-кортежами. - */ -class ColumnTuple : public IColumn -{ -private: - typedef std::vector > Container_t; - Container_t data; - - /// убедиться в том, что размеры столбцов-элементов совпадают. - void checkSizes() const - { - if (data.empty()) - throw Exception("Empty tuple", ErrorCodes::EMPTY_TUPLE); - - size_t size = data[0]->size(); - for (size_t i = 1; i < data.size(); ++i) - if (data[i]->size() != size) - throw Exception("Sizes of columns (elements of tuple column) doesn't match", - ErrorCodes::SIZES_OF_COLUMNS_IN_TUPLE_DOESNT_MATCH); - } - -public: - ColumnTuple(const Container_t & data_) - : data(data_) - { - checkSizes(); - } - - ColumnPtr cloneEmpty() const - { - Container_t new_data(data.size()); - for (size_t i = 0; i < data.size(); ++i) - new_data[i] = data[i]->cloneEmpty(); - - return new ColumnTuple(new_data); - } - - size_t size() const - { - return data[0]->size(); - } - - Field operator[](size_t n) const - { - Array res = Array(data.size()); - for (size_t i = 0; i < data.size(); ++i) - res[i] = (*data[i])[n]; - return res; - } - - void cut(size_t start, size_t length) - { - for (size_t i = 0; i < data.size(); ++i) - data[i]->cut(start, length); - } - - void insert(const Field & x) - { - Array & arr = boost::get(x); - if (arr.size() != data.size()) - throw Exception("Sizes of columns in tuple doesn't match", ErrorCodes::SIZES_OF_COLUMNS_IN_TUPLE_DOESNT_MATCH); - - for (size_t i = 0; i < data.size(); ++i) - data[i]->insert(arr[i]); - } - - void insertDefault() - { - for (size_t i = 0; i < data.size(); ++i) - data[i]->insertDefault(); - } - - void clear() - { - data.clear(); - } - - /// манипуляция с Tuple - - void insertColumn(size_t pos, ColumnPtr & column) - { - if (pos > data.size()) - throw Exception("Position out of bound in ColumnTuple::insertColumn().", - ErrorCodes::POSITION_OUT_OF_BOUND); - - data.insert(data.begin() + pos, column); - checkSizes(); - } - - void eraseColumn(size_t pos) - { - if (data.size() == 1) - throw Exception("Empty tuple", ErrorCodes::EMPTY_TUPLE); - - if (pos >= data.size()) - throw Exception("Position out of bound in ColumnTuple::eraseColumn().", - ErrorCodes::POSITION_OUT_OF_BOUND); - - data.erase(data.begin() + pos); - } -}; - - -} - -#endif diff --git a/dbms/include/DB/Columns/ColumnVariant.h b/dbms/include/DB/Columns/ColumnVariant.h deleted file mode 100644 index 1aa283290bb..00000000000 --- a/dbms/include/DB/Columns/ColumnVariant.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef DBMS_CORE_COLUMN_VARIANT_H -#define DBMS_CORE_COLUMN_VARIANT_H - -#include -#include - - -namespace DB -{ - -/** Столбец значений произвольного типа. */ - -typedef ColumnVector ColumnVariant; - -} - -#endif