Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2016.01.31;
Скачать: [xml.tar.bz2];

Вниз

camelCase идентификаторы в Postgresql   Найти похожие ветки 

 
Дмитрий С ©   (2015-05-27 14:16) [0]

В интернете искал, не нашел решения (и начинаю верить что его и нет).
Java 8 + Postgresql 9.4.
Я привык использовать везде caseCase идентификаторы, тем более что в java так принято.
Известная ситуация, если хочешь в Postgres создать колонку, например, displayName, то название нужно взять в кавычки. При этом в запросах название колонки также необходимо указывать в кавычках, что очень неудобно, к тому же в коде java двойные кавычки нужно экранировать - запрос получается плохо-читаемым.

Вопрос, как сделать так, чтобы Postgres любо всегда принимал идентификаторы в том регистре в котором они указаны, либо всегда сравнивал без учета регистра?

Уже второй раз сталкиваюсь с проблемами с camelStyle для баз данных. Сначала в MySql, теперь тут. Не ожидал даже.


 
Ega23 ©   (2015-05-27 14:26) [1]

ЕМНИП, если в скрипте создания указал всё в lowercase, то потом в запросе пиши как хочешь.


 
Игорь Шевченко ©   (2015-05-27 14:26) [2]


> Я привык использовать везде caseCase идентификаторы, тем
> более что в java так принято.


В базах данных camel case не принято использовать, не надо создавать лишних проблем на пустом месте


 
Ega23 ©   (2015-05-27 14:33) [3]


> В базах данных camel case не принято использовать


Это спорно, стандарта я не видел. Более того, у каждой СУБД свой стиль в хелпе.


 
Дмитрий С ©   (2015-05-27 14:35) [4]


> Ega23 ©   (27.05.15 14:26) [1]
> ЕМНИП, если в скрипте создания указал всё в lowercase, то
> потом в запросе пиши как хочешь.

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


> Игорь Шевченко ©   (27.05.15 14:26) [2]

Похоже придется привыкать.

В Java свои правила приняты, в Delphi, в C, в PHP и т. д., но нигде они не навязываются. Как в анекдоте, можешь писать на фортране на чем угодно. Странно, что базах правила именования фактически навязаны.


 
Ega23 ©   (2015-05-27 14:54) [5]


> Странно, что базах правила именования фактически навязаны.


Зависит от СУБД. В MSSQL пиши как хочешь (хотя в хелпе всё в верхнем регистре).


 
кгшзх ©   (2015-05-27 15:15) [6]

был бы мсскл не только на винде - в нем бы тоже не пиши как хочешь было


 
кгшзх ©   (2015-05-27 15:18) [7]

да и вообще. мало ли какие приколы есть и были чтобы хотеть писать как хочется.
в древности например когда на оракл ходили через бде - пиши как хочешь, но если хочешь  не ридонли датасет - пиши буквами только большими.


 
Дмитрий С ©   (2015-05-27 18:50) [8]


> да и вообще. мало ли какие приколы есть и были чтобы хотеть
> писать как хочется.

Была бы причина объективная для этого, а так не понимаю.
Мы как бы уже в 21 веке живём, да и посгрес не поделка студенческая.


 
Ega23 ©   (2015-05-27 18:53) [9]


>  да и посгрес не поделка студенческая


opensource, со всеми вытекающими.


 
кгшзх ©   (2015-05-27 19:57) [10]

Была бы причина объективная для этого, а так не понимаю.

есть объективная причина регистрозависимых идентификаторов в языках?
а в именах файлов не на винде?
а есть вообще объективная причина существования строчных  и прописных символов?

или здесь только постгресс необъективно выпендривается с идентификаторами?


 
ухты ©   (2015-05-27 20:57) [11]

ну дело то не столько в регистре, а в этих странных кавычках, насколько понял ТС.

тоже приходилось работать с, например,  Apache Cassandra, такая же ерунда, в итоге все написали  в lowercase.


 
кгшзх ©   (2015-05-27 21:30) [12]

дело здесь не в кавычках, а в человеке неделю назад познакомившемся с сервером, и заявляющем, что по его мнению нет объективным причин в том что сервера так устроены.


 
Ega23 ©   (2015-05-27 22:21) [13]


> или здесь только постгресс необъективно выпендривается с
> идентификаторами?


В каждой избушке - свои игрушки. У postgres - если в lowercase, то потом регистронезависимо, иначе - в кавычках. У firebird - если без кавычек, то регистронезависимо. У MSSQL - вообще фиолетово.
Единого стандарта ожидать, ИМХО, глупо.


 
Дмитрий С ©   (2015-05-28 01:13) [14]


> У MSSQL - вообще фиолетово.

У MS, как бы его не ругали, со здравым смыслом обычно все в порядке. Обычно если у них что-то запрещено, то скорее всего этого хотеть не надо.


