@pgsql

Страница 307 из 1062
Denis
24.04.2017
00:02:02
ох, если кратко - то во славу медицине) а если серьезно, то тут история про геораспределенную систему заказов медицинских услуг в которой при потери связи откалывающиеся куски системы могут в немного урезанном варианте существовать изолированно от основной системы. и адекватно присоединяться назад без конфликтов

Fike
24.04.2017
00:08:01
вы не думали взять решение, изначально знающее о возможности распределенного сетапа?

Denis
24.04.2017
00:12:58
вы не думали взять решение, изначально знающее о возможности распределенного сетапа?
1. у нас есть наследие, которое мы писали несколько лет назад для одного учреждения, а сейчас в приказном порядке отмасштабировано на край. 2. переписывать это язделие на распределенное решение совсем не хочется))

/dev/null
24.04.2017
00:27:21
Утра всем

Google
/dev/null
24.04.2017
00:29:05
Такая ситуация, нужно выполнить SELECT в результате которого, может вывестись 0 записей (не вывестись) Можно ли вернуть последний id с таблицы в которую делается этот SELECT?

Fike
24.04.2017
00:29:13
вы хотите и единый мастер оставить, и конфликты разрешать

Denis
24.04.2017
00:30:10
Fike
24.04.2017
00:30:32
Такая ситуация, нужно выполнить SELECT в результате которого, может вывестись 0 записей (не вывестись) Можно ли вернуть последний id с таблицы в которую делается этот SELECT?
если вы хотите использовать его для последующей вставки, то вы на два шага от нормального использования базы данных. вам очевидно нужен автоматический инкремент (serial)

ага)) какой я наивный мечтатель, да?
да, и "не хочется" в общем тоже так себе причина

Fike
24.04.2017
00:31:14
зачем вам тогда знать этот айдишник?

/dev/null
24.04.2017
00:32:05
Это нужно на Фронте, для "подмены" данных в таблице... Там я делаю items.pust([{id:"11"}])

Denis
24.04.2017
00:32:19
да, и "не хочется" в общем тоже так себе причина
на самом деле в конкретно моем случае оно должно работать, если удастся побороть ряд проблем вроде плана

Fike
24.04.2017
00:32:44
я говорю вам про то, что используя несуществующий айдишник вы стреляете себе в ногу

зачем еще может быть нужно доставать последний - я не знаю

/dev/null
24.04.2017
00:34:07
зачем вам тогда знать этот айдишник?
То есть, что-бы пользователю показать что данные "вставлены"... это нужно для того, что если пользователь начнет обновлять данные в таблице (на фронте) для последующего UPDATE данных нужен его id... а он в свою очередь до перезагрузки страницы неизвестен.

Google
Fike
24.04.2017
00:34:19
так они не вставлены

/dev/null
24.04.2017
00:34:24
сложно объяснить, но id последний записи нужно узнать)

Fike
24.04.2017
00:34:42
скорее всего у вас просто на фронте левая логика

из-за который вы теперь хотите напрягать бэкенд

/dev/null
24.04.2017
00:35:00
так они не вставлены
Они вставлены... только на странице html

Fike
24.04.2017
00:35:06
то есть не вставлены

/dev/null
24.04.2017
00:35:38
то есть не вставлены
да, но будут, когда пользователь нажмет UPDATE

Тогда пойдет insert а за ним уже UPDATE

Fike
24.04.2017
00:36:05
тогда нужно делать один инсерт

/dev/null
24.04.2017
00:36:12
все несколько не так работает, я это просто что-бы объяснить.

тогда нужно делать один инсерт
Такая ситуация, нужно выполнить SELECT в результате которого, может вывестись 0 записей (не вывестись) Можно ли вернуть последний id с таблицы в которую делается этот SELECT?

вот это нужно)

это реально?

Fike
24.04.2017
00:37:12
вы понимаете, что последний айди не равен значению сиквенса?

/dev/null
24.04.2017
00:39:00
вы понимаете, что последний айди не равен значению сиквенса?
мне нужно узнать каков будет id если я сделаю insert в базу... еще до того как выполнил insert

до insert я делаю select из таблицы

он выведет 0 rows

Fike
24.04.2017
00:39:50
вам нужно маркировать записи как "сохраненные" и "новые"

и новые вставлять, а сохраненные обновлять

вот и вся магия

Google
Fike
24.04.2017
00:41:53
это канал про постгре. ваше решение задачи, которое вы придумали, выстрелит в ногу и вам, и другим людям, которые будут пользоваться системой. я не фронтенд и не знаю фреймворков, но говорю банальные вещи, которые вероятнее всего уже есть в документации.

Fike
24.04.2017
00:44:48
https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem

вам нужно не за сиквенсами гоняться, а понять, когда вставлять запись, а когда обновлять

/dev/null
24.04.2017
00:45:28
Я вовсе не стреляю в ногу, при INSERT я вставляю в таблицу новый row но жду от сервера 200, если не прошел запрос то предупреждаю пользователя, сбои бывают крайне редки, а пользователю так работать комфортнее

спасибо)

Denis
24.04.2017
05:37:17
Такая возможность теоретически добавится в 10 версии, которая сейчас доступна для разработчиков
добавится на уровне возможности, которую каждый разработчик обертки сможет реализовать? или появится у всех существующих оберток после обновления до 10?

