@pgsql

Страница 666 из 1062
Darafei
04.02.2018
20:27:42
кстати, очень красиво в монге сделаны геоиндексы, прошивают насквозь все уровни абстракции

не дай боже захочешь чего неожиданного, всё, у тебя нет больше геоиндексов, никак

Darafei
04.02.2018
20:55:45
https://docs.mongodb.com/manual/geospatial-queries/

Google
Pavel
04.02.2018
21:04:43
Pavel
04.02.2018
21:56:56
Когда алкоголь льется рекой — это глупо. Его пить надо

Anton [Mgn, az09@osm]
05.02.2018
02:33:42
Да пусть льется! Глупо когда его пить НАДО

Mikhail
05.02.2018
05:16:26
https://docs.mongodb.com/manual/geospatial-queries/
А как этим в реальной жизни пользоваться? Там же геоид только сферический. (не говоря о WGS84-only)

Darafei
05.02.2018
05:17:45
а когда в реальном order by не хватало сферического геоида?

Mikhail
05.02.2018
05:22:16
Ну, если только orderby. Когда ты хранишь координаты в проецированных системах, а при переходе переводишь в базовую географическую и не WGS84 (например, чтобы выполнить какие-то расчеты), то вполне может понадобиться.

Darafei
05.02.2018
05:24:16
ну и если действительно надо не wgs84, то пилится совместимость с легаси такого уровня, что 98% геобиблиотек не подойдут

потому что ты, например, начинаешь не мочь использовать geojson, mvt и kml

Mikhail
05.02.2018
05:29:49
потому что ты, например, начинаешь не мочь использовать geojson, mvt и kml
Внезапно посмотрел "свежий" RFC и там они действтельно убрали возможность использовать не основанные на WGS84 системы. Спасибо.

Alexey
05.02.2018
05:51:14
Речь об одном любители майсикуеля , который видимо не внимательно прочитал историю схемалесса
каждый раз, когда встречаюсь с людьми из убера, пересказываю им свежую порцию твоих историй о том, что и как они на самом деле используют. Они так громко смеются всегда

Max
05.02.2018
06:45:41
Коллеги, доброе утро. Может кто-то сталкивался и подскажет. Задача: Есть "задача", которая может состоять из подзадач, котрые в свою очередь тоже состоят из подзадач и т.д. Эта информация представлена таблицей с двумя полями: id, sub_id. Мне нужно получить все подзадачи для всех задач. Например: исходная id | sub_id —--------- 1 | 2 2 | 3 3 | null 4 | 5 5 | 6 6 | null нужно получить id | sub_id —--------- 1 | 2 1 | 3 2 | 3 4 | 5 4 | 6 5 | 6 Знаю как используя CTE сделать, но только для конкретной записи, указывая ее id в базовом селекте WITH RECURSIVE tt AS ( SELECT id, sub_id FROM task where id = 4 UNION SELECT t.id, t.sub_id FROM task t INNER JOIN tt ON t.id = tt.sub_id ) SELECT * FROM tt а мне надо сразу для всех, чтобы потом заджойнить - выбрать все задачи, у которых завершены подзадачи

Аггей
05.02.2018
06:52:03
Насколько я вас понял - вам надо выбрать в первом select те записи id которых не встречаются в sub_id

Google
Max
05.02.2018
06:56:06
не совсем, такие я выбрать могу, мне надо чтобы в результируюшем селекте id повторялся столько раз, сколюко у него подзадач любого уровря вложенности + id подзадачи.

