Новый триал. Сборка 13911.
Привет всем.
На сайт провайдера выгружен новый триал. Изменений внесено достаточно много. Ключевыми являются:
1. Новый двухфазный алгоритм установки значений OLEDB свойств.
2. Новая реализация Forward-Only Read-Only наборов рядов.
Новый двухфазный алгоритм установки значений OLEDB свойств.
Предыдущая реализация провайдера устанавливала значения свойств за один проход. То есть, провайдер сразу последовательно устанавливал переданные значения и, если это было необходимо, изменял значения связанных свойств. Выявлялись ошибки только с некорректными значениями. Разрешалось указывать одно и тоже свойство несколько раз — устанавливалось последнее допустимое значение.
Новая реализация работает в два этапа:
1. Сначала просматриваются все переданные свойства. Выявляются некорректные значения (DBPROPSTATUS_BADVALUE). Повторные установки свойства обрабатываются провайдером как ошибки (DBPROPSTATUS_CONFLICTING).
2. Потом провайдер начинает устанавливать переданные значения. Если обнаруживается, что новое значение конфликтует с новыми значениями других свойств, то оно (новое значение) установлено не будет и для него вернется статус DBPROPSTATUS_CONFLICTING. Например, нельзя одновременно устанавливать [IRowsetLocate]=true и [Use Bookmarks]=false. Потому что интерфейсу IRowsetLocate нужны собственные закладки.
Новая реализация Forward-Only Read-Only наборов рядов.
Новая реализация решает две задачи:
1. Более эффективное использование оперативной памяти в случаях «издевательской» эксплуатации набора в виде блокировки и освобождения большого количества рядов. Через ADODB это добивается через установку очень большого значения в Recordset::CacheSize.
2. Предоставляет поддержку для асинхронной загрузки результирующего множества, которая будет реализована в следующих выпусках провайдера.
С технической точки зрения, оба предыдущих пункта эксплуатируют новую структуру файлового хранилища Forward-Only Read-Only набора рядов, которая теперь позволяет строить списки. В первом случае создается список освобожденных рядов (слотов в хранилище), которые потом будут повторно использованы под следующие ряды. А во втором случае — формируется список загруженных, но пока еще не возвращенных, рядов результирующего множества.
Для наборов рядов с произвольным доступом и поддержкой изменения значений колонок, используются другие хранилища со своей собственной, специализированной структурой.
Вообщем, это достаточно важное изменение. Которое нужно для движения вперед.
За кадром.
Кроме выше обозначенных вещей, в провайдер внесено множество других страшных доработок, изменений и исправлений. Для которых потом было создано несколько десятков новых тестов в нашей автоматизированной тестовой системе. Тестовая система тоже была доработана.
Прогоны осуществлялись как релизных сборок провайдера, так и отладочных — здесь палку перегнуть невозможно.