@pgsql

Страница 67 из 1062
Dmitry
09.08.2016
12:12:59
У постгресаа нет никакой дыры

Он использует системную локаль

Читайте man 5 locale man 7 locale

Phil
09.08.2016
12:14:19
Ну так в этом и дыра. Это не очень хорошо. Именно из-за приведенной ссылки. нет в системной локали (или я не знаю) универсальной сортировки для unicode

Google
Phil
09.08.2016
12:14:48
"Дыра" в отстутствии ответов конечно, а не в этом. Это я имел ввиду

Vadim
09.08.2016
12:15:06
ENCODING='UTF8' LC_COLLATE='C' LC_CTYPE='C'

Dmitry
09.08.2016
12:15:31
Ему надо немецкий+русский

А такой вопрос: это надо в одном и том же поле или в разных?

Phil
09.08.2016
12:16:49
Ему надо немецкий+русский
Например. Мне вообще нужен универсальный. Это на самом деле сложная проблема. Но есть какие-то приемлимые решения например у MySQL. Но они туда захаркожены, что тоже не очень.

Anton
09.08.2016
12:22:18
за слова postgresql гавно тут банят ?

Anatoliy
09.08.2016
12:22:56
Тут просят аргументировать ?

Часто бывает "сам дурак"

Konstantin
09.08.2016
12:24:54
Нехорошо флейм провоцировать

Нужно аргументировать недовольство тем или иным способом

Dmitry
09.08.2016
12:29:25
На самом деле, я не сталкивался с мультиязычной сортировкой... Достаточно странная задача... Но вообще коллейшен стоит из трёх частей: язык, страна, кодировка. Язык или страна языка указывает, как будет отсортирован язык, как это приято в стране языка. Страна указывает на формат даты и разделителей целой и дробной части. у и кодировка понятно. Кодировка влияет на сортировку в последнюю очередь. Поэтому как решит эту проблему в рамках этой концепции, не совсем понятно. Можно сделать отдельный коллейт на поле (без смены кодировки, только язык_страна). Можно сделать коллейт на сортировку запроса... Врят ли вы в одной сортировке выводите разные языки. Хотя... В любом случае правильная сортировка будет только по заданному коллейту. Второй (третий и т.д.) языки будут сортироваться непредсказуемо. Ну и слепой перенос кейсов одной БД на другую - достаточно порочная практика. Вам надо либо пересмотреть задачу, либо более подробно её сформулировать...

Vadim
09.08.2016
12:32:03
Если в одном поле нужна разная сортировка, то вы можете создать несколько индексов с нужным COLLATE. Но опять же, не совсем понимаю как в одном поле объекдинить разные сортировки в одном запросе.

Google
Konstantin
09.08.2016
12:32:32
Да, индекс наверное идея

Dmitry
09.08.2016
12:33:10
Если есть поле ланг, можно по лангам сортировать отдельно и делать union

Vadim
09.08.2016
12:35:10
тоже вариант.

Konstantin
09.08.2016
12:35:22
Составной индекс по lang

Dmitry
09.08.2016
12:36:34
А как с разными коллейтами быть в составном индексе?

Условные индексы, с условием по лангу - это другое дело

Kirill
09.08.2016
12:40:21
Как вариант https://russ.garrett.co.uk/2009/01/18/unicode-postgres/

Phil
09.08.2016
12:40:55
На самом деле, я не сталкивался с мультиязычной сортировкой... Достаточно странная задача... Но вообще коллейшен стоит из трёх частей: язык, страна, кодировка. Язык или страна языка указывает, как будет отсортирован язык, как это приято в стране языка. Страна указывает на формат даты и разделителей целой и дробной части. у и кодировка понятно. Кодировка влияет на сортировку в последнюю очередь. Поэтому как решит эту проблему в рамках этой концепции, не совсем понятно. Можно сделать отдельный коллейт на поле (без смены кодировки, только язык_страна). Можно сделать коллейт на сортировку запроса... Врят ли вы в одной сортировке выводите разные языки. Хотя... В любом случае правильная сортировка будет только по заданному коллейту. Второй (третий и т.д.) языки будут сортироваться непредсказуемо. Ну и слепой перенос кейсов одной БД на другую - достаточно порочная практика. Вам надо либо пересмотреть задачу, либо более подробно её сформулировать...
Да ладно. Любой движок CMS, который не хочет никого мучать настройкой языка. Язык/кодировка хороши были в мире до Unicode, а с Unicode единственная сложность - сложить сортировки вместе. Давайте сейчас придумаю... вот. Делаю например сервис для телеграма. Не знаю, книжки в шаред медиа хочу библиотекой держать. Определять язык чатика или названия книги - иногда нерешаемая задача. А вот общий collation - вполне решаемая. Или вот у меня емагазин. Кастомеры со всего мира. Конечно каждый из них хочет сортировки так, чтобы у него глаза не вытекли. Собственно, тот же WordPress например _требует_ у MySQL вот этого _unicode_ci

