@pgsql

Страница 128 из 1062
Сергей
19.10.2016
10:08:59
можно использовать триггеры на таблицах - как вариант cascade

Mars
19.10.2016
10:22:08
можно использовать триггеры на таблицах - как вариант cascade
Нет возможности для модификаций схемы..

Sergey
19.10.2016
10:32:17
Привет! Есть вопрос про \u0000, который тут недавно обсуждали. Почему не работает select ('{"a": "\u0000"}'::JSONB); - понятно. Но не понятно другое: почему select ('{"a": "\u0000"}'::JSON) валидно, а select ('{"a": "\u0000"}'::JSON)->>'a'; кидает ошибку? Т.е. записать ключ в базу можно с \u0000, а выбрать – нельзя?

Google
Nikki
19.10.2016
10:43:52
http://www.sql.ru/forum/job-offers
Большой спасиб

Andrey
19.10.2016
10:57:32
Кто-нибудь знает какой-нибудь нормальный linter для SQL?

Darafei
19.10.2016
10:58:32
нормальный - не знаю

если "лучше, чем ничего" - то в DataGrip есть

Sergey
19.10.2016
11:12:39
Подскажите, а как можно записать запрос вида: ` AVG(CASE WHEN CAST(metrics-»'currentAverageTemperature' AS double precision)=-16384 THEN 0 WHEN CAST(metrics-»'currentAverageTemperature' AS double precision)=-32768 THEN 0 ELSE CAST(metrics-»'currentAverageTemperature' AS double precision) END ) as avg_temper, ` Без тройного дублирования metrics->>'currentAverageTemperature' ?

Darafei
19.10.2016
11:17:29
возможно, вам на самом деле нужно: select avg(nullif(nullif(metrics-»'currentAverageTemperature'::float,-16384), 32768))

case обычно пишут люди, не перестроившиеся с императивного программирования

Sergey
19.10.2016
11:21:08
@Komzpa кстати да... Тоже думал на nullif. Сейчас потестирую. Спасибо за наводку :)

Anatoliy
19.10.2016
11:21:16
Case обычно пишут люди, когда несколько условий when и дефолт в виде else, никак с императивным программированием не связанным.

Darafei
19.10.2016
11:21:46
case в принципе очень редко нужен, обычно coalesce/nullif всё решает

Google
Darafei
19.10.2016
11:22:45
они читабельнее

Айтуар
19.10.2016
11:23:50
Ну не знаю, для меня выше пример с case читабельней

Darafei
19.10.2016
11:24:18
он как минимум ведёт себя странно, смещая среднее в 0 при nodata-значениях

а это уже часто баг сам по себе

Айтуар
19.10.2016
11:25:21
А ну просто вместо 0 писать null в том же case.

Darafei
19.10.2016
11:33:18
ну, если тебе начхать на красоту, то да, nullif быстрее: https://gist.github.com/Komzpa/a4f659743eb309fdab74bbdde2b18ded

Sergey
19.10.2016
11:37:52
Ребят, вы крутые )

Sergey
19.10.2016
11:54:32
А как можно победить value out of range: overflow при выборке из jsonb?

Darafei
19.10.2016
11:55:05
overflow?

при выборке, или при avg?

а полайкайте баг, а? :) https://youtrack.jetbrains.com/issue/DBE-3297

Sergey
19.10.2016
11:55:40
при выборке

Darafei
19.10.2016
11:56:07
покажи пример

вообще, только вчера underflow обсуждали

overflow всё-таки падать должен :)

Sergey
19.10.2016
11:57:02
сейчас точно скажу :)

Да, ты прав. select avg(nullif(nullif(cast(metrics-»'currentExternalTemperature' as float),-16384), 32768)), to_char(timestamp, 'YYYY-MM-DD HH:MM:SS' ) as t from metrics group by t; —- ERROR: value out of range: overflow ********** Ошибка ********** ERROR: value out of range: overflow SQL-состояние: 22003

На 141 строке значение.

Darafei
19.10.2016
12:01:56
температура - цельсий?

Google
Sergey
19.10.2016
12:02:11
Да

Евгений
19.10.2016
12:12:30
Dmitry
19.10.2016
12:13:13
https://www.postgresql.org/message-id/24554.1476849661@sss.pgh.pa.us

> e.g. pg_upgrade's corruption of visibility maps

уже все в курсах?

Michael
19.10.2016
12:51:07
уже все в курсах?
чем чревато?

Dmitry
19.10.2016
12:52:03
после апгрейда могут в тихоря сломаться результаты запросов

Yury
19.10.2016
13:07:19
вот по этому я и использую pg_dump ;)

