
Nikita
29.04.2018
22:06:39
попробуйте добавить ветку ELSE пустую, или return null, что там у вас по бизнесу должно быть

Vitality
29.04.2018
22:07:31
не важно, есть ли else или нет) В офф примере с доки есть else, но там тоже самое происходит

Nikita
29.04.2018
22:07:49
без указания символов, на которых ошибка?
скиньте, что за пример

Google

Darafei
29.04.2018
22:07:59
а в mysql нынче такие же кавычки?

Vitality
29.04.2018
22:08:34
другие тоже пробовал

Darafei
29.04.2018
22:09:00
а в каких кавычках текст этой хранимой процедуры?

Vitality
29.04.2018
22:09:24
https://dev.mysql.com/doc/refman/8.0/en/if.html
Это функция)
Точно так же ругается на первый END IF;

Darafei
29.04.2018
22:10:32
ну ты ж не в запрос этот иф пишешь?

Vitality
29.04.2018
22:11:07
Да, все верно. Я кинул ссылку на пример с документации
там точно такая же ошибка
может кто у себя на базе попробовать создать такую процедуру?

Darafei
29.04.2018
22:11:59
у нас постгрес
хочешь перейти на постгрес? :)

Vitality
29.04.2018
22:12:45
У меня на всех проектах постгрес, но тут ТЗ от заказчка указывает, что надо использовать MySQL

Google

Vitality
29.04.2018
22:13:11
Собственно проект изначально был написан на posgtres и теперь он мигрирует в MySQL

lenar
29.04.2018
22:14:15
причины?

Vitality
29.04.2018
22:16:37
не вдавался в подробности. Просто есть четкое тз написать миграционные скрипты с PostgreSQL 9.5 на MySQL 5.6
Сейчас занят тем, что переписываю функции и вот столкнулся с проблемой вот этой, что не работают условия)

Taras ?
29.04.2018
22:19:19
https://en.wikibooks.org/wiki/Converting_MySQL_to_PostgreSQL
об отличиях кавычек и тд
там ниже таблица

Vitality
29.04.2018
22:22:37
Да, но вот только с кавычками то все ок. Пробовал и другие, но результат тот же
К тому же это просто строка возврата из функции

Daniel
01.05.2018
17:40:32
всем привет! подскажите куда копнуть. делается выборка с 4 последовательными join'ами. нужно лимитировать второй и третий джойн. т.е. чтобы на каждую запись первой выборки джойнилось не больше 5 записей из второй, к ним не больше 5 записей на каждую из третьей и т.д.
т.е. лимитировать нужно записи после проверки на пригодность для джойна, а не перед

Subb98
01.05.2018
17:51:01
Задать общий лимит для select?

Daniel
01.05.2018
17:51:39
тогда отлимитируется итоговый результат
а мне нужно джойнить не больше N строк на каждую строку другой выборки

Subb98
01.05.2018
17:53:17
Это я понял из вашего вопроса. Просто, обычно, джойн не увеличивает кол-во результатов выборки. Ну, если это не декартово произведение, например )
Как вариант - сделать подзапросы, если приемлемо.

Daniel
01.05.2018
17:56:11
выбираем 5 строк. к ним джойним 50 с общим лимитом 10. в результате получим только одну первоначальную строку из 5 с 10 приджойненными

Maksim
01.05.2018
18:00:01

Daniel
01.05.2018
18:04:30

Maksim
01.05.2018
18:23:45

Daniel
01.05.2018
18:24:32
спасибо, почитаю. если у кого есть еще мысли буду рад услышать

Google

Yaroslav
01.05.2018
19:05:51

Aleksey
01.05.2018
19:36:38
Помогите решить вопрос по sql)
вторых изменить так, чтобы s4 возвращало не минимальную закупочную цену(выделено красным), а закупочную цену последнего прихода данного товара. Дата прихода в поле DayFirst, надо делать через join дополнительной таблицы, в которой находим эти цены для каждого DrugsID (кода товара)

Yaroslav
01.05.2018
19:56:41

Aleksey
01.05.2018
19:57:23
не особо уверен подсказали обратиться сюда)

Danil
01.05.2018
21:09:38
@sqlru

