
Dmitry
10.09.2018
14:26:54
Не "неопределённый результат", а результат LIMIT-а, кторый применён к rows, отсортированным в произвольном порядке.
Т.е. если у Вас, например, есть:
"... LIMIT 3;"
и без LIMIT возвращается больше трёх rows, возрат двух — это, безусловно, bug в СУБД.
И ещё раз, здесь Вам не C. ;)
Ну не знаю, Ярослав. Для меня "unpredictable subset of the query's rows" - это "неопределённый результат". Если Вам удобнее "результат LIMIT-а, кторый применён к rows, отсортированным в произвольном порядке" - я не против.

Darafei
10.09.2018
14:27:44

Yaroslav
10.09.2018
14:28:07

Dmitry
10.09.2018
14:29:24

Google

Alexey
10.09.2018
14:31:00

Yaroslav
10.09.2018
14:31:26

Darafei
10.09.2018
14:32:02

Alexey
10.09.2018
14:32:51

Dmitry
10.09.2018
14:33:34
> Нет, ну это дословный перевод.
Ну да, и это именно то, что гарантируется.
> А то что предлагаете Вы или Дарафей я классифицирую как "результат неопределён".
Не надо это так классифицировать. Здесь Вам не тут. ;)
> Это могут быть последствия длительного влияния C++ ?
Они и есть, похоже. Никакого undefined behavior (со всеми его ужасами) в SQL, к счастью, нет.
Ну UB нет в SQL, конечно. Но ведь UB - это неопределённое поведение, а это совсем не то, что "неопределённый результат". Так что я всё же останусь при своей трактовке, с Вашего позволения ?

Darafei
10.09.2018
14:34:13
В общем, SQL не дает гарантий значительно сверх того, что написано его текстом при прочтении его как английского текста

Dmitry
10.09.2018
14:34:53

Yaroslav
10.09.2018
14:35:05

Dmitry
10.09.2018
14:36:00

Alexey
10.09.2018
14:36:04

Darafei
10.09.2018
14:36:26

Yaroslav
10.09.2018
14:36:52
Но, кстати, в SQL Implementation-dependent очень много (куда больше, чем в том же C, наверное), и запросы нужно писать так, чтобы результат от этого не зависел.

Darafei
10.09.2018
14:36:55

Google

Alexey
10.09.2018
14:37:07
Так как у меня там ctid

Darafei
10.09.2018
14:38:28
Да, при особом желании их даже из совсем разных страниц и не подряд получить можно

Alexey
10.09.2018
14:38:51
ОМГ, окей

Dmitry
10.09.2018
14:39:15
А зачем?
Потому что это соответствует рекомендациям документации — When using LIMIT, it is a good idea to use an ORDER BY clause that constrains the result rows into a unique order. Otherwise you will get an unpredictable subset of the query's rows

Yaroslav
10.09.2018
14:40:19

Alexey
10.09.2018
14:40:22

Eugeny
10.09.2018
14:40:45

Yaroslav
10.09.2018
14:41:44

Alexey
10.09.2018
14:42:01
Окей

Darafei
10.09.2018
14:42:44
ctid между запросами тоже поехать может :)
В таблице с партициями он тоже повторится

Alexey
10.09.2018
14:43:45
?

Dmitry
10.09.2018
14:43:56

Darafei
10.09.2018
14:46:19
например, без ордер бай удобно делать skip locked

Айтуар
10.09.2018
14:46:49
Офигеть какой срач из-за одного запроса ))

MikaelBox
10.09.2018
14:47:17
да ваще

Yaroslav
10.09.2018
14:47:40
Тогда можно и без ORDER BY ?
А если для результата запроса это неважно, как в ранее приведённом примере? ;)
Хотя, честно говоря:
a) Этого почти никогда не бывает на практике.
b) Даже в этом случае потеряна будет только производительность.
Офигеть какой срач из-за одного запроса ))
Наверное, потому, что ответ на него сразу показывает, понимает ли отвечающий важный принцип, лежащий в основе выполнения SQL-запросов — то, что почти всё может на самом деле выполняться в произвольном порядке (более того, планировщик имеет право выбирать этот порядок, игнорируя возможные runtime error). :)

Dmitry
10.09.2018
14:54:18

Google

Darafei
10.09.2018
14:55:15

Dmitry
10.09.2018
14:55:37

Yaroslav
10.09.2018
14:56:41

Dmitry
10.09.2018
15:01:18

Stas
10.09.2018
15:06:02
Всем привет. Не подскажите, если ли в posgre функция, которая вычисляет глубину дерева при Materialized Path?

Yaroslav
10.09.2018
15:07:23

elfiki
10.09.2018
15:13:35

Stas
10.09.2018
15:30:23
array_length(path, 1) ?
не, не так просто) интересует вычисление уровня вложенности, например рутовый элемент level 1, его дети level 2 и так далее.

elfiki
10.09.2018
15:32:53
не очень понятен вопрос. при Materialized Path же как раз то что я написал возвращает глубину конкретного элемента

Stas
10.09.2018
15:37:20
мне нужно отталкиваться от рутового элемента дерева и для каждого потомка распечатывать его уровень.

elfiki
10.09.2018
15:43:36
и?
а, считать глубину для произвольного элемента?
ну то есть есть
1 | {1}
2 | {1,2}
3 | {1,2,3}
4 | {1,2,4}
5 | {1,2,5}
6 | {1,2,6}
7 | {1,2,3,7}
и нужно посчитать глубину для 2 | {1,2} например?
ну то есть что у него потомков максимум 2?
или вернуть все записи которые потомки этого элемента, но при этом показывать уровень аложенности?
чтобы в ответе было что-то вроде?
2 | {1,2} | 0
3 | {1,2,3} | 1
4 | {1,2,4} | 1
5 | {1,2,5} | 1
6 | {1,2,6} | 1
7 | {1,2,3,7} | 2

Stas
10.09.2018
15:54:16
чтобы в ответе было что-то вроде?
2 | {1,2} | 0
3 | {1,2,3} | 1
4 | {1,2,4} | 1
5 | {1,2,5} | 1
6 | {1,2,6} | 1
7 | {1,2,3,7} | 2
да, наверное нужно написать функцию которая будет вырезать path корневого элемента из path элемента, а далее array_length

elfiki
10.09.2018
15:54:39
да просто array_length(path - root_path, 1)

Terminator
10.09.2018
15:56:00
@ded_d555 будет жить. Поприветствуем!

Stas
10.09.2018
15:56:12

Google

elfiki
10.09.2018
15:56:15
если известен путь корня и его можно передать в запрос, то просто его вычетать и все ну или вычетать его глубину

Николай
10.09.2018
16:16:18
Доброго времени суток.
Подскажите есть ли способ сбэкапить базу данных postgresql через pg_dump на сетевой источник типа:
NFS
FTP (over curlftpfs)
Проблема:
ошибка ввода вывода т.к. сторонний ресурс не подконтрольный мне (не я разворачивал сервак с хранилищем, а оно от хостера как сервис).
Следовательно мотируется как root или еще какой другой пользователь.
Когда резервировался на свою самбу, то разруливал это через опции монтирования. Монтировал как от пользователя postgres.

Yaroslav
10.09.2018
16:22:08

Николай
10.09.2018
16:25:23

Yaroslav
10.09.2018
16:29:21

Николай
10.09.2018
16:29:53
Шара SaaS.
Оттуда никак.

Yaroslav
10.09.2018
16:36:18
Шара SaaS.
Оттуда никак.
Ну так Вы вообще можете хоть под каким-то пользователем туда скопировать?
Если да, см. "пользователи PostgreSQL и OS никак не связаны", т.е. делайте dump из-под этого пользователя OS.

Dmitry
10.09.2018
16:59:10

Yaroslav
10.09.2018
17:00:18

Туко
10.09.2018
17:01:41
Pg_basebackup, кто знает как оно внутри работает? Или что можно ответить людям, когда спрашивают как оно работает внутри?

Dmitry
10.09.2018
17:02:14
Да, я знаю, что там это написано, и что? Вы вот, например, DBA? ;)
Ну, как минимум то, что то, что написано в официальной документации, то и является объективной реальностью ? Если написано, что pg_dump - это средство для создания резервных копий, значит так оно и есть. А что, надо читать одно, а подразумевать другое? Я не знаю кто владеет этим тайным искусством ?


Yaroslav
10.09.2018
17:02:50
Ну, как минимум то, что то, что написано в официальной документации, то и является объективной реальностью ? Если написано, что pg_dump - это средство для создания резервных копий, значит так оно и есть. А что, надо читать одно, а подразумевать другое? Я не знаю кто владеет этим тайным искусством ?
> Ну, как минимум то, что то, что написано в официальной документации, то и является объективной реальностью
Ничего подобного. Там вообще немало, ээ... "интересного" написано. :)
В данном случае, написанное — личное мнение кого-то из разработчиков PostgreSQL (и даже не одного). Но вряд ли они сами DBA, и разбираются в этом. ;)
Хотя, может быть, это и вопрос терминологии. DBA обычно считают backup средства, подходящие для disaster recovery.


Туко
10.09.2018
17:06:21

Dmitry
10.09.2018
17:07:02
А Вы, Ярослав, смелый очень, надо сказать ?

Yaroslav
10.09.2018
17:12:09
А Вы, Ярослав, смелый очень, надо сказать ?
А чего бояться-то? ;) Правду говорить легко и приятно. :)
Вот, например, прямо в приведённой фразе:
> It makes consistent backups even if the database is being used concurrently.
Строго говоря, неправда (т.е. конкуретный DDL может дать Вам "сломанный" dump, если сильно не повезёт). :(

Maksim
10.09.2018
17:13:44
И далеко не всегда приятно. Но то что говорить что разрабы Постгре - такие же смертные люди даже нужно. Иначе начинается молитва на доку и вера во все что они скажут прямо как с британскими учеными


Yaroslav
10.09.2018
17:19:16
Ну да. Все мы люди, все ошибаемся.
Да и вообще, как говорится, для разработчиков СУБД её пользователи — просто тестовая нагрузка. ;)
Я тому, что сами они, в основном не DBA, а разработчики; и многие из них заняты в основном разработкой PostgreSQL, а не применением его в своих проектах, поэтому у них угол зрения не такой, как, например, у нас. ;)


Dmitry
10.09.2018
17:24:54
Ну да. Все мы люди, все ошибаемся.
Да и вообще, как говорится, для разработчиков СУБД её пользователи — просто тестовая нагрузка. ;)
Я тому, что сами они, в основном не DBA, а разработчики; и многие из них заняты в основном разработкой PostgreSQL, а не применением его в своих проектах, поэтому у них угол зрения не такой, как, например, у нас. ;)
Ну так то Вы правы, что все ошибаются. Но вот ставить под сомнение терминологию и документацию утилит Постгреса, которым уже добрых 2 десятка лет (больше), я бы столь откровенно не решился ?
А что Вы считаете резервной копией БД в таком случае? Актуализированную реплику что-ли?

Google

Yaroslav
10.09.2018
17:30:59
> Но вот ставить под сомнение терминологию и документацию утилит Постгреса, которым уже добрых 2 десятка лет (больше),
А я слышал, некоторые другие СУБД (которым уже больше 3 десятков лет), вообще бессовестно лгут в своей документации, и ничего. :)
> я бы столь откровенно не решился ?
Ну ошиблись люди, это не их "огород", и что тут такого?
> А что Вы считаете резервной копией БД в таком случае?
Хотя бы pg_basebackup. Потому что на его основании можно добиться целевых RTO/RPO, а pg_dump для этого как-то не очень (скорее очень не) подходит.
> Актуализированную реплику что-ли?
Да, тоже может быть частью стратегии disaster recovery. От требований зависит.

Terminator
10.09.2018
18:00:47
Orifjon будет жить. Поприветствуем!

Orifjon
10.09.2018
18:04:15
Добрый вечер. У меня вопрос, есть таблица в Ms Excel (расписание уроков для колледжа) хочу чтоб Телеграмм бот с базы MS Excel по группам или по дням брал столбцы и показывал расписание уроков. Как это реализовать?
Типа "Расписание - Финунивер" но я не разбираюсь в програмирование Phiton, разработчик мне по советовал типа PostgreS чтоб проста с Ms Excel экспортировал таблицу по запросу.
Как это реализовать в какой канал? Куда?

Yaroslav
10.09.2018
18:10:47
Как это реализовать в какой канал? Куда?
А кто его знает... Но, казалось бы, зачем здесь PostgreSQL (сам по себе он из Excel данные получать не умеет, насколько я знаю... хотя, может и есть какой-нибудь FDW в интернете)? Но даже если Вы эти данные в таблицу PostgreSQL импортируете, чем это легче? Всё равно же их надо будет как-то этим ботом вытаскивать...
Поищите канал(ы) про программирование telegram-ботов, наверное.

Orifjon
10.09.2018
18:11:19
ок. Спасибо

Denis
10.09.2018
18:59:30