@pgsql

Страница 716 из 1062
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
В PostgreSQL v12 возможно будет select from DUAL ? https://www.postgresql.org/message-id/flat/CAFjFpRdHJbM2EgDng2NgMLkXWD2bYrKhZPchsFj8r4PcVW2E5g%40mail.gmail.com#CAFjFpRdHJbM2EgDng2NgMLkXWD2bYrKhZPchsFj8r4PcVW2E5g@mail.gmail.com
Мне показалось, что речь не SELECT FROM DUAL, а о том чтобы у SELECT без FROM генерировалась RTE. А для пользователя ничего не изменится при этом.

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

щас попробую минимальный пример соорудить

Andrey
16.03.2018
09:12:43
Мне показалось, что речь не SELECT FROM DUAL, а о том чтобы у SELECT без FROM генерировалась RTE. А для пользователя ничего не изменится при этом.
Да, там в сообщении про это. Но заголовок написан так, что, кажется, внутренними изменениями может не закончится.

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)'

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
покажи то, откуда берётся ключ parent_m1
его еще нету. топикстартер хочет за один раз вставить обе записи

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

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
>если убрать constraint, то все ок
я видел разную магию на алхимии. убрать констрейнт в её описании или в базе?

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

Что мешает использовать COPY?
Тогда надо сначала в памяти сгенерировать csv, а потом скормить его в базу? Правильно я понимаю?

Darafei
16.03.2018
09:40:29
да

Anton [Mgn, az09@osm]
16.03.2018
09:41:39
Что мешает использовать COPY?
впишется в констрейнт как надо?

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
да брось! многострочный insert - это же так весело! ;)
особенно сформированный ОРМ-ом, ага. :D Модно, задорно, молодёжно!

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

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
через консоль так же?
Разобрался, спасибо

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
"Джонни!.."

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
А что, если ее нет?
Шо, таки прям ПГ наружу?! иптаблесами и пг_хба прикрыть доступ только из откедова можно.

1Bot
16.03.2018
15:14:10
У меня наружу торчит, но с ssl
Безопасно, но чуть заморочливее, чем разрешить порт только для белых ip

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
На юзера postgres? Зачем??
А кто базы создавать будет?

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
А как потом вспомнить имя этого пользователя?
а как вспомнить пароль от постгреса

Darafei
16.03.2018
15:35:33
а как вспомнить пароль от постгреса
Он как в переговорке, 12345

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

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

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

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