Yaroslav
05.02.2018
06:56:45
Коллеги, доброе утро. Может кто-то сталкивался и подскажет. Задача: Есть "задача", которая может состоять из подзадач, котрые в свою очередь тоже состоят из подзадач и т.д. Эта информация представлена таблицей с двумя полями: id, sub_id. Мне нужно получить все подзадачи для всех задач. Например: исходная id | sub_id —--------- 1 | 2 2 | 3 3 | null 4 | 5 5 | 6 6 | null нужно получить id | sub_id —--------- 1 | 2 1 | 3 2 | 3 4 | 5 4 | 6 5 | 6 Знаю как используя CTE сделать, но только для конкретной записи, указывая ее id в базовом селекте WITH RECURSIVE tt AS ( SELECT id, sub_id FROM task where id = 4 UNION SELECT t.id, t.sub_id FROM task t INNER JOIN tt ON t.id = tt.sub_id ) SELECT * FROM tt а мне надо сразу для всех, чтобы потом заджойнить - выбрать все задачи, у которых завершены подзадачи
А почему у Вас иерархия какая-то перевёрнутая? Обычно делают (task_id, parent_task_id)... По вопросу: если задачи —- это те записи, где sub_id —- NULL, то в первой ветке recursive UNION: SELECT id, sub_id FROM task where id IS NULL; И ещё, зачем у Вас там UNION, а не UNION ALL?

Max
05.02.2018
06:59:43
это я уже сам перевернул. Для простоты, мне показалось что так будет проще - это вьюха, которая джойнит таблицу саму с собой CREATE OR REPLACE VIEW public.task AS SELECT m.id, s.id as sub_id FROM task_test m LEFT JOIN task_test s on s.main_id = m.id

А почему у Вас иерархия какая-то перевёрнутая? Обычно делают (task_id, parent_task_id)... По вопросу: если задачи —- это те записи, где sub_id —- NULL, то в первой ветке recursive UNION: SELECT id, sub_id FROM task where id IS NULL; И ещё, зачем у Вас там UNION, а не UNION ALL?
1) Это всё задачи и те у которых есть под задачи и те у которых их нет 2) Вы наверное опечатались и хотели написать sub_id ISNULL 3) UNION потому что не нужны повторяющиеся значения В любом случае CTE дает цепочку 1-2, 2-3 и т.п. а мне надо 1-2, 1-3. Зада1 фактически состоит из двух подзадач 2 и 3

Yaroslav
05.02.2018
07:10:11
> 2) Вы наверное опечатались и хотели написать sub_id ISNULL Нет. Предикат записывается именно так. Или о чём Вы?

Max
05.02.2018
07:11:12
SELECT id, sub_id FROM task where id IS NULL - id не может быть NULL

Yaroslav
05.02.2018
07:12:29
SELECT id, sub_id FROM task where id IS NULL - id не может быть NULL
А, да, извините, я что-то засмотрелся на Вашу ошибку в написании "IS NULL". ;)

Max
05.02.2018
07:12:47
какую ошибку ? )))

можно и IS NULL и ISNULL

если вы об этом

Yaroslav
05.02.2018
07:16:11
если вы об этом
Да, об этом. Просто не пользуюсь нестандартным синтаксисом и забыл о нём. ;)

Max
05.02.2018
07:19:49
в общем надо получить таблицу в которой первый столбец это id задачи, а второй его подзадачи, но не обязательно первого уровня вложенности. Т.е. фактически задача состоит и из под задач своих подзадач. И надо выбрать задачи, у которых все-все подзадачи завершены

поэтому меня не устраивает передвать в CTE id задачи, котора меня инетерсует, потому что мне интересуют все, хочется одним запросом выбрать все что надо

Anton [Mgn, az09@osm]
05.02.2018
07:30:34
кажется тут нужен триггер

Yaroslav
05.02.2018
07:34:01
поэтому меня не устраивает передвать в CTE id задачи, котора меня инетерсует, потому что мне интересуют все, хочется одним запросом выбрать все что надо
— Так, что ли? WITH RECURSIVE tt AS ( SELECT id, sub_id FROM task WHERE sub_id IS NOT NULL UNION ALL SELECT tt.id, t.sub_id FROM tt INNER JOIN task AS t ON t.id = tt.sub_id ) SELECT * FROM tt WHERE sub_id IS NOT NULL

