
Darafei
16.03.2018
09:09:51

Maxim
16.03.2018
09:11:00
я через sqlalchemy, но запрос точно один
table.insert().values([{'id': 1, 'parent': None}, {'id': 2, 'parent': 1}]) что-то такое получается

Darafei
16.03.2018
09:11:16
а покажи, что она генерит

Alexander
16.03.2018
09:11:26

Google

Maxim
16.03.2018
09:11:35
у меня реальная таблица с кучей столбцов и вставляется сразу 800 строк...
щас попробую минимальный пример соорудить

Andrey
16.03.2018
09:12:43

Alexander
16.03.2018
09:13:30
Да, заголовок, как говорится, по Фрейду :)

Maxim
16.03.2018
09:15:35
а покажи, что она генерит
>>> str(t.insert().values([{'id': 1, 'parent': None}, {'id': 2, 'parent': 1}]).compile(dialect=postgresql.dialect()))
'INSERT INTO t (id, parent) VALUES (%(id_m0)s, %(parent_m0)s), (%(id_m1)s, %(parent_m1)s)'

Darafei
16.03.2018
09:22:00

Maxim
16.03.2018
09:32:14
Ну так значения 1, null, 2, 1

Darafei
16.03.2018
09:34:24
%(parent_m1)s говорит, что над массивом диктов происходили какие-то преобразования
покажи то, откуда берётся ключ parent_m1

Anton [Mgn, az09@osm]
16.03.2018
09:34:41

Maxim
16.03.2018
09:35:08
Ладно, я попробую сделать минимальный воспроизведимый пример и приду снова

Anton [Mgn, az09@osm]
16.03.2018
09:35:22

Mikhail
16.03.2018
09:36:22
уфф... кажется закончил :)

Google

Mikhail
16.03.2018
09:36:27
резюмирую
Использование pgpool имеет смысл только в связке с PGBOUNCER
в противном случае - адский жор коннектов вам обеспечен

Maxim
16.03.2018
09:37:25

Darafei
16.03.2018
09:37:26

Anton [Mgn, az09@osm]
16.03.2018
09:38:00
@Komzpa внимательнее )
привет. подскажите пожалуйста, такая проблема: есть таблица, допустим CREATE TABLE t (id int PRIMARY KEY, parent int NULL, CONSTRAINT fk FOREIGN KEY parent REFERENCES t (id)
я вставляю пачку строк одним запросом INSERT, допустим там есть строки id = 1, parent = null и id = 2, parent = 1. в итоге в базе у второй строки parent оказывается NULL
если убрать constraint, то все ок. это можно как-то исправить не убирая внешний ключ?
>если убрать constraint, то все ок

Maxim
16.03.2018
09:38:21
Я генерирую пачку записей, глубина ссылок на себя может быть и больше 1. Не хочу в своём коде делить на уровни (хотя и могу)

Darafei
16.03.2018
09:39:08

Mike Chuguniy
16.03.2018
09:39:10

Maxim
16.03.2018
09:39:34
Руками в базу

Darafei
16.03.2018
09:40:29
да

Anton [Mgn, az09@osm]
16.03.2018
09:41:39

Evgeniy
16.03.2018
09:43:58

Mike Chuguniy
16.03.2018
09:52:23

Mikhail
16.03.2018
09:59:59
да брось! многострочный insert - это же так весело! ;)

Mike Chuguniy
16.03.2018
10:04:00
user=> \d t001
Table "user.t001"
Column | Type | Collation | Nullable | Default
-----------+---------+-----------+----------+---------
id | integer | | not null |
parent_id | integer | | |
Indexes:
"t001_pkey" PRIMARY KEY, btree (id)
Foreign-key constraints:
"fk" FOREIGN KEY (parent_id) REFERENCES t001(id)
Referenced by:
TABLE "t001" CONSTRAINT "fk" FOREIGN KEY (parent_id) REFERENCES t001(id)
user=> ^Z
user@host:~$ echo -e "1\tNULL\n2\t1"|psql -c "COPY t001 FROM STDIN WITH NULL 'NULL';"
COPY 2
user@host:~$ fg
psql
user=> select * from t001 ;
id | parent_id
----+-----------
1 |
2 | 1
(2 rows)
user=>
жЫзнь - боль и страдание, унижение и отчаяние.

Google

Mike Chuguniy
16.03.2018
10:05:31

Pavel
16.03.2018
10:09:59
Если функция возвращает SETOF record который формируется исключительно на основе её параметров (JSON), то её можно отметить как IMMUTABLE?

