Дата публикации: 17.08.2023

IBProvider v5.31. Поддержка TIMESTAMP WITH TIME ZONE [FB4] и другие улучшения

Мы завершили третий этап процесса реализации поддержки FB4 в нашем OLE DB провайдере.

В этом выпуске была добавлена поддержка TIMESTAMP WITH TIME ZONE, доработана поддержка INT128 и улучшена поддержка NUMERIC типов данных.

Пожалуйста, внимательно просмотрите внесенные изменения.

В конце новости мы приготовили для вас специальное предложение.

Поддержка TIMESTAMP WITH TIME ZONE

IBProvider v5.31 поддерживает чтение и запись данных с типом TIMESTAMP WITH TIME ZONE как для обычных колонок/параметров, так и для колонок/параметров с массивами.

По умолчанию данные с типом TIMESTAMP WITH TIME ZONE будут доступны в виде текста (WSTR). Это позволяет сохранять сведения о регионах (например — Europe/Moscow).

Так же вы можете получать эти данные в структурированном виде. В этом случае будет использоваться структура DBTIMESTAMPOFFSET, которая может хранить сведения о часовом поясе только в виде смещения.

Для выбора способа представления TIMESTAMP WITH TIME ZONE добавлено свойство инициализации dbtimestamp_with_tz_rules.

Если вы используете IBProvider с MSSQL или с LCPI ADO.NET провайдером имеет смысл указать в строке подключения «dbtimestamp_with_tz_rules=1».

Для выбора способа обработки регионов часовых поясов добавлено свойство инициализации timezones_source.

По умолчанию, для обработки часовых поясов провайдер будет использовать возможности FB4 и не будет требовать какой-либо дополнительной настройки или внешних библиотек.

Так же вы можете выполнять обработку с использованием ICU. Для этого нужно указать в строке поключения «timezones_source=icu» и расположение библиотеки ICUIN (смотрите свойства icuin_library/icuin_library_64). Библиотека ICUIN использует библиотеку ICUUC (смотрите свойства icu_library/icu_library_64).

Обратите внимание, что IBProvider поддерживает DBTIMESTAMPOFFSET для всех версий и типов серверов (IB/FB), а не только для FB4. Если вы работает с IB или c FB1-FB3 и вам нужна максимальная поддержка этого типа данных – укажите в строке подключения путь к библиотекам ICUIN, ICUUC.

Для корректной обработки часовых поясов через ICU нужна свежая база данных часовых поясов. Она должна находиться в каталоге tzdata на том же уровне что и библиотека ICUUC (не ICUIN) — последнее связано с особенностями инициализации ICU. Вы можете взять библиотеки ICU и tzdata из каталога с установкой FB4.

Коррекция поддержки INT128

Для отображения INT128 на NUMERIC теперь нужно указывать в строке подключения «int128_rules=0». Обратите внимание, что точность колонки будет 38, а не 39. Смотрите обновленное описание свойства int128_rules.

Если вы работаете с MSSQL/ADODB/ADO.NET и вам необходимо получать все допустимые значения INT128, укажите в строке подключения «int128_rules=2».

Получение NUMERIC в виде текста

У свойств инициализации numeric_i2_rules, numeric_i4_rules, numeric_i8_rules, numeric_i16_rules появился новый флаг (4), который позволяет получать NUMERIC/DECIMAL данные в виде текста.

Если вы работает с MSSQL/ADODB/ADO.NET и вам нужно обрабатывать весь допустимый диапазон значений NUMERIC на базе INT128, укажите в строке подключения «numeric_i16_rules=4».

Посмотрите так же пост «Getting NUMERIC and DECIMAL as text» в нашем блоге.

Новые свойства инициализации подключения

Текущие ограничения

В настоящий момент вы не можете читать и сохранять данные с типом TIME WITH TIME ZONE. На уровне метаданных этот тип поддерживается.

Другие изменения

1. Откорректированы размеры колонок с текстовым (WSTR) представлением типов данных TIMESTAMP/DATE/TIME:

  • TIMESTAMP — 24 символа
  • DATE — 10 символов
  • TIME — 13 символов

Смотрите свойства инициализации dbtimestamp_rules, dbdate_rules, dbtime_rules.

2. Прекращена поддержка Windows XP. Провайдер начал использовать системную функцию CompareStringEx, которая не поддерживается XP.

Тестирование

Для нагрузочного тестирования использовался Firebird v4.0.3.2976 (Windows, x64, SS).

Так же мы протестировали работу с FB4 через связанный сервер «MSSQL 2012» и «LCPI ADO.NET provider for OLE DB».

Дополнительно

Мы обновили наши компоненты для работы с FB/IB из .NET приложений:

Специальное предложение

Приобретите любую лицензию с годовым обслуживанием до конца лета 2023 года и получите 4 месяца дополнительного обслуживания.

Если у вас уже есть купленная лицензия, то вы можете воспользоваться ссылкой для обновления в личном кабинете и получить дополнительную 20% скидку. Или оплатите счет как есть и мы удвоим дополнительный период до 8 месяцев. Сейчас самое время обновить ваш IBProvider 🙂


Дата публикации: 17.08.2023. Права на материал принадлежат: IBProvider. При перепечатке ссылка на сайт https://www.ibprovider.com/rus обязательна.