
Павел П.
15.12.2016
08:30:42
...можно пометить разделенные через тире и уже беря их пары инсертить 6-3 с шагом +1

raksita
15.12.2016
08:32:28
а 29,3 тогда как?
29 28 27..3?

Google

Павел П.
15.12.2016
08:33:34

lemi
15.12.2016
08:45:57
with cte as (
select regexp_split_to_table(col, ',') r from (values('1,3-6,9,10,12-19,21-26,28,29,3') ) t (col)
)
select r::int from cte where r ~ '^\d+$'
union
select gs from cte join generate_series(split_part(r, '-',1)::int, split_part(r, '-',2)::int) gs on true where r ~ '^\d+-\d+$'
union и union all можно контролировать уникальность
можно упростить если прикрутиь к окончанию при отсуствии интервала

Павел П.
15.12.2016
08:47:36
ваще весело)
with cte as (
select regexp_split_to_table(col, ',') r from (values('1,3-6,9,10,12-19,21-26,28,29,3') ) t (col)
)
select r::int from cte where r ~ '^\d+$'
union
select gs from cte join generate_series(split_part(r, '-',1)::int, split_part(r, '-',2)::int) gs on true where r ~ '^\d+-\d+$'
круууть!
спасибище!

raksita
15.12.2016
08:52:03
ваще весело)
значит там какой-то левый символ, \D это всё кроме цифр
with cte as (
select regexp_split_to_table(col, ',') r from (values('1,3-6,9,10,12-19,21-26,28,29,3') ) t (col)
)
select r::int from cte where r ~ '^\d+$'
union
select gs from cte join generate_series(split_part(r, '-',1)::int, split_part(r, '-',2)::int) gs on true where r ~ '^\d+-\d+$'
?? примерно о таком и думал, но в 2 cte

lemi
15.12.2016
08:53:37
вот так вот в два
with cte as (
select regexp_split_to_table(col, ',') r from (values('1,3-6,9,10,12-19,21-26,28,29,36') ) t (col)
), mte as (
select split_part(r, '-', 1)::int as from, coalesce((nullif(trim(split_part(r, '-', 2)), ''))::int,split_part(r, '-', 1)::int) as to from cte
)
select * from mte;
отсюда видно что получилось
дальше обычный join с generate_series

Google

Andrey
15.12.2016
10:53:24
Всем привет.
Год назад приобрел домен POSTGRESQL.ONLINE.
Хотел сделать сервис для мониторинга за PG, но времени по вечерам остается на него мало. Если кто готов принять участие в проекте, то пишите, договоримся. Есть несколько вариантов дальнейшей монетизации.

lemi
15.12.2016
10:55:00
вроде как же есть уже готовые системы мониторинга или способы интеграции с уже существующими ?
забикс

Alexey
15.12.2016
10:55:29
Пиши, договоритесь. :)

Pavel
15.12.2016
11:04:49

Kirill
15.12.2016
11:11:07
opm как-то совсем чудовищно выглядит, кстати, есть еще https://www.vividcortex.com/

Andrey
15.12.2016
11:20:56
Ко мне периодически обращается народ, которому надо мониторить постгрес. Если у них есть деньги, то я их отправляю postgresql-consalting и постгрес профессиональный, если денег нет, но есть спецы - подсказываю как можно сделать всё в заббикс, а вот для оставшихся этот сервис бы пригодился. И таких много :)

Darafei
15.12.2016
11:38:42

Айтуар
15.12.2016
11:39:43

Pavel
15.12.2016
11:46:11

Fike
15.12.2016
11:54:37

Kirill
15.12.2016
11:55:00
Отдайте домен окметру )

Айтуар
15.12.2016
11:55:29
Перепродайте звучит лучше )

Kirill
15.12.2016
11:56:29
я думаю там не та сумма чтоб заморачиваться с перепродажей, можно просто отдать

Айтуар
15.12.2016
11:57:03
сумму ты сам диктуешь

Kirill
15.12.2016
11:57:15
кстати, есть ещё postgresql.lol, странно что его еще не купил Алексей Копытов под бложик )

Anufant
15.12.2016
12:09:35
Привет.
Подскажите, пожалуйста, почему операторы работы с массивами <@, @>, && в PostgreSQL 9.4.10 выдают ошибку "array must not contain nulls", если хотя бы в одном из аргументов встречается NULL. А в версии PostgreSQL 9.4.4 ошибки нет. В документации ничего про такой случай не написано. В release notes тоже не нашел явных упоминаний.

lemi
15.12.2016
12:14:28
можно примеры в студию ?

