Недочет в методе importDump(), iCMS 2.x

#1 28 ноября 2014 в 23:20
В методе importDump() класса cmsDatabase есть недочет, из-за которого нельзя импортировать запросы, содержащие символ ";" (не заканчивающиеся им, а именно содержащиеся на каких-то этапах). Таким запросом является хранимая процедура. Пример:
  1.  
  2. DROP PROCEDURE IF EXISTS schema_change$$
  3. DELIMITER $$
  4. CREATE PROCEDURE schema_change() BEGIN
  5. IF EXISTS (SELECT * FROM information_schema.columns WHERE table_name = 'table' AND column_name = 'column') then
  6. ALTER TABLE table DROP COLUMN `column`;
  7. END IF;
  8. END$$
  9. DELIMITER ;
  10. CALL schema_change();
  11. DROP PROCEDURE IF EXISTS schema_change;
  12.  
Метод разобьет запрос на отдельные запросы в местах присутствия символа ";", и при импорте таких запросов возникнет ошибка синтаксиса mySQL.
Метод также игнорирует комментарии и обрабатывает код, завернутый в комментарий, и если в тексте комментария будет символ ";", то комментарий будет разбит на части и "скормлен" mySQL, и без открывающих/закрывающих символов комментария, это уже не будет комментарием, из-за чего опять-таки возникнет ошибка синтаксиса.

P.S. Здесь вроде была тема по обсуждению проблем iCMS 2.x, но что-то не нашел. Извините, если создал лишнюю тему.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.