|
компарер, бага
|
|||
---|---|---|---|
#18+
имеется вот такая табличка: Код: 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.
хотя по идее для проблемы будет достаточно и такой: Код: sql 1. 2. 3.
Визуально в скрипте одинаково выглядят, что источник, что назначение, но если приглядеться на приложенной картинке видна разница и скрипт генерируется вот такой: Код: sql 1. 2.
И, вестимо, орет об ошибке. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2017, 11:55 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
FB 3 сборка 32794, базы на одном сервере, эксперт скачивал сегодня версия 2017,10,3,1. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2017, 12:07 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
Прикольно. А дефолтовые коллейты в базах разные что-ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 11:11 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
одинаковые, вин1251. Обе базы были недавно отресторены из 2.5 (каждая из своего GBK, метаданные в них должны быть одинаковыми, данные немного разнятся), таблиц там чутка за тысячу, косяк вылез на одном поле одной таблицы, все остальные без запинок, компарер не пытался массово ровнять коллейты. Для проверки создал в обеих базах по варчар полю, без указания чарсетов-коллейтов, оба создались с win1251/win1251 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 12:07 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
Однако же записи в RDB$FIELDS для этих доменов различаются в части коллейта, судя по скриншотам. Вот и хотелось бы знать, в чем именно там разница. Если я просто создам две базы с таблицей по твоему скрипту - разницы, очевидно, не будет никакой. И, соответственно, компарер ничего не найдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 13:56 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
заглянул в источник select r.rdb$field_name, r.rdb$collation_id from rdb$fields r where r.rdb$field_name = 'RDB$90619' там rdb$collation_id 0 заглянул в назначение select r.rdb$field_name, r.rdb$collation_id from rdb$fields r where r.rdb$field_name = 'RDB$64157' там rdb$collation_id null в остальных полях ничего интересного не нашлось (на мой взгляд). Если чего надо для прояснения картины ты скажи, нарою что скажешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 14:26 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
Да пока достаточно. NULL в rdb$collation_id - явная неожиданность для компарера. Завтра попробую воспроизвести. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 15:20 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
Провел тут еще изыскания, оказалось, что в основной рабочей базе (фб 2.5) это поле win1251 и чарсет и коллейт, а вот в базе второй ноды кластера тоже на фб2.5 оно описано уже как VARCHAR(100) CHARACTER SET NONE COLLATE NONE, по какой-то причине старый компарер (используется твоя либа, только граф обвязка своя) это безобразие не заровнял, новый ровняет правильно: ALTER DOMAIN RDB$90619 TYPE VARCHAR(100) CHARACTER SET WIN1251; Но после того, как обе базы прошли бэкап/рестор чарсет NONE сгинул и поселился null ставший неожиданностью для эксперта. Вопрос почему сгинул NONE при миграции Б/Р с двойки на трешку похоже надо писать трекеру файрберда, попробую сделать тесткейз. А вот что делать с null-ом в коллейте похоже таки к тебе. Насколько я могу судить NULL в коллейте возник не от ручной правки системных таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 16:20 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
Ivan_Pisarevskyновый ровняет правильно: ALTER DOMAIN RDB$90619 TYPE VARCHAR(100) CHARACTER SET WIN1251 Что-то ты меня запутал... У тебя вон выше явно некорректный ALTER с двумя CHARACTER SET нарисован. И в скриншотах никакого NONE нет. Так кто на ком стоял кто правильно ровняет? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 16:42 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
Есть 2 исходных базы фб2.5 и фб2.5 они в работе. Далее обе эти базы я прогоняю через штатный бэкап-рестор и получаю пару уже троешных баз. На свежеотресторенные базы натравливаю компарер и получаю указанный в первом посте некорректный стэйтмент. После того, как ты говоришь что нулл там неожидан, я пытаюсь понять как же он там возник? Беру исходные базы до рестора и исследую, результат исследования выше, в частности пробую скомпарить исходные быза компарером из состава свежескачанного эксперта. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 16:57 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
IBExpertИ в скриншотах никакого NONE нет.NONE сгинул в процессе миграции, скриншоты от трешки. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 17:01 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
вот так было в 2.5 до рестора ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 17:05 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
создаю базу, таблицу и поле /******************************************************************************/ /*** Generated by IBExpert 2017.10.3.1 11.10.2017 17:11:51 ***/ /******************************************************************************/ SET SQL DIALECT 3; SET NAMES WIN1251; CREATE DATABASE 'test.gdb' USER 'SYSDBA' password 'masterkey' PAGE_SIZE 8192 DEFAULT CHARACTER SET WIN1251 COLLATION WIN1251; CREATE GLOBAL TEMPORARY TABLE BH_BOOK_BUY_MERGE_GTT ( DATE_GET_UCHET VARCHAR(100) CHARACTER SET NONE ) ON COMMIT DELETE ROWS; Далее открываю эксперт и правлю чарсет (мышекликами), под капотом оно делает это: update RDB$FIELDS set RDB$CHARACTER_SET_ID = 52 where RDB$FIELD_NAME = 'RDB$1' привет null в коллейте. В общем откуда null более менее ясно, а вот куда делся NONE пока загадка, воспроизвести не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 17:41 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
С NULL в RDB$COLLATION_ID я погорячился - это нормально. В общем, воспроизвести не удалось. Сделал две базы с твоей таблицей, добился картинок как на первом скриншоте - компарер ничего не находит. Откуда он NONE в твоем случае взял - совершенно непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2017, 04:08 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
в принципе базы под рукой обе пока, только весят больше 50 гиг каждая... попробую оставить одну таблицу и сделать б/р, чтоб были пригодны послать почтой. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2017, 10:57 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
приготовить воспроизводимый пример приемлемого размера так и не удалось, после бэкап-ресторов оно ёк и все чинно-благородно. Если будут рецидивы, то стучаться буду сразу с воспроизводимым примером, чтоб попусту воздух не сотрясать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2017, 15:05 |
|
компарер, бага
|
|||
---|---|---|---|
#18+
Привет, Александр! создаем табличку и навешиваем на нее триггер. В итоге эксперт генерирует скрипт ниже, оставил в нем только интересные части. Суть: в триггере есть конструкция update or insert без кляузы matching а создание ПК идет после триггера в итоге облом-с. Надо бы ПК создать пораньше. Спасибо. Код: 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2017, 07:40 |
|
|
start [/forum/topic.php?fid=42&msg=39550653&tid=1599028]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
146ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 266ms |
0 / 0 |