format_schema
Этот параметр полезен при использовании форматов, требующих определения схемы, например Cap’n Proto или Protobuf. Его значение зависит от формата.format_schema_message_name
Определяет имя требуемого сообщения в схеме, заданной вformat_schema.
Для сохранения совместимости с устаревшим форматом format_schema (file_name:message_name):
- Если
format_schema_message_nameне указано, имя сообщения определяется по частиmessage_nameв устаревшем значенииformat_schema. - Если
format_schema_message_nameуказано при использовании устаревшего формата, будет возвращена ошибка.
format_schema_source
Определяет источникformat_schema.
Возможные значения:
- ‘file’ (по умолчанию):
format_schema— это имя файла схемы, расположенного в каталогеformat_schemas. - ‘string’:
format_schema— это непосредственное содержимое схемы. - ‘query’:
format_schema— это запрос для получения схемы. Еслиformat_schema_sourceимеет значение ‘query’, действуют следующие условия: - Запрос должен возвращать ровно одно значение: одну строку с одним строковым столбцом.
- Результат запроса интерпретируется как содержимое схемы.
- Этот результат локально кэшируется в каталоге
format_schemas. - Локальный кэш можно очистить с помощью команды:
SYSTEM DROP FORMAT SCHEMA CACHE FOR Files. - После кэширования одинаковые запросы от одного и того же пользователя не выполняются повторно для получения схемы, пока кэш не будет явно очищен
- Помимо локальных файлов кэша, сообщения Protobuf также кэшируются в памяти. Даже после очистки локальных файлов кэша необходимо очистить кэш в памяти с помощью
SYSTEM DROP FORMAT SCHEMA CACHE [FOR Protobuf], чтобы полностью обновить схему. - Выполните запрос
SYSTEM DROP FORMAT SCHEMA CACHE, чтобы сразу очистить кэш и файлов кэша, и схем сообщений Protobuf. - Запрос выполняется от имени пользователя, который его запускает, поэтому к нему применяются права доступа этого пользователя, а его кэшированный результат повторно используется только для того же пользователя. Его нельзя выполнять в контекстах, где нет пользователя: в фоновой задаче, например consumer потокового движка, или когда данные
INSERTразбираются на стороне клиента. В таких случаях используйтеformat_schema_sourceсо значениемfileилиstring.