Dmitry
09.08.2016
12:43:32
Подождите... Вы определитесь, вы хотите просто сортировать или сортировать каждый язык по чётки правилам для умляутов и прочих экзотических буквиц? С обычной мультиязычной сортировкой по коду символов проблем вообще никаких.

Dmitry
09.08.2016
12:45:53
http://stackoverflow.com/questions/9961795/utf8-postgresql-create-database-like-mysql-including-character-set-encoding-a

Так не пробовали?

Kirill
09.08.2016
12:47:25
А order by где ?

Darafei
09.08.2016
12:48:10
limit 1 там for presentation purpuoses

Phil
09.08.2016
12:48:19
Так не пробовали?
ну так это more specific

Dmitry
09.08.2016
12:48:38
Не понял...

Попробуйте de_DE вместо en_US если немецкий у вас в приоритете

А что у вас за приложение, если не секрет? Откуда взялась необходимость мультиязычной сортировки?

Kirill
09.08.2016
12:53:03
limit 1 там for presentation purpuoses
если описать кейс то, вобщем-то, будет больше шансов что разберутся и починят

Darafei
09.08.2016
12:54:04
а в каком месте непонятно? селект в постгресе возвращает не подходящие под селект строки, так бывает

Google
Phil
09.08.2016
12:54:36
А что у вас за приложение, если не секрет? Откуда взялась необходимость мультиязычной сортировки?
"Делаю например сервис для телеграма. Не знаю, книжки в шаред медиа хочу библиотекой держать. Определять язык чатика или названия книги - иногда нерешаемая задача. А вот общий collation - вполне решаемая. Или вот у меня емагазин. Кастомеры со всего мира. Конечно каждый из них хочет сортировки так, чтобы у него глаза не вытекли."

Кстати забавно, но вроде есть стандарт на Unicode Collation... На европейские языки он так и группирует - "Европейские языки"

Dmitry
09.08.2016
12:55:39
Ну он-то ищет книжку на своём языке? Нет?

Phil
09.08.2016
12:55:52
О, у меня сейчас стоит C.UTF-8 )

Ну он-то ищет книжку на своём языке? Нет?
а upper() lower()? а сортировка списка?

Kirill
09.08.2016
12:56:20
или, хотябы, запрос не картинкой скинуть

Darafei
09.08.2016
12:57:32
воспроизвести могу, доступ у ребят из postgres pro поковырять - есть :)

сюда просто болью поделиться пришёл

Dmitry
09.08.2016
12:58:12
а upper() lower()? а сортировка списка?
upper|lower какое отношение к сортировке имеют? Я про мультиязычную сортировку. Результат-то и список всегда на конкретном языке. На одном.

Vadim
09.08.2016
12:59:13
а upper() lower()? а сортировка списка?
Классы операторов text_pattern_ops, varchar_pattern_ops и bpchar_pattern_ops поддерживают индексы-B-деревья для типов text, varchar и char, соответственно. От стандартных классов операторов они отличаются тем, что сравнивают значения по символам, не применяя правила сортировки, определённые локалью. Благодаря этому они подходят для запросов с поиском по шаблону (с LIKE и регулярными выражениями POSIX), когда локаль базы данных не стандартная "C". Например, вы можете проиндексировать столбец varchar так: CREATE INDEX test_index ON test_table (col varchar_pattern_ops);

Phil
09.08.2016
12:59:15
Dmitry
09.08.2016
13:01:08
на UTF-8 )))
Как кодировка влияет на результат upper|lower ?

Kirill
09.08.2016
13:01:55
воспроизвести могу, доступ у ребят из postgres pro поковырять - есть :)
PostgresPro - это хорошо, может сюда тоже стоит зарядить https://www.postgresql.org/account/submitbug/ ? )

Vadim
09.08.2016
13:02:29
Это к вопросу о сортировке. Она будет по символьная в "C".

Vadim
09.08.2016
13:03:42
а какая должна быть? у вас разные языки каким то образом сортироваться должны в одном поле?)

Google
Dmitry
09.08.2016
13:03:54
Впрямую же
Вы хотите сказать, что в разных кодировках результат upper|lower будет разный??? )))) А можно пример?

