@pgsql

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

Yaroslav
10.09.2018
14:28:07
Dmitry
10.09.2018
14:29:24
А я знаю, Дмитрий. :) "unpredictable subset of the query's rows" переводится как "непредсказуемое подмножество rows [результата] запроса", кстати.
Нет, ну это дословный перевод. А то что предлагаете Вы или Дарафей я классифицирую как "результат неопределён". Это могут быть последствия длительного влияния C++ ?

Google
Alexey
10.09.2018
14:31:00
Если компаратор типа данных не говорит равно на неидентичные строки
Пусть у всех тип integer. Я делаю миллион инсертов (5, 5, 5).

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

Darafei
10.09.2018
14:32:02
Пусть у всех тип integer. Я делаю миллион инсертов (5, 5, 5).
Ну вы б что-то интереснее взяли, хотя бы бинарный double и сигнальные NaN

Alexey
10.09.2018
14:32:51
Ну вы б что-то интереснее взяли, хотя бы бинарный double и сигнальные NaN
Я не прочь их взять после того, как мы с вами разберёмся с менее интересными для вас и интересными для меня типами - integer

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

Yaroslav
10.09.2018
14:35:05
Ну UB нет в SQL, конечно. Но ведь UB - это неопределённое поведение, а это совсем не то, что "неопределённый результат". Так что я всё же останусь при своей трактовке, с Вашего позволения ?
А зря. Трактовка-то Ваша неправильная, и Вы просто [возможно] будете добавлять ORDER BY туда, где он совсем не нужен (и даже мешает).

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

Darafei
10.09.2018
14:36:55
Это ответ на мой вопрос с select ctid, a, b, c from test order by a, b, c offset 3 limit 2?
Да. Вернется какая-то одинаковая сторка, непонятно, какая

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

Alexey
10.09.2018
14:40:22
Да, при особом желании их даже из совсем разных страниц и не подряд получить можно
Т.е. если я такой весь принципиальный и хочу их получить в определённом порядке, то мне нужно ещё sort по ctid делать? И там, видимо, компаратор должен правильно должен быть написан

Alexey
10.09.2018
14:42:01
Окей

Darafei
10.09.2018
14:42:44
ctid между запросами тоже поехать может :)

В таблице с партициями он тоже повторится

Alexey
10.09.2018
14:43:45
?

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
А если для результата запроса это неважно, как в ранее приведённом примере? ;) Хотя, честно говоря: a) Этого почти никогда не бывает на практике. b) Даже в этом случае потеряна будет только производительность.
Видите ли, явное лучше неявного. Про такие нюансы, как неопределённый порядок в результирующем множестве программист по правое плечо от Вас за соседним столом может и забыть. Поэтому то, то можно сделать явным, особенно если это рекомендуется документацией, лучше делать явным, если речь идёт о командной работе. А так, если Вы сами для себя пишите и точно понимаете что хотите - да нет проблем ?

Google
Dmitry
10.09.2018
15:01:18
конечно, нет - ведь лишнее явное мешает строить оптимальный план запроса
Не зря же тенденции таковы, что появляются такие языки, как Go. То, что в Си++, например, делается неявно, в Go намеренно предписано делать явным - проверять коды ошибок, тогда как в Си++ в любой момент может вылететь исключение. Потому что С++ расчитан на экспертов, Go - нет.

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

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
Yaroslav
10.09.2018
16:29:21
Локально это неприемлемо т.к. локальных ресурсов для этого не хватает. pg_dump - средство создания логического бэкапа конкретной БД.
Дампа, а не backup-а. Совсем разные вещи. Ну ладно, а какой у Вас есть доступ к этим ресурсам? Кстати, pg_basebackup / pg_dump можно было бы запускать и "с той стороны"... но это Вам не подойдёт, как я понимаю? И ещё, вообще-то пользователи PostgreSQL и OS никак не связаны (кроме возможности некоторых видов аутентификации).

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

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

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_basebackup, кто знает как оно внутри работает? Или что можно ответить людям, когда спрашивают как оно работает внутри?
"Файловый", бинарный backup снимает, грубо говоря (+ WAL). А в документации это не описано (я не помню)?

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

Туко
10.09.2018
17:06:21
"Файловый", бинарный backup снимает, грубо говоря (+ WAL). А в документации это не описано (я не помню)?
Да вот спросили именно о том как он работает внутри, типа как оно работает внутри, что как делает, наверное в какой последовательности какие операции выполняет. Я никогда не задумывался о том как он работает внутри, пользовался им для разных целей, но никогда в голову не приходило лезть в сырцы и смотреть что и как он делает.

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
ок. Спасибо

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