@pgsql

Страница 904 из 1062
Ketzal
24.07.2018
19:01:05
наверное только функцию заюзать

чувак хочет динамически указывать столбец с данными которые хочет выбрать я так понял

Alex
24.07.2018
19:01:52
В колонках вместо list_price взять значение list_price из таблицы list_prices тоесть 10 , и.т.д

Google
Alex
24.07.2018
19:02:24
Ketzal
24.07.2018
19:02:25
есть еще do, чтобы не создавать функции, но он вроде не умеет возвращать данные

а execute внутри?

Alex
24.07.2018
19:03:20
а execute внутри?
сек создам с тестовыми

Yaroslav
24.07.2018
19:07:33
Alex
24.07.2018
19:08:05
спасибо сейчас разберусь как работает

Там есть но я думал сделать динамически ,но Ярослав предложил вариант получше

Yaroslav
24.07.2018
19:17:31
спасибо сейчас разберусь как работает
Но если вам нужен именно динамический SQL... Как бы вы его генерировали, если бы были произвольные (неизвестные) поля? (Т.е., например, сотни полей в list_price.) Наверное, проишлось бы всё равно генерировать что-то вроде: SELECT CASE test.list_id WHEN 'list_price' THEN list_prices.list_price WHEN 'list_price2' THEN list_prices.list_price2 ... END FROM test JOIN list_prices ON list_prices.id = test.list_id; —— Интересный у вас архитектор, короче говоря. ;)

Alex
24.07.2018
19:20:31
Мы используем ERP Odoo там вот такая архитектура подсчета скидки цен на товары. Но там делается на стороне питона , а меня попросили сделать на стороне базы. Вот и мучаюсь пока програмисты изменят архитектуру подсчета

Yaroslav
24.07.2018
19:20:37
Т.е. вам просто повезло, что все эти поля одного базового типа (numeric), а то было бы "весело".

Alex
24.07.2018
19:23:02
Ну и ну... Сделайте там CAST-ы, кстати, к нужному типу (а то он в моём примере просто text достаёт).
Да он у меня ругается ERROR: operator does not exist: json ->> text (SELECT row_to_json(pt) FROM product_template pt WHERE pt.id::TEXT = cte.tmpl_id::TEXT) ->> cte.field_name::TEXT as price,

Google
Alex
24.07.2018
19:24:45
я надеюсь в 9.2 он есть ))

Yaroslav
24.07.2018
19:24:52
Да он у меня ругается ERROR: operator does not exist: json ->> text (SELECT row_to_json(pt) FROM product_template pt WHERE pt.id::TEXT = cte.tmpl_id::TEXT) ->> cte.field_name::TEXT as price,
Не делайте лишних CAST-ов, вроде: pt.id::TEXT = cte.tmpl_id::TEXT (ну, по крайней мере, в нормальной схеме это был бы один тип... но после увиденного в Odoo я уже не уверен). ;)

Alex
24.07.2018
19:27:03
О. Нет. :(
Вроде есть https://www.postgresql.org/docs/9.2/static/functions-json.html

Yaroslav
24.07.2018
19:27:06
я надеюсь в 9.2 он есть ))
Вы, кстати, не говорили своим коллегам, что вы сидите на версии, которая уже EOL (мне даже помнится, что в ней есть critical bugs, и исправлять их уже никто не будет)?

Alex
24.07.2018
19:27:41
Говорил но у них принцип работает не трогай , я не раз говорил им

В основном все перевел на новые работают в кластере патрони. Этот ни как не могу

Yaroslav
24.07.2018
19:28:52
Вроде есть https://www.postgresql.org/docs/9.2/static/functions-json.html
Но JSON операторов, похоже, никаких нет. :(

Т.е. я не вижу ->> в документации 9.2. Могу ошибаться, конечно. Если действительно нет, всё-таки остаётся вариант с dynamic SQL... и, может быть, hstore (но это расширение).

Yaroslav
24.07.2018
19:33:48
Да операторов нету они с 9.3. Буду делать динамически
Но если у вас фиксированное кол-во полей, то и динамики не нужно. Это же всё равно временное решение, правильно?

Yaroslav
24.07.2018
19:36:36
Да временное
Ну и "расписать" те поля, которые есть сейчас, типа: SELECT t.*, CASE t.column_name WHEN 'list_price' then lp.list_price WHEN 'list_price2' then lp.list_price2 WHEN 'list_price3' then lp.list_price3 END AS some_price FROM test AS t JOIN list_prices AS lp ON lp.id = t.list_id Да и сойдёт... ;)

Vladimir
24.07.2018
19:46:00
Да временное
Нет ничего более постоянного, чем временное))

Yaroslav
24.07.2018
22:07:54
Я просто оставлю это здесь: <RhodiumToad> I have code for inlining CTEs. I haven't posted it because it was part of someone else's project, but I could dust it off :)

Алексей
25.07.2018
05:14:25
navicat

Google
Anton [Mgn, az09@osm]
25.07.2018
06:13:36
вот такого бы бота найти, который среднюю галку умеет "нажимать"

Vladimir
25.07.2018
07:11:13
Ребят, в функции notice иногда выдаёт перед собой Context. Можно ли как то отключить вывод Context?

