
/dev/null
02.10.2017
06:38:35
здасти
В базе есть поле с типом MONEY как вывести из него значения без знака руб... к примеру 1200.00 руб вывести как 1200.00

Айтуар
02.10.2017
06:41:07

/dev/null
02.10.2017
06:42:06

Google

Айтуар
02.10.2017
06:44:05

Dmitry
02.10.2017
07:44:09
кастование к типу происходит через оператор ::

Sergey
02.10.2017
07:45:10
Утречка, а что за драма с ПГ Профессиональный на хабре?

Dmitry
02.10.2017
07:45:32
наверно прое%ли просто оплату
такое бывает :)

Anatoliy
02.10.2017
07:46:32
Или вложенные средства себя не оправдывают

Kam
02.10.2017
07:50:21
ребят помогите со связами в постгре)
есть 2 таблицы
у второй таблицы есть xxx_id
я пишу так

Sergey
02.10.2017
07:51:11

Google

Kam
02.10.2017
07:51:12
foreign key (xxx_id) references xxx(id)

Dmitry
02.10.2017
07:52:34

Igor
02.10.2017
07:53:12
в какие компании, в "тематические медиа"? :))

Dmitry
02.10.2017
07:53:18
))))
ну просто неразбериха - где-то кто-то кому-то счет не переслал, компании вон свои домены проеб%$ют, а тут блог на хабре :)
(может там что-то другое, не знаю, просто мне так кажется)


Denis
02.10.2017
07:55:14
@darthunix, выложил то что есть по vgram
https://github.com/akorotkov/vgram
@aekorotkov я потестировал vgram на таблице с 400к имен. так как similarity vgrams не умеет, я оценивал скорость по like, экспериментируя с минимальной и максимальной длиной вграм.
1) как выяснилось, если установить минимальное значение вграмы большим, чем длина лексемы, то вграмы из нее не получаются (и индекс не работает) из-за ошибки "corrupted vgram". то есть поэкспериментировать с вграмами от 6 до 10 для фио с именем "денис" уже нельзя.
2) если установить минимальное значение длины вграмы равное 2 (допустим при сборке расширения ставлю 2 и 6 для минимального и максимального значения), то лексемы будут всегда тяготеть к минимальным значениям. поэтому разбор моего фио для расширения вграм, собранного с параметрами (2,6) и (2,3) будет выглядеть одинаково.
3) скорость работы вграм сильно ниже, чем у расширений триграм и биграм (на ряде запросов до 10 раз).
@aekorotkov не подскажите, кстати, как обстоят дела с поддержкой rum индекса массивов. оно заявлено в todo еще с последнего pgconf с марте. будет?)


Alexander
02.10.2017
07:58:30
Денис, спасибо что потестировали.
1-2) А вы не пробовали снижать VGRAM_LIMIT_RATIO, вместо того, чтобы увеличивать длину максимальной V-gram'ы?
3) Это, наверное, связано с тем, что нет полноценной поддержки GIN "fast scan", т.к. он появился после разработки данного расширения.

Denis
02.10.2017
07:59:40

Alexander
02.10.2017
08:00:11
Ок, а я тогда посмотрю почему возникает ошибка "corrupted vgram", и попробую добавить GIN "fast scan".

Denis
02.10.2017
08:00:33
Спасибо огромное!

Alexander
02.10.2017
08:00:35
Массивы в RUM вроде, в разработке сейчас. Завтра смогу сказать точнее. Если я забуду, напомните мне.

Kam
02.10.2017
08:37:28
ребят помогите, выдает синтаксичускую ошибку
xxx_id integer NOT NULL, FOREIGN KEY xxx(id)
xxx_id это ключ в другой таблице для таблицы xxx

Anton [Mgn, az09@osm]
02.10.2017
08:43:13
xxx(id) уникальный хотя бы?

Mike Chuguniy
02.10.2017
08:57:30
@az09_mgn я вон запятую после NOT NULL вижу, которой по идее быть не должно.
И форин кей там должен быть? А не референс какой?

Google

Михаил
02.10.2017
09:00:42

Denis
02.10.2017
12:32:00
1-2) нет, не пробовал. Проверю!
@aekorotkov У меня и правда стоял слишком высокий VGRAM_LIMIT_RATIO - после уменьшения его на пару порядков скорость LIKE поиска стала соизмерима с триграмами. Так же после этого пропала ошибка "corrupted vgram". А можно в vgram'ы добавить similarity и %, чтобы проверить коррекцию опечаток? У меня вся история по факту ради этого и затевалась. А LIKE запрос работает быстро и на триграммах, проседания начинаются именно на % и вот тут бы пригодилась регулируемая длина vgram.


Aliaksei
02.10.2017
13:07:04
Привет, пришёл с вопросом к вам:
Вот запрос который достаёт из jsonb поля “description” массив tags и ищет вхождения либо “java”, либо “c++”
select v.*, jsonb_agg(tags)
from vacancy v, jsonb_array_elements((v.description ->> 'tags')::jsonb) tags
where tags ?| array['java', 'c++']
group by v.id
Как должен выглядеть запрос что бы было обязательно наличие и “java” и “c++”? ?& – вот это вообще ничего не вернёт
Т.е. нужно чтобы значения [“java”, “c++”] попали в ответ, но [“java”, “kotlin”] нет

Alexander
02.10.2017
13:18:26

Denis
02.10.2017
13:21:49


