Re: Развлекаясь с заменой переменыз и массивов на FB. update нa стероидах - ах если бы... :-)

2011-11-03 Пенетрантность Arioch
В письме от Wed, 02 Nov 2011 23:03:07 +0400, Алексей Вишняков  
norrittmob...@googlemail.com сообщал:



Щас вам с таким предложением посоветуют пройти в трекер. И будут правы :)


предложат - пройду

но тут есть минимум два девела, кто инoгда может сразу влёт сказать фигня  
вопрос или нет и не надейтесь, это только кажется легко


иногда полезно обсудить и до трекера. мой первый пост в этой ветке это  
доказывает :-)


--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Развлекаясь с заменой переменыз и массивов на FB. update нa стероидах - ах если бы... :-)

2011-11-03 Пенетрантность Dmitry Yemanov
ФБ всегда сообщает о контексте ошибки (строка/столбец), если это 
произошло в процедуре. Если это не так - в трекер.


Но при этом не сообщается, где именно в отдельном PSQL-запросе произошла 
ошибка. И я сильно не уверен, что такого стоит ожидать в ближайшем 
будущем. Для нормальной диагностики нужен исходный код проблемного 
места. Из дерева выполнения (или даже BLR) реконструировать его - мягко 
говоря непросто. А хранить debug info в разрезе синтаксических 
конструкций вместо текущих line-column - я вообще не уверен, что это 
правильный подход.


Так что пока придется мириться с тем, что есть.


--
Дмитрий Еманов



Re: Развлекаясь с заменой переменыз и массивов на FB. update нa стероидах - ах если бы... :-)

2011-11-03 Пенетрантность Arioch
В письме от Thu, 03 Nov 2011 22:22:43 +0400, Dmitry Yemanov  
dim...@users.sf.net сообщал:


ФБ всегда сообщает о контексте ошибки (строка/столбец), если это  
произошло в процедуре. Если это не так - в трекер.


Ну сообщает.

Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
Floating-point divide by zero.  The code attempted to divide a  
floating-point value by zero.

At procedure 'DO_CALCULATIONS' line: 13, col: 2.



А с какими данными это произошло?
В какой строке в каком столбце какой таблицы ???


будущем. Для нормальной диагностики нужен исходный код проблемного  
места. Из дерева выполнения (или даже BLR) реконструировать его - мягко


а план запроса можно построить по BLR ?




вот я соотв. кусок из процедуры забиваю напрямую:

select * from VIEW_VECTOR_COSINES

Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
Floating-point divide by zero.  The code attempted to divide a  
floating-point value by zero.



PLAN JOIN (VECTOR_COSINES P NATURAL, VECTOR_COSINES Q INDEX (PK_VECTORS))

План любопытный - показываются вьюхи, а не таблицы - но при этом  
показывают PK от таблицЫ, а не от вьюх.




Более сложный запрос:
 merge into metrics m
   using vector_angles_deg v on m.idx=v.metrics_idx
   when matched then update set m.turn = v.angle;

Sorry, plan is unavailable for this statement...

Ну ладно, хемуль с ним с планом, хотя раньше был, кажется.
Но зато есть статистика - а в статистике уже показаны не вьюхи, а  
таблицы!!!



Так вот, зная таблицы и зная внутрение id каждой строки (RDB$ что-то там,  
не помню уже), движок же может
для каждой таблицы выбрать поля, входящие в PK или уникакльные индексы, и  
для этих полей прочитать и сообщить значения ?


В итоге это помогло бы точно определить на какие данных запрос сломался.
И столбец, и строки


Operations

Read   : 0
Writes : 0
Fetches: 51
Marks  : 3


Enchanced Info:
+--+---+---+-+-+-+-+--+--+--+
|Table Name|  Records  |  Indexed  | Non-Indexed | Updates  
| Deletes | Inserts | Backouts |  Purges  | Expunges |
|  |   Total   |   reads   |reads|  
| | |  |  |  |

+--+---+---+-+-+-+-+--+--+--+
|   METRICS| 0 | 1 |   0 |   1  
|   0 |   0 |0 |0 |0 |
|   VECTORS| 0 | 1 |   2 |   0  
|   0 |   0 |0 |0 |0 |

+--+---+---+-+-+-+-+--+--+--+



--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/