Выложены обновления IBProvider v5.5.1 и «LCPI OLE DB Services» v1.9.
Предмет гордости — «LCPI OLE DB Services» собирается с нулевым количеством предупреждений 4-го уровня. Четвертого, Карл!
Аналогичный подвиг в отношении IBProvider не осилил. Нужно будет думать. Зато изничтожил все предупреждения третьего уровня.
Из «интересностей» — устранение предупреждений в коде вида:
char* b;
char* e;
//....
std::fill(b,e,0); //<--- приведение int (0) к char
Заменил 0 на structure::zero — это «волшебный» объект, который возвращает ноль нужного типа. Типа std::nullptr.
std::fill(b,e,structure::zero);
Схожие проблемы есть с -1. Для этого числа в библиотеке есть structure::negative_one.
Еще подчистил иерархию классов исключений в библиотеке — обнаружились какие-то непонятные задумки и «оптимизации» молодости.
В целом, сборка с 4-ым уровнем предупреждений — это очень неплохой способ оценки кода. Рекомендую.
Поскольку сюда заглядывают боги, добавлю, что выпуск был протестирован с Firebird 3.0.5.33139, в который попал отрефакторенный SHA2.
Некоторые виды проверок IBProvider осуществляются на виртуальной машине с древней Windows XP SP2.
Ставлю я туда сборки vc12xp (VS2013, XP Mode).
А сегодня что-то в голове щелкнуло и решил попробовать туда поставить сборки vc16 (VS2019).
Работают!
Я так удивился, что тут же попробовал туда поставить сборки vc15 (VS2017) — не работают. Вылазит ошибка, связанная с MSVCP140.dll.
—
Я прямо загорелся идеей изничтожить весь этот зоопарк студий (VS2008-VS2017) на компьютере и оставить только 2019-ю 🙂
—
UPD1. Если поставить на XPSP2 рантайм от VS2019 (14.20.27508.00001), то сборки провайдера vc15 (VS2017) тоже будут работать. Не знаю кому как, а мне прямо захорошело 🙂
Захотел прикрутить к источнику данных IBProvider нестандартный интерфейс с методом GetPropertyInfo — идентичный IDBProperties::GetPropertyInfo, но возвращающий в DBPROPINFO::pwszDescription мультистроку с основным именем свойства и его псевдонимами.
Ну чтобы клиент мог работать с псевдонимами наравне с основным именем.
И получил облом.
Если у источника данных запрашивать нестандартный интерфейс, то стандартный пул подключений OLE DB умывает руки и этот источник данных не кэшируется.
Блин, реально печалька.
В новом триале IBProvider (сборка 31426) добавлена поддержка новых методов аутентификации Firebird 3.0.4: SRP224, SRP256, SRP384, SRP512.
Понятное дело, речь идет про собственного клиента для Firebird.
SRP256 поддерживается по-умолчанию и определен как первичный способ аутентификации.
Остальные методы можно задействовать через свойство инициализации remote:auth .
В Entity Framework Core опять перепахали весь ландшафт. Состыковать провайдер с изменениями, в смысле восстановить компилируемость, было относительно не сложно. А вот более 3 тысяч сбойных тестов (~90%) конкретно удручают.
Хотя надо во всем искать положительные стороны.
Например, благодаря этому «небольшому» исследовательскому проекту появился IBProvider v5 и устранены мелкие проблемы в .Net Provider.
Даже как-то забавно рассматривать возню с EFCore как плату за улучшения в основных проектах.
Ну очень похоже на:
VIDEO
Где-то на краю сознания мне давно хотелось попробовать подключиться к базе данных Firebird через MSSQL Linked Server и встроенный Firebird.
Ну хотелось и хотелось (мало чего в голову лезет).
А сегодня это хотение озвучил один наш клиент. Пришлось пробовать. С Firebird 2.5.8.
Не получилось.
В логе Firebird вылезли такие ошибки:
HOME4 Thu May 09 20:23:52 2019
OpenProcessToken failed. Error code: 5
HOME4 Thu May 09 20:23:52 2019
Operating system call OpenProcess failed. Error code 5
Такие дела.
UPD [2019-05-16]. Кстати, клиент написал, что осилил. Одним из затыков была необходимость копирования модулей ICU в system32. Сам я так и не добил этот вопрос 🙂
Начало недели весьма «удачное».
Утром обновил исходники EFCore и обнаружил что они опять сломали мой код.
А я планировал его сегодня немного сдвинуть вперед…
По этому поводу вспомнилась классика:
VIDEO
Вчера, в международный день дурака, я нажал «проверить обновления» и моя Win10 1709 (пропатченная в марте 2019 года) обновилась до сборки 1809 (2019-3).
Потом на неё накатилось еще одно обновление, потребовавшее перезагрузку компьютера.
За ночь пробежали нагрузочные тесты и теперь можно «оценить» последствия обновления.
Было:
[22.03.2019 21:33:01] [info] Provider DLL :lcpi.ibprovider_v5_vc15_w64_prof_i.dll
[22.03.2019 21:33:01] [info] Provider Version:5.2.0.31153
[22.03.2019 21:33:01] [info] Server Name :Firebird
[22.03.2019 21:33:01] [info] Server Version :3.0.5.33112
[22.03.2019 21:33:01] [info] Client Name :LCPI.IBProvider.RemoteFB
[22.03.2019 21:33:01] [info] Client Version :5.2.0.31153
[22.03.2019 21:33:01] [info] Database ODS :12.0
[22.03.2019 21:33:01] [info] Database Dialect:3
....
[23.03.2019 13:45:28] [summary] ------------------------------------------- [SUMMARY INFORMATION]
[23.03.2019 13:45:28] [summary] [TESTS]
[23.03.2019 13:45:28] [summary] EXECUTED : 695367
[23.03.2019 13:45:28] [summary] SUCCEEDED : 695341
[23.03.2019 13:45:28] [summary] FAILED : 0
[23.03.2019 13:45:28] [summary] WITH WARNINGS : 26 [ 45 warning(s) ]
[23.03.2019 13:45:28] [summary]
[23.03.2019 13:45:28] [summary] - - - - - - - - - - - - - - - - - - - - - -
[23.03.2019 13:45:28] [summary] [TEST TIMES]
[23.03.2019 13:45:28] [summary] REAL : 2316625873465 [2 day(s)16:21:02.5873465]
[23.03.2019 13:45:28] [summary] USER : 655046718750 [18:11:44.6718750]
[23.03.2019 13:45:28] [summary] KERNEL : 221669375000 [06:09:26.9375000]
[23.03.2019 13:45:28] [summary] TOTAL : 876716093750 [1 day(s)00:21:11.6093750]
[23.03.2019 13:45:28]
[23.03.2019 13:45:28] [TEST HEAP] Test heap is empty
[23.03.2019 13:45:28] [TEST HEAP] Validate ... OK
[23.03.2019 13:45:28] [TEST HEAP] Destroy ... OK
[23.03.2019 13:45:28]
[23.03.2019 13:45:28] [summary] ------------------------------------------- [PROCESS INFORMATION]
[23.03.2019 13:45:28] [summary] [VIRTUAL MEMORY]
[23.03.2019 13:45:28] [summary]
[23.03.2019 13:45:28] [summary] PRIVATE BYTES : 13236 KB [12MB 948KB]
[23.03.2019 13:45:28] [summary] PEAK PRIVATE BYTES : 12651096 KB [12GB 66MB 600KB]
[23.03.2019 13:45:28] [summary] VIRTUAL SIZE : 155424 KB [151MB 800KB]
[23.03.2019 13:45:28] [summary] PAGE FAULT COUNT : 124775849
[23.03.2019 13:45:28] [summary]
[23.03.2019 13:45:28] [summary] - - - - - - - - - - - - - - - - - - - - - -
[23.03.2019 13:45:28] [summary] [HANDLES]
[23.03.2019 13:45:28] [summary]
[23.03.2019 13:45:28] [summary] HANDLES : 158
[23.03.2019 13:45:28] [summary]
[23.03.2019 13:45:28] [summary] - - - - - - - - - - - - - - - - - - - - - -
[23.03.2019 13:45:28] [summary] TOTAL ERRORS : 0
[23.03.2019 13:45:28] [summary] TOTAL WARNINGS: 45
[23.03.2019 13:45:28] [summary] FULL PASSES : 1
[23.03.2019 13:45:28] [summary] GEN TESTS : 8293105
Стало:
[01.04.2019 16:32:12] [info] Provider DLL :lcpi.ibprovider_v5_vc15_w64_prof_i.dll
[01.04.2019 16:32:12] [info] Provider Version:5.3.0.31155
[01.04.2019 16:32:12] [info] Server Name :Firebird
[01.04.2019 16:32:12] [info] Server Version :3.0.5.33112
[01.04.2019 16:32:12] [info] Client Name :LCPI.IBProvider.RemoteFB
[01.04.2019 16:32:12] [info] Client Version :5.3.0.31155
[01.04.2019 16:32:12] [info] Database ODS :12.0
[01.04.2019 16:32:12] [info] Database Dialect:3
....
[02.04.2019 11:03:51] [summary] ------------------------------------------- [SUMMARY INFORMATION]
[02.04.2019 11:03:51] [summary] [TESTS]
[02.04.2019 11:03:51] [summary] EXECUTED : 695367
[02.04.2019 11:03:51] [summary] SUCCEEDED : 695351
[02.04.2019 11:03:51] [summary] FAILED : 0
[02.04.2019 11:03:51] [summary] WITH WARNINGS : 16 [ 32 warning(s) ]
[02.04.2019 11:03:51] [summary]
[02.04.2019 11:03:51] [summary] - - - - - - - - - - - - - - - - - - - - - -
[02.04.2019 11:03:51] [summary] [TEST TIMES]
[02.04.2019 11:03:51] [summary] REAL : 2645724911777 [3 day(s)01:29:32.4911777]
[02.04.2019 11:03:51] [summary] USER : 665079062500 [18:28:27.9062500]
[02.04.2019 11:03:51] [summary] KERNEL : 286460156250 [07:57:26.0156250]
[02.04.2019 11:03:51] [summary] TOTAL : 951539218750 [1 day(s)02:25:53.9218750]
[02.04.2019 11:03:51]
[02.04.2019 11:03:51] [TEST HEAP] Test heap is empty
[02.04.2019 11:03:51] [TEST HEAP] Validate ... OK
[02.04.2019 11:03:51] [TEST HEAP] Destroy ... OK
[02.04.2019 11:03:51]
[02.04.2019 11:03:51] [summary] ------------------------------------------- [PROCESS INFORMATION]
[02.04.2019 11:03:51] [summary] [VIRTUAL MEMORY]
[02.04.2019 11:03:51] [summary]
[02.04.2019 11:03:51] [summary] PRIVATE BYTES : 12816 KB [12MB 528KB]
[02.04.2019 11:03:51] [summary] PEAK PRIVATE BYTES : 12662564 KB [12GB 77MB 804KB]
[02.04.2019 11:03:51] [summary] VIRTUAL SIZE : 4343900 KB [4GB 146MB 92KB]
[02.04.2019 11:03:51] [summary] PAGE FAULT COUNT : 121652151
[02.04.2019 11:03:51] [summary]
[02.04.2019 11:03:51] [summary] - - - - - - - - - - - - - - - - - - - - - -
[02.04.2019 11:03:51] [summary] [HANDLES]
[02.04.2019 11:03:51] [summary]
[02.04.2019 11:03:51] [summary] HANDLES : 175
[02.04.2019 11:03:51] [summary]
[02.04.2019 11:03:51] [summary] - - - - - - - - - - - - - - - - - - - - - -
[02.04.2019 11:03:51] [summary] TOTAL ERRORS : 0
[02.04.2019 11:03:51] [summary] TOTAL WARNINGS: 32
[02.04.2019 11:03:51] [summary] FULL PASSES : 1
[02.04.2019 11:03:51] [summary] GEN TESTS : 8293105
KERNEL-time почти на два часа увеличился. С «06:09:26» до «07:57:26».
Вот еще данные для 1709:
[18.03.2019 13:43:29] [summary] ------------------------------------------- [SUMMARY INFORMATION]
[18.03.2019 13:43:29] [summary] [TESTS]
[18.03.2019 13:43:29] [summary] EXECUTED : 695367
[18.03.2019 13:43:29] [summary] SUCCEEDED : 695349
[18.03.2019 13:43:29] [summary] FAILED : 0
[18.03.2019 13:43:29] [summary] WITH WARNINGS : 18 [ 38 warning(s) ]
[18.03.2019 13:43:29] [summary]
[18.03.2019 13:43:29] [summary] - - - - - - - - - - - - - - - - - - - - - -
[18.03.2019 13:43:29] [summary] [TEST TIMES]
[18.03.2019 13:43:29] [summary] REAL : 2649075169436 [3 day(s)01:35:07.5169436]
[18.03.2019 13:43:29] [summary] USER : 691355468750 [19:12:15.5468750]
[18.03.2019 13:43:29] [summary] KERNEL : 238955312500 [06:38:15.5312500]
[18.03.2019 13:43:29] [summary] TOTAL : 930310781250 [1 day(s)01:50:31.0781250]
[08.03.2019 18:27:48] [summary] ------------------------------------------- [SUMMARY INFORMATION]
[08.03.2019 18:27:48] [summary] [TESTS]
[08.03.2019 18:27:48] [summary] EXECUTED : 697418
[08.03.2019 18:27:48] [summary] SUCCEEDED : 697399
[08.03.2019 18:27:48] [summary] FAILED : 0
[08.03.2019 18:27:48] [summary] WITH WARNINGS : 19 [ 38 warning(s) ]
[08.03.2019 18:27:48] [summary]
[08.03.2019 18:27:48] [summary] - - - - - - - - - - - - - - - - - - - - - -
[08.03.2019 18:27:48] [summary] [TEST TIMES]
[08.03.2019 18:27:48] [summary] REAL : 2709158575325 [3 day(s)03:15:15.8575325]
[08.03.2019 18:27:48] [summary] USER : 715683906250 [19:52:48.3906250]
[08.03.2019 18:27:48] [summary] KERNEL : 245707812500 [06:49:30.7812500]
[08.03.2019 18:27:48] [summary] TOTAL : 961391718750 [1 day(s)02:42:19.1718750]
KERNEL-time меньше 7 часов.
А у сборки 1809 — почти 8 часов.
Сдается мне, система таки стала немного медленней работать.
Я потом (если будет не лень) еще закину сюда свежие данные о производительности 1809.