Страница 1 из 1

Не работает с Postgres из-за идентификаторов в верхнем регис

СообщениеДобавлено: 17.09.2015 22:26:51
v-t-l
FBManager не работает с Postgres из-за приведения всех идентификаторов (по крайней мере, полей) в верхний регистр при формировании запросов. Хотя, "ИдентиФикатор" не должен приводиться к верхнему регистру, а указываться, как есть, в двойных кавычках.

Добавлено спустя 20 минут 25 секунд:
Идентификатор, заключённый в кавычки, становится зависимым от регистра, тогда как идентификаторы без кавычек всегда переводятся в нижний регистр. Например, идентификаторы FOO, foo и "foo" считаются одинаковыми в PostgreSQL, но "Foo" и "FOO" отличны друг от друга и от предыдущих трёх. (Приведение имён без кавычек к нижнему регистру, как это делает PostgreSQL, несовместимо со стандартом SQL, который говорит о том, что имена должны приводиться к верхнему регистру. То есть, согласно стандарту foo должно быть эквивалентно "FOO", а не "foo". Поэтому при создании переносимых приложений рекомендуется либо всегда заключать определённое имя в кавычки, либо не заключать никогда.)


Добавлено спустя 6 минут 31 секунду:
fbmanager-gtk2-2015-09-17--12-09-12.tar.bz2

Re: Не работает с Postgres из-за идентификаторов в верхнем р

СообщениеДобавлено: 18.09.2015 09:36:02
alexs
Спасибо!
Проверю
PS
Сам никогда такими изысками не занимался...

Re: Не работает с Postgres из-за идентификаторов в верхнем р

СообщениеДобавлено: 18.09.2015 10:39:34
sts
я не понял - если написать FOO (без кавычек) PostgreSQL ругается, ожидая foo?

зы: за кавычки руки отрывать надо.

Re: Не работает с Postgres из-за идентификаторов в верхнем р

СообщениеДобавлено: 18.09.2015 11:43:06
v-t-l
sts писал(а):я не понял - если написать FOO (без кавычек) PostgreSQL ругается, ожидая foo?

Если при объявлении было написано без кавычек, то можно писать как угодно (кроме как в кавычках, тогда только в нижнем регистре), иначе - только в кавычках и точно как было объявлено.

Re: Не работает с Postgres из-за идентификаторов в верхнем р

СообщениеДобавлено: 18.09.2015 11:50:01
alexs
Доработал в части таблиц.
Данные отображаются/редактируются
Индексы создаются
PK/FQ/UNQ также создаются
Скрипт на создание генерится верно
в SQL редакторе автодополненние отображет верно
в SQL редакторе по Ctrl+Alt+Enter правильно генерятся тексты

Не работает пока создание нового поля в разных регистрах - приводится к нижнему. Сделаю.

Добавлено спустя 1 минуту 22 секунды:
Re: Не работает с Postgres из-за идентификаторов в верхнем регис
В свете поднявшейся темы - в параметрах регистрации БД сделаю в дальнейшем настройку на эти ситуации.

Re: Не работает с Postgres из-за идентификаторов в верхнем р

СообщениеДобавлено: 18.09.2015 12:12:11
v-t-l
sts писал(а):зы: за кавычки руки отрывать надо.

Зато можно писать:
Код: Выделить всё
CREATE TABLE "Таблица1"
(
  "УИН" serial NOT NULL,
  "ФИО" character varying(10),
  CONSTRAINT "УИН_ключ" PRIMARY KEY ("УИН"))

Re: Не работает с Postgres из-за идентификаторов в верхнем р

СообщениеДобавлено: 18.09.2015 12:37:23
alexs
А за это надо обе руки оторвать.
Русские имена полей - это ОЧЕНЬ ПЛОХО!!!!!
Тут столько может подводных камней появиться - что лучше сразу отказаться.

PS
Что люди только не придумают - лишь бы комментарии не писать.

Re: Не работает с Postgres из-за идентификаторов в верхнем р

СообщениеДобавлено: 18.09.2015 17:59:50
Снег Север
alexs писал(а):Русские имена полей - это ОЧЕНЬ ПЛОХО!!!!!
Если движок базы позволяет юникодные имена полей - то почему нет? Конкретная база данных - не программный код, она имеет узкую и специфическую направленность. Если база рассчитана только на использование в русскоязычной среде, пусть будут русские названия полей. А если в китайской - китайские. Это совершенно нормально.

Re: Не работает с Postgres из-за идентификаторов в верхнем р

СообщениеДобавлено: 20.09.2015 20:12:44
alexs
Снег Север писал(а):Если база рассчитана только на использование в русскоязычной среде, пусть будут русские названия полей. А если в китайской - китайские. Это совершенно нормально.

Идеальная теория всегда разбивается о суровую правду жизни.
Мой совет - очень не советую.

Re: Не работает с Postgres из-за идентификаторов в верхнем р

СообщениеДобавлено: 20.09.2015 20:15:57
Снег Север
alexs писал(а):Идеальная теория всегда разбивается о суровую правду жизни.Мой совет - очень не советую.
Дык, я, в основном, имею дело с базами, где такое просто не проходит...