Баг при работе с хранимыми процедурами.

Обсуждение возникших проблем, предложений и ошибок dbForge для MySQL
Закрыто
elavr
Сообщения: 8
Зарегистрирован: Пн 02 ноя 2009 08:57

Баг при работе с хранимыми процедурами.

Сообщение elavr » Пн 02 ноя 2009 09:28

В базе существует хранимая процедура исходный текст следующий:

Код: Выделить всё

CREATE DEFINER = 'root'@'localhost'
FUNCTION app.TBL_FC_CONTACT_SAVE(szOp VARCHAR(11), m_Id INTEGER, m_ID_FC INTEGER, m_ID_TYPE INTEGER, m_CONTACT VARCHAR(100))
RETURNS VARCHAR(100) 
BEGIN
  declare szRet varchar(100);
	declare nId integer;

	set szRet='';
	CASE ifnull(szOp,'-')
	    WHEN 'add' THEN
			set nId= rom.fc_contact_add(m_ID_FC,m_ID_TYPE,NULL,m_CONTACT,NULL);
	    WHEN 'upd' THEN
			call  rom.fc_contact_upd(m_ID,m_ID_TYPE,NULL,m_CONTACT,NULL);
	    WHEN 'del' THEN
			call  rom.fc_contact_del(m_ID);
		ELSE
		set nId=0;
  END CASE;

  RETURN szRet;
END
При ее компиляци возникает ошибка:

You have error in your SQL syntax; check the manual corresponds to your Mysql server version for right syntax '' at line 14;


Удаляю функцию начинаю создавать ее заново следующим образом:

Код: Выделить всё

CREATE DEFINER = 'root'@'%'
FUNCTION app.TBL_FC_CONTACT_SAVE
(
  szOp VARCHAR(11), 
  m_Id INTEGER, 
  m_ID_FC INTEGER, 
  m_ID_TYPE INTEGER, 
  m_CONTACT VARCHAR(100)
)
  RETURNS varchar(100)
BEGIN
  declare szRet varchar(100);
  declare nId integer;

CASE IFNULL(szOp,'-')
  WHEN 'add' THEN  
    SET nId = rom.fc_contact_add(m_ID_FC, m_ID_TYPE, NULL, m_CONTACT, NULL);


  ELSE 
    SET nId = 0;
END CASE;

  RETURN szRet;
END
Отрабатывает.


Стоит добавить изменение, например такое:

Код: Выделить всё

CREATE DEFINER = 'root'@'%'
FUNCTION app.TBL_FC_CONTACT_SAVE
(
  szOp VARCHAR(11), 
  m_Id INTEGER, 
  m_ID_FC INTEGER, 
  m_ID_TYPE INTEGER, 
  m_CONTACT VARCHAR(100)
)
  RETURNS varchar(100)
BEGIN
  declare szRet varchar(100);
  declare nId integer;

CASE IFNULL(szOp,'-')
  WHEN 'add' THEN  
    SET nId = rom.fc_contact_add(m_ID_FC, m_ID_TYPE, NULL, m_CONTACT, NULL);
[b]WHEN 'upd' THEN
			CALL rom.fc_contact_upd(m_ID, m_ID_TYPE, NULL, m_CONTACT, NULL);[/b]
  ELSE 
    SET nId = 0;
END CASE;

  RETURN szRet;
END
Ошибка появляется вновь. Изменение текста функции больше ни к чему не приводит. Ошибка не хочет больше исчезать.

В dbForge 4 beta - дела обстоят еще хуже, при попытке открыть функцию на редактирование происходит непредвидена ошибка.



=========================
General
=========================
Application: dbForge Studio for MySQL
Product: Devart dbForge Studio Beta for MySQL
Product Locale: Russian
Assembly: dbforgemysql, Version=4.0.102.1, Culture=neutral, PublicKeyToken=09af7300eec23701
D:\Program Files\Devart\dbForge Studio Beta for MySQL\dbforgemysql.exe
Global cache: False
Framework: 2.0.50727.1873

=========================
Exception Information
=========================
Message: Object reference not set to an instance of an object.
Source: Devart.DbForge.Provider
TargetSite: Void CreateErrorMarker(Devart.Shell.IError)
HelpLink:
Type: System.NullReferenceException
Stack:
at Devart.DbForge.DbObjectDocument.CreateErrorMarker(IError error)
at Devart.DbForge.ConnectedDocument.AddError(ErrorCategory category, String description, String moniker, TextSpan span)
at Devart.DbForge.LanguageService.Source.a()
at Devart.DbForge.LanguageService.Source.Parse(ParseRequest request, Boolean needCheckErrors)
at Devart.DbForge.LanguageService.Source.b(Object A_0, EventArgs A_1)
at QWhale.Syntax.SyntaxParser.ReparseText()
at QWhale.Editor.TextSource.TextSource.DoFormatText()
at QWhale.Editor.TextSource.TextSource.FormatText()
at QWhale.Editor.TextSource.TextSource.a(Boolean A_0, Boolean A_1)
at QWhale.Editor.TextSource.TextSource.EndUpdate()
at QWhale.Editor.TextSource.TextSource.StringsChanged(Object sender, EventArgs ea)
at QWhale.Editor.TextSource.TextSource.Notification(Object sender, EventArgs e)
at QWhale.Editor.TextSource.TextStrings.Notify()
at QWhale.Editor.TextSource.TextStrings.Update()
at QWhale.Editor.TextSource.TextStrings.EndUpdate()
at QWhale.Editor.TextSource.TextStrings.SetTextAndData(String text, String data)
at qu.set_Text(String value)
at QWhale.Editor.SyntaxEdit.set_Text(String value)
at Devart.Shell.TextEditor.set_Text(String value)
at Devart.DbForge.ConnectedDocument.UpdateTextEditor(String text)
at Devart.DbForge.ConnectedDocument.set_Text(String value)
at Devart.DbForge.DbObjectDocument.a(IDbObject A_0, Boolean A_1)
at Devart.DbForge.DbObjectDocument.Initialize(IHierarchy dbObjectHierarchy, IDbObject dbObject)
at Devart.DbForge.DocumentUtils.EditObject(IDbObjectNode node, IDbObject dbObject, Boolean showDocumentDialog)
at Devart.DbForge.DbObjects.DbObjectPopupProvider.EditObject(Object instance)
at Devart.DbForge.DbObjects.DbObjectPopupProvider.p(ICommand A_0, CommandStatus& A_1, Object A_2)
at Devart.Shell.Utils.CommandTargetHelper.InvokeCommand(ICommand command, Object instance)
at Devart.Shell.Utils.PopupProvider.InvokeCommand(ICommand command, Object instance)
at Devart.DbForge.DbObjects.DbObjectNode.EditObject()
at Devart.DbForge.DbObjects.DbStoredProcedureNode.OnDoubleClick()
at Devart.Shell.Controls.HierarchyControl.e(Object A_0, EventArgs A_1)
at System.Windows.Forms.Control.OnDoubleClick(EventArgs e)
at Crownwood.DotNetMagic.Controls.TreeControl.OnDoubleClick(EventArgs e)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at Crownwood.DotNetMagic.Controls.TreeControl.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

=========================
Window Layout
=========================
Active document: 'Стартовая страница' (tabbed toolwindow)
Active window: 'Проводник'

=========================
Projects
=========================
No projects

=========================
Connections
=========================
app.ssp (current) - 'User Id=root;Host=ssp;Database=app;Character Set=utf8;'. Server version 5.1.30-community

