Archive by Author
Пешите тесты. Соорудил замечательный тест (FB3): 1. Добавляем запись с блобом 2. Выбираем эту запись select-ом 3. Изменяем BLOB этой записи update-ом 4. Пытаемся прочитать BLOB, полученный в пункте (2) 5. Получаем %subj% — «BLOB not found» Ну да, понятно — сервер агрессивно удаляет блобы. Приятно, что я сообразил что к чему. Практически сразу. Через […]
Накатал тест, проверяющий поведение результирующего (обновляемого) множества IBProvider-a в случае сбоя операции, манипулирующей полугигабайтным блобом. 10 попыток. Смутно представляю что там внутри работает, но график получился забавный.
В новой сборке доступна новая фича в виде поддержки OUT-параметров в запросах для добавления новых записей «обновляемых» множеств. Это значит что теперь можно использовать «INSERT … RETURNING … INTO» для перечитывания значений колонок новых записей множества. Пользуясь случаем, хочу передать привет самому себе. Пять лет прошло, Карл. Пять лет. Фича пока доступна только для запросов, […]
В последних сборках Firebird 3.0.4 (у меня сейчас стоит 3.0.4.32952) разрешили использование символа ‘\r’ в качестве переноса строки. Что привело к рассогласованию парсера запросов Firebird и IBProvider. В целом, проблема ничтожная. Но она напомнила о старой мысли ужесточить ограничение на максимально поддерживаемые версии серверов (FB/IB). Во избежание. С одной стороны идея плохая. Потому что возникают […]
IBProvider v3.50 вышел на финишную прямую. По крайней мере, мне так кажется. В новой тестовой сборке (28330), доступной для скачивания с сайта, обновлена обработка ошибок. Первое. Наконец-то, реализована нормальная поддержка предупреждений. Предыдущий код «забывал» их в случае возникновения критической ошибки. Второе. В операциях с массовой генерацией предупреждений и ошибок, при превышении жестко заданного лимита на […]
Последнюю пару месяцев я настолько активно мучал «Araxis Merge», что даже засылал его разработчикам «feature requests». В последней выпуске (2018.4988) одна их хотелок была удовлетворена — появилась возможность открывать окно «Windows Expolorer» с расположением сравниваемого файла/каталога. Однако пост не про это. А про то, как запускать этого сравнивателя из «Total Commander» для объектов, выбранных в […]
На сайт IBProvider загружен новый триал OLE DB провайдера — v3.50.0.28072, в котором исправлена структурная ошибка внутреннего представления данных из за которой были специфические затруднения с модификацией базы данных. Суть проблемы заключалась в том, что провайдер не умел корректно обрабатывать DEFAULT-значения (они обрабатывались как NULL-значения). Для этого нужно было вместо пары {value, IsNull} работать с […]
В задумчивости тыкая в интерфейсе «OLE DB Rowset Viewer» (это стандартная штука для проверки провайдеров «руками и глазами»), запросил неправильный интерфейс результата и спровоцировал ассерт внутри ICommand::Execute. Релизный бинарник, как положено, возвращает E_NOINTERFACE. Изучение этой проблемы показало, что ассерт был по делу — FAILED-ошибки (типа E_NOINTERFACE) должны обрабатываться другой веткой кода, в которой (до кучи) […]
Обнаружил интересное обсуждение — «Не используйте дети malloc в Windows 10». Вкратце — похоже в Win10 поломали кучи и теперь они глючат в многопоточных приложениях. Попробовал — действительно падает. При Обаме Балмере такого не было!
Загружены бинарные файлы второго обновления IBProvider в текущем году (во завернул) — v3.49.0.27783. Изменения. 1. Запрещено использование DBBINDING с типами DBTYPE_EMPTY, DBTYPE_NULL. 2. Задействованы коды ошибок DB_E_UNSUPPORTEDCONVERSION, DB_E_BADSTATUSVALUE, DB_E_BADTYPE. 3. Уборка мусора в коде. Проводил в последний путь корзину файл с утилитами, созданный в 2000 году. Даже немного взгрустнулось. 4. Продолжил избавляться от использования классов, […]