|
![]() |
#1 |
Участник
|
AX2009. Код для падения сервера
Странно, но факт. Этот код при выполнении вызывает падение АОS.
Код: static void Job1(Args _args) { RHRMOrderTable rHRMOrderTable; RHRMOrderTrans rHRMOrderTrans; AZT_OrderTransEmpl OrderTrans; ; select orderTrans order by EmplName where rHRMOrderTable.RecId == orderTrans.OrderTableRecId && (!rHRMOrderTrans || rHRMOrderTrans.RecId == orderTrans.RecId); } В Ах4 отчеты с подобным запросом работали на ура. |
|
![]() |
#2 |
Участник
|
В третьей версии Аксапты подобный запрос так же как в AX 4 отрабатывает без ошибки, но мне кажется, что запрет использования табличной переменной в условии запроса(where...) без указания конкретного поля в AX 2009 вполне логичным и правильным. Скорее всего, этот нюанс в пятой версии Аксапты был устранен.
А вообще запрос, по-моему, не очень корректный, т.к. табличная переменая rHRMOrderTrans в любом случае окажется пустой. Возможно так было бы правильней: X++: select orderTrans join rHRMOrderTable where rHRMOrderTable.RecId == orderTrans.OrderTableRecId outer join rHRMOrderTrans where rHRMOrderTrans.RecId == orderTrans.RecId;
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 01.12.2010 в 15:42. |
|
![]() |
#3 |
Участник
|
|
|
![]() |
#4 |
Участник
|
Цитата:
Цитата:
Если можно, то чем этот код отличается от приведенного выше? Точно такое же условие.
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 01.12.2010 в 15:37. |
|
![]() |
#5 |
Участник
|
Но ведь табличная переменная не используется в запросе, следовательно ничем не отличается от любой другой переменной. Такое выражение сначала преобразуется в true или false (в данном случае false) и после этого подставится в запрос. По крайне мере в 3.0 так. Про переменную, которая используется в запрос, насколько я понял, речи не идет.
|
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от Lucky13
![]() Но ведь табличная переменная не используется в запросе, следовательно ничем не отличается от любой другой переменной. Такое выражение сначала преобразуется в true или false (в данном случае false) и после этого подставится в запрос. По крайне мере в 3.0 так. Про переменную, которая используется в запрос, насколько я понял, речи не идет.
А по поводу Ax2009 было сделано предположение об устранении возможности использования табличной переменной в условии запроса без указания конкретного поля.
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 01.12.2010 в 15:56. |
|
![]() |
#7 |
Ищущий знания...
|
вообще на форуме уже обсуждался вопрос про использование неявного преобразования (не могу найти ссылку
![]() Т.е. использование синтаксиса : X++: if (inventTrans) X++: if (inventTrans.RecId != 0) X++: if (inventTrans.RecId != 0) X++: where (rHRMOrderTrans.RecId == 0 || rHRMOrderTrans.RecId == orderTrans.RecId)
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#8 |
Ищущий знания...
|
нашел ссылку на тему Проверка на RecId
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#9 |
Участник
|
2 lev. Это понятно, но такая ситуация редкость и она не приводит к падению AOS, здесь же показано, что код гарантировано приведет к падению AOS. Нехорошо как-то
|
|
![]() |
#10 |
Ищущий знания...
|
Цитата:
![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#11 |
Banned
|
Теоретики... Неужели больше заняться нечем?
|
|
![]() |
#12 |
Участник
|
|
|
![]() |
#13 |
Banned
|
Зачем мучать себя и Microsoft вещами, для которых есть явный workaround? Лучше сконцентрировать внимание на функционале, том, что реально волнует клиентов. К тому же, мы в компании такой SQL просто не пишем. В голову не приходит.
![]() |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
![]() |
#14 |
Участник
|
Ну соглашусь, что бага не очень критичная.
Но меня всегда напрягало падение Аксапты, особенно аоса. Таких ошибок не должно быть по определению. |
|
|
За это сообщение автора поблагодарили: player (1). |
![]() |
#15 |
MCP
|
А на какой версии Ax2009 падает? Какая версия ядра? В последних обновлениях это вроде исправлено, по крайней мере 3 месяца мне мой когллега точно таким же способом демонстрировал несовершенство версии моего непропатченного ядра и стандартного приложения
![]() |
|
![]() |
#16 |
Участник
|
Ключевое слово в исходном сообщении было : Падение AOS
|
|
![]() |
#17 |
Участник
|
Вообще-то именно этот вариант заваливания именно этой версии АОСа уже обсуждался - см. Как завалить AOS AX 2009
|
|
![]() |
#18 |
Участник
|
Цитата:
Сообщение от gl00mie
![]() Вообще-то именно этот вариант заваливания именно этой версии АОСа уже обсуждался - см. Как завалить AOS AX 2009
Или когда будет исправлено |
|