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 приложений:
- LCPI ADO.NET Provider for OLE DB – v1.27.1
- LCPI EFCore Provider for OLE DB – v6.0.21.200
Специальное предложение
Приобретите любую лицензию с годовым обслуживанием до конца лета 2023 года и получите 4 месяца дополнительного обслуживания.
Если у вас уже есть купленная лицензия, то вы можете воспользоваться ссылкой для обновления в личном кабинете и получить дополнительную 20% скидку. Или оплатите счет как есть и мы удвоим дополнительный период до 8 месяцев. Сейчас самое время обновить ваш IBProvider 🙂