> дело здесь не в кавычках, а в человеке неделю назад познакомившемся
> с сервером, и заявляющем, что по его мнению нет объективным
> причин в том что сервера так устроены.

Что с человеком-то не так?

Я думаю, что дело в том, что этот сервер делает неочевидное, и по моему скромному мнению, нелогичное преобразование. И это вызывает раздражение.
В моем проекте используется Java и JavaScript. Оба caseCamel style, поэтому мне удобнее и в базе поля так называть, но разработчикам postgres, конечно, виднее. Жаль я только сейчас занялся им. Пару месяцев назад была возможность задать этот вопрос одному из его разработчиков.


> тоже приходилось работать с, например,  Apache Cassandra,
>  такая же ерунда, в итоге все написали  в lowercase.

Я решил, что буду писать в кавычках. Благо среда разработки их подставляет автоматически туда, где они нужны.

Можно, еще, конечно, предпроцессор запроса сделать, который выполнит замену:
query.replaceAll("[a-z][a-z0-9]*([A-Z]+[a-z0-9]*)+", "\"$0\"");
Как вам идея такая?


 
Дмитрий С ©   (2015-05-28 01:15) [15]

Можно не отвечать. Плохая идея, сам понимаю.


 
Ega23 ©   (2015-05-28 02:49) [16]


> Как вам идея такая?


Покрасить ногти в золотой цвет и отправить в барак. За желание странного.


 
кгшзх ©   (2015-05-28 09:50) [17]

В моем проекте используется Java и JavaScript.

Когда ты пишешь на ява или на яваскрипте - ты пишешь на яве или на ява скрипте.
и там у тебя любой твой любимый стайл.

а когда ты пишешь текст sql запроса в любом вообще языке ты не оперируешь этим любым языком, а оперируешь языком сервера и это уже кусок программы не на этом твоем языке а на языке сервера.

я б еще понял твои удивления, если бы ты и письма знакомым писал в стиле  caseCase только потому что так привык писать в яве и яваскрипте.


 
Плохиш ©   (2015-05-28 09:57) [18]

Честно говоря, совершенно не понял о чём ветка. Поплакаться о том, что мир не справедлив и всё делается по идеям разработчика, а не нежелающих читать документацию.

> Дмитрий С ©   (28.05.15 01:13) [14]

> Пару месяцев назад была возможность задать этот
> вопрос одному из его разработчиков.

В чём проблема? Разработчик ушёл в подполье или вообще умер?
Так он там не единственный и форум имеется и даже онлайн документацию можно комментировать.


 
кгшзх ©   (2015-05-28 10:07) [19]

да вот в чем проблема.

sqlText = "select * from myTable"; //это как бы должно быть логично

//тогда почему нелогично (или тоже логично?) вот это:
myEmailText = "здраВствуте мой дяДя валенТин сергееВич, пиШет вам плеМянник диМа";


 
Дмитрий С ©   (2015-05-28 11:21) [20]


> Поплакаться о том, что мир не справедлив

Действительно. Стресс снять.
Убедиться, что решения нет и думать как выкрутиться.


> не нежелающих читать документацию

Вот тут зря. Читать кроме нее, похоже, особо нечего.


> а когда ты пишешь текст sql запроса в любом вообще языке
> ты не оперируешь этим любым языком, а оперируешь языком
> сервера и это уже кусок программы не на этом твоем языке
> а на языке сервера.

Почему при этом в mssql все ок - пиши как хочешь, в mysql - то же (с некоторыми ограничениями, которые можно пережить), в oracle не знаю как, в sqlite - тоже ок, а в posgres - будь добр, пиши маленькими все?


 
кгшзх ©   (2015-05-28 11:28) [21]

в mysql - то же

не тоже, а снова мало личного опыта.

мускул есть на винде (и в нем как "тоже"), а есть на линупсах.
а тот что на линупсах бывает для i386, для arm и фиг знает для чего еще.
Так вот в них - ни разу "не тоже"


 
Дмитрий С ©   (2015-05-28 12:10) [22]


> кгшзх ©

Друг, в скобках прочти.


 
кгшзх ©   (2015-05-28 12:24) [23]

набирайся опыта.
и будут тебе "объективные причины"



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2016.01.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.003 c
4-1275994363
djsmentya
2010-06-08 14:52
2016.01.31
Twain интерфейс


15-1432714180
Pavia
2015-05-27 11:09
2016.01.31
Двойной замок


15-1432040304
Kerk
2015-05-19 15:58
2016.01.31
Еще раз о курении


3-1305880313
beriya
2011-05-20 12:31
2016.01.31
разнотипные БД в одном запросе


15-1432953284
wl
2015-05-30 05:34
2016.01.31
MMU





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский