|
|
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток! Нарисовал следующую процедуру которая должна подсчитать количество слов в BLOB разделённых напр. запятой или несколькими другими символами. но при попытке вызвать эту процедуру рекурсивно вываливает Too many ..... Попробовал использовать WITH RECURSIVE но никак не пойму как его в этой ситуации прикрутить :( Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. помогите. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 15:01:54 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Код: sql PS. Спасибо адресуйте WildSery (один из двух команданте этого раздела форума) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 15:25:21 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Таблоид, Спасибо и Вам и WildSery ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 17:44:45 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Таблоид Код: sql PS. Спасибо адресуйте WildSery (один из двух команданте этого раздела форума) У меня тут один немецкий коллега посмотрел в эту функцию и сказал что она может вызвать нестабильную работу FireBird 2.5. Так что все полностью зависнет. Дескать а что будет если произойдёт выход за границу буфера итп. Я попытался ему объяснить что тут контроль выхода за границу буфера присутствует но это не спасло от письма начальству с уведомлением что код нестабильный и может вызвать зависание сервера и он не несёт ответственности при его использовании. Может я слепой и чего то не вижу опасного в этой функции, просветите. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 13:30:16 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Mikhail Tchervonenkoэто не спасло от письма начальству с уведомлением что код нестабильный и может вызвать зависание сервера и он не несёт ответственности при его использовании Ответь письмом о низкой квалификации немецкого коллеги в области Firebird с рекомендацией увольнения его за несоответствие служебной должности. Ну или тряси с него тесткейс. Типа "докажь, что оно зависнет!" Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 13:36:24 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Да фиг с ним, с зависанием. Где он тут увидел буфер, за пределы которого можно выйти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 13:45:56 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Я конечно так не буду поступать но за идею доказать нестабильность кода тестом в результате которого произойдёт ошибка спасибо. А то когда такие письма приходят людям которые в программировании не разбираются начинаются вопросы на которые и ответить то нельзя толком т.к. они не знают программирования. А с тестом все понятно, вот тест который вызывает указанную функцию и вот ошибка которая при этом возникает. А если ошибки нет то уж извините, код функции стабилен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 13:50:07 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Mikhail TchervonenkoЯ попытался ему объяснить что тут контроль выхода за границу буфера присутствует Вот и зря. Нет тут никакого буфера, обычная работа со строками. Я даже не помню, нафига я оставил строку длиной 30100, а не 30000. Пожалуй, оно лишнее. Это не UDF с СИ-кодом. Это высокоуровневый язык интерпретатора. Здесь любые операции со строками (конкатенация, сравнение, подстрока) безопасны по определению. В противном случае можно считать нестабильным и ненадёжным сам Firebird. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 13:51:49 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
WildSery, буфером он называет эту строку Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 13:53:35 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Mikhail TchervonenkoDimitry Sibiryakov, Я конечно так не буду поступать Зря. Если в компании принято письменно уведомлять начальство о косяках коллег/подчиненных, то надо так делать независимо от личного (не)принятия такого поведения. Просто чтобы не оказаться виновным в случае очередного косяка немецкого коллеги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 13:55:38 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Mikhail TchervonenkoУ меня тут один немецкий коллега посмотрел в эту функциюПокажите ему еще одну, "пущай полетает" Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. PS. Годится только для строки с не более чем 1024 словами. Разбивает на слова по произвольному списку разделителей (по дефолту этот список - все знаки препинания, плюс пробел). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 13:57:02 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
WildSeryВ противном случае можно считать нестабильным и ненадёжным сам Firebird. Ну дык именно так этот немец и считает. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 13:57:20 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНу дык именно так этот немец и считает. Ну и при чём тут функция? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 14:06:26 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
WildSeryЯ даже не помню, нафига я оставил строку длиной 30100, а не 30000. Пожалуй, оно лишнее. Ну наверное считал что "слов" длиннее 100 символов да еще и в конце "буфера" не будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 14:07:20 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov[quot Mikhail TchervonenНу или тряси с него тесткейс. Типа "докажь, что оно зависнет!" Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 14:15:05 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
вместо Tmp_List_To_Rows читать List_To_Rows ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 14:16:53 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
m7m, Да пофигу, сколько там символов, всё одно дальше 30000 читаться не будут. Видимо, это остался мусор, сперва я пробовал писать не по 1 символу, а через поиск подстроки. На самом деле, могу уронить сервер этой функцией. Достаточно подать "слово" длиной больше 30000. Такой проверки в функции нет, и она зациклится. Но точно так же я могу уронить сервер и вообще без функций. Как и любой из нас, любой сервер помимо firebird. (хочешь, чтобы твой немецкий нетоварищ так и не нашёл примера - вставь проверку на beg = 1 после внутреннего цикла). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 14:19:16 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
m7mвместо Tmp_List_To_Rows читать List_To_Rows и вместо 3002 читать 30002 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 14:29:46 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
WildSerym7m, Да пофигу, сколько там символов, всё одно дальше 30000 читаться не будут. таки да тут я был неправ WildSery(хочешь, чтобы твой немецкий нетоварищ так и не нашёл примера - вставь проверку на beg = 1 после внутреннего цикла). а это уже не мне ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 14:36:43 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Mikhail Tchervonenko, Лови вариант с заткнутой "дыркой" зацикливания на очень длинное слово. Кстати, исправления Таблоида тоже хороши - выходное "слово" не надо 8192 ограничивать, нехорошо это. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 14:48:01 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
WildSeryвыходное "слово" не надо 8192 ограничивать, нехорошо это.Пришлось из-за UTF8. Деталей не помню уже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 14:53:07 |
|
||
|
Помогите с рекурсивным вызовом процедуры FB2.5
|
|||
|---|---|---|---|
|
#18+
Таблоид, Ну так и буфер подрезать надо. Или 30К символов UTF-8 влезают в строку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2014, 15:11:49 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38612423&tid=1563710]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 452ms |

| 0 / 0 |