=========================
Loaded Assemblies
=========================
mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 2.0.0.0 D:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
dbforgemysql, Version=4.0.102.1, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.102.1 D:/Program Files/Devart/dbForge Studio Beta for MySQL/dbforgemysql.exe
Devart.Shell.Studio, Version=1.1.6.0, Culture=neutral, PublicKeyToken=09af7300eec23701 1.1.6.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.Shell.Studio.DLL
Devart.Shell.Interfaces, Version=1.1.6.0, Culture=neutral, PublicKeyToken=09af7300eec23701 1.1.6.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.Shell.Interfaces.DLL
System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 2.0.0.0 D:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 2.0.0.0 D:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 2.0.0.0 D:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
Devart.Shell.Utils, Version=1.1.6.0, Culture=neutral, PublicKeyToken=09af7300eec23701 1.1.6.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.Shell.Utils.DLL
System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 2.0.0.0 D:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
Devart.Shell.CommonRes, Version=1.1.6.0, Culture=neutral, PublicKeyToken=09af7300eec23701 1.1.6.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.Shell.CommonRes.DLL
System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 2.0.0.0 D:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
Devart.XBars, Version=9.2.5.0, Culture=neutral, PublicKeyToken=09af7300eec23701 9.2.5.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.XBars.DLL
Devart.XEditors, Version=9.2.5.0, Culture=neutral, PublicKeyToken=09af7300eec23701 9.2.5.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.XEditors.DLL
Devart.XData, Version=9.2.5.0, Culture=neutral, PublicKeyToken=09af7300eec23701 9.2.5.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.XData.DLL
Devart.XUtils, Version=9.2.5.0, Culture=neutral, PublicKeyToken=09af7300eec23701 9.2.5.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.XUtils.DLL
Devart.Shell.Controls, Version=1.1.6.0, Culture=neutral, PublicKeyToken=09af7300eec23701 1.1.6.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.Shell.Controls.DLL
Devart.Shell.Projects, Version=1.1.6.0, Culture=neutral, PublicKeyToken=09af7300eec23701 1.1.6.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.Shell.Projects.DLL
Devart.Shell.TextEditor, Version=1.1.6.0, Culture=neutral, PublicKeyToken=09af7300eec23701 1.1.6.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.Shell.TextEditor.DLL
Devart.Studio.Help, Version=1.1.6.0, Culture=neutral, PublicKeyToken=09af7300eec23701 1.1.6.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.Studio.Help.DLL
System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 2.0.0.0 D:/WINDOWS/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
Devart.Shell.TextEditor.Interfaces, Version=1.1.6.0, Culture=neutral, PublicKeyToken=09af7300eec23701 1.1.6.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.Shell.TextEditor.Interfaces.DLL
Devart.DbForge.CommonServices, Version=4.0.211.0, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.211.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.CommonServices.DLL
Devart.DbForge.Interfaces, Version=4.0.6.0, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.6.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.Interfaces.DLL
Devart.DbForge.Data.Interfaces, Version=5.0.5.0, Culture=neutral, PublicKeyToken=09af7300eec23701 5.0.5.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.Data.Interfaces.DLL
Devart.DbForge.Utils, Version=4.0.211.0, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.211.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.Utils.DLL
Devart.BrowseObjects, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null 0.0.0.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.Shell.Utils.dll
Devart.Ole.UndoManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=09af7300eec23701 1.0.0.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.Ole.UndoManager.DLL
Devart.Studio.Browser, Version=1.1.6.0, Culture=neutral, PublicKeyToken=09af7300eec23701 1.1.6.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.Studio.Browser.DLL
Accessibility, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 2.0.0.0 D:/WINDOWS/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
Devart.DbForge.MySql, Version=4.0.102.1, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.102.1 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.MySql.DLL
Devart.DbForge.Provider, Version=4.0.211.0, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.211.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.Provider.DLL
Devart.DbForge.DbObjects.MySql, Version=4.0.102.0, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.102.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.DbObjects.MySql.DLL
Devart.DbForge.DbObjects, Version=4.0.211.0, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.211.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.DbObjects.DLL
Devart.DbForge.Nodes.MySql, Version=4.0.102.0, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.102.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.Nodes.MySql.DLL
Devart.DbForge.Nodes, Version=4.0.211.0, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.211.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.Nodes.DLL
Devart.DbForge.Data.MySql, Version=5.0.45.0, Culture=neutral, PublicKeyToken=09af7300eec23701 5.0.45.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.Data.MySql.DLL
Devart.DbForge.DbEditors.MySql, Version=4.0.102.0, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.102.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.DbEditors.MySql.DLL
System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 2.0.0.0 D:/WINDOWS/assembly/GAC_32/System.Transactions/2.0.0.0__b77a5c561934e089/System.Transactions.dll
System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 2.0.0.0 D:/WINDOWS/assembly/GAC_32/System.EnterpriseServices/2.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
Devart.DbForge.LanguageService.MySql, Version=0.0.0.0, Culture=neutral, PublicKeyToken=09af7300eec23701 0.0.0.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.LanguageService.MySql.DLL
Devart.DbForge.LanguageService, Version=4.0.211.0, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.211.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.LanguageService.DLL
Antlr3.Runtime, Version=0.3.0.37313, Culture=neutral, PublicKeyToken=09af7300eec23701 0.3.0.37313 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Antlr3.Runtime.DLL
Devart.DbForge.DbEditors, Version=4.0.211.0, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.211.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.DbEditors.DLL
Devart.DbForge.Debugger, Version=4.0.211.0, Culture=neutral, PublicKeyToken=09af7300eec23701 4.0.211.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.DbForge.Debugger.DLL
Devart.XGrid, Version=9.2.5.0, Culture=neutral, PublicKeyToken=09af7300eec23701 9.2.5.0 D:/Program Files/Devart/dbForge Studio Beta for MySQL/Devart.XGrid.DLL

