base
Краткое описание :
Компилятор прямого SQL меняет функцию SubStr на значение NULL. Необходимо логирование подобных событийОписание :
Прямой SQLЧто измененно :
DSQL
----- СУТЬ ПРЕДЛОЖЕНИЯ -----
Сделать ошибкой использование неизвестных функций и вообще идентификаторов вместо того, чтобы заменять их молча на NULL
Как измененно :
Реализовано.
base
Краткое описание :
Выводить синтаксическую ошибку,так как конкатенация с #noupcase дает неверн.рез.Описание :
MS SQLЧто измененно :
DSQL
----- СУТЬ ПРЕДЛОЖЕНИЯ -----
Выводить синтаксическую ошибку при неправильном использовании #upcase и #noupcase
Как измененно :
Реализовано
base
Краткое описание :
Runtime при вызове procedure sqlFreeStr(var str_handle: longInt)Описание :
Прямой SQLЧто измененно :
DSQL
----- ПРОЯВЛЕНИЕ ПРОБЛЕМЫ -----
Когда текст запроса помещён в длинную строку, выполнение запроса убивает
эту строку, и попытка использовать её позднее приводит к ошибкам.
queryManager.createQuery(longintHandleOfStr).getResultSet();
// теперь хендл longintHandleOfStr невалиден
Как измененно :
Исправлено
base
Краткое описание :
DSQL не выбирает пустые строкиОписание :
Прямой SQLЧто измененно :
DSQL
Oracle
----- ПРОЯВЛЕНИЕ ПРОБЛЕМЫ -----
Сравнение с пустой строкой '' в коде DSQL не работает на оракле:
она ничему не равна (потому что она есть NULL).
Ожидалось, что значение строкового поля по умолчанию будет равно ''
Как измененно :
Теперь '' транслируется в ' ' на оракле.
Это имеет побочные эффекты, например, ('' <> ' ') ложно
(на платформе MSSQL так было всегда, т.к. ведущие пробелы игнорируются при сравнении)
base
Краткое описание :
Пустое поле при вставке копии записи таблицы, если это поле ограничено правами на поля.Описание :
ТаблицЧто измененно :
Protect
----- ПРОЯВЛЕНИЕ ПРОБЛЕМЫ -----
Если есть отдельные права на поле таблицы, то при вставке это поле считается
недоступным для записи и заполняется значением по умолчанию.
Отдельного права на INSERT нет. Можно убрать отдельные права на это поле вообще,
тогда будет работать вставка. А вот комбинацию
"вставка и модификация разрешены, чтение нет" сейчас невозможно настроить...
Как измененно :
Отдельного права на INSERT для поля по-прежнему не будет,
при вставке будут смотреть право на UPDATE конкретного поля
(если нет права INSERT на таблицу, то, конечно, ничего не вставится)
base
Краткое описание :
Реализовать возможность выбора филиала для вставки записей в мультифилиальном режимеОписание :
Системные интерфейсы AtlantisЧто измененно :
Филиальность
----- СУТЬ ПРЕДЛОЖЕНИЯ -----
Реализовать возможность определения филиала в качестве текущего для всех последующих создаваемых записей в мультифилиальном режиме.
Как измененно :
Реализовано. При выборе филиалов на старте приложения или из соответствующего пункта меню предоставляется возможность установить текущий филиал для вставки.
base
Краткое описание :
DirectSQL. Не выдается ошибки в случае неправильного запросаОписание :
Прямой SQLЧто измененно :
DSQL
----- СУТЬ ПРЕДЛОЖЕНИЯ -----
диагностировать неправильное использование алиаса поля внутри контекста
(по правилам алиас можно использовать только снаружи той подвыборки, где его присвоиили)
Как измененно :
Реализовано
base
Краткое описание :
Некорректно работает метод addCriteria объектного интерфейса IQueryОписание :
Прямой SQLЧто измененно :
DSQL
----- ПРОЯВЛЕНИЕ ПРОБЛЕМЫ -----
Не работает AddCriteria объектного интерфейса IQuery
(не понимает, что поля из фильтра, это поля таблицы из основного запроса)
Как измененно :
Исправлено.
base
Краткое описание :
Неправильно отрабатывает прямой sqlОписание :
Прямой SQLЧто измененно :
DSQL
----- СУТЬ ПРЕДЛОЖЕНИЯ -----
Если во время Fetch не влез результат выборки в привязанное поле,
то для пользователя DSQL это выглядит так, будто просто конец выборки.
Надо сделать отдельный код ошибки.
Также желательно заранее проверять во время связывания, что тип результирующего поля подходящий.
Как измененно :
Реализовано.
При выполнении запроса проверяют типы и размеры связанных с колонками полей,
и пишут предупреждение в лог драйвера --
если включить параметр Database.DSQLShowOverflowWarning=WARNING
Если Database.DSQLShowOverflowWarning=ERROR,
то несоответствия будут вызывать ошибку 367
(ошибку вернет команда sqlExecute или подобная)
Всё это только когда несоответствие очень очевидное;
если тип выражения найден СУБД и не совпадает с принимающим полем --
не будет предупреждений.
Например из поля в поле LongInt->Word -- это предупреждение,
а (Word*Word)->Word -- не будет предупреждения
Потом, если во время fetch случится переполнение по факту
(оно может и не случится, если реальные данные маленькие),
то будет ошибка 366, а не 4 как раньше
base
Краткое описание :
MS SQL настаивает, что бы подзапросы были именованнымиОписание :
Прямой SQLЧто измененно :
DSQL
----- СУТЬ ПРЕДЛОЖЕНИЯ -----
Требовать при компиляции, чтобы все INLINE VIEW были именованными.
Отсутствие алиаса может и не привести к ошибке, но оно может приводить
к ошибке на только одной платформе, что затрудняет тестирование.
Как измененно :
Реализовано.
base
Краткое описание :
Сохранять форматирование текста SQL QUERY в отладочном протоколе ORA90DRV.logОписание :
Прямой SQLЧто измененно :
DSQL
----- СУТЬ ПРЕДЛОЖЕНИЯ -----
Сохранять по максиму форматирование текста SQL
QUERY в отладочном протоколе типа ORA90DRV.log
Как измененно :
Реализовано.