Aliaksei
02.10.2017
13:24:55
Привет, пришёл с вопросом к вам:
Вот запрос который достаёт из jsonb поля “description” массив tags и ищет вхождения либо “java”, либо “c++”
select v.*, jsonb_agg(tags)
from vacancy v, jsonb_array_elements((v.description ->> 'tags')::jsonb) tags
where tags ?| array['java', 'c++']
group by v.id
Как должен выглядеть запрос что бы было обязательно наличие и “java” и “c++”? ?& – вот это вообще ничего не вернёт
Т.е. нужно чтобы значения [“java”, “c++”] попали в ответ, но [“java”, “kotlin”] нет
Вот такое решение нашёл, но может есть как это сделать в один запрос
select i.tags_array, i.* from (
SELECT
jsonb_agg(tags) AS tags_array,
v.*
FROM vacancy v, jsonb_array_elements((v.description ->> 'tags') :: JSONB) tags
group by v.id
) i
where tags_array ?& array['c++', 'java']

Igor
02.10.2017
18:16:20
pg_dump: [archiver (db)] query failed: ERROR: column i.keyatts does not exist
как теперь жить с этим? скопировать кластер через basebackup?

Massimo
02.10.2017
18:18:06
Вечер добрый! У кого нибудь есть тутор для новичка по автоматическому бэкапу бд? Хочу производить бэкапы на Амазон S3

Darafei
02.10.2017
18:24:08

Massimo
02.10.2017
18:24:36
Так у меня бд лежит на хосте
А на амазон думал складировать бэкапы и картинки

mb
02.10.2017
18:37:04
Скорее всего это подойдёт:
http://www.pgbarman.org/

Daniel
02.10.2017
19:09:59
всем привет. возник вопрос. хочу выбирать данные из таблицы по materialized path . Но возник затык. Если конец пути указан неверно, т.е. например, в запрашиваемом пути /0/1/2/3/4/5/6/7/8 существует только /0/1/2/3/4/5 , то нужно вернуть его. Как это можно сделать быстро? есть какие-нибудь идеи?
смотрю сейчас типы данных постгресса, сам с ним раньше не работал никогда, вроде много всего, а вот как выкрутиться без проверки через AND всех подпутей (что долго) пока не придумал

Arthur
02.10.2017
19:20:56
не смотрели в сторону ltree?
https://postgrespro.ru/docs/postgresql/9.6/ltree

Daniel
02.10.2017
19:22:40
на хабре прочитал статью только что, как раз искал в доках, спасибо, посмотрю, поможет ли это
все же не подходит (

Pavel
02.10.2017
19:44:08

Yura
02.10.2017
19:49:33
всем привет. возник вопрос. хочу выбирать данные из таблицы по materialized path . Но возник затык. Если конец пути указан неверно, т.е. например, в запрашиваемом пути /0/1/2/3/4/5/6/7/8 существует только /0/1/2/3/4/5 , то нужно вернуть его. Как это можно сделать быстро? есть какие-нибудь идеи?
select * from table where path in ('/0/1/2/3/4/5/6/7/8','/0/1/2/3/4/5/6/7','/0/1/2/3/4/5/6','/0/1/2/3/4/5','/0/1/2/3/4','/0/1/2/3','/0/1/2','/0/1','/0') order by path desc limit 1;

Google

Yura
02.10.2017
19:50:29
Для данной постановки задачи это самый быстрый вариант.

Denis
03.10.2017
00:21:13
привет! а кто помнит как называется расширение, которое позволяет скрывать из плана индексы при отладке?

Daniel
03.10.2017
04:26:45

Lulz
03.10.2017
06:54:39

Andrey
03.10.2017
06:56:22
Ну так там же всё написано.
Под пользователем postgres запускайте.

Lulz
03.10.2017
07:02:43

Andrey
03.10.2017
07:04:49
chmod тут не при чём, просто сделайте su - postgres, если вы под рутом, а потом запускайте команду, без sudo.

nietzschebrod
03.10.2017
07:04:50
oh wow

Lulz
03.10.2017
07:05:26

/dev/null
03.10.2017
07:05:31
Работает кто с firebirdsql?

Lulz
03.10.2017
07:05:56
I changed the owner of /srv/datadisk01/database to postgres user with chmod.

/dev/null
03.10.2017
07:06:03
как в этом … узнать какая кодировка в базе используется \

Lulz
03.10.2017
07:06:05

nietzschebrod
03.10.2017
07:06:35
и он про chown

Andrey
03.10.2017
07:06:56
спасибо :)
Troubles in Windows - reboot, troubles in Linux - be root!

Massimo
03.10.2017
07:24:17

Leonid
03.10.2017
07:29:40
Коллеги. А как из jsonb вытащить число, именно как число?

Vitality
03.10.2017
07:30:17
cast(param, type)

Google

Vitality
03.10.2017
07:30:27
или param::type
param - это то, что ты получаешь

Leonid
03.10.2017
07:30:54
не выходит

Vitality
03.10.2017
07:31:07
и при условии, что у тебя хранимая процедура на сервере

Leonid
03.10.2017
07:31:19
select data->'functional' from config ;
select json_typeof(to_json(data->'functional'->'session_duration')) from config where is_active='t';
json_typeof
—---------—
number
(1 строка)
select data->'functional'->'session_duration'::int *2 from config where is_active='t';
ОШИБКА: неверное значение для целого числа: "session_duration"
select cast(data->'functional'->'session_duration' as integer) *2 from config where is_active='t';
ОШИБКА: привести тип jsonb к integer нельзя