ALTER TABLE ADD DATASOURCE

Содержание раздела
  1. Какие датасорсы можно добавить
  2. Как выбирается датасорс-источник
  3. Как работает запрос
    1. Регистрация запроса
    2. Обработка запроса
    3. Успешный результат
    4. Неуспешный результат
  4. Синтаксис
    1. Ключевое слово IF NOT EXISTS
    2. Ключевое слово USING ('source_datasource'[, ... ])
    3. Ключевое слово LOGICAL_ONLY
  5. Варианты ответа
  6. Ограничения
  7. Примеры
    1. Добавление датасорса без ключевых слов
    2. Добавление датасорса с ключевым словом USING
    3. Добавление датасорса с ключевым словом IF NOT EXISTS
    4. Добавление датасорса с ключевым словом LOGICAL_ONLY

Поддерживается в версиях: 7.6 / 7.5 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.12 / 6.11 / 6.10.

Запрос расширяет таблицу на новый для нее датасорс:

  1. Добавляет датасорс в список датасорсов таблицы в логической схеме данных.
  2. Если в таблице есть данные, копирует их в новый датасорс из наиболее оптимального источника (датасорса-донора).

Запрос доступен для таблиц:

Какие датасорсы можно добавить

Для таблицы можно добавить датасорсы следующих типов, перечисленных в таблице ниже.

Таблица Распределение данных таблицы Какие датасорсы можно добавить
Обычная логическая таблица Нет данных Любые
Включает ADB и (или) ADP ADB, ADP
Только ADQM и (или) ADG Никакие
Партиционированная таблица
(неприменимо, так как не содержит данные)
ADP
Партиция, снапшот-таблица Нет данных или ADP ADP

Партиции, партиционированные таблицы и снапшот-таблицы могут размещаться только в ADP.

Как выбирается датасорс-источник

Наиболее оптимальный источник (датасорс-донор), откуда копируются данные в новый датасорс, выбирается из датасорсов:

Наиболее оптимальным считается включенный датасорс с данными сущности и наивысшим приоритетом согласно таблице ниже. Из нескольких одинаково подходящих выбирается случайный.

Тип добавляемого датасорса Порядок выбора типа датасорса-источника
ADP 1. ADP,
2. ADB.
Предпочтение отдается датасорсу без retention-правил для целевой таблицы
ADB 1. ADB,
2. ADP.
Предпочтение отдается датасорсу без retention-правил для целевой таблицы

Как работает запрос

Регистрация запроса

Каждое изменение таблицы записывается в журнал, который доступен с помощью запроса GET_CHANGES.

Обработка запроса

Запрос попадает в очередь операций и обрабатывается в порядке его поступления в очередь.

Успешный результат

При успешном выполнении запроса система:

Неуспешный результат

При ошибке исполнения корректного запроса система блокирует все последующие DDL-запросы в логической БД. О снятии такой блокировки см. в разделе Снятие блокировки DDL-запросов.

Синтаксис

ALTER TABLE [db_name.]table_name
ADD DATASOURCE [IF NOT EXISTS] 'destination_datasource'
[USING ('source_datasource'[, ... ])]
[LOGICAL_ONLY]

Параметры:

db_name

Имя логической базы данных, которой принадлежит расширяемая таблица. Опционально, если выбрана логическая БД, используемая по умолчанию.

table_name

Имя расширяемой таблицы.

destination_datasource

Имя датасорса, добавляемого для таблицы. Должно соответствовать конфигурации.

Ключевое слово IF NOT EXISTS

Включает проверку наличия сущности с таким именем до попытки его добавления для таблицы датасорса. Если ключевое слово указано в запросе, успешный ответ возвращается при наличии или успешном добавлении датасорса, иначе — только при успешном добавлении датасорса.

Ключевое слово USING ('source_datasource'[, ... ])

Задает имена датасорсов-источников (доноров), из которых копируются данные для наполнения таблицы в добавляемом датасорсе. Имена должны соответствовать конфигурации.

Если ключевое слово не указано, система выбирает наиболее оптимальный датасорс в качестве источника.

Ключевое слово LOGICAL_ONLY

Позволяет добавить датасорс только на логическом уровне (в логическую схему данных), не обновляя физическую схему в хранилище данных.

Если ключевое слово не указано, датасорс добавляется на логическом и физическом уровнях.

Варианты ответа

В ответе возвращается:

  • пустой объект ResultSet при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

Ограничения

  • Выполнение запроса недоступно в следующих случаях:
  • Параллельное выполнение ALTER TABLE ADD DATASOURCE и ERASE DELTA может привести к неконсистентности данных.
  • Можно добавить датасорсы:
    • любого типа — для обычной логической таблицы без данных;
    • ADB, ADP — для обычной логической таблицы с данными в другом датасорсе ADB/ADP;
    • ADP — для партиционированной таблицы, партиции и снапшот-таблицы.
  • Информационная схема обновляется асинхронно, поэтому датасорс таблицы может не сразу добавиться в информационную схему.

Примеры

Добавление датасорса без ключевых слов

Добавление датасорса для логической таблицы указанной логической БД:

ALTER TABLE marketing.clients
ADD DATASOURCE 'adp2'

Добавление датасорса для снапшот-таблицы логической БД, выбранной по умолчанию:

USE marketing;

ALTER TABLE sales_snapshot
ADD DATASOURCE 'adp3';

Добавление датасорса с ключевым словом USING

ALTER TABLE marketing.clients
ADD DATASOURCE 'adp2'
USING ('adp')

Добавление датасорса с ключевым словом IF NOT EXISTS

ALTER TABLE marketing.clients
ADD DATASOURCE IF NOT EXISTS 'adp2'

Добавление датасорса с ключевым словом LOGICAL_ONLY

ALTER TABLE marketing_new.sales
ADD DATASOURCE 'adb2'
LOGICAL_ONLY