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

Утилита управления базами данных для FireBird/Interbase

Модераторы: alexs, Модераторы

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

Сообщение v-t-l » 17.09.2015 22:26:51

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
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

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

Сообщение alexs » 18.09.2015 09:36:02

Спасибо!
Проверю
PS
Сам никогда такими изысками не занимался...
Последний раз редактировалось alexs 18.09.2015 11:50:23, всего редактировалось 1 раз.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

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

Сообщение sts » 18.09.2015 10:39:34

я не понял - если написать FOO (без кавычек) PostgreSQL ругается, ожидая foo?

зы: за кавычки руки отрывать надо.
sts
постоялец
 
Сообщения: 431
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

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

Сообщение v-t-l » 18.09.2015 11:43:06

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

Если при объявлении было написано без кавычек, то можно писать как угодно (кроме как в кавычках, тогда только в нижнем регистре), иначе - только в кавычках и точно как было объявлено.
Последний раз редактировалось v-t-l 18.09.2015 11:50:23, всего редактировалось 1 раз.
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

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

Сообщение alexs » 18.09.2015 11:50:01

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

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

Добавлено спустя 1 минуту 22 секунды:
Re: Не работает с Postgres из-за идентификаторов в верхнем регис
В свете поднявшейся темы - в параметрах регистрации БД сделаю в дальнейшем настройку на эти ситуации.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

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

Сообщение v-t-l » 18.09.2015 12:12:11

sts писал(а):зы: за кавычки руки отрывать надо.

Зато можно писать:
Код: Выделить всё
CREATE TABLE "Таблица1"
(
  "УИН" serial NOT NULL,
  "ФИО" character varying(10),
  CONSTRAINT "УИН_ключ" PRIMARY KEY ("УИН"))
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

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

Сообщение alexs » 18.09.2015 12:37:23

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

PS
Что люди только не придумают - лишь бы комментарии не писать.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

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

Сообщение Снег Север » 18.09.2015 17:59:50

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

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

Сообщение alexs » 20.09.2015 20:12:44

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

Идеальная теория всегда разбивается о суровую правду жизни.
Мой совет - очень не советую.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

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

Сообщение Снег Север » 20.09.2015 20:15:57

alexs писал(а):Идеальная теория всегда разбивается о суровую правду жизни.Мой совет - очень не советую.
Дык, я, в основном, имею дело с базами, где такое просто не проходит...
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47


Вернуться в FBManager

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru