|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
При создании таблицы "range" получаю ошибку: This operation is not defined for system tables. unsuccessful metadata update. key size exceeds implementation restriction for index "nrj_range__uq". why? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
P.S. Создание таблицы "rr" опущено, т.к. в ней нет ничего интересного. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 13:44 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev, версия FB? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 14:03 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Симонов Денис, сори, забыл... Версия сервера: 2.5.6 (WI-V6.3.6.26980 Firebird 2.5) Версия клиента: 2.5.6.27008 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 14:09 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev, что-то ты не договариваешь. Не вижу в твоих метаданных nrj_range__uq ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 14:13 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Симонов Денис, это "range__uq", в названии которого я забыл удалить лишние символы. Суть от этого не меняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 14:19 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev, с коллейтом UNICODE_CI_AI 1 символ может занимать до 6 байт. В принципе расчёт показывает что вмещаться в лимит должно, но на всякий случай попробуй увеличить размер страницы до 8192. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 14:22 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_devСимонов Денис, это "range__uq", в названии которого я забыл удалить лишние символы... Где там пробелы, я - не увидел. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 14:23 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Симонов Денис, с размером страницы экспериментировать не стал. У нас есть очень консервативные люди, которые подобное ограничение не поймут, а тратить силы, нервы и время на объяснения я не готов. Убрал вообще ключевое слово COLLATE, чтоб он был по умолчанию и тоже возникли кое-какие странности. При VARCHAR(240) возникает та же ошибка, хотя 1024 / 4 = 256, а при VARCHAR(200) сервер проглотил и сказал, что всё Ok. Может дело в хитром алгоритме индексирования составных индексов, содержащих символы? Что-нибудь типа: Код: plsql 1.
? ИМХО, такое предположение хоть как-то объясняет нехватку размера индекса при PAGESIZE: 4096 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 15:09 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
поправочка Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 15:21 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev, http://ibase.ru/files/firebird/langref25rus/index.html#langref25-ddl-index-create смотри табличку "Длина индексируемой строки и набор символов" В PDF версии она тоже есть. И таки для составных индексов там что-то ещё учитывается. Может выравнивание. А страницу зря не хочешь увеличить. Для БД в UTF-8 такой размер страницы слишком маленький. Не на количестве символов, так на глубине индексов на грабли наступишь. P.S. В 3.0 по умолчанию страница уже 8192. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 15:52 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Симонов Денис, спасибо, учту. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 15:57 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_devс размером страницы экспериментировать не стал. У нас есть очень консервативные люди современная БД с размером страницы меньше 8к это ад, трэш, угар и тормоза. ФБ начиная с 2.0 (или может даже с 1.5) при restore автоматом поднимет размер страницы с 1к или 2к до 4к, и меньше 4к делать не будет. Но страница 4к - медленнее, чем 8к. Нынче 8к или 16к - оптимум. Со страницей 32к тесты будут, опубликуем. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 16:47 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Вопрос-то не в этом, а том почему ключ получается такой большой. Может, баг где-то в расчёте длины, а может ещё где... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 16:49 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_devRight('000000' хрен знает, во что это превращается. И еще раз - страница в 1024 байт, это просто ахтунг нынче. никакой консерватизм это не оправдывает. Мы когда такие базы чиним, делаем б-р с увеличением размера страницы до 4-8к. И потом клиенты сразу говорят - ой, оно еще и быстрее работать стало! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 18:13 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdvИ еще раз - страница в 1024 байт У него 4096. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 18:39 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, да, но он же пишет "При VARCHAR(240) возникает та же ошибка, хотя 1024 / 4 = 256, а при VARCHAR(200) сервер проглотил и сказал, что всё Ok" в общем, х.з. p.s. а вот что самое ужасное, это вот это Код: sql 1.
ну вырви-глаз просто. Я бы за это применял инструменты по месту . ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 18:51 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdvон же пишет 4096 / 4 = 1024 - размер ключа. 1024 / 4 = 256 - размер utf-8 строки в символах. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 18:56 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, максимальный размер ключа на 9 байт меньше 1/4 страницы. Т.е. 4096 / 4 - 9 = 1024 - 9 = 1015 1015 / 4 = 253 в utf-8 но у него индекс ещё и составной. Там возможно куда-то ещё байты тратятся. И явно не 2 байта как можно было бы предположить. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 19:28 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Симонов Денисявно не 2 байта как можно было бы предположить. Ключ для smallint это double, 8 байт. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 19:32 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
для композитов все сложнее и оверхед там больше ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 19:46 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
dimitr, А примерно узнать эвристику можно? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 20:17 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
длина каждого сегмента (плюс один байт для DESC) плюс догонка от 1 до 4 байт на сегмент. И весь ключ потом до 8 байт вверх округляется. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 22:07 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdv Код: sql 1.
ну вырви-глаз просто. Я бы за это применял инструменты по месту . Мне так удобнее и привычнее. Предпочитаю видеть все ограничения сразу в одном месте, а не бродить глазами по хвостам полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 22:34 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСимонов Денисявно не 2 байта как можно было бы предположить. Ключ для smallint это double, 8 байт. В смысле BIGINT ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 22:36 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_devВ смысле BIGINT ? DOUBLE Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 22:37 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, и тут я понял, что определенно не хочу знать, с какой целью используется тип хранения десятичных значений двойной точности при использовании целочисленного значения индекса. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 22:44 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev, ну зато ты другое хочешь знать. А без понимания как хранятся ключи индекса, не поймёшь откуда ограничения берутся ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 22:54 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_devМне так удобнее и привычнее. Предпочитаю видеть все ограничения сразу в одном месте, а не бродить глазами по хвостам полей. я про злое..чие двойные кавычки. Сразу видно человека, который таблицы мастрячит в дизайнере старого ибэксперта, без включенной опции "always capitalaize database object names", которая включена по умолчанию уже несколько лет как. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2016, 23:05 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
dimitrдлина каждого сегмента (плюс один байт для DESC) плюс догонка от 1 до 4 байт на сегмент. И весь ключ потом до 8 байт вверх округляется.Гм... это ты сортировку описал. А для мультисегментного индекса несколько иначе: после каждых 4-х байт данных добавляется байт с номером сегмента, длина сегмента выравнивается до 5-ти байт. Т.е. для ключа (SMALLINT, VARCHAR(158) CHARACTER SET UTF8 COLLATE UNICODE_CI_AI) получим 1-ый сегмент: (sizeof(double precision) + 4 - 1) / 4 * 5 = 11 / 4 * 5 = 10 2-ой сегмент: (158 * 6 + 4 - 1) / 4 * 5 = 951 / 4 * 5 = 1185 Вместе: максимальная длина ключа - 1195 байт, и это больше 1/4 страницы в 4КБ ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 01:27 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdvСразу видно человека, который таблицы мастрячит в дизайнере старого ибэксперта, без включенной опции "always capitalaize database object names", которая включена по умолчанию уже несколько лет как. Никогда не пользовался CASE средствами (построителями), всё, по привычке, пишу в скрипте. Двойными кавычками пользуюсь из-за того, что названия объектов БД предпочитаю строчными буквами, а во входных параметрах процедур использовать как строчные, так и прописные буквы (например, "objectId"). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 09:03 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdv, почему вас так раздражают двойные кавычки? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 09:13 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_devkdv, почему вас так раздражают двойные кавычки?Воспользуйтесь поиском, тема двойных кавычек разжёвана неоднократно. Не то, чтобы это было плохо само по себе, но есть особенности, которые в нетренированных руках приводят к какой-нибудь очередной лаже, с которой тут же бегут на форум жаловаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 09:20 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
WildSeryНе то, чтобы это было плохо само по себе, но есть особенности, которые в нетренированных руках приводят к какой-нибудь очередной лаже, с которой тут же бегут на форум жаловаться. За полтора мегабайта исходников на C++ при написании интерфейсной библиотеки ORM системы, еще пока ни разу с подобными косяками не сталкивался. Все двойные кавычки внутри сишных строк прекрасно экранируются через backslash. Конечно, немного теряется читабельность таких строк, но я уже привык. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 09:38 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Дело не в экранировании. Просто вы через призму ORM c "проблемами" не столкнулись (ещё).. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 10:32 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, мне было бы интересно посмотреть на пример "проблемы". Есть что-нибудь на примете? По поиску ничего экстраординарного найти не могу. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 10:36 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev> мне было бы интересно посмотреть на пример "проблемы". rdb_dev> По поиску ничего экстраординарного найти не могу. Да хоть create table (id int, "id" int, "Id" int, "iD" int) Как только у вас разработчики (или Вы один?) начнут фигачить запросы мимо ORM "напрямую" - Вы сразу почувствуете вкус жизни. Хотя по идее, Вы уже на уровне IBE, при разработке могли наткнуться на различные неудобства. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 10:43 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамДа хоть create table (id int, "id" int, "Id" int, "iD" int) Абсолютно жизнеспособный DDL, равносильный: Код: plsql 1. 2. 3. 4. 5. 6. 7.
Гаджимурадов РустамКак только у вас разработчики (или Вы один?) начнут фигачить запросы мимо ORM "напрямую" - Вы сразу почувствуете вкус жизни. Не начнут. Для доступа к элементам ORM системы сделана библиотека с объектным интерфейсом на виртуальных методах, которая и фигачит запросы к БД. Гаджимурадов РустамХотя по идее, Вы уже на уровне IBE, при разработке могли наткнуться на различные неудобства. Неа. ) CASE средствами пользуюсь только для мелких правок в уже существующих объектах БД, да и то не всегда, а всё остальное ручками в sql скрипте. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 11:06 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev> Абсолютно жизнеспособный DDL, равносильный: rdb_dev> Не начнут. Ну-ну. Впрочем, каждый сам хозяин своим шишкам на лбу. > Никогда не пользовался CASE средствами > Неа. ) CASE средствами пользуюсь Пациент путается в показаниях. (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 11:26 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамПациент путается в показаниях. (с) Не придирайся к словам! :) Имелось в виду, что я не пользуюсь CASE средствами для создания объектов БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 11:30 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамrdb_dev> Абсолютно жизнеспособный DDL, равносильный: rdb_dev> Не начнут. Ну-ну. Впрочем, каждый сам хозяин своим шишкам на лбу. В моих правилах именования столбцов таблиц не использовать прописные (заглавные) буквы. Только строчные. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 11:35 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev> В моих правилах именования столбцов О, далеко пойдёшь. Возвращайся, когда их начнут нарушать, а ты вовремя не заметишь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:04 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, нет таких. Непосредственно метаданные БД меняю только я, а другие разработчики получают доступ к базе только через библиотеку, так как вообще не в курсе схемы данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:10 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамО, далеко пойдёшь. Я заметил, что мои правила сильно отличаются от тех, что приняты у большинства здесь отмечающихся. К примеру, все ключевые слова DML/DDL, кроме названий функций, предпочитаю писать исключительно прописными буквами (здесь предпочитают строчные); названия функций - первая прописная, остальные строчные; имена таблиц и полей - все строчные буквы, разделяя слова символом подчеркивания. Такая привычка осталась со времен моего занятия MS SQL Server и изменить привычке ой как не просто... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:19 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
о! у нас на форуме новый храбрый заяц. который, как он сам утверждает, зашугал весь лес... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:20 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Мимопроходящий, в каком смысле "зашугал"? Что именно заставило тебя так думать? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:21 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
hvladА для мультисегментного индекса несколько иначе... Спасибо, очень познавательно. Но это немного разорвало мне шаблон. Всегда думал, что для хранения SMALLINT в индексе нужно 2 байта (ну плюс всякие оверхеды, выравнивания там и т.д.) Но никак не 8 байт. Пожалуйста, в общих чертах объясните, почему так? Ну или ссылкой бросьте где написано. Потому что на первый взгляд это как-то... странно. Да, и это про какую версию ODS? Или это так со времен борланда? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:33 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Andrey_Да, и это про какую версию ODS? Или это так со времен борланда? Это со времён Джима. Изначальный дизайн. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:37 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Andrey_Но это немного разорвало мне шаблон. Всегда думал, что для хранения SMALLINT в индексе нужно 2 байта (ну плюс всякие оверхеды, выравнивания там и т.д.) Но никак не 8 байт. Пожалуйста, в общих чертах объясните, почему так? Ну или ссылкой бросьте где написано. Потому что на первый взгляд это как-то... странно.Все числовые типы данных (кроме BIGINT) приводятся к double в ключах индекса и нормализуются. Это позволяет не перестраивать индекс при смене одного числового типа данных на другой. Префиксная компрессия и отбрасывание нулей в хвосте ключа позволяет хранить в ключе минимальное кол-во значащих байт, а не все 8. Сомневающихся убедит gstat -r ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 12:54 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_devК примеру, все ключевые слова DML/DDL, кроме названий функций, предпочитаю писать исключительно прописными буквами (здесь предпочитают строчные); Я бы не говорил за всех. Здесь не любят квотированные идентификаторы. А в каком регистре написаны ключевые слова и идентификаторы всем абсолютно пофиг. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 13:08 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Симонов ДенисЗдесь не любят квотированные идентификаторы. Да, уже заметил... Причем, можно сказать, не просто "не любят", а люто ненавидят. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 13:13 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
ибо сказано в Писании - дураков и на паперти бьют... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 13:22 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
hvlad, спасибо. hvladЭто позволяет не перестраивать индекс при смене одного числового типа данных на другой.Ну... какая-то сомнительная цель. Скорее уж побочный бонус. hvladПрефиксная компрессия и отбрасывание нулей в хвосте ключа позволяет хранить в ключе минимальное кол-во значащих байт, а не все 8.А с учетом выравнивая сегмента, все равно (да же при 2 байтах на smallint) было бы минимум 5. Хотя это уже не 10 как сейчас, но и не 2 как хотелось бы в идеальном мире. А кстати, это всё для индекса по нескольким полям. А в индексе по одному полю? Там тоже идет дробление значения на сегменты? Опять же, в идеальном мире для хранения ключа до 255 байт достаточно 1 байта на длину. hvladСомневающихся убедит gstat -r ;)Я не сомневаюсь, я интересуюсь :) P.S. Ха, кстати стало понятно почему длина сегмента 5 байт, а не 4 или скажем 7 - чтобы double precision гарантировано поместилось в 2 сегмента. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 13:25 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Мимопроходящий, если кто-то попытается присвоить имя "id" (ID) полю, отличному от того, что должно быть первичным ключом, за это и раз_пять не грех... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 13:34 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev, про двойные кавычки - впервые вижу человека, который сам, в скриптах, пишет не create table test, а create table "test", причем умышленно, чтобы было именно test, а не TEST. Мне кажется, это какой-то с-шный закидон. Люто ненавидят тут двойные кавычки потому, что - это засоряет вывод DDL и DML - при любом РУЧНОМ написании запросов есть риск написать идентификатор не с тем регистром букв. - обычно люди на это напарываются по не знанию, а не по умыслу - при ручном написании запросов ПРОЩЕ без двойных кавычек, и я сильно сомневаюсь, что этот тезис можно оспорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 14:20 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdv> Мне кажется, это какой-то с-шный закидон. Не надо на сишников наговаривать, у них такого закидона нет. P.S. В списке кодировки забыл перечислить. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 14:23 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамНе надо на сишников наговаривать, у них такого закидона нет. Как это нет? Си изначально чувствителен к регистру как конструкций языка, так и идентификаторов. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 14:27 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev, так и имен каталогов и файлов в Линуксе (муа-ха-ха). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 14:29 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev> Си изначально чувствителен к регистру И? Часто Вы идентификаторы в Си кавычили? :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 14:33 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdvпро двойные кавычки - впервые вижу человека, который сам, в скриптах, пишет не create table test, а create table "test", причем умышленно, чтобы было именно test, а не TEST.Всё, когда-то, впервые. :) kdvМне кажется, это какой-то с-шный закидон.Возможно... Не задумывался над этим. kdvЛюто ненавидят тут двойные кавычки потому, что - это засоряет вывод DDL и DMLВ некоторых популярных rdbms этот вывод "засоряется" изначально, так как система принимает исключительно квотированные имена (это могут быть и не двойные кавычки). Для моего личного визуального восприятия удобнее котированные. kdv- при любом РУЧНОМ написании запросов есть риск написать идентификатор не с тем регистром букв.В моем случае это возможно только с идентификаторами входных параметров хранимых процедур. Особо не парит. kdv- обычно люди на это напарываются по не знанию, а не по умыслу - при ручном написании запросов ПРОЩЕ без двойных кавычек, и я сильно сомневаюсь, что этот тезис можно оспорить.Тут нечего оспаривать. Кому как удобно и кто как привык, тот так и лепит. В контексте возможности использования квотирования идентификаторов в 3-ем диалекте FirebirdSQL навеяло Маяковским: Послушайте! Ведь, если звезды зажигают — значит — это кому-нибудь нужно? Значит — кто-то хочет, чтобы они были? Значит — кто-то называет эти плевочки жемчужиной? Как точно... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 14:43 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамИ? Часто Вы идентификаторы в Си кавычили? :) Зачем их "кавычить", если Си изначально регистрочувствителен, а не по принуждению? Где логика? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 14:45 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdvrdb_dev, так и имен каталогов и файлов в Линуксе (муа-ха-ха). Пробовали в командной оболочке под win или nix использовать в качестве параметров пути с пробелами без квотирования? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 14:48 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev, это уже специфика. идентификатор с пробелом по другому невозможно написать. другое дело, что идентификаторы с пробелом это результат использования квотирования, а не наоборот. То есть, квотирование ДОПУСКАЕТ появление идентификаторов с пробелами, цифрами в начале, и прочей фигней. Собственно, я ортодокс, и использую следующие доводы: когда я разговариваю, у меня в голове нет строчных и прописных букв. У меня есть просто слова. И мне не надо их закавычивать. В письменной речи прописная буква нужна для акцента на начале предложения, или на обозначении имен собственных и нарицательных. При этом для ботинка написание ботинок или Ботинок не имеет никакого значения, он так и останется ботинком (а в с почему-то нет). А значит, закавычивание, и даже регистрочувствительность идентификаторов - это попытка обойти какие-то препятствия (включая те самые идентификаторы с пробелом). "Вам" "понравится" "такой" "текст", "в" "книге" "или" "еще" "где-то"? Сомневаюсь. Так зачем тащить в код ЯП, SQL и прочего вот эти искуственные конструкции и условности? Или что, в языке С/C++ есть квотирование идентификаторов? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 15:13 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev, резюмирую: с моей точки зрения регистрочувствительность идентификаторов - это маразм. А раз так, то нет необходимости пользоваться квотированием. p.s. для усиления эффекта предлагаю почувствовать разницу: select, SELECT, Select. Здесь почему-то вопросов не возникает? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 15:18 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Этот человек точно разработчик из Red Soft?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 15:21 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdv, поясню еще раз - для моего визуального восприятия удобнее идентификаторы (в т.ч. названия объектов в дереве объектов IBExpert и полей таблиц) из строчных символов, ради которых я вполне могу мириться с квотированием. У Вас одно субъективное мнение на этот счет, у меня другое - вам легче воспринимать строчные символы, мне - прописные. Здесь не о чем, вообще, спорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 15:21 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_devдля моего визуального восприятия удобнее идентификаторы (в т.ч. названия объектов в дереве объектов IBExpert и полей таблиц) из строчных символов, ради которых я вполне могу мириться с квотированием. Ты не поверишь, но без кавычек идентификаторы в запросах тоже можно писать строчными буквами. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 15:23 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, не имею никакого отношения к Red Soft. Это конкуренты FirebirdSQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 15:23 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, в запросах да, можно. Собственно, внутри ХП, в "DECLARE VARIABLE" я так и делаю, но идентификаторы входных и выходных параметров у меня квотированные. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 15:25 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdvдля усиления эффекта предлагаю почувствовать разницу: select, SELECT, Select. Здесь почему-то вопросов не возникает?Как на счет дерева объектов IBExpert и имен полей? Я хочу видеть строчные буквы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 15:28 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_devКак на счет дерева объектов IBExpert и имен полей? Суровые челябинские птицеводы не пользуются оглупляторами. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 16:19 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, грубо, предвзято и необоснованно. Возникает вопрос - а нафига же тогда в 3-ем диалекте добавили такую возможность, потратив уйму времени и сил на её создание? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 16:27 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Чтобы соответствовать ANSI SQL стандарту. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 16:31 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Hello, Rdb Dev! You wrote on 8 июня 2016 г. 16:31:54: Rdb Dev> а нафига же тогда в 3-ем диалекте все вопросы к борланду Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 16:32 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, вот жешь глупые пендосы, что писали этот стандарт... Ага? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 16:35 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev, опять возвращаемся к началу. у ИБ-ФБ по умолчанию имена объектов не регистрочувствительные. Регистрочувствительные и всякие извраты можно использовать, обрамляя двойными кавычками. И т.д. Без двойных кавычек будет регистроНЕчувствительное. Да, сервер идентификаторы без квотирования приводит к uppercase. Болит голова от прописных букв? Ну пусть тогда болит от двойных кавычек. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 16:58 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdvДа, сервер идентификаторы без квотирования приводит к uppercase. А мог бы ещё и неприведённые сохранять. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 18:49 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
"Безобразно, зато единообразно" - армейский принцип. Область применения - гораздо шире. P.S. "Case insensitive, but case preserve" - тоже имеет право на жизнь, но зачем усложнять работу сервера? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 18:52 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Basil A. SidorovP.S. "Case insensitive, but case preserve" - тоже имеет право на жизнь, но зачем усложнять работу сервера? Чтобы не обрамлять в двойные кавычки когда нужен case preserve. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 19:08 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
и ещё разЧтобы не обрамлять в двойные кавычки когда нужен case preserve.Это всё замечательно, но серверу-то зачем жизнь усложнять??? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 19:49 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
и ещё раз, эта тема обсуждалась достаточно давно. На текущий момент поздно метаться, потому что create table "test" приведет к появлению таблицы в Rdb$relations с именем test, и там нет никакой информации о том, что это имя должно быть "закавычено". Таким образом, если без добавления специфической информации в rdb$relations сделать case preserve, то автоматически получим, что закавычивать надо абсолютно все, или наоборот, потеряется case sensitive при квотировании. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2016, 22:58 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdvДа, сервер идентификаторы без квотирования приводит к uppercase. Болит голова от прописных букв? Ну пусть тогда болит от двойных кавычек. Таки да! В конечном итоге, моё решение - моя ответственность. Действительно, тут не о чем спорить и перегонять из пустого в порожний. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 02:00 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdvНа текущий момент поздно метаться, потому что create table "test" приведет к появлению таблицы в Rdb$relations с именем test, и там нет никакой информации о том, что это имя должно быть "закавычено". Таким образом, если без добавления специфической информации в rdb$relations сделать case preserve, то автоматически получим, что закавычивать надо абсолютно все, или наоборот, потеряется case sensitive при квотировании. Case preserve, это когда после create table Test из системных таблиц можно достать и TEST и Test. TEST - для движка, Test - для тех кому нужен Test. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 08:54 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
и ещё разkdvНа текущий момент поздно метаться, потому что create table "test" приведет к появлению таблицы в Rdb$relations с именем test, и там нет никакой информации о том, что это имя должно быть "закавычено". Таким образом, если без добавления специфической информации в rdb$relations сделать case preserve, то автоматически получим, что закавычивать надо абсолютно все, или наоборот, потеряется case sensitive при квотировании. Case preserve, это когда после create table Test из системных таблиц можно достать и TEST и Test. TEST - для движка, Test - для тех кому нужен Test. TEST - для движка и тех кому нужен TEST, Test - для тех кому нужен Test. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 08:57 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
и ещё раз, я понимаю, но как ты это обеспечишь одновременно case preserve и quoted case sensitive? разве что доп. флагом в rdb$relations, а его нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 09:00 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdvи ещё раз, я понимаю, но как ты это обеспечишь одновременно case preserve и quoted case sensitive? разве что доп. флагом в rdb$relations, а его нет. Перестал вас понимать. Напишите пример на sql. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 09:03 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdv, к верхнему регистру приводит fbclient или сам сервер? Если сервер, то настройка "сохранять регистр" могла бы указывать серверу при сохранении метаданных не приводить идентификаторы к верхнему регистру, а CASE средства, вычитывая эту настройку с сервера, не квотировали бы и не приводили к верхнему регистру идентификаторы при чтении/записи метаданных. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 09:22 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_dev, в самом сервере то это можно делать если хранить метаданные в UTF8 с нечувствительным к регистру коллейтом. А вот как после этого поведут себя существующие приложения большой вопрос. Обратную совместимость всё таки не следует нарушать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 09:35 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Симонов Денис, в таком случае, "case preserve" надо задавать создавать как параметр соединения, со значением по умолчанию, соответствующем false. Соответственно, если "case preserve" = true, при чтении метаданных CASE средство ничего не квотирует, если false - квотируются идентификаторы, содержащие нижний регистр. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 10:10 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
и ещё разПерестал вас понимать. Напишите пример на sql. господи. при чем тут sql. Попробую на пальцах. create table test - в этом случае сервер делает upper('test') и заносит TEST в rdb$relations create table "Test" - в этом случае сервер не делает upper, и заносит Test в rdb$relations. Сейчас сервер отличает TEST от Test сравнением на равенство с upper(rdb$relation_name). Если они равны - ок. Если не равны, то сравнивается точное значение (квотированное), и если строки не совпадают (например 'test' и 'Test') - будет ошибка "нет такого идентификатора". Таким образом не-квотированные идентификаторы у нас case insensitive, а квотированные - sensitive. Еще раз повторяю, что в rdb$relations у таблицы нет никаких признаков "квотированности". Именно поэтому create table "TEST" эквивалентно create table Test. Допустим, предлагается сделать case preserve. Ок, тогда сервер при сохранении объекта не будет приводить его имя к UPPER. Получается, что мы можем написать select * from Test, но по rdb$relations сервер не сможет понять, к какой именно таблице мы обращаемся - TEST или test. Определить это можно только используя квотирование, но это сразу превращает все в case sensitivity. Опять непонятно? Представьте себе два множества - одно регистронезависимое, где все элементы идентичны, и другое, где все элементы считаются разными (в зависимости от регистра). Как их склеить? rdb_devк верхнему регистру приводит fbclient или сам сервер? Если сервер, то настройка "сохранять регистр" боже ж мой, какой клиент? клиенту вообще пофиг, что вы там пишете и передаете на сервер. Я как раз говорю, что без "настройки" невозможно реализовать case preserve и case sensitivity одновременно. Причем, настройка должна быть не у сервера, и даже не у базы данных, а у таблицы - считать ее имя точным в соответствии с регистром, или наоборот, игнорировать регистр. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 10:15 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Реализовать-то можно, но: 1. Тот ещё геморрой 2. Практически наверняка сломается то, что (хотя бы) читает системные таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 10:45 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdvДопустим, предлагается сделать case preserve. Ок, тогда сервер при сохранении объекта не будет приводить его имя к UPPER. Нужно чтобы одновременно и сохранял оригинальное и приводил к UPPER. Т.е. для пользователей текущее поведение остаётся тем же, но появляется возможность ещё и вытаскивать оригинальный Case из системных таблиц и sqlda. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 10:51 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
... но зашибись будет поведение: Код: sql 1. 2. 3.
Оно точно надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 10:57 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Пардон - оно и сейчас такое же. P.S. Не, не хочу даже квотированных имён ... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 10:59 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Basil A. SidorovРеализовать-то можно, но: 1. Тот ещё геморрой 2. Практически наверняка сломается то, что (хотя бы) читает системные таблицы. 1. Добавить поле RDB$ORIGINAL_NAME в системные таблицы. 2. Опишите что сломается. Я спрашиваю потому, что не вижу как может сломаться то, что мы не меняем. Такое ощущение, что мы говорим про совершенно разные вещи... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 10:59 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
и ещё раз1. Добавить поле RDB$ORIGINAL_NAME в системные таблицыЭто ломает "case preserve", т.к. возвращаться будет "object case", а совсем не то, что я ввёл: Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:03 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
я все это к тому, что без изменений в rdb$relations, только кодом сервера реализовать и то и это не получится. и ещё разНужно чтобы одновременно и сохранял оригинальное и приводил к UPPER. и? откуда все равно знать, что это не квотированный идентификатор? name original TABLE Table Table Table дальше-то как их отличать? Вместо этого можно было бы сделать флаг - квотированное имя, или нет. Create table "table" - квотированное, может быть несколько таких имен в разных регистрах. Create table Table - не квотированное, сохраняем Table, дальше без квотирования регистр игнорируем. И такое имя может быть только одно. select from Table - выбираем из не-квотированного, в любом регистре select from "Table" - задано квотирование, но такого квотированного имени нет, ошибка select from "table" - задано квотирование, такое имя точно есть, ошибки нет. короче, флаг нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:09 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Basil A. SidorovP.S. Не, не хочу даже квотированных имён ... О том и речь. Хочется для create table Test иметь возможность вытащить из системных таблиц не только TEST, но и Test. Всё. И IBExpert потом сделает галку: "Выводить имена системных объектов в original case". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:10 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
и ещё раз, ИМХО, настройка соединения "CASE_PRESERVE" со значением по умолчанию FALSE, должна решить все проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:13 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
и ещё разХочется для create table Test иметь возможность вытащить из системных таблиц не только TEST, но и TestПеределайте свой ЗапросоНаписатель так, чтобы у него была возможность указать "приятный регистр" для "прописных идентификаторов". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:15 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Hello, Basil A. Sidorov! You wrote on 9 июня 2016 г. 11:23:23: Basil A. Sidorov> Переделайте свой ЗапросоНаписатель так, чтобы /у него/ была возможность > указать "приятный регистр" для "прописных идентификаторов".не взлетит. тут программист нужен... (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:23 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_devнастройка соединения "CASE_PRESERVE" уффф... Не решит она ничего. В текущем rdb$relations невозможно будет отличить квотированный от неквотированного идентификаторы. Сейчас можно create table Test create table "Test" если сделать включить "флаг case preserve", то тогда второй оператор выше выдаст ошибку, т.к. уже есть rdb$relation_name = 'Test' p.s. ок, действительно добавлением rdb$relations.rdb$relation_name_original можно получить case preserve, т.е. этот самый "флаг". Но - тогда rdb$relation_name придется использовать только для проверки на upper, т.е. квотированное имя или нет. а выводить всегда из rdb$relation_name_original, причем, обязательно квотировать если Upper(original) <> rdb$relation_name. Только это получается дублирование данных. А если модифицировать rdb$relations (и остальные), то с моей точки зрения проще добавить столбец флага квотированности, чем столбец с дублем имени объекта. Впрочем, для совместимости это наоборот, хуже. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:27 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdv, зачем отличать квотированный идентификатор от неквотированного? Если CASE_PRESERVE=TRUE, все идентификаторы из метаданных читаются как есть и не квотируются, если CASE_PRESERVE=FALSE, идентификаторы из метаданных, содержащие строчные символы, при чтении квотируются. При записи в метаданные алгоритм тоже довольно прост. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:41 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
kdvВ текущем rdb$relations невозможно будет отличить квотированный от неквотированного идентификаторы. Так что это очень удачно, что сейчас ODS 13 свободно доступна для изменений. В том числе и для добавления новых полей в RDB4RELATIONS. Спешите запуллить реквесты! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:46 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_devkdv, зачем отличать квотированный идентификатор от неквотированного?Затем, что нехорошо иметь два объекта, отличающихся только регистром. Правило "взятия кавычки" сделано для того, чтобы "обвесить опасный участок красными флажками". Но пограммисты и тут извратились: "ПОЛЕ"."ТАБЛИЦА" - это ведь так однозначно и определённо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:48 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, мне бы не хотелось чтобы обратная совместимость сломалась в этом месте. И без того переделки существенные будут с учётом перевода метаданных на UTF-8 и увеличения максимальной длины идентификаторов. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:51 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Симонов Денисмне бы не хотелось чтобы обратная совместимость сломалась в этом месте. Если сделать поле с оригинальным написанием идентификатора чисто справочным, никогда не используемым движком, то ничего не сломается. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:55 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Hello, Dimitry Sibiryakov! You wrote on 9 июня 2016 г. 11:56:13: Dimitry Sibiryakov> Если сделать поле с оригинальным написанием идентификатора чисто справочным, никогда не > используемым движком, то ничего не сломается.для "чисто справочного" идентификатора вовсе не обязательно юзать системные таблицы. но это ж придётся НАПРЯГАТЬСЯ, а ТС хочет всё и сразу. желательно вчера. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:57 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСимонов Денисмне бы не хотелось чтобы обратная совместимость сломалась в этом месте. Если сделать поле с оригинальным написанием идентификатора чисто справочным, никогда не используемым движком, то ничего не сломается. Два года назад тема не взлетала: http://www.sql.ru/forum/1083842/hotelka?mid=16139454#16139454 . ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 12:42 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Мимопроходящийно это ж придётся НАПРЯГАТЬСЯ, а ТС хочет всё и сразу. желательно вчера. ТС'у всего-то надо было с размером составного индекса разобраться, но тут, вдруг, разгорелся флейм по поводу квотирования имен таблиц и полей... чОртовы хейтеры! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 12:58 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
rdb_devТС'у всего-то надо было с размером составного индекса разобраться,Четкий, внятный ответ из первоисточника выше был, см. пост Влада. В чем проблема? rdb_devразгорелся флейм по поводу квотирования имен таблиц и полей...Квотированные идентификаторы для мазохистов. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 13:01 |
|
Растолкуйте про ошибку на составной ключ с utf8(unicode_ci_ai)
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyЧеткий, внятный ответ из первоисточника выше был, см. пост Влада. В чем проблема? Ни в чем. Давно разобрались. rdb_devКвотированные идентификаторы для мазохистов. Yes, I am! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 13:06 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1562142]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
128ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 473ms |
0 / 0 |