Phil
09.08.2016
13:04:13
а какая должна быть? у вас разные языки каким то образом сортироваться должны в одном поле?)
У меня нет никаких языков. У меня UTF-8. Unicode. Для Unicode есть вполне себе условные универсальные правила сортировок

Vadim
09.08.2016
13:07:05
У меня нет никаких языков. У меня UTF-8. Unicode. Для Unicode есть вполне себе условные универсальные правила сортировок
Тогда в чем вопрос? Вас не устраивает кодировка UTF8 в постгресе и сортировка?

Dmitry
09.08.2016
13:07:28
А может это всё-таки от языка зависит, а не от кодировки?

Phil
09.08.2016
13:08:33
Тогда в чем вопрос? Вас не устраивает кодировка UTF8 в постгресе и сортировка?
Мы ходим по кругу. Она там системная и _только_ more specific. А я хочу как в MySQL. Это удобно. Это соответствует большинству ожиданий и похоже это ISO 14651 (не уверен)

Vadim
09.08.2016
13:09:19
Мне кажется вся проблема вот в этом - "А я хочу как в MySQL."

я тоже хочу как в PostgreSQL массивы и хранимые процедуры, но приходится пользоваться другими инструментами в MySQL

Kirill
09.08.2016
13:13:03
Мне кажется вся проблема вот в этом - "А я хочу как в MySQL."
нет, проблема в том что в постгресе нет вот такой штуки из коробки https://en.wikipedia.org/wiki/Unicode_collation_algorithm

Dmitry
09.08.2016
13:15:01
Все коллейшены можно посмотреть в pg_collation

Там все по классике. UCA нет

Kirill
09.08.2016
13:15:58
Да, есть в виде расширения http://www.public-software-group.org/pg_collkey

Dmitry
09.08.2016
13:17:08
https://www.postgresql.org/message-id/kjqc4j%24gqa%242%40gonzo.reversiblemaps.ath.cx

Vadim
09.08.2016
13:18:08
Весь сыр-бор из за того что PostgreSQL использует collation libc?

Konstantin
09.08.2016
13:18:34
???

Все хорошо работает :-)

Dmitry
09.08.2016
13:19:05
Konstantin
09.08.2016
13:19:40
Значит надо писать англоязычные проекты и все :-)

Проблема решена

Phil
09.08.2016
13:20:03
Да, есть в виде расширения http://www.public-software-group.org/pg_collkey
#UCA #unicode #collation А. Во. Вот кстати ответ. Спасибо

Google
Konstantin
09.08.2016
13:20:45
Кирилл молодец!

Phil
09.08.2016
13:20:51
Весь сыр-бор из за того что PostgreSQL использует collation libc?
Да. Почему нет? На данный момент это странноватое решение. Хотя и unixway

Там 9.3 максимальная версия.
Чйорт. Ну тогда продолжаем

Konstantin
09.08.2016
13:22:10
Кто нибудь прикручивал внешние таблицы в mapr hadoop?

Vadim
09.08.2016
13:22:38
Честно говоря чат превратился в очередной холивар PostgreSQL vs MySQL. И это печально.

Konstantin
09.08.2016
13:22:59
Холиварить ненадо

Несварение от этого

Dmitry
09.08.2016
13:23:16
Чйорт. Ну тогда продолжаем
А что продолжать? Надо либо свою локаль пилить, либо попытаться собрать расширение для свежей постгри :)

dmitriy
09.08.2016
13:23:43
Чйорт. Ну тогда продолжаем
попробуйте скомпилить под свежую версию

Konstantin
09.08.2016
13:24:01
Пилите Дима, они золотые :-)

Phil
09.08.2016
13:24:24
Честно говоря чат превратился в очередной холивар PostgreSQL vs MySQL. И это печально.
Нет. Я реально хочу такого Collation. Это удобно. И это хорошо. И это правильно. И даже как оказалось ИСОшно. Вот разобрали вопрос и даже расширение нашли. Кому-то это поможет. Например мне

попробуйте скомпилить под свежую версию
Компиляция чего-либо в Linux то ещё занятие. Но видимо да

Dmitry
09.08.2016
13:25:38
Компиляция чего-либо в Linux то ещё занятие. Но видимо да
Не сгущайте. У меня весь продакшен из исходников собран

То, что касается постгри. Дабы обновление оси не влияло на БД.

Konstantin
09.08.2016
13:32:11
Лучше скажите что мне с мапром делать?

Страница 67 из 1062