Потом тот же человек пробивает два пакета с молоком, сложив их вместе и слегка заслонив их своим телом от камеры. Опять, только один пробит, но оба уходят к нему в сумку.
В большинстве магазинов схема другая — взял из тележки, отсканировал, положил на «платформу», на которой происходит взвешивание. Вес контролируется, два пакета молока нельзя туда положить. С «платформы» можно забрать все покупки после оплаты.
std::unique_ptr и std::vector сложные структуры у которых есть деструкторы.
так и почему их деструкторы не будет вызваны, давайте ссылку на конкретный код, который будет так чудесно разворачивать стек после неудачного вызова construct_array()
Вы, IMO, не правильно толкуете документацию. ArrayType не является сложной структурой данных.
Ну и ERRCODE_PROGRAM_LIMIT_EXCEEDED не «бросается». Где там в коде «бросание» через longjmp?
Действительно, ознакомьтесь . Потом пишите. Весь стек уже раскручен и все деструкторы вызваны в моем примере
Так почему же код не безопасный, объясните уже, пожалуйста.
Спасибо, посмотрю этот доклад. Смарт-поинтеры не справятся с этой задачей? Не очень представляю, как должен выглядеть код такой state transition function…
Хотел бы заметить, что для Постгреса можно и на С++ писать.
Понятно, что интерфейс надо в extern «C» завернуть. Ну и в Makefile надо добавить
SHLIB_LINK = -lstdc++
Про palloc/pfree — не понял. Зачем их обязательно использовать во внешних функциях?
И еще один важный момент — в Постгресе есть концепция background worker, что делает его невероятно расширяемым и гибким в сочетании с внешними функциями.
При таком кол-ве кластеров — 2.5М на 240М векторов, должна значительно понизиться точность поиска. Прежде всего я имею ввиду новые записи — они будут попадать, практически, в случайные кластеры. Или вы nprob тоже в 2.5М выставляете?
В большинстве магазинов схема другая — взял из тележки, отсканировал, положил на «платформу», на которой происходит взвешивание. Вес контролируется, два пакета молока нельзя туда положить. С «платформы» можно забрать все покупки после оплаты.
так и почему их деструкторы не будет вызваны, давайте ссылку на конкретный код, который будет так чудесно разворачивать стек после неудачного вызова construct_array()
Ну и ERRCODE_PROGRAM_LIMIT_EXCEEDED не «бросается». Где там в коде «бросание» через longjmp?
Так почему же код не безопасный, объясните уже, пожалуйста.
Вот, например, код, который работает около 3 лет на сервере без утечек и без явных вызовов palloc — bitbucket.org/maxfo/pg_doc2vec
Конкретно внешние функции — bitbucket.org/maxfo/pg_doc2vec/src/master/extensions/client/pg_d2v_client.cpp
Понятно, что интерфейс надо в extern «C» завернуть. Ну и в Makefile надо добавить
Про palloc/pfree — не понял. Зачем их обязательно использовать во внешних функциях?
И еще один важный момент — в Постгресе есть концепция background worker, что делает его невероятно расширяемым и гибким в сочетании с внешними функциями.
Не вызывается. Приложения, которым надо что-то за собой убрать, обычно, имеют деинсталлятор.