Type - Тип результата sql-выражения
=======================================================

.. currentmodule:: axioma.core.sql

Элементарные типы

.. class:: PlainType

	.. csv-table:: Базовые типы результатов sql-выражения :data:`PlainType`:
		:header: "Тип", "Значение", "Описание"

		``Ambiguous``, 0, "Неизвестный тип"
		``NullType``, 1, "Тип с отсутствующим значением"
		``NotFound``, 2, "Отсутствующий или ошибочный тип выражения"
		``Binary``, 3, "Двоичный тип выражения фиксированной длины"
		``BinaryVarying``, 4, "Двоичный тип выражения ограниченной длины"
		``BinaryLargeObject``, 5, "Двоичный тип выражения неограниченной длины"
		``Character``, 6, "Символьный тип выражения фиксированной длины"
		``CharacterVarying``, 7, "Символьный тип выражения ограниченной длины"
		``CharacterLargeObject``, 8, "Символьный тип выражения неограниченной длины"
		``Boolean``, 9, "Логический тип выражения"
		``SmallInteger``, 10, "Целое укороченное число"
		``Integer``, 11, "Целое число"
		``BigInteger``, 12, "Целое число повышенной разрядности"
		``Decimal``, 13, "Десятичное число повышенной точности и разрядности"
		``Numeric``, 14, "Произвольный числовоцй тип"
		``Float``, 15, "Вещественное число пониженной точности"
		``Real``, 16, "Вещественное число"
		``Double``, 17, "Вещественное число повышенной точности"
		``Time``, 18, "Время суток"
		``Date``, 19, "Дата без указания времени"
		``Timestamp``, 20, "Дата с указанием времени"
		``Interval``, 21, "Разница между двумя датами со временем"
		``Tuple``, 22, "Набор разнотипных объектов"
		``Array``, 23, "Набор однотипных объектов"

.. class:: Type()

	Базовый тип выражения.

	От него наследуются:

	* :class:`~axioma.core.sql.TupleType`
	* :class:`~axioma.core.sql.LengthType`
	* :class:`~axioma.core.sql.PrecisionScaleType`
	* :class:`~axioma.core.sql.ArrayType`

Методы:

	.. method:: Type(plain)

		Конструктор класса

		:param plain: Элементарный тип выражения
		:type plain: :class:`~axioma.core.sql.PlainType`

	.. method:: plainType()

		Получить элементарный тип выражения

		:rtype: :class:`~axioma.core.sql.PlainType`

	.. method:: arity()

		Размерность типа

		:return: Арность
		:rtype: :class:`int64`


.. class:: TupleType()

	Набор типов.

	Унаследован от:

	* :class:`~axioma.core.sql.Type`

Методы:

	.. method:: TupleType(types)

		Конструктор класса

		:param types: Набор типов, из которых формируется тип
		:type types: :class:`list` [:class:`~axioma.core.sql.Type`]

	.. method:: subTypes()

		Получить список базовых типов, из которых сформирована структура

		:return: Список базовых типов
		:rtype: :class:`list` [:class:`~axioma.core.sql.Type`]

.. class:: LengthType()

	Тип с указанием длины.

	Унаследован от:

	* :class:`~axioma.core.sql.Type`

Методы:

	.. method:: LengthType(plainType, length)

		Конструктор класса

		:param plainType: Базовый тип
		:type plainType: :class:`~axioma.core.sql.Type`
		:param length: Длина
		:type length: :class:`int`

	.. method:: length()

		Длина типа (предельная или фиксированная)

		:rtype: :class:`int`

.. class:: PrecisionScaleType()

	Тип с указанием длины и точности.

	Унаследован от:

	* :class:`~axioma.core.sql.Type`

Методы:

	.. method:: PrecisionScaleType()

		Конструктор класса, используется десятичный тип с ограничениями по умолчанию

	.. method:: PrecisionScaleType(plainType, length, precision)

		Конструктор класса

		:param plainType: Базовый тип
		:type plainType: :class:`~axioma.core.sql.Type`
		:param length: Длина
		:type length: :class:`int`
		:param precision: Число символов после запятой
		:type precision: :class:`int`

	.. method:: length()

		Длина типа

		:return: Предельная длина типа
		:rtype: :class:`int`

	.. method:: precision()

		Точность типа

		:return: Предельно допустимое число цифр после запятой
		:rtype: :class:`int`

.. class:: ArrayType()

	Массив, состоящий из однотипных элементов.

	Унаследован от:

	* :class:`~axioma.core.sql.Type`

Методы:

	.. method:: ArrayType(elementType)

		Конструктор класса

		:param elementType: Тип элементов массива
		:type elementType: :class:`~axioma.core.sql.Type`

	.. method:: elementType()

		Базовый тип массива

		:return: Тип элементов массива
		:rtype: :class:`~axioma.core.sql.Type`
