|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Кажется, я уже задавал этот вопрос, но что-то не могу найти ответ... Вот есть блок BEGIN - END, выполняющийся между другими операторами: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Я правильно понимаю, что эта последовательность должна в конечном итоге выполняться так, будто весь блок BEGIN-END никогда не вызывался, а существовали только действия 1 и 4? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 16:54 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Транзакционно - да. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 17:15 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
kdv http://www.ibase.ru/savepoints/ Отличная статья, но есть два момента: 1) Когда говорится об "ТС блока освобождается" неплохо бы уточнять освобождается она с откатом изменений внутри неё или таки с применением. 2) Вот в этом Примечание. Начиная с Firebird 2.0, откат до ТС блока всегда производится с проверкой идентификатора ТС, что устраняет подобные ошибочные ситуации. циферку 2.0 следует изменить на 4.0. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 18:33 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov> неплохо бы уточнять освобождается она с Dimitry Sibiryakov> откатом изменений внутри неё или таки с применением. С откатом, конечно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 18:51 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Чтобы уж точно добить тему: сколько записей по идее должен вставить этот блок? Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Иногда мне кажется, что две. Иногда что одну. И чем больше я над этим думаю, тем сильнее съезжает крыша. Прошу помощи клуба. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 23:20 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Чтобы подлить масла в огонь, скажу что Оракул делает так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2016, 23:51 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov> Иногда мне кажется, что две. Иногда что одну. Две. Вроде бы всегда, хоть явный exception, хоть неявный. Dimitry Sibiryakov> И чем больше я над этим думаю, тем сильнее Dimitry Sibiryakov> съезжает крыша. Прошу помощи клуба. Ну, это видимо от твоего несогласия (или непонимания) с механизмом расстановки ТС - AFAIU, ты считаешь, что для SQL-операторов внутри BE-блока не должно быть своих отдельных ТС. А суслик есть. (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 00:42 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov> Чтобы подлить масла в огонь, Dimitry Sibiryakov> скажу что Оракул делает так: Так и FB точно так же сделает, AFAIS. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 00:42 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамНу, это видимо от твоего несогласия (или непонимания) с механизмом расстановки ТС - AFAIU, ты считаешь, что для SQL-операторов внутри BE-блока не должно быть своих отдельных ТС. А суслик есть. (с) Мне сугубо всё равно как расставляются сейфпоинты внутри, я исхожу из документированного поведения: блок begin-end рассматривается как атомарный оператор, который не может выполниться наполовину. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 00:51 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovисхожу из документированного поведения ну ты скажи уже, где это документировано :-) В DataDef.pdf нет такого, насколько я знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 08:17 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
dimitrну ты скажи уже, где это документировано :-) В DataDef.pdf нет такого, насколько я знаю. Languge Reference 3.0, глава "BEGIN ... END": Операторные скобки BEGIN ... END определяют блок операторов, которые выполняются как один оператор. Атомарность - базовое свойство оператора, не так ли?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 12:16 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, IMHO, тебе очень хочется увидеть то, чего нет. Ну а Дениса попросим аккуратнее со словами :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 14:32 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
dimitrтебе очень хочется увидеть то, чего нет. Как раз мне - очень не хочется это видеть, ибо в этом случае я буду виноват в поломке движка и Влад опять начнёт требовать лишить меня права коммита. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 14:45 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, я тебе уже писал, что думаю по этому поводу. Продолжать толочь воду в ступе не вижу смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 14:50 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
dimitrя тебе уже писал, что думаю по этому поводу. Извини, все сервера феникса в дауне, так что всё, что ты писал, я получу (и то если повезёт) только на следующей неделе. PS: Кстати, подумалось, может стоит добавить в парсер немного синтаксического сахара для совместимости с оракулом?.. Чисто чтобы меньше напрягать пифий при миграции. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 14:58 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovLanguge Reference 3.0, глава "BEGIN ... END": Операторные скобки BEGIN ... END определяют блок операторов, которые выполняются как один оператор. Атомарность - базовое свойство оператора, не так ли?.. Хелен поправила это в переводе но не сильно. Термин операторные скобки ей почему-то не нравится. LR2.5_ENThe BEGIN ... END construct is a two-part statement that wraps a block of statements that are executed as one unit of code. Так что правильный вариант должен звучать так Операторные скобки BEGIN ... END определяют блок операторов, которые выполняются как одна единица кода. Короче BEGIN...END никакого отношения к атомарности не имеет. Здесь говорится о том что BEGIN..END может заменять один оператор в конструкциях IF (<condition>) THEN <statement> и др. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 16:21 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Симонов ДенисТак что правильный вариант должен звучать так Операторные скобки BEGIN ... END определяют блок операторов, которые выполняются как одна единица кода. Обычно в книгах по программированию это называется "составной оператор". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 16:25 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, поправлю, оно так не в одном месте описано. Кстати про саму обработку ошибок вроде бы написано правильно, и даже примечание по поводу CORE-4483 есть ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 16:33 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Симонов Денисдаже примечание по поводу CORE-4483 есть Можешь ещё и 4424 упомянуть, раз уж ДЕ считает, что это правильное поведение, а не мой глюк. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 17:04 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovdimitrтебе очень хочется увидеть то, чего нет. Как раз мне - очень не хочется это видеть, ибо в этом случае я буду виноват в поломке движка и Влад опять начнёт требовать лишить меня права коммита. а) не будешь, а уже (не я поднял этот вопрос, кстати) б) я никогда не требовал лишить тебя права коммита, разуй глазки и перечитай почту ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 22:27 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
hvladа) не будешь, а уже (не я поднял этот вопрос, кстати) Для заявления об "уже" нужен тест регрессии. Он есть у тебя? Срабатывание мною же расставленных ассертов - не в счёт. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2016, 22:47 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСрабатывание мною же расставленных ассертов - не в счёт.Очередное заблуждение. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2016, 01:00 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
hvladОчередное заблуждение. Ты ещё скажи, что то, что сейфпоинт внутренних WHEN-блоков освобождается позже чем внешних это тоже мой баг, а вовсе не кривая архитектура... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2016, 01:09 |
|
Блок BEGIN - WHEN - END
|
|||
---|---|---|---|
#18+
<Таблоид mode on> И вот он, новый тесткейс: Код: plsql 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.
Кто-нибудь может объяснить логику в результате которой получается Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
? Как в таблицу s_test попало -1, когда оно должно было пропуститься из-за выкинутого в четвёртом внутреннем обработчике исключения? Почему пятый обработчик не только выполнился, но и его результат выжил (а первый и третий при этом умерли)? Про то почему в результате вообще единица - не спрашиваю, это CORE-4424/4484. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2016, 18:15 |
|
|
start [/forum/search_topic.php?author=p4r53c&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 698ms |
total: | 868ms |
0 / 0 |