
Slava
12.10.2016
12:15:42

Darafei
12.10.2016
12:16:24
ну и это всё в while true; do ... &; sleep 1 &; wait; done завёрнуто и в скрине крутится
правда, недавно этот костыль таки переписали в цельный микросервис

Slava
12.10.2016
12:17:52
оно того реально стоит?

Google

Slava
12.10.2016
12:17:59
мне кажется большой оверхед по времени

Darafei
12.10.2016
12:18:00
кто и чего?

Slava
12.10.2016
12:18:05
ради того, чтобы уйти от питона
все приседания вот эти
по сути можно на питоне сдампить все, что нужно без гемороя

Darafei
12.10.2016
12:20:50
в том месте питона и не было

Slava
12.10.2016
12:21:31
если я правильно понимаю, данные с монги дергались для того, чтобы потом залить в постгрес?

Yury
12.10.2016
12:23:45
я за питон3!

Alibek
12.10.2016
12:30:53

Darafei
12.10.2016
12:31:23

Slava
12.10.2016
12:32:13

Darafei
12.10.2016
12:34:21

Alibek
12.10.2016
12:34:51

Google

Darafei
12.10.2016
12:35:08

Alibek
12.10.2016
12:36:59
В базу не хочется складывать т.к. тоже куча накладных расходов (запись в wal запись в реплику и т.д. и т.п.). Суть с COPY поднять данные из файла ondemand в tmp табличку (связать промежуточно с запрашиваемыми данными) и спустя время дронуть её.

Darafei
12.10.2016
12:37:57
то есть вы собираетесь рутинно создавать и дропать табличку, и наступить на те же грабли, что и 1С? :)

Roman
12.10.2016
12:38:07
вы можете писать в unlogged таблицу, она не поедет на реплику
насчет copy изнутри процедуры мне решений из коробки не известно, увы

Alibek
12.10.2016
12:40:27
плюс данные которые читаем, писаться должны распределённо.
ну решение-то есть - дать права на superuser, это хоть и несколько менее секьюрно, но приемлемо. Однако по этому поводу возник вопрос и предложение, а почему бы не запилить что-то типа allow copy from

Vadim
12.10.2016
12:49:21

Alibek
12.10.2016
12:54:10
это тоже допрасходы на ОЗУ при большом кол-ве операций в сравнении с plpgsql...

Darafei
12.10.2016
12:57:21
они любят создавать-дропать темповые таблицы, и в какой-то момент постгресу становится плохо

Alibek
12.10.2016
12:58:24
Что за момент и почему плохо?
Ссылка есть на почитать?

Sergey
12.10.2016
13:08:33
Создавать-tuncate'ить и НЕ дропать.
Где-то после 300000 таблиц становится мало полезной работы и много обслуживания этого треша

Евгений
12.10.2016
13:10:14
а COPY сайты может открывать? :)
а т давайте url передадим :)

Darafei
12.10.2016
13:11:53
у амазоновского постгреса, который RedShift, можно с s3:// copy сделать

Евгений
12.10.2016
13:12:35
о ужаз! )

Alibek
12.10.2016
13:24:54

Google

Sergey
12.10.2016
13:25:44
Я не разработчик 1С но думаю резоны такие:
1. Если сессия отсоединится - temp tables всё равно дропнутся. Зачем делать лишние вызовы?
2. А теперь у нас есть 1С-сервер, который держит пул соединений.

Alibek
12.10.2016
13:28:33
1. не про нас - сессия может месяцами жить и изредка отсоединяется т.к. backend.
2. пул в любом случае будет, т.к. несколько backend'ов.

Vadim
12.10.2016
14:23:04
вопрос такой есть, и проблема, в оракле null и '' пустая строка это одно и то же , а в постгресе нет, как-нибудь можно обойти это и сделать такое же поведение как в оракле?

Darafei
12.10.2016
14:24:18
@Cloud66 с какой целью и в каком выражении?

Vadim
12.10.2016
14:25:26
во всех выражениях, для конвертации нужно,чтобы код минимально переделывать
select '' || 'name'
select null || 'name'
допустим разный результат возвращают в постгресе, а в оракле одинаковый

