RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Получите контекст агрегатной функции

void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);

Внедрения совокупных функций SQL используют этот установленный порядок, чтобы ассигновать память для хранения их состояния.

В первый раз sqlite3_aggregate_context(C,N) вызывают для конкретной агрегатной функции, SQLite ассигнует N байт памяти, и возвращает указатель на новую память. На вторых и последующих вызовах sqlite3_aggregate_context() для того же самого случая агрегатной функции, возвращен тот же самый буфер. Sqlite3_aggregate_context() обычно вызывают однажды для каждого вызова xStep и затем один раз, когда вызван xFinal. Когда никакие строки не соответствуют агрегатному запросу, отзыв xStep() внедрения агрегатной функции никогда не вызывают, и xFinal() вызывают точно однажды. В тех случаях sqlite3_aggregate_context() мог бы быть вызван впервые из xFinal().

sqlite3_aggregate_context(C,N) вернет NULL при первом вызове, если N меньше или равен нолю, или если ошибка распределения памяти происходит.

Сумма места, выделенного sqlite3_aggregate_context(C,N), определяется параметром N при первом успешном вызове. Изменение N в любом последующем обращении к sqlite3_aggregate_context() в том же самом случае агрегатной функции не изменит размеры выделения памяти. В отзыве xFinal нормально установить N=0 в вызове sqlite3_aggregate_context(C,N), чтобы никакие бессмысленные выделения памяти не происходили.

SQLite автоматически освобождает память, ассигнованную sqlite3_aggregate_context(), когда агрегатный запрос заканчивается.

Первый параметр должен быть копией контекста функции SQL, который является первым параметром отзыва xStep или xFinal, который осуществляет агрегатную функцию.

Это нужно вызвать от того же самого потока, в котором работает совокупная функция SQL.