@pgsql

Страница 416 из 1062
Dmitry
26.07.2017
12:16:38
Вот вам и ответ. БД вам гарантирует. Её движёк. А SQL не гарантирует

Fike
26.07.2017
12:16:50
вьюха что ли?

ну все, поражен

Google
Vladislav
26.07.2017
12:17:01
вьюха что ли?
проекция - физическое хранение

Fike
26.07.2017
12:17:31
она что, каждый раз целиком перестраивается?

Vladislav
26.07.2017
12:18:09
там под капотом несколько логик, есть реалтайм и есть с задержкой

реалтайм медленее, по понятным причинам

Dmitry
26.07.2017
12:19:18
Так что за БД?

Vladislav
26.07.2017
12:19:50
vertica

Mike Chuguniy
26.07.2017
12:30:23
окей, можно цитату из стандарта SQL, а не документации БД?
A table is a collection of zero or more rows where each row is a sequence of one or more column values. In general, rows in a table are unordered; however, rows in a table are ordered if the table is the result of a <query expression> that immediately contains an <order by clause>. Each column has a name and a data type. Each row has exactly one value for each column C, and the data type of that value is the data type of C.

Отседова: http://standards.iso.org/ittf/PubliclyAvailableStandards/c053681_ISO_IEC_9075-1_2011.zip

Vladislav
26.07.2017
12:31:14
In general, rows in a table are unordered;

как бы зависит от бд

Mike Chuguniy
26.07.2017
12:32:51
Вы просили цитату из СТАНДАРТА SQL о том, что он не гарантирует. Вот цитата, что ещё надо?

Vladislav
26.07.2017
12:33:49
вот только не гарантирует БД

Fike
26.07.2017
12:34:04
stahp

Google
Dmitry
26.07.2017
12:34:07
не гарантирует БД, а не SQL
Так всё-таки БД гарантирует или не гарантирует???

вот только не гарантирует БД
Вы только что привели БД в которой порядок гарантирован. Вы сами себе противоречите

Vladislav
26.07.2017
12:35:51
я себе не противоречу, при классическом запросе без order by моя бд выдаст априори сортированный список

зависимость от БД, как будет выдаваться данные без order by

Dmitry
26.07.2017
12:36:49
Отлично. И это гарантированно движком БД, а не SQL. SQL порядок не гарантирует, о чём было изначально сказано

Vladislav
26.07.2017
12:36:52
некоторые БД гарантируют сортировку, большинство нет, при этом в документации по БД так и пишут

гарантии выдает БД, а не SQL, если не указана сортировка

так понятно?

а сказано было совсем другое

Dmitry
26.07.2017
12:38:57
Darafei
26.07.2017
12:39:01
да, и это значит, что при переносе запроса (или, чаще, написателя запросов) на другую базу "гарантированный базой" порядок может сломаться

Fike
26.07.2017
12:39:04
SQL гарантирует необязательность порядка выдачи при работе с SQL-совместимой базой, на усмотрение разрабов. Мы про это.

Сергей
26.07.2017
12:39:38
без order_by данные вытаскиваются в неопределенной последовательности. таблица это неупорядоченное множество

Fike
26.07.2017
12:39:50
Мы не стремились опровергнуть то, что определенные разрабы могут запульнуть дефолтный ордер при каких-то условиях или вообще всегда.

Vladislav
26.07.2017
12:40:07
Fike
26.07.2017
12:40:21
not that heck again

Стандарт не предписывает иметь обязательный порядок. Анонимный вакуумист при работе с SQL-совместимой базой не должен рассчитывать на постоянный порядок. Тем не менее, он может быть. Это говорит стандарт.

Таким образом он гарантирует необязательность этого порядка при встрече с какой-то совместимой базой. Порядок может быть, но не обязательно.

Google
Fike
26.07.2017
12:41:54
Надеюсь, здесь не найдется логических неувязок

Vladislav
26.07.2017
12:42:28
Я влез вот сюда, если что

SQL не гарантирует порядок выдачи by design

Fike
26.07.2017
12:42:37
И это правда

Darafei
26.07.2017
12:42:43
логических неувязок нет, есть желающий похвастаться базой, которая даёт гарантии :)

Fike
26.07.2017
12:43:06
Выше есть цитата о том, что порядок implementation-dependent, т.е. просто совместимость базы не гарантирует порядок выдачи

Darafei
26.07.2017
12:45:53
просто логика в отрицаниях - штука хрупкая. не даёт гарантий база, не даёт гарантий SQL, не даёт гарантий моя кошка, не даёт гарантий никто. если кто-то хочет давать гарантии, то стандарт этого не запрещает, но полагаться на это в общем случае не стоит.

Darafei
26.07.2017
12:46:32
и спор "не даёт гарантий база или не даёт гарантий SQL" не очень осмысленен

Vladislav
26.07.2017
12:46:44
окей, согласен

Mike Chuguniy
26.07.2017
12:49:35
и спор "не даёт гарантий база или не даёт гарантий SQL" не очень осмысленен
Зато у меня сейчас часть стандарта на компе лежит. так что не всё так однозначно в подлунном мире. :)