raksita
24.04.2017
05:42:50
Sergey
24.04.2017
06:24:11
postgres=# explain verbose select count(1) from public.dept where dept_id = 1; -------------------------------------- Aggregate (cost=20002.50..20002.51 rows=1 width=8) Output: count(1) -> Foreign Scan on public.dept (cost=10000.00..20000.00 rows=1000 width =0) Output: dept_id, dept_type_id, ext_dept_id, org_id, deleted, voice, voice_ext Oracle query: SELECT /*59aa942107e7f67494254d4f6536f42c*/ "DEPT_ID" FROM "DEPT"."DEPT" WHERE ("DEPT_ID" = 1) Oracle plan: SELECT STATEMENT Oracle plan: INDEX RANGE SCAN P_DEPT (condition "DEPT_ID"=1) (7 rows)

А есть способ push down любой кусок SQL'я, чтобы например оракловые функции через fdw вызывать? select NVL(a_field,b_field) from my_fwd_table;

Denis
24.04.2017
06:28:51
sandbox=# explain verbose select * from test_pgpro where quotaid = '44fafee8-64c1-4aa4-a91a-b195ccb15e54'; QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------- Foreign Scan on public.test_pgpro (cost=100.00..131.50 rows=9 width=24) Output: kdcid, periodid, quotaid Remote SQL: SELECT kdcid, periodid, quotaid FROM public.test WHERE ((quotaid = '44fafee8-64c1-4aa4-a91a-b195ccb15e54'::uuid)) (3 rows)

и вот как понять, что она использовала на удаленной стороне....

Ildar
24.04.2017
06:31:35
Google
Sergey
24.04.2017
06:34:33
Ну и всякие фокусы с хранением локальной/использованием удаленной статистики https://postgrespro.ru/docs/postgrespro/9.6/postgres-fdw пункт F.45.1.3

Denis
24.04.2017
06:35:45
включить там auto_explain и посмотреть план
я всегда думал, что это работает, когда и сами запросы на удаленном сервере выполняются в нужном сеансе, нет?

Andrey
24.04.2017
06:37:41
мне нужно узнать каков будет id если я сделаю insert в базу... еще до того как выполнил insert
Это сделать невозможно. Чтобы гарантированно знать, надо либо вручную выбирать значение из сиквенса (nextval()), либо использовать returning и получать значение уже после вставки. То, что приходится делать вам, скорее всего вызвано неправильным проектированием архитектуры приложения.

Сергей
24.04.2017
06:46:46
@/dev/null Вы действительно делаете что-то неправильное с этим последним id

вы напишите тесты, протестируете в однопоточном режиме и это будет работать. но сразу упадет как только 2 транзакции одновременно пойдут

Admin
ERROR: S client not available

Сергей
24.04.2017
06:48:50
и vue.js тут непричем. архитектура js не должна влиять на бэкэнд в такой степени, что приходится закладывать архитектурные ошибки

Denis
24.04.2017
06:50:58
Ну и всякие фокусы с хранением локальной/использованием удаленной статистики https://postgrespro.ru/docs/postgrespro/9.6/postgres-fdw пункт F.45.1.3
вы правы, добавление use_remote_estimate = true дало мне использование индекса при удаленном запросе. спасибо

Alex
24.04.2017
07:53:27
Друзья клиент у нас с базой работает через Jboss где настроен pooling,имеет смысл установить по pgbouncer-у бд ?

Philip
24.04.2017
08:50:54
bgbouncer только ради пуллинга того же клиента не имеет смысла!

Dmitry
24.04.2017
09:09:02
от pgbouncer есть смысл в statement или transaction моде, если готовы потерять prepared statement - то можно: с pgbouncer проще эксплуатировать

Павел
24.04.2017
12:12:21
добрый день подскажите пожалуйста, есть тестовый сервер с внешним ip, на нем тестовая бд, мне нужно быстро и не безопасно подключить из приложения к нему добавляю в pg_hba.conf строчку host test_database postgres all trust и все равно получаю ошибку аутентификации

Sergey
24.04.2017
12:14:20
может вместо trust - password?

Павел
24.04.2017
12:16:16
пробовал, тоже самое

Sergey
24.04.2017
12:17:58
а юзер точно postgres?

Павел
24.04.2017
12:22:44
ага

Pavel
24.04.2017
12:22:50
а listen_addresses = '*' прописан?

можно еще сделать SELECT pg_reload_conf(); чтобы перезагрузить конфигурацию

Google
Павел
24.04.2017
12:28:13
а listen_addresses = '*' прописан?
прописан, но прописывал руками

может его нужно через команды psql менять?, если есть такие

Pavel
24.04.2017
12:30:19
а если сделать sudo netstat -plunt | grep postgres

Павел
24.04.2017
12:32:40
ros
24.04.2017
12:47:01
sudo netstat -aplnt | grep postgres

u - UDP

nietzschebrod
24.04.2017
12:51:28
ss расово вернее

ros
24.04.2017
12:52:29
netstat в крови

nietzschebrod
24.04.2017
12:54:46
в арийской крови арийский ss

ros
24.04.2017
12:58:33
наши все равно победили

nietzschebrod
24.04.2017
13:01:16
у каждого свои "наши"

> ss was written by Alexey Kuznetosv > netstat user interface was written by Fred Baumgarten

Denis
24.04.2017
13:06:37
Ребят, пробовал кто ставить statement_timeout на группу? Через alter role set ...;

У меня у пользователей не появляется этот параметр отнаследованные от этой группы.

Denis
24.04.2017
13:14:18
не помогает
А с локального компьютера вы подключиться можете? И вообще, постгрес жив?

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