Yaroslav
05.02.2018
07:36:11
спасибо, добрый человек
Вы протестируйте, вдруг я не так понял. ;)

Max
05.02.2018
07:37:35
да, я первым делом запустил на тестовых данных, все нормально на первый взгляд.

хм, что-то похожее писал но не получил нужного результата, будем посмотреть что я не так делал

спасибо

Google
Let Eat
05.02.2018
08:16:13
— Так, что ли? WITH RECURSIVE tt AS ( SELECT id, sub_id FROM task WHERE sub_id IS NOT NULL UNION ALL SELECT tt.id, t.sub_id FROM tt INNER JOIN task AS t ON t.id = tt.sub_id ) SELECT * FROM tt WHERE sub_id IS NOT NULL
Красотища. Можно вопрос? Зачем в конце еще один IS NOT NULL? Внутри же sub-id и так всегда != NULL?

Yaroslav
05.02.2018
08:17:46
Красотища. Можно вопрос? Зачем в конце еще один IS NOT NULL? Внутри же sub-id и так всегда != NULL?
Попробуйте на данных автора: CREATE TABLE task(id int NOT NULL, sub_id int); INSERT INTO task(id, sub_id) VALUES (1, 2), (2, 3), (3, NULL), (4, 5), (5, 6), (6, NULL);

Антошин
05.02.2018
08:53:25
Добрый день!

Подскажите пожалуйста, что такое http.control, лежит по адресу /usr/pgsql-x.x/share/extension/http.control, на что влияет и к чему может привести)

данный модуль, я так понимаю отсутствует в обычной версии pg

Mike Chuguniy
05.02.2018
09:21:38
Подскажите пожалуйста, что такое http.control, лежит по адресу /usr/pgsql-x.x/share/extension/http.control, на что влияет и к чему может привести)
А вы натравите на этот файлик пакетный менеджер (rpm\|dpkg) и покажите вывод. может кто-нибудь что-нибудь и скажет...

Судя по названию - для эффективного (а может и "эффективного") хранения целых веб-страниц в пг.

Антошин
05.02.2018
09:23:07
на гитхабе пишут https://github.com/pramsey/pgsql-http, но мне по описанию он доверия вообще не внушил, а наоборот.

кто в курсе, подскажите)

Ivan
05.02.2018
11:41:29
кто в курсе, подскажите)
Судя по всему Curl обвернутый в SQL :)

Антошин
05.02.2018
11:42:42
Судя по всему Curl обвернутый в SQL :)
а для чего это нужно и какие дыры откроет данное расширение?

хотя для чего, я примерно понимаю

Ivan
05.02.2018
11:44:55
даж не знаю, может дернуть веб сервис для нотификации к событию, но как по мне бесполезное расширение

Антошин
05.02.2018
11:46:00
я так понимаю, дырок с ним много появляется?

Nick
05.02.2018
13:22:19
Подскажите, а with создает временную таблицу или это только для упрощения написания запросов и планировщик заинлайнит запрос?

Evgeniy
05.02.2018
13:22:38
не заинлайнит

Nick
05.02.2018
13:22:58
т.е. всетаки временная таблица?

и типа надо заранее думать как много данных будет в результате выборки

Evgeniy
05.02.2018
13:23:25
но и не как временная, аналайз на нее не сделать, статистику особо не собрать

Google
Nick
05.02.2018
13:24:12
короч чтоыб было хорошо нужно условие выборки постаратсья внутрь with прокидывать?

Evgeniy
05.02.2018
13:24:28
да, пушить внутрь самому

Tanu
05.02.2018
13:26:10
Привет всем! Подскажите, как сконвертнуть дамп БД postgres 9.4 из формата sql в бинарный?

Nick
05.02.2018
13:26:42
with T ( select — по всем данным с группировкой ) select from T where F > 4 and R < 3

чтото такое

ну и F и R это результаты сум по филдам

я понимаю что есть having

ок, спасибо

т.е. планировщик всетаки умный)

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