Pavel
26.07.2017
13:36:42
Ну шо, поговорим за мистику? ? Копаюсь в beta2 regression tests, вижу новое ALTER USER ALL SET application_name to 'SLAP'; В beta1 такая херь не работала. Точно знаю. решил проверить грамматику gram.y: AlterUserStmt: ALTER USER RoleSpec SetResetClause; RoleSpec: NonReservedWord | ...; ALL — зарезервированное слово! Какого хера? Оно не должно работать. Почему оно работает?

Dmitry
26.07.2017
13:41:59
Может оно для всех юзеров параметр выставляет?

Pavel
26.07.2017
13:42:55
Может оно для всех юзеров параметр выставляет?
Да, оно так работает. Я к тому, что согласно исходникам постгреса такая конструкция должна выдавать ошибку

Pavel
26.07.2017
13:43:30
а это единственное правило на alter user?
Не, еще есть одно, но там тоже RoleSpec

Dmitry
26.07.2017
13:43:51
https://www.postgresql.org/docs/10/static/sql-alterrole.html

Dmitry
26.07.2017
13:44:00
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT } ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET configuration_parameter ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET ALL

Google
Pavel
26.07.2017
13:44:07
Dmitry
26.07.2017
13:44:18
Согласно доке всё ок

Pavel
26.07.2017
13:44:29
Я это все вижу и знаю. Но! Смотрю в исходники, а там болт. Не должно!

Именно поэтому и вопрос. Или лыжи не едут, или что-то не так

Dmitry
26.07.2017
13:45:47
А можно путь к исхднику? А то с картинки плохо поспринимается? Файл и номер строки

Pavel
26.07.2017
13:47:45
А можно путь к исхднику? А то с картинки плохо поспринимается? Файл и номер строки
https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/parser/gram.y;h=4b1ce09c445a5ee249a965ec0953b122df71eb6f;hb=refs/heads/master Строка 1167 или 1179, смысл тот же

Admin
ERROR: S client not available

Pavel
26.07.2017
13:51:16
Само правило для RoleSpec на строке 14515

Arthur
26.07.2017
13:55:07
а такой синтаксис и не работает в expected/rolenames.out: ALTER USER ALL SET application_name to 'SLAP'; ERROR: syntax error at or near "ALL" LINE 1: ALTER USER ALL SET application_name to 'SLAP'; ^

Arthur
26.07.2017
13:56:00
select version(); version —--------------------------------------------------------------------------------------- PostgreSQL 10beta2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.1.1 20170630, 64-bit

Arthur
26.07.2017
13:57:12
у меня как раз выдает ошибку "ERROR: syntax error at or near "ALL"" если выполнить запрос в psql

Pavel
26.07.2017
13:57:29
Неужто баг нашел? ?Счастье-то какое

Arthur
26.07.2017
13:58:19


Pavel
26.07.2017
13:58:49
Из сорсов собирал?

Arthur
26.07.2017
13:59:01
да из мастера

Google
Pavel
26.07.2017
13:59:06
У меня просто инсталлер от ЕДБ, может они чего вкрутили и забыли рассказать )))

Darafei
26.07.2017
14:42:19
PgConf.Cибирь 2017 https://pgconf.ru/201709

Dmitry
27.07.2017
05:55:40
psql (10beta2) Type "help" for help. postgres=# select version(); version ----------------------------------------------------------------------------------------- PostgreSQL 10beta2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.1.1 20170630, 64-bit (1 row) postgres=# ALTER USER ALL SET application_name to 'SLAP'; ERROR: syntax error at or near "ALL" LINE 1: ALTER USER ALL SET application_name to 'SLAP'; ^

postgres=# ALTER ROLE ALL SET application_name to 'SLAP'; ALTER ROLE

Для user не работает, для role работает

Скорее всего в EDB более граммотно алиас запилили

Pavel
27.07.2017
06:38:30
Скорее всего в EDB более граммотно алиас запилили
Выяснилось. В ALTER ROLE запилили правило, в USER забыли You'll notice that that statement fails in the regression tests: ALTER USER ALL SET application_name to 'SLAP'; ERROR: syntax error at or near "ALL" The one that works is ALTER ROLE ALL SET application_name to 'SLAP'; and the reason is that AlterRoleSetStmt has a separate production for ALL, but AlterUserSetStmt doesn't. This seems a tad bizarre though. Peter, you added that production (in commit 9475db3a4); is this difference intentional or just an oversight? If it's intentional, what's the reasoning? BTW, I'm quite confused as to why these test cases (in rolenames.sql) seem to predate that commit, and yet it did not change their results. regards, tom lane

Dmitry
27.07.2017
07:00:59
Кинь плиз ссылочку на хакерс на эту ветку. Может и Брюс что напишет, он всё же в EDB. Ты не писал, что в EDB варианте работает?

Артур
27.07.2017
08:05:35


Aleksey
27.07.2017
08:27:45
она через докер работает вродь)

Darafei
27.07.2017
08:28:56
она через докер работает вродь)
простите, что такое "работает через докер" в контексте винды?

Mike Chuguniy
27.07.2017
08:29:23
она через докер работает вродь)
Докер на винде - это отдельное непотребство.

Fike
27.07.2017
08:29:30
ну строго говоря докер под винду уже давно есть, но там, конечно, своя специфика

Aleksey
27.07.2017
08:29:33
вроде как поднимает докер и через него запускает убунту

Fike
27.07.2017
08:29:36
и я не про докер-через-виртуалку

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