Секрет — в миллионах тестов. Их полное выполнение может занимать от 20 до 30 часов (при этом выполняются они распределенно на тестовом кластере из 100-200 серверов).
Добавлю сюда ссылку на эту статью с хабра — Жизнь С++
Чтобы потом её снова найти и 🙂
UPD
Я мечтал, чтобы компьютеры стали такими же простыми в использовании, как телефоны. Недавно моя мечта сбылась: я не смог разобраться с моим новым телефоном. (Бьёрн Страуструп)
В ADO.NET есть стандартная схема метаданных DataSourceInformation, в которой определена колонка ParameterMarkerFormat:
A format string that represents how to format a parameter.
If named parameters are supported by the data source, the first placeholder in this string should be where the parameter name should be formatted.
(1) For example, if the data source expects parameters to be named and prefixed with an ‘:’ this would be «:{0}». When formatting this with a parameter name of «p1» the resulting string is «:p1».
(2) If the data source expects parameters to be prefixed with the ‘@’, but the names already include them, this would be ‘{0}’, and the result of formatting a parameter named «@p1» would simply be «@p1».
Провайдер данных MSSQL попадает под вторую категорию — в имена параметров включается префикс. Ну, наверное, вы такое уже видели, что в ADODB, что в ADO.NET. Под него косит халявный ADO.NET провайдер для Firebird. То есть, ParameterMarkerFormat у MSSQL провайдера содержит «{0}».
IBProvider может работать и так и сяк, в зависимости от настройки строки подключения named_param_rules.
В первом случае (режим по-умолчанию) named_param_rules=0. Во втором случае: named_param_rules=1.
Теперь перейдем к костылям, которые я обещал показать.
… проходит мимо пассажира, стоящего на перроне за 5 секунд. Мимо пассажира встречной электрички за 15 секунд. За сколько секунд он пройдет мимо пассажира встречной электрички, если скорость обеих электричек одинаковая.
Объяснение решения заняло обратную сторону конверта, который валялся на столе.
Потом, задумался. Если верить Клэнси, Тому Клэнси, есть люди, которые на обратной стороне конверта способны спроектировать атомный реактор…
Once again looking forward to a great relationship — you guys are awesome and I’ve been using your IBProvider for over 10 years now. When every other single Interbase/Firebird ODBC driver failed, IBProvider was the perfect solution for us. We have used IBprovider to successfully integrate Firebird with every type of application, including order and consignment management of over 1 million connotes nationally per year, and it never skips a beat. Well done Dmitry – you’ve got an awesome, mature product that makes working with Firebird a breeze!