Anatoliy
15.12.2016
12:15:31
select array[1, null]::int[] && array[1];
?column?
—------—
t
(1 row)

Google

Anatoliy
15.12.2016
12:15:34
Что я делаю не так?

lemi
15.12.2016
12:16:07
этот жэ запрос на 9.4.10 не работает ?

Pavel
15.12.2016
12:16:14
в версии 8.4 массивы могли содержать NULL. но их нельзя вычитать например.
теперь могут содержать NULL, но их попрежнему нельзя вычитать
в версии 9.3 появилась функция array_replace(anyarray, NULL, anyelement)

xaoc
15.12.2016
12:17:45
Ку

Олег
15.12.2016
12:18:35
пацак или чатланин?

Pavel
15.12.2016
12:19:22
CREATE OR REPLACE FUNCTION f_int_array_replace_null (int[], int)
RETURNS int[] AS
$$
SELECT ARRAY (
SELECT COALESCE(x, $2)
FROM unnest($1) x);
$$ LANGUAGE SQL IMMUTABLE;

Anufant
15.12.2016
12:21:43
Вот и пример, да:
select array[1, null]::int[] && array[1];
ERROR: array must not contain nulls
Да и в доках про это нет ничего :(
Вот еще пример, теперь уже мой, корявый:
select '{1}'::int[] <@ '{1,2,NULL}';
ERROR: array must not contain nulls

Pavel
15.12.2016
12:23:21
значит никакие операции с ними делать нельзя
select array[1, null]::int[]

Anufant
15.12.2016
12:23:48
А это работает
Да и остальные операторы из таблицы 9-45 работают:
https://www.postgresql.org/docs/9.4/static/functions-array.html#ARRAY-FUNCTIONS-TABLE
select '{1}'::int[] < '{1,2,NULL}';
?column?
—------—
t
(1 row)

Admin
ERROR: S client not available

lemi
15.12.2016
12:25:58
точнее вот так
select '{1}'::int[] <@ '{1,2,NULL}'::int[];

Anufant
15.12.2016
12:26:47
select '{1}'::int[] <@ '{1,2,NULL}'::int[];
ERROR: array must not contain nulls

Google

Anufant
15.12.2016
12:27:00
тот же результат

lemi
15.12.2016
12:27:06
и еще вот так
select array[2, 3, null::int, 1] @> array[1];

Anufant
15.12.2016
12:27:28
Ошибка
но на 9.4.4 все запросы работают!

lemi
15.12.2016
12:32:34
а если на 9.4.10 сделать новую БД и в ней попробовать ?

Anufant
15.12.2016
12:35:20
Это уже сложнее, но попробую.

lemi
15.12.2016
12:36:39
create database test;
\c test;
select array[2, 3, null, 1] @> array[1]
вообще скорее всего это разрабы передумали и перевели contains на substruct
Т.к. тут двухсмысленная ситуация
если есть null значение то можно трактовать по разному
у меня но свежей 9.4.10 win X64 нормально работает

Anufant
15.12.2016
12:46:53
Да, на новой базе и правда все работает. Спасибо. Интересно, почему такое может быть

lemi
15.12.2016
12:49:58
ктото переопределил оператор contains
так можно хотя так лучше не надо делать

Anufant
15.12.2016
12:54:53
Понял, а как посмотреть переопределенные операторы в psql? Я, конечно, погуглю, если что, но мало ли это не сложно и есть готовый ответ? :)

Anatoliy
15.12.2016
12:56:23
\do
еще можно касты посмотреть

lemi
15.12.2016
12:58:57
select po.oprname, pt1.typname as leftarg, pt2.typname as rightarg, pt3.typname as resulttype, pp.proname from pg_operator po
join pg_type pt1 on pt1.oid = po.oprleft
join pg_type pt2 on pt2.oid = po.oprright
join pg_type pt3 on pt3.oid = po.oprright
join pg_proc pp on pp.oid = po.oprcode
where po.oprname = '@>' and po.oprcode::text = 'arraycontains'::text

Anufant
15.12.2016
13:01:44
Спасибо, буду изучать! :)

Петр
15.12.2016
13:09:28
поделитесь оракл-чатиком

Anton
15.12.2016
13:20:51
=)

Павел П.
15.12.2016
13:20:55
Может для SQL и разработчиков БД отдельный чатик сделать?

Google

Anton
15.12.2016
13:20:56
все ораклисты тут
Коллеги, кто знает как починить
ERROR: MultiXactId 13431450 has not been created yet -- apparent wraparound
https://habrahabr.ru/company/postgrespro/blog/301238/ пробовали :)

Alex
15.12.2016
13:21:38
латентные ораклисты