小。速度很快。可靠。
选择任意三个选项。

SQLite C接口

获取聚合函数上下文

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()。在这些情况下,可能会为第一次从xFinal()中。

sqlite3_aggregate_context(C,N)例程返回NULL指针第一次调用时,如果N小于或等于零,或者如果内存发生分配错误。

sqlite3_aggregate_context(C,N)分配的空间量为由第一次成功调用时的N参数决定。更改中对sqlite3_aggregate_context()的任何后续调用中的N值相同的聚合函数实例不会调整内存大小分配。在xFinal回调中,通常设置调用sqlite3_aggregate_context(C,N)时N=0,因此没有发生了无意义的内存分配。

SQLite自动释放当聚合查询结束时,使用sqlite3_aggregate_context()。

第一个参数必须是SQL函数上下文这是第一个参数到实现聚合的xStep或xFinal回调例程功能。

必须从同一线程调用此例程聚合SQL函数正在运行。

另请参见列表物体,常量、和功能.