Mike Chuguniy
25.07.2018
08:00:41
DBeaver, DataGrip (но этот ещё молодой, со всеми вытекающими в плане функциональности), EMS...

navicat
Оно уже научилось в git? ЗЫ. EMS тоже в гит не умеет...

Anton [Mgn, az09@osm]
25.07.2018
08:02:13
нет, просто с сайта пакет взял

а дальше оно уже само обновляется

хотя возможно версию с мтпрокси брал с гитхаба

Yaroslav
25.07.2018
08:08:00
psql

Vladimir
25.07.2018
08:15:22
Ребят, а plpgsql может взаимодействовать с ОС. Выполнять bash и тд?

Ildar
25.07.2018
08:27:42
Ребят, а plpgsql может взаимодействовать с ОС. Выполнять bash и тд?
напрямую нет, но потенциально можно написать функцию на plpythonu или си, которая будет дергать дергать ОС. Только зачем?

Ilia
25.07.2018
08:27:50
Vladimir
25.07.2018
08:32:28
Главное , осознать, занафига.
Python понятно Исследую возможности) Copy например может создать /перезаписать или считать файл Потенциально можно куда-то залезть Вот и спрашиваю у гуру)

Anatoly
25.07.2018
08:36:40
мы примерно так делаем внутри процедуры CREATE TEMPORARY TABLE copy_output_tt (tt_id serial PRIMARY KEY NOT NULL, command_output text ); COPY copy_output_tt (command_output) FROM PROGRAM 'echo 1111';

Admin
ERROR: S client not available

Anatoly
25.07.2018
08:37:21
нас не 1111 интересует, конечно же) и процедура от postgres выполняется по крону.

Vladimir
25.07.2018
08:48:17
Ну и есть COPY FROM PROGRAM и security definer функции... А вам зачем? ;)
Вот, спасибо, а то у кого ни спрашиваю, все говорят Питон надо. Мне пока ни для чего. Просто если у меня возник вопрос в голове «а что если?» я его стараюсь решить)

Ivan
25.07.2018
09:46:02
Добрый день всем. Такой вопрос - есть табличка и вьюшка на её основе. В одной транзакции - insert строки в таблицу - select из view - ничего - select из таблицы - строчка видна - select из view - строчка видна это нормально?

Google
Ivan
25.07.2018
10:08:18
сейчас буду делать маленькое репро

Yaroslav
25.07.2018
10:13:07
сейчас буду делать маленькое репро
В приниципе, можете и так код показать... вдруг вы там что-то необычное делаете (c wCTE и т.п. можно получить подобные эффекты).

Ivan
25.07.2018
10:23:10
там всё очень просто с точки зрения запросов - на минимальном примере не повторяется - пойду добавлять в пример ORM, но тогда это уже будет не сюда))

Yaroslav
25.07.2018
10:30:46
Ivan
25.07.2018
10:31:38
нашли причину - в ОРМе было дело (прошу не банить)) )

метод save не отправлял реально данные в базу, поэтому метод count() на ОРМ-классе для вьюшки ничего не возвращал, потом count() на ОРМ-классе для таблицы отправлял таки данные в базу (ну норм - чтобы посчитать сколько всего надо сначала надо записать то, что у нас в очереди) и после этого count() на ОМР-классе для вьюшки видел данные

Владислав
25.07.2018
15:17:16
Всем привет! Подскажите пожалуйста по pgloader. Переношу с помощью него бд(mysql) одного древнего сайта и по ходу возникла проблема: значения поля blob(mysql) почему-то изменияется и в bytea(postgres) оказывается какой-то трэш, например - "Название" превращается в "\320\220\320\262\321\202\320\276\321\200". Подскажите пожалуйста, что может быть не так? Файл настроек: """ LOAD DATABASE FROM mysql://*** INTO pgsql://*** WITH include drop, create tables, no truncate, create indexes, reset sequences, foreign keys CAST type blob TO bytea drop typemod using byte-vector-to-bytea; """ Пробовал с CAST и без - на результат не влияет З.Ы.: сижу над этим уже несколько дней :/

Fedor
25.07.2018
15:21:58
Похоже на кодировку.

В блобе значения из русских букв ?

Gennady
25.07.2018
15:26:48
забавно select e'\320\220\320\262\321\202\320\276\321\200'::text

Oleg
25.07.2018
15:28:38
print (b'\320\220\320\262\321\202\320\276\321\200'.decode('utf8'))

Владислав
25.07.2018
15:30:30
В блобе значения из русских букв ?
Да, хотя есть и латиница

Gennady
25.07.2018
15:39:30
CAST type blob TO text не решает вопрос ?

Владислав
25.07.2018
15:49:22
CAST type blob TO text не решает вопрос ?
Не помогло, много ошибок вида "ERROR The value #(***) is not of type STRING."

Craig
26.07.2018
04:10:39
привет всем

хочу поставить CREATE EXTENSION pldbgapi;

на 9.6

делаю по феншую https://gist.github.com/jhngrant/c1787346fcb4b0e3001a

Google
Craig
26.07.2018
04:11:20
ругается вот тут

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