|
|
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
hi all DDL + test Код: plaintext 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. 1. Для 2.5.3: Код: plaintext merge-test-25.log Код: plaintext 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. Код: plaintext merge-test30.log Код: plaintext 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. То, что мёрдж дэбильный: Код: sql 1. 2. 3. 4. - это понятно. А что там с роллбаком произошло ? Причём, в давно уже апробированном 2.5 тоже "не айс" как-то! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 12:51 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
Таблоидэто понятно. Тебе ещё повезло, что http://tracker.firebirdsql.org/browse/CORE-4369 не сломал тебе базу полностью, только поцарапал. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 13:04 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, да, похоже. При insert into t select ... from ... rows 3 еще воспроизводится, при rows 2 - уже нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 13:13 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
Таблоид, это потому что merge не даёт ошибки при повторном обновлении одной и той же строки, чего требует стандарт + то о чём говорит Дмитрий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 15:46 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, да хрен с ней, ошибкой повторного обновления... Глянь на данные после роллбака, плз. И сравни их с исходными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 16:06 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
ТаблоидГлянь на данные после роллбака, плз. И сравни их с исходными.(я к тому, что хотя бы в 2.5.х надо бы законопатить это...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 16:12 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
Таблоид, в ФБ есть некоторое ограничение на кол-во обновлений одной и той же записи в одной транзакции после которого невозможно отменить обновление (update_in_place или что-то типа того), Dimitry Sibiryakov вроде даже выкладывал патч, который снимает это ограничение, но его ещё не проверили, чтобы закомитить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 16:40 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
Во-первых, баг выше на 2.5 распространяться не должен: он появился как побочный эффект стабильности курсора. Во-вторых, я такого патча не делал. В-третьих, попробуй уже в 2.5 с NO AUTO UNDO. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 17:07 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВо-первых, баг выше на 2.5 распространяться не должен : он появился как побочный эффект стабильности курсора.Однако же, роллбак в 2.5.х упрям как боран и почему-то не хочет откатывать изменения. Dimitry SibiryakovВ-третьих, попробуй уже в 2.5 с NO AUTO UNDO.Попробовал. Всё то же самое. Минимально воспроизводимый скрипт: Код: plaintext 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. 1. Firebird 3.0.x : Код: plaintext 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. 2. Firebird 2.5.3 : Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 17:28 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
Симонов Денисв ФБ есть некоторое ограничение на кол-во обновлений одной и той же записи в одной транзакции после которого невозможно отменить обновлениеНет и не может быть таких ограничений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 17:47 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
hvlad, упс. Перечитал про тот патч. В общем совсем не то он исправляет. И про ограничения я наврал. Извиняюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 18:39 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
Нарыл я один топег , в котором Влад показал "блок-схему" того, во что преобразуется merge. Попытался применить тамошнюю "блок-схему" в данном примере: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. - однако при роллбаке тут всё восстанавливается. В общем, там, внутри мёрджа, есть ещё "что-то", нехорошее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2014, 02:40 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
Вижу причину, пока не решил как лечить. Проблема действительно в MERGE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2014, 04:24 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
Добавь индекс на поле джойна (x) и удивись :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2014, 12:33 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
hvladДобавь индекс на поле джойна (x) и удивись :)С индексом rollback отрабатывает нормально, без него - нет :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2014, 13:14 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
Еще один перл (тоже без индекса): Код: plaintext 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. Result: Код: plaintext 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. Трейс гласит, что при этом было всего 5 (пять) апдейтов строк: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2014, 13:34 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
ЗЫ. Проблема возникает только на таком плане: PLAN MERGE (SORT (T NATURAL), SORT (S NATURAL)) Если поменять условие соединения с равенства на такой вот изврат: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2014, 13:52 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
Таблоид, пиши трекеру, будем исправлять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2014, 15:31 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
насколько я понимаю, проблема только в случае: 1) стейтмента MERGE с джойном и многократным обновлением одних и тех же записей (что, грубо говоря, запрещено стандартом) 2) плана MERGE (и наверное HASH тоже) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2014, 15:33 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
dimitr, откуда вообще для оператора MERGE план MERGE/HASH? Насколько я помню оператор MERGE делает right outer join, а FB даже в тройке вроде как не умеет HASH/MERGE для outer join ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2014, 15:39 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
dimitrпиши трекеруНаписал, CORE-4618 . Пусть читает :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2014, 15:41 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
dimitrмногократным обновлением одних и тех же записей (что, грубо говоря, запрещено стандартом)Почему нельзя хотя бы в 3.0 ввести это требование стандарта и вываливать исключение при таком "странном" обновлении данных ? Ну всё равно же полной совместимости с 2.5 по SQL/PSQL коду не будет, хотя бы из-за стабильности курсора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2014, 15:45 |
|
||
|
Результаты после merge + rollback'a... отличаются от первоначальных (2.5 & 3.0). Why ??
|
|||
|---|---|---|---|
|
#18+
ТаблоидПочему нельзя хотя бы в 3.0 ввести это требование стандарта и вываливать исключение при таком "странном" обновлении данных ? Можно, но бага всё равно придётся фиксить, поскольку рекурсивными триггерами он, скорее всего, тоже может воспроизводиться. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2014, 15:59 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38814413&tid=1563183]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
149ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 451ms |

| 0 / 0 |