Олег
01.05.2018
22:09:53
Привет всем
Подскажите, кто на 10.3 юзал нативное партицирование, не сталкивались ли с Out of shared memory?
У меня эти партиция плодятся и заполняются адскими темпами, типа свечки с разных бирж, каждый график в своей партиции. На серваке памяти до жопы, но постгрес о ней не знает. Больше 3-4 гиг не видел чтоб было занято.
Может, подскажете, что в conf писать?

Yaroslav
01.05.2018
22:15:07

Олег
01.05.2018
22:26:39
Примерно 25к
Они для того, чтобы в отдельных таблицах все таймсерии были. До этого данных было меньше, все падало в одну таблицу с двумя индексами и она стала неподъёмной. Решили порезать ее на части, сначала все пошло хорошо, но как только начали заполнять данными, начало падать.

Yaroslav
01.05.2018
22:29:45
> Они для того, чтобы в отдельных таблицах все таймсерии были.
С какой целью?

Олег
01.05.2018
22:30:06
Это про количество партиций
Чтобы была не одна гигантская таблица, а много маленьких
С планом самые тяжелые куда-то ещё вынести.
Когда старая таблица за сотню гигов перевалила, запросы стали неприемлемо долгими, от полминуты до полторы. Поэтому грешили на неё

Yaroslav
01.05.2018
22:32:42
Это про количество партиций
Ну так это и не должно было работать. :( Вы предупреждение в конце https://www.postgresql.org/docs/current/static/ddl-partitioning.html читали? Вот это, конкретно:
Partitioning using these techniques will work well with up to perhaps a hundred partitions; don't try to use many thousands of partitions.

Олег
01.05.2018
22:33:19
Щит. Эту строчку пропустил, конечно же.

Yaroslav
01.05.2018
22:35:12

Google

Олег
01.05.2018
22:35:19
Может, надо добавить памяти где-то в конфиге?
Или эта история вообще не вписывается в постгрес и надо что-то иное?
Да, так и вышло. На паре сотен работало идеально, даже локально.
Ну и сам концепт - каждый график в своей таблице и кроме как начало и конец периода ничего не надо фильтровать чтобы графики строить

Yaroslav
01.05.2018
22:37:28

Олег
01.05.2018
22:38:40
Индекс сейчас только один, по таймстампу, по которому выборки идут

Yaroslav
01.05.2018
22:40:06

Олег
01.05.2018
22:40:19

Yaroslav
01.05.2018
22:40:41

Олег
01.05.2018
22:40:43

Yaroslav
01.05.2018
22:41:16

Олег
01.05.2018
22:41:38

Yaroslav
01.05.2018
22:42:17

Олег
01.05.2018
22:44:00
Иными словами мне нужно сделать единую таблицу и индивидуальные индексы?
Там запросы в основном содержат биржу, пару, время начала и конца периода. По каждому индексы были, по ночам даже вакуум кроном запускался.
Но это мне уже как легаси досталось. А сейчас новые источники данных добавляются, и в ту же таблицу писать не вариант было.
Поэтому обновили с 9.6 до 10.3 и сделали партиции

Yaroslav
01.05.2018
22:46:21

Олег
01.05.2018
22:48:04
Именно так. С order, но без группировок. Хотя может и был где-то запрос с группировками.

Google

Yaroslav
01.05.2018
22:48:21

Олег
01.05.2018
22:49:58
Момент
вот такие индексы были
["index_pair_histories_on_created_at",
"index_pair_histories_on_data_point_kind",
"index_pair_histories_on_pair_id",
"index_pair_histories_on_pair_id_and_timestamp_at",
"index_pair_histories_on_source",
"index_pair_histories_on_timestamp_at"]
сейчас такие
["okex_spot_rcn_btc_20mins", "okex_spot_light_eth_20mins", "okex_spot_fair_btc_20mins"]
по одному на каждую партицию


Yaroslav
01.05.2018
22:59:08
вот такие индексы были
["index_pair_histories_on_created_at",
"index_pair_histories_on_data_point_kind",
"index_pair_histories_on_pair_id",
"index_pair_histories_on_pair_id_and_timestamp_at",
"index_pair_histories_on_source",
"index_pair_histories_on_timestamp_at"]
Ну это же просто названия... ну ладно, если они были созданы без явного указания имени, то единственный составной здесь index_pair_histories_on_pair_id_and_timestamp_at (наверное: (pair_id, timestamp_at))... и где в нём биржа?
И некоторые из остальных, скорее всего, не подойдут для большинства запросов. :(