=========================
System Information
=========================
Processor architecture: intel
Processor quantity: 2
Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz x86 Family 6 Model 15 Stepping 6
Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz x86 Family 6 Model 15 Stepping 6

Total physical memory: 1525Mb
Available virtual memory: 4464Mb

Operating System Name: Microsoft Windows XP
Operating System Version: Microsoft Windows NT 5.1.2600 Service Pack 3

Instances: 1
Culture: Russian (Russia)
Process started at 11/02/2009 14:10:39
Report created at 11/02/2009 14:13:26

Мда еще возник такой вопрос:
В директории размещение Базы Mysql есть директория data\\в них храняться файлы .frm:

Код: Выделить всё

TYPE=VIEW
query=select `a`.`ID` AS `id`,`a`.`ID_FC` AS `id_fc`,`a`.`ID_TYPE` AS `id_type`,`b`.`NAME` AS `type_date`,`app`.`date_to_char`(`a`.`DATE_I`) AS `date_ic` from `rom`.`fc_date` `a` join `rom`.`fc_lstype_date` `b` where (`a`.`ID_TYPE` = `b`.`ID`)
md5=c3d3ed6c5f38e1f5caa064d308389138
updatable=1
algorithm=0
definer_user=root
definer_host=localhost
suid=2
with_check_option=0
revision=2
timestamp=2008-11-19 16:13:50
create-version=1
source=select a.id,
\n    a.id_fc,
\n    a.id_type,
\n    b.name as type_date,
\n    app.date_to_char(a.date_i) as date_ic
\n    from ROM.FC_DATE as a
\n    ,ROM.FC_LSTYPE_DATE as b
\n    where a.id_type = b.id
client_cs_name=utf8
connection_cl_name=utf8_general_ci
view_body_utf8=select `a`.`ID` AS `id`,`a`.`ID_FC` AS `id_fc`,`a`.`ID_TYPE` AS `id_type`,`b`.`NAME` AS `type_date`,`app`.`date_to_char`(`a`.`DATE_I`) AS `date_ic` from `rom`.`fc_date` `a` join `rom`.`fc_lstype_date` `b` where (`a`.`ID_TYPE` = `b`.`ID`)
как видим в поле source содержиться текст View как я его компилировал. Есть ли возможность при открытие представления в редакторе открывать его в виде как я его компилировал?[/code][/quote]

Mastermind
Сообщения: 29
Зарегистрирован: Чт 23 апр 2009 07:26

Сообщение Mastermind » Пн 02 ноя 2009 09:45

