|
баг?
|
|||
---|---|---|---|
#18+
SS 2.5.4 26856, 2.5.3 было тоже самое. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Результат: res=~test~~test ~ Откуда взялся пробел? И почему тогда if не срабатывает? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 15:26 |
|
баг?
|
|||
---|---|---|---|
#18+
ZZTorОткуда взялся пробел? Из типа данных CHAR(), который имеют все строковые литералы. STFF. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 15:37 |
|
баг?
|
|||
---|---|---|---|
#18+
ZZTorИ почему тогда if не срабатывает?См. сравнение строковых литералов. Хочешь сравнение с пробелами - ставь LIKE. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 15:41 |
|
баг?
|
|||
---|---|---|---|
#18+
WildSeryZZTorИ почему тогда if не срабатывает?См. сравнение строковых литералов. Хочешь сравнение с пробелами - ставь LIKE. Это не сравнение строковых литералов. Это потому что функция iif возвращает тип CHAR(N), а N выбирает как максимум длин второго и третьего параметра. А тип CHAR в параметрах, как правильно отметил Dimitry Sibiryakov, получился именно потому что в FB строковые константы имеют тип CHAR(N). Пустая строка '' будет иметь тип CHAR(0), хотя сам такой тип описать не удастся. Ещё пример: Код: sql 1.
Тут тип (VARCHAR) берётся из одного параметра (с типом VARCHAR(10)), а длина из другого (с типом CHAR(20)). Итого имеем VARCHAR(20). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 23:46 |
|
баг?
|
|||
---|---|---|---|
#18+
fb userWildSeryпропущено... См. сравнение строковых литералов. Хочешь сравнение с пробелами - ставь LIKE. Это не сравнение строковых литералов. Хотя да, это ещё и сравнение варчаров. Я всё ещё не могу поверить в то, что можно было так реализовать сравнение. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Ну и естественно нельзя в unique varchar-поле вписать 'A' и 'А ', т.к. эти значения равны. А дальше немного неконсистентно: Код: 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.
Получается что в inner join иногда 'ww' <> 'ww ', а иногда 'ww' = 'ww '. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 01:04 |
|
баг?
|
|||
---|---|---|---|
#18+
Способ сравнения строк зависит от коллайта. По умолчанию во всех колейтах оно не чувствительно к завершающим пробелам. Это кстати так стандарт диктует. Но если ты уж сильно хочешь чтобы конечные пробелы учитывались, то это можно сделать. См. оператор CREATE COLLATION опции [NO PAD | PAD SPACE] fb user Код: sql 1. 2. 3. 4. 5.
На какой версии сервера пробовал? Если на тройке, то подозреваю, что тут HASH JOIN немного не так отработал. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 07:09 |
|
баг?
|
|||
---|---|---|---|
#18+
Симонов ДенисНа какой версии сервера пробовал? На снапшоте тройки. На 2.5 всё хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 08:40 |
|
баг?
|
|||
---|---|---|---|
#18+
Симонов ДенисНо если ты уж сильно хочешь чтобы конечные пробелы учитывались, то это можно сделать. См. оператор CREATE COLLATION опции [NO PAD | PAD SPACE] И просто указать этот COLLATION в DECLARE VARIABLE? И в примере из первого поста сравнение "if (path<>path2)" заработает как нужно? А если этот COLLATION назначить дефолтным, то можно его для переменных не указывать? И даже конструкции без переменных, вроде "cast('A' as varchar(10)) = cast('A ' as varchar(10))" заиспользуют этот COLLATION? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 09:06 |
|
баг?
|
|||
---|---|---|---|
#18+
fb userСимонов ДенисНа какой версии сервера пробовал? На снапшоте тройки. На 2.5 всё хорошо. это бага HASH JOIN. В 2.5 для этого запроса используется MERGE JOIN. Скорее всего вычисляется хэш от необработанной строки. Хеши дают разные результаты придёт dimitr скажет точнее. А может пошлёт в трекер. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 09:34 |
|
баг?
|
|||
---|---|---|---|
#18+
fb user, ну так попробуй. Ты же уже столько экспериментов тут наставил чтобы показать странности. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 09:35 |
|
баг?
|
|||
---|---|---|---|
#18+
fb user, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 09:43 |
|
баг?
|
|||
---|---|---|---|
#18+
Симонов Денис, Код: sql 1. 2. 3. 4. 5. 6.
как default collation для базы сменить? Я как только не пытался: Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 10:34 |
|
баг?
|
|||
---|---|---|---|
#18+
fb user, для базы никак. Можно изменить для чарсета. См. оператор ALTER CHARACTER SET Для трёшки можно изменить чарсет для БД по умолчанию, но не коллейт. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 10:37 |
|
баг?
|
|||
---|---|---|---|
#18+
Понял, оказывается collation в CREATE DATABASE - это не collation для базы, а дефолтный collation для чарсета. Поэтому меняется так: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 10:41 |
|
баг?
|
|||
---|---|---|---|
#18+
fb userСимонов ДенисНа какой версии сервера пробовал? На снапшоте тройки. На 2.5 всё хорошо. вообще-то у меня на 2.5.5 тоже воспроизводится. Это бага в методах соединения HASH/MERGE JOIN. Ибо стоит создать индекс и поведение меняется с точностью до наоборот. Или заменить JOIN на LEFT JOIN. твой эксперимент Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Код: sql 1. 2. 3. 4. 5. 6.
для fb3 Код: plaintext 1. 2. 3. 4.
для fb 2.5.5 Код: plaintext 1. 2. 3. 4.
OK. Заменяем на LEFT JOIN. Здесь пока оптимизатор умеет воспользоваться только NESTED LOOP Код: sql 1. 2. 3. 4. 5. 6.
для fb3 и fb 2.5.5 Код: plaintext 1. 2. 3. 4. 5. 6.
Если раскоментировать создание индекса, то результат будет такой же как для LEFT JOIN, ну за исключением плана. В трекер пойдёшь? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 10:52 |
|
баг?
|
|||
---|---|---|---|
#18+
fb userПонял, оказывается collation в CREATE DATABASE - это не collation для базы, а дефолтный collation для чарсета. Поэтому меняется так: Код: sql 1.
И всё работает, только IBExpert перестаёт открывать в этой базе таблицы, любые (даже с одним INT полем), молча, и перезапуск не помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 10:58 |
|
баг?
|
|||
---|---|---|---|
#18+
fb userfb userПонял, оказывается collation в CREATE DATABASE - это не collation для базы, а дефолтный collation для чарсета. Поэтому меняется так: Код: sql 1.
И всё работает, только IBExpert перестаёт открывать в этой базе таблицы, любые (даже с одним INT полем), молча, и перезапуск не помогает. А вот если вернуть обратно, то после переконнекта таблицы открываются: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 11:01 |
|
баг?
|
|||
---|---|---|---|
#18+
Симонов ДенисВ трекер пойдёшь? Нет пока. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 11:09 |
|
баг?
|
|||
---|---|---|---|
#18+
fb user, в каком смысле работает и в каком перестаёт открывать таблицы. Ты имеешь ввиду что запросы работают, а таблицы (как объекты метаданных) на закладке данные ничего не показывает? Есть смысл проверить в isql. Если там всё пашет, то это бага IBE ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 11:13 |
|
баг?
|
|||
---|---|---|---|
#18+
Симонов Денисв каком смысле работает и в каком перестаёт открывать таблицы. Не открывает по даблклику на таблице. Ошибка в IBExpert. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 00:46 |
|
баг?
|
|||
---|---|---|---|
#18+
Симонов Денисfb userпропущено... На снапшоте тройки. На 2.5 всё хорошо. вообще-то у меня на 2.5.5 тоже воспроизводится. Это бага в методах соединения HASH/MERGE JOIN. Ибо стоит создать индекс и поведение меняется с точностью до наоборот. Или заменить JOIN на LEFT JOIN. твой эксперимент Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Код: sql 1. 2. 3. 4. 5. 6.
для fb3 Код: plaintext 1. 2. 3. 4.
для fb 2.5.5 Код: plaintext 1. 2. 3. 4.
OK. Заменяем на LEFT JOIN. Здесь пока оптимизатор умеет воспользоваться только NESTED LOOP Код: sql 1. 2. 3. 4. 5. 6.
для fb3 и fb 2.5.5 Код: plaintext 1. 2. 3. 4. 5. 6.
Если раскоментировать создание индекса, то результат будет такой же как для LEFT JOIN, ну за исключением плана. В трекер пойдёшь? dimitr, это бага? Если да то известна ли она? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 14:27 |
|
баг?
|
|||
---|---|---|---|
#18+
Симонов Денис, бага, заносите в трекер ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 14:56 |
|
|
start [/forum/topic.php?fid=40&msg=39026839&tid=1562671]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 253ms |
total: | 390ms |
0 / 0 |