Yaroslav
16.03.2018
10:10:58

Pavel
16.03.2018
10:22:18
Спасибо! Кто pgAdmin4 использует? Часто у вас он падает?

Maks
16.03.2018
11:16:24

Pavel
16.03.2018
11:41:47
А если функция возвращает результат в OUT параметры, её тоже можно/нужно отмечать как IMMUTABLE когда при одних и тех же входных параметрах в OUT будет тоже самое?

Artem
16.03.2018
11:53:29
через консоль так же?

Pavel
16.03.2018
11:55:00
ещё. Из документации
PostgreSQL requires that STABLE and IMMUTABLE functions contain no SQL commands other than SELECT to prevent data modification.
А если создаются временные таблицы?

Maks
16.03.2018
11:55:11

Darafei
16.03.2018
12:13:34


Dmitriy
16.03.2018
13:02:35
Сейчас проводил тесты по обновлению постгреса на новую версию с использованием хардлинков (`pg_upgrade -k`)
Делал на бинарной реплике, остановил, сделал upgrade на новую версию
при выполнении vacuumdb --all --analyze-in-stages ошибка
ERROR: MultiXactId 1159414 has not been created yet -- apparent wraparound
vacuum вызвал кучу сообщений вида
WARNING: page is not marked all-visible but visibility map bit is set in relation "some_table" page 105805
да, перед выполнением не промоутил до мастера.
Во второй раз запромоутил и все обновилось без проблем.
В связи с чем вопрос:
является ли допустимым бинарное обновление постгреса, если старый постгрес не переведен в режим мастера?
И если нет, то почему pg_upgrade не отругивается?

rus
16.03.2018
13:33:29
Чёртовы майнеры. Эти сукины сыны научились прятаться даже там.
http://www.opennet.ru/opennews/art.shtml?num=48269

Andrew
16.03.2018
13:37:55
"Джонни!.."

1Bot
16.03.2018
14:39:31

Murrain
16.03.2018
14:41:44
А какого хрена у postgres вообще пароль есть?
Он же беспарольный по умолчанию

Darafei
16.03.2018
14:49:41
Пароль есть, когда сервер баз данных отдельно от сервера приложений живёт

1Bot
16.03.2018
14:54:50

Darafei
16.03.2018
14:55:15
А что, если ее нет?

Google

Mike Chuguniy
16.03.2018
14:57:24
А что, если ее нет?
Шо, таки прям ПГ наружу?! иптаблесами и пг_хба прикрыть доступ только из откедова можно.

Murrain
16.03.2018
15:04:35
У меня наружу торчит, но с ssl
С валидным сертификатом

1Bot
16.03.2018
15:14:10

Murrain
16.03.2018
15:14:37

1Bot
16.03.2018
15:15:13

Murrain
16.03.2018
15:16:29
Тогда vpn во внутреннюю сеть
Тут как раз больше заморочек, некоторые говнороутеры не могут пропускать gre, некоторые говнопровайдеры могут не пропускать gre..

Darafei
16.03.2018
15:24:37

Murrain
16.03.2018
15:24:59
не postgres

Darafei
16.03.2018
15:25:25
Он есть и его зовут postgres!
Зачем ещё один?

Murrain
16.03.2018
15:25:45
А второго создать кто мешает?

Darafei
16.03.2018
15:25:55
А кем?

Murrain
16.03.2018
15:26:15
Postgres'ом, один раз, при инсталляции

Darafei
16.03.2018
15:27:32
А как потом вспомнить имя этого пользователя?

Murrain
16.03.2018
15:28:09
Хороший вопрос.. у меня чет такой проблемы не возникало..
Записать в блокнот?

Google

Mike Chuguniy
16.03.2018
15:31:19
cat create_db.sql | ssh dbhost sudo -iu postgres psql

Darafei
16.03.2018
15:33:07

Mike Chuguniy
16.03.2018
15:33:48

Evgeniy
16.03.2018
15:35:02

Artem
16.03.2018
15:35:25

Darafei
16.03.2018
15:35:33

Evgeniy
16.03.2018
15:35:37
но вообще конечно слабовата тема для пятничного срача

Mike Chuguniy
16.03.2018
15:35:40
А если серьёзно, то такому админу надо популярно объяснить, что ПГ - это не оракел. И если он хочет проблем с ПГ из-за наличия в оном уязвимостей, то пусть продолжает дальше не давать ssh. Либо пусть организовывает беспроблемный ВПН.

Evgeniy
16.03.2018
15:35:41
надо чтото получше придумать