Michael
19.10.2016
13:09:32
Yury
19.10.2016
13:11:50
не всегда возможно:(
это то ясно... но мне можно и я пользуюсь. Заодно фрагментацию индексов убираю.

и прочий блоатинг

а с 9.5 на 9.6 можно логически реплецироваться?

Darafei
19.10.2016
13:41:06
Да
select avg(temperature), to_char(timestamp, 'YYYY-MM-DD HH:MM:SS') as t from (select *, (metrics -» 'currentExternalTemperature') :: float as temperature from metrics ) z where temperature between -100 and 100 group by t;

когда в данные прокрадывается чернь, изгоняйте её физическими ограничениями

внезапно :) зачем?
по IEEE 754, у него нет дефолтной обработки ошибок, в отличие от underflow

James
19.10.2016
13:56:10
ребзя подскажите а реплика с 9.4 на 9.5 будет работать?

ну типа я хочу в мастер 9.4 вогнать слейв 9.5

Евгений
19.10.2016
13:56:27
т.к. даже не всегда это можно считать ошибкой. В данном случае можно считать "очень маленьким числом, неотличимым от 0". Является ли это ошибкой по смыслу? В переполнением - точно ошибка. А тут?

James
19.10.2016
13:56:32
тобишь скопировать папочку

Google
James
19.10.2016
13:56:37
дата

шо значит слонами

я не понимать

будет пахать или нет

Yegor
19.10.2016
13:57:22
James
19.10.2016
13:58:35
оговорюсь что постгрес 9.4 уже в репилке

тобишь хочу добавить ещё 1 слейв

Admin
ERROR: S client not available

Евгений
19.10.2016
13:58:50
нативная репликация - нет, там нужно совпадение версий, а вот сторонними инструментами (напримерб slony) можно. Кстати, таким же образом можно обновлять базу на ходу без выключения надолго.

Darafei
19.10.2016
13:59:01
знаете ли вы, что: https://github.com/postgrespro/postgrespro/blob/ac92c4a9a53c88843533154d2224323509134323/src/backend/utils/adt/float.c#L1805 постгрес на avg считает ещё и сумму квадратов, а потом её выбрасывает

James
19.10.2016
13:59:23
спасибо почитаю про слони

Darafei
19.10.2016
14:00:09
ну да

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

а потом у людей забрать из базы и посчитать агрегат в коде быстрее получается :(

Dmitry
19.10.2016
16:10:46
спасибо почитаю про слони
logical replication VS streaming wal

Dmitrii
19.10.2016
17:06:36
Хммм... А если моя функция возвращает тип table_name то как потом обращаться в полям этой строки, если вызов функции был в сабзапросе?

Все. Нужно просто больше скобочек ?

Google
Darafei
20.10.2016
09:28:38
Yury
20.10.2016
09:28:56
они всегда есть, другой разговор насколько они очевидны или правильные

Darafei
20.10.2016
09:29:56
я понимаю, что avg() и var_pop() в одном запросе так одной функцией считаться будут

Yury
20.10.2016
09:36:39
я понимаю, что avg() и var_pop() в одном запросе так одной функцией считаться будут
нефига: https://github.com/postgrespro/postgrespro/blob/ac92c4a9a53c88843533154d2224323509134323/src/backend/utils/adt/float.c#L1929

Darafei
20.10.2016
09:37:40
в смысле?

это finalfn от агрегата

Yury
20.10.2016
09:38:00
будет разными функциями

счас разберусь что куда

Darafei
20.10.2016
09:38:18
а transfn, который зовётся на каждую строчку, у них общий

https://github.com/postgrespro/postgrespro/blob/ac92c4a9a53c88843533154d2224323509134323/src/backend/utils/adt/float.c#L1805

Yury
20.10.2016
09:41:50
не вижу что то. Вижу только что тип они один и тот же используют: The transition datatype for all these aggregates is a 3-element array of float8, holding the values N, sum(X), sum(X*X) in that order.

собственно легко проверить

ааа всё понял

так пошёл за кофе, иначе тупым себя чувствую

Darafei
20.10.2016
09:46:06
https://github.com/postgrespro/postgrespro/blob/ac92c4a9a53c88843533154d2224323509134323/src/backend/utils/adt/float.c#L1875

не на хранение, а на +1 умножение и +1 overflow check

Yury
20.10.2016
09:46:41
дадад я увидел

понял... он потом в avg тупо делает sum/N

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

Darafei
20.10.2016
09:47:35
и никак не пытается защищать от ошибок округлений

Yury
20.10.2016
09:50:41
https://github.com/postgrespro/postgrespro/commit/bec98a31c55a4f799b398d01541e68d7c086bb81#diff-7068290137a01263be83308699042f1f — вот когда и как это было введено и почти не поменялось за последние 16 лет.

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