
ildus
26.07.2017
12:16:27

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

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-совместимой базой, на усмотрение разрабов. Мы про это.

Dmitry
26.07.2017
12:39:27

Vladislav
26.07.2017
12:39:32

Сергей
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, т.е. просто совместимость базы не гарантирует порядок выдачи

Vladislav
26.07.2017
12:43:21

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

Vladislav
26.07.2017
12:46:23

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

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

Mike Chuguniy
26.07.2017
12:49:35

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

Darafei
26.07.2017
13:43:08

Pavel
26.07.2017
13:43:30

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

Pavel
26.07.2017
13:43:57

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

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';
^

Pavel
26.07.2017
13:55:39

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

Pavel
26.07.2017
13:56:18
Мистика

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 варианте работает?

Pavel
27.07.2017
07:05:05

Артур
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
и я не про докер-через-виртуалку