|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
Есть некая таблица. И в ней один из разработчиков создал поле с именем VALUE, которое является ключевым словом. Услужливый IBExpert безо всякого на то разрешения взял его в кавычки и отработал скрипт. В итоге на этом поле сломалась генерация запросов и еще пара вещей. Я посмотрел в RDB$RELATION_FIELDS - никаких пометок, о том что наименование поля является ключевым словом и к нему надо обращаться через кавычки - не нашел. В связи с этим хотелось бы поговорить с опытными людьми: 1. Имеет ли смысл просить реализовать запрет на уровне сервера на создание имен таблиц/полей и прочего с кавычками? 2. Как найти другие такие поля, без владения списком ключевых слов, который к тому же меняется от версии сервера? Ответ скорее всего - никак, но вдруг. 3. Стоит ли просить разработчиков сделать системную таблицу со списком ключевых слов с флагом RESERVED для данной версии сервера, в т.ч. FUTURE RESERVED? Например, в 2.5.5 туда можно было бы добавить DELETING, INSERTING, UPDATING и пользователи знали бы, что эти слова в будущих версиях будут зарезервированы. То же самое с LOCALTIMESTAMP - в 3.0.3 добавляем как FR, а в 3.0.4 уже как RESERVED. Вплоть до того, что запретить создавать новые поля с пометкой FR. 3. Проверяете ли вы свою БД на предмет таких наименований полей? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 10:56 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
CyberMax, а чем кавычки-то не угодили? Нормальная практика. Все придут к тому, что все поля будут в кавычках. Не знаю, как в стандарте, но в общем-то устоявшееся решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 11:06 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
CyberMax, запрещать создавать не вариант. А вот насчёт виртуальной таблицы со списком ключевых и зарезервированных слов предложение дельное. Попробуй в трекер запулить CyberMaxПроверяете ли вы свою БД на предмет таких наименований полей? Сам налетал на COMMENT в 1.5 потом аукнулось при переходе на 2.5 И на RANK и BODY при переходе на 3.0 З.Ы. Даже если сейчас какой-то фичи в FB нет желательно смотреть что есть стандартного в других СУБД. С RANK я реально протупил, всё таки оконные функции часть стандарта. А вот с BODY уже сложнее, кто же знал что в ФБ пакеты введут ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 11:30 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
KreatorXXI, Ненормальная практика. По крайней мере, в FB. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 11:45 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
Симонов Денис Сам налетал на COMMENT в 1.5 потом аукнулось при переходе на 2.5 Загрузил список ключевых слов и протестил базу. Сработала проверка на COMMENT (про который ты написал) - но я не припомню никаких проблем с этим словом. И сейчас спокойно добавляю поля с таким именем. С удивлением узнал, что NAME - это тоже незарезервированное ключевое слово. IBExpert не выделяет это слово жирным шрифтом, и как-то не думал об этом. Имхо, незарезервированные слова все-таки можно использовать без всяких последствий (без учета перехода в RESERVED в будущем). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 11:52 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
CyberMax, проблем с незарезевироваными ключевыми словами нет, но всё равно стараюсь их избегать. Тот же эксперт может их случайно закавычить. NAME стало ключевым незарезевированым словом в 4.0. Но вот на это я точно забью. В других СУБД уже давно ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 12:01 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
CyberMax KreatorXXI, Ненормальная практика. По крайней мере, в FB. FB в этом плане мало чем отличается от других СУБД. В том же MySql такие слова обязаны заключаться в `` А их утилиты администрирования настойчиво вообще все поля и таблицы в бектики закручивают ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 12:04 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
CyberMax Есть некая таблица. И в ней один из разработчиков создал поле с именем VALUE, которое является ключевым словом. Услужливый IBExpert безо всякого на то разрешения взял его в кавычки и отработал скрипт. В итоге на этом поле сломалась генерация запросов и еще пара вещей. Генерацию запросов и еще пару вещей надо допиливать, чтобы они на такой фигне не ломались, а не на эксперта пенять. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 12:29 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
CyberMax, чутьё на ключевые слова надо вырабатывать. Либо сверять со списком из releasenotes. Я в 1997 году сделал специфическую базу на InterBase 5, после чего из скрипта эта база создается без проблем на всех последующих версиях IB и FB, вплоть до нынешних, без единой проблемы с ключевыми словами. Предугадать появление ключевых слов, аналогичных именам столбцов и таблиц, крайне трудно. Например, global - кто бы знал, что его зарезервируют. KreatorXXIВсе придут к тому, что все поля будут в кавычках. двойные кавычки - зло. Это адски ухудшает читаемость и ручное написание запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 12:39 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
kdv KreatorXXIВсе придут к тому, что все поля будут в кавычках. двойные кавычки - зло. Это адски ухудшает читаемость и ручное написание запросов. Соглашусь. Особенно про читаемость. Какие есть варианты решения проблемы? Посмотрел у себя. Есть поля с именем "Value". Надо было назвать "Value0", "Value1" или "ValueOf..."? Для меня это странное решение. Кавычки - меньшее зло, опять же для меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 13:15 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
KreatorXXI, тоже мне проблема. С DATE, YEAR как то разобрались ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 13:26 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
Симонов Денис, как разобрались? А я где был? Я по-тупому в кавычки обёртываю. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 13:31 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
IBExpert а не на эксперта пенять. Или несколько вариантов на выбор: 1. авто (как сейчас) 2. все в кавычки принудительно 3. все без кавычек принудительно 4. каждый раз спрашивать, когда требуются кавычки. Для себя предпочел бы пункт3. CyberMax 1. Имеет ли смысл просить реализовать запрет на уровне сервера на создание имен таблиц/полей и прочего с кавычками? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 13:34 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
KreatorXXI, в смысле как? Я имею ввиду разобрались какие имена полям придумывать. Просто тупо не называю так поля, приходится голову включать чтобы имя поля как-то менее абстрактно отражало его смысл ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 13:37 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, такой триггер реализовать весьма не тривиально. Потому что в этом триггере ты максимум получишь имя объекта метаданных и текст SQL запроса. То есть придётся парсить запрос на предмет где там должно быть ключевое слово, а где это имя поля. Да ещё и придётся переписывать этот триггер каждый раз при миграции на новую версию ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 13:41 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
kdvдвойные кавычки - зло. Это адски ухудшает читаемость и ручное написание запросов. Да. Но у автора-то генератор запросов, который их пишет не ручками и эти запросы никто кроме сервера не читает, а он железный, выдержит. Лично я в генерируемых запросах уже давно начал использовать кавычки принудительно и не парюсь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 13:53 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
Симонов Денис NAME стало ключевым незарезевированым словом в 4.0. Судя по RN, в 3.0 уже (так в "Руководство по языку SQL СУБД Firebird 3.0" написано). В 2.5 еще не. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 14:40 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
IBExpert Генерацию запросов и еще пару вещей надо допиливать, чтобы они на такой фигне не ломались, а не на эксперта пенять. Дело абсолютно не в генераторе запросов. Дело в использовании ключевых слов в именах полей. И в том, что IBE, зная, что это слово ключевое, молча оборачивает его в кавычки. И это видишь только тогда, когда текст запроса (иногда случайно) мелькнет перед глазами. Я не хочу, чтобы в базе были поля, для использования которых надо их обрамлять в кавычки. Но у меня нет способа хоть как-то защититься от этого. Ни в сервере, ни в инструменте. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 14:46 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
CyberMax Я не хочу, чтобы в базе были поля, для использования которых надо их обрамлять в кавычки. Но у меня нет способа хоть как-то защититься от этого. Ни в сервере, ни в инструменте. Или сервер добавляет кавычки ? Или IBE переписывает твой запрос ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 14:54 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
CyberMax И в том, что IBE, зная, что это слово ключевое, молча оборачивает его в кавычки. Ну, допустим, с некоторых пор он это не молча делает. Попробуй VALUE в редакторе таблиц в качестве имени поля ввести. Но от других разработчиков это не защитит. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 14:55 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
hvlad Т.е. когда ты пишешь CREATE TABLE VALUE (...) тебе сервер не выдаёт ошибку ? Или сервер добавляет кавычки ? Или IBE переписывает твой запрос ? Сервер выдает ошибку, если создавать таблицу ручками, как ты написал. Кавычки добавляет IBExpert, когда генерирует запрос для создания таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 15:04 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky CyberMax1. Имеет ли смысл просить реализовать запрет на уровне сервера на создание имен таблиц/полей и прочего с кавычками? Симонов Денис такой триггер реализовать весьма не тривиально ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 15:06 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
CyberMax Кавычки добавляет IBExpert, когда генерирует запрос для создания таблицы. А если кто воспользовался - в чём проблема снять скрипт DDL хоть со всей БД и поискать там ужасные двойные кавычки ? Я уж не говорю о поиске только в diff'е с предыдущей версией оного скрипта. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 15:08 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
IBExpert Ну, допустим, с некоторых пор он это не молча делает. Попробуй VALUE в редакторе таблиц в качестве имени поля ввести. В версии от 7 января - молча. Это позднее появилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 15:11 |
|
Ключевые слова в именах полей
|
|||
---|---|---|---|
#18+
CyberMax IBExpert Ну, допустим, с некоторых пор он это не молча делает. Попробуй VALUE в редакторе таблиц в качестве имени поля ввести. В версии от 7 января - молча. Это позднее появилось? Это раньше появилось, должен появляться хинт с предупреждением. У меня появляется. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 15:15 |
|
|
start [/forum/topic.php?fid=40&fpage=9&tid=1560136]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 241ms |
total: | 419ms |
0 / 0 |