Assertion failure при Execute Procedure в MySQL

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Ответить
LabutinPA
Сообщения: 3
Зарегистрирован: Чт 03 сен 2015 00:50

Assertion failure при Execute Procedure в MySQL

Сообщение LabutinPA » Ср 27 апр 2016 23:36

UniDAC 6.3.11
При попытке выполнить хранимую процедуру MySQL возникает
Assertion failure MyClassesUni.pas, line 2884
Причина - у текущего пользователя нет прав на просмотр тела процедуры с помощью 'show create procedure'. Из документации к MySQL:
"To use either statement, you must be the user named in the routine DEFINER clause or have SELECT access to the mysql.proc table. If you do not have privileges for the routine itself, the value displayed for the Create Procedure or Create Function field will be NULL."
Соответственно, в методе GetCreateSQL при выполнении 'show create procedure' в колонке 'create procedure' возвращается null, а так как данный случай не был предусмотрен, выполнение валится на assert().
Также получение тела SP для приведения параметров - это накладные расходы. В случае с физически удаленным сервером это увеличивает время выполнения SP в два раза.
Я не нашел документированного способа отключить проверку параметров SP или функции.
Уважаемые разработчики, могли бы вы сделать эту "фичу" опциональной?

ViktorV
Devart Team
Сообщения: 206
Зарегистрирован: Чт 31 июл 2014 09:52

Re: Assertion failure при Execute Procedure в MySQL

Сообщение ViktorV » Чт 28 апр 2016 15:08

К сожалению, мы не смогли воспроизвести Assert ошибку при попытке выполнить хранимую процедуру пользователем, который не обладает правом на просмотр тела процедуры. Пожалуйста, составьте и вышлите нам небольшой пример демонстрирующий проблему на viktorv*devart*com, включающий скрипты для создания объектов БД.
На данный момент UniDAC не поддерживает возможность отключить проверку параметров хранимой процедуры. Если Вы хотите, чтобы мы добавили данную поддержку, пожалуйста, напишите об этом на нашем User Voice форуме: https://devart.uservoice.com/forums/104 ... 939-unidac. Чем больше голосов наберет Ваше предложение, тем быстрее мы рассмотрим возможность ее реализации.

Ответить