Darafei
12.10.2016
14:27:17
coalesce, view с coalesce, alter operator || в не-strict функцию

Vadim
12.10.2016
14:31:26
мы не знаем что именно приходит, и не знаем во что заменять, как оператор работать не знаю, надо понять

Darafei
12.10.2016
14:32:52
просто null непонятно, во что превращать - тебе надо менять поведение операторов с нулл-инпутом

Darafei
12.10.2016
14:33:16
они по умолчанию strict, и выдают null, если на входе есть хоть один null

Vadim
12.10.2016
14:33:36
ага
их поведение можно менять значит
у нас ситуация, приходит либо '' либо null, неизвестно, и определить что пришло, нельзя

Darafei
12.10.2016
14:36:19
coalesce(null,'') на входе всё-таки лучше
потому что когда поведение базы отличается от документации базы, разработчики начинают сходить с ума

Vadim
12.10.2016
14:38:50
мы не знаем что у нас приходит, null или '', поэтому любой вход нельзя интерпретировать, то есть либо всегда приходит null, либо всегда приходит ''

Google

Vadim
12.10.2016
14:40:02
потому что ораклу всегда приходит ''

Darafei
12.10.2016
14:40:42
coalesce(вход, '') сделает тебе всегда хотя бы ''
и не null

Vadim
12.10.2016
14:47:31
тогда мы не сможем сделать insert values (null)
а в таблице '' и null, разные значения
хотя с виду одинаковые пустые строчки)

Darafei
12.10.2016
14:49:01
на входе в запрос, в смысле

Vadim
12.10.2016
14:50:39
все запросы переписывать затратно, хотелось бы на уровне бд изменить поведение

Darafei
12.10.2016
14:51:32
ну сделай тогда view :)

Admin
ERROR: S client not available

Vadim
12.10.2016
14:51:41
create temporary table tttt(t text);
insert into tttt values (''),(null);
select * from tttt where t='';
select * from tttt where t='' or t is null;
не понял пока как вью, на каждый запрос?

Darafei
12.10.2016
14:52:35
а, тебе ещё null='' надо?

Vadim
12.10.2016
14:53:26
видимо это так звучит, я другими словами сказал, надо было так проще
null и '' должно быть одно и тоже как в оракле

Darafei
12.10.2016
14:54:35
тогда как ты их отличишь вставкой в таблицу?

Vadim
12.10.2016
14:55:28
ну вот пример привел, отличаются же, а не должны

Dmitriy
12.10.2016
15:03:11
это без переделки кода приложения
ну и поставить условие not null на необходимые поля, отслеживайте error log

Google

Vadim
12.10.2016
15:05:16
а конкатенацию строк как делать?
select null || 'name'

Darafei
12.10.2016
15:06:14
после этого действия у тебя не останется нуллов в таблицах
или ты прямо пишешь null || 'name' в запросе?

Vadim
12.10.2016
15:07:28
нет, это переменные связывания конечно
bind

Dmitriy
12.10.2016
15:16:50

Vadim
12.10.2016
15:20:42
если переделаем встро null в '' конечно да,но тогда запросы where is null будут возвращать неправильный результат

Dmitriy
12.10.2016
15:25:03
то есть все-таки есть ситуации где надо отличать явно is null или ''?

Vadim
12.10.2016
15:25:57
так дело в том что в постгрес они отличаются
в оракле то нет, и не нужно было различать

Dmitriy
12.10.2016
15:26:57
в выборке тоже не отличаются в оракле?
серьезно?

キリル
12.10.2016
15:27:47
серьезно. null и пустая строка '' там одно и то же

Vadim
12.10.2016
15:28:02
да
может наконец будет понятно в чем проблема

キリル
12.10.2016
15:29:52
был у нас такой же кейс, когда редмайн на оракл сажали
как раз вроде триггерами и обошлись

Dmitriy
12.10.2016
15:30:45
for i in $(grep -nRi "is null" -l --include *.php); do echo sed -e "s/is null/''/g" -i $i; done
lol
for i in $(grep -nRi "is null" -l --include *.php| sort|uniq); do sed -e "s/is null/= ''/g" -i $i; done