Кстати да, тоже замечал подобную проблему при записи подпрограмм, что ругается на "ровном месте", когда в другой программе такая процедура/функция спокойно сохраняется. Натыкался на такое в сложном синтаксисе, например, при использовании CASE/WHILE с подзапросами и других подобных сложносоставных конструкций.
Хотя если dbForge ругается, когда Query Browser нормально сохраняет, значит это dbForge выдаёт при синтаксическом разборе процедуры и уже сама ругается, а не ответ от сервера показывает.

.jp
Devart Team
Сообщения: 374
Зарегистрирован: Ср 09 сен 2009 07:54
Откуда: devart
Контактная информация:

Re: Баг при работе с хранимыми процедурами.

Сообщение .jp » Пн 02 ноя 2009 10:00

Код: Выделить всё

CREATE DEFINER = 'root'@'localhost'
FUNCTION app.TBL_FC_CONTACT_SAVE(szOp VARCHAR(11), m_Id INTEGER, m_ID_FC INTEGER, m_ID_TYPE INTEGER, m_CONTACT VARCHAR(100))
RETURNS VARCHAR(100) 
BEGIN
  declare szRet varchar(100);
	declare nId integer;

	set szRet='';
	CASE ifnull(szOp,'-')
	    WHEN 'add' THEN
			set nId= rom.fc_contact_add(m_ID_FC,m_ID_TYPE,NULL,m_CONTACT,NULL);
	    WHEN 'upd' THEN
			call  rom.fc_contact_upd(m_ID,m_ID_TYPE,NULL,m_CONTACT,NULL);
	    WHEN 'del' THEN
			call  rom.fc_contact_del(m_ID);
		ELSE
		set nId=0;
  END CASE;

  RETURN szRet;
END
Встроенный механизм проверки синтаксиса dbForge Studio не правильно обработал выражение CASE ifnull(szOp,'-') и посчитал его ошибочным.
Это баг и мы его исправим в релизной версии dbForge Studio for MySQL v4.0.

elavr
Сообщения: 8
Зарегистрирован: Пн 02 ноя 2009 08:57

Re: Баг при работе с хранимыми процедурами.

Сообщение elavr » Пн 02 ноя 2009 10:05

Встроенный механизм проверки синтаксиса dbForge Studio не правильно обработал выражение CASE ifnull(szOp,'-') и посчитал его ошибочным.
Это баг и мы его исправим в релизной версии dbForge Studio for MySQL v4.0.
Когда релиз намечается?

.jp
Devart Team
Сообщения: 374
Зарегистрирован: Ср 09 сен 2009 07:54
Откуда: devart
Контактная информация:

Re: Баг при работе с хранимыми процедурами.

Сообщение .jp » Пн 02 ноя 2009 10:13

elavr писал(а):
Встроенный механизм проверки синтаксиса dbForge Studio не правильно обработал выражение CASE ifnull(szOp,'-') и посчитал его ошибочным.
Это баг и мы его исправим в релизной версии dbForge Studio for MySQL v4.0.
Когда релиз намечается?
Приложение должно пройти несколько циклов тестирования, и после этого можно уже говорить о конкретной дате релиза.
Ориентировочно могу сказать, что релиз следует ожидать в конце ноября - начале декабря 2009.

.jp
Devart Team
Сообщения: 374
Зарегистрирован: Ср 09 сен 2009 07:54
Откуда: devart
Контактная информация:

Re: Баг при работе с хранимыми процедурами.

Сообщение .jp » Пн 02 ноя 2009 10:23

как видим в поле source содержиться текст View как я его компилировал. Есть ли возможность при открытие представления в редакторе открывать его в виде как я его компилировал?
На данный момент, такой опции нет.
Приложение, прежде чем отобразить представление в редакторе, пропускает ее код через форматтер кода, встроенный в dbForge Studio. MySQL же хранит текст запроса в одной строке. И редактировать эту строку довольно не удобно.
Последний раз редактировалось .jp Пн 02 ноя 2009 13:58, всего редактировалось 1 раз.

Elias
Devart Team
Сообщения: 63
Зарегистрирован: Вт 30 июн 2009 09:07

Сообщение Elias » Пн 02 ноя 2009 13:50

Всем привет.

Elavr, ошибка при компиляции функции исправлена, спасибо за пример. Исправление будет доступно в следующих билдах dbForge Studio for MySql 3.60 и 4.0.

Mastermind, нам очень нужны примеры некорректной работы проверки синтаксиса в DbForge Studio for MySql, пожалуйста сообщайте нам о возникновении таких проблем.

Mastermind
Сообщения: 29
Зарегистрирован: Чт 23 апр 2009 07:26

Сообщение Mastermind » Ср 04 ноя 2009 11:06

Elias писал(а): Mastermind, нам очень нужны примеры некорректной работы проверки синтаксиса в DbForge Studio for MySql, пожалуйста сообщайте нам о возникновении таких проблем.
Другие сложные констукции, на которых был затырк, я уже переписал в более простые, но экспериментально нашёл баг с конструкцией CASE (возможно в моих прошлых местах ошибок было что-то из этой же "оперы").

Например, функцию

Код: Выделить всё

CREATE FUNCTION function1(aVal CHAR(1)) RETURNS int
BEGIN

CASE aVal
   WHEN 'A' THEN RETURN 1;
   WHEN 'B' THEN RETURN 2;
END CASE;

RETURN 0;

END
при её создании записать можно без проблем, но при повторной записи, даже без изменения синтаксиса конструкции, выдаётся такая же ошибка, как и у автора темы.
Но, судя по вашим словам
Elias писал(а): Elavr, ошибка при компиляции функции исправлена, спасибо за пример. Исправление будет доступно в следующих билдах dbForge Studio for MySql 3.60 и 4.0.
эта проблема уже устранена, как я понимаю. Остаётся дождаться нового билда и попробовать там.

Yuri Abele
Сообщения: 80
Зарегистрирован: Вт 03 ноя 2009 08:52

Сообщение Yuri Abele » Чт 05 ноя 2009 08:51

У меня тоже проблема - проверка синтаксиса хранимых процедур спотыкается на битовых операциях. Причем только в хранимых процедурах, в простом скрипте все работает.

Попробуйте вставить в текст процедуры чего-нибудь вроде:

Код: Выделить всё

SET @aa = 2 | 1;

Yuri Abele
Сообщения: 80
Зарегистрирован: Вт 03 ноя 2009 08:52

Сообщение Yuri Abele » Чт 05 ноя 2009 09:01

// Исправлено - виноват, толком не проверил //
Yuri Abele писал(а):У меня тоже проблема - проверка синтаксиса хранимых процедур спотыкается на битовых операциях. Причем только в хранимых процедурах, в простом скрипте все работает.
или такой пример:

Код: Выделить всё

DELIMITER |

DROP PROCEDURE IF EXISTS test_bitwise_operators

|

CREATE PROCEDURE test_bitwise_operators(  )
BEGIN

	DROP TABLE IF EXISTS test_table;
   CREATE TEMPORARY TABLE IF NOT EXISTS test_table ( bitmask INT ) ENGINE = MEMORY;

	INSERT INTO test_table(bitmask)
	VALUES (1);

	UPDATE test_table SET bitmask = bitmask & (1 << 3);

	UPDATE test_table SET bitmask = bitmask ^ b'100000';

	UPDATE test_table SET bitmask = bitmask | 2;

	SELECT *, BIN(bitmask) AS bitmask, BIT_COUNT(bitmask) AS count_bits FROM test_table;

   DROP TABLE IF EXISTS test_table; 

END

|

DELIMITER ;

CALL test_bitwise_operators();

DROP PROCEDURE IF EXISTS test_bitwise_operators;
а вот так работает :-)

Код: Выделить всё

DELIMITER |

DROP PROCEDURE IF EXISTS test_bitwise_operators

|

CREATE PROCEDURE test_bitwise_operators( )
BEGIN

	DROP TABLE IF EXISTS test_table;
	CREATE TEMPORARY TABLE IF NOT EXISTS test_table ( bitmask INT ) ENGINE = MEMORY;

	INSERT INTO test_table(bitmask) VALUES (1);

	SET @update_statement = 'UPDATE test_table SET bitmask = bitmask & (1 << 3);';
	PREPARE update_statement FROM @update_statement;
	EXECUTE update_statement;

	SET @update_statement = 'UPDATE test_table SET bitmask = bitmask ^ b\100000\;';
	PREPARE update_statement FROM @update_statement;
	EXECUTE update_statement;

	SET @update_statement = 'UPDATE test_table SET bitmask = bitmask | 2;';
	PREPARE update_statement FROM @update_statement;
	EXECUTE update_statement;

	DEALLOCATE PREPARE update_statement;

	SELECT *, BIN(bitmask) AS bitmask, BIT_COUNT(bitmask) AS count_bits FROM test_table;

	DROP TABLE IF EXISTS test_table;

END

|

DELIMITER ;

CALL test_bitwise_operators();

DROP PROCEDURE IF EXISTS test_bitwise_operators;

.jp
Devart Team
Сообщения: 374
Зарегистрирован: Ср 09 сен 2009 07:54
Откуда: devart
Контактная информация:

Сообщение .jp » Чт 05 ноя 2009 10:37

Yuri Abele писал(а):

Код: Выделить всё

DELIMITER |

Используйте в качестве делимитра символы, отличные от символов операторов и операндов.

Например:

DELIMITER ||
DELIMITER $$
DELIMITER //

Yuri Abele
Сообщения: 80
Зарегистрирован: Вт 03 ноя 2009 08:52

Сообщение Yuri Abele » Чт 05 ноя 2009 11:09

.jp писал(а):
Yuri Abele писал(а):

Код: Выделить всё

DELIMITER |

Используйте в качестве делимитра символы, отличные от символов операторов и операндов.

Например:

DELIMITER ||
DELIMITER $$
DELIMITER //
Спасибо! Помогло.

Mastermind
Сообщения: 29
Зарегистрирован: Чт 23 апр 2009 07:26

Сообщение Mastermind » Пт 06 ноя 2009 10:46

Нашёл проблему в создании подпрограммы, но не процедуры, а функции.
Проблема в следующем: форма для дизайна вполне удобная, множество полезных настроек позволяет выставлять, но вот настроить тип возвращаемых данных довольно проблемно, но не невозможно.

В самом начале создания функции окно параметров пустое, и если посмотреть в окно текста создаваемой функции, то возвращаемый тип данных определён как RETURNS . Как я выяснил, если вручную исправить возвращаемый тип в тексте функции, то при переходе в окно дизайна в списке параметров появляется этот самый возвращаемый тип как параметр (Result) с нужным типом. Далее этот тип можно изменять, и всё в тексте функции обновляется нормально.
Если же с самого начала в таблицу параметров попробовать вручную прописать такой параметр (Result) с нужным типом, то в тексте функции он прописывается именно как параметр функции с таким названием, а не как тип возвращаемого значения.
Такой подход к настройке возвращаемого типа не очень удобен, и я бы хотел предложить для этой цели сделать отдельное поле для возвращаемого типа значения в форме дизайна функции, а не как один из параметров функции. Тем более, если указан возвращаемый тип и какие-то другие параметры, то при удалении всех параметров по одиночке возвращаемый тип тоже можно удалить, хотя по умолчанию удаление этого параметра невозможно.

Билд 4.0.102.1, пункт "Проверить обновления..." безмолвствует.

.jp
Devart Team
Сообщения: 374
Зарегистрирован: Ср 09 сен 2009 07:54
Откуда: devart
Контактная информация:

Сообщение .jp » Пт 06 ноя 2009 11:18

to Mastermind
Нашёл проблему в создании подпрограммы, но не процедуры, а функции.
Данная ошибка уже исправлена.
пункт "Проверить обновления..." безмолвствует.
Обновление будет доступно только в релизной версии.

Закрыто