I must be doing something wrong. I've got a simple table with three
columns, a key column, a value column and a timestamp column. There
are 357,000 rows. The timestamps are stored as floating-point numbers
(Julian dates), and the other two fields contain integers. I open the
table, read one record, and close it. If I do not sort the data,
there is no memory loss. Here's the query:
select datetime(value_timestamp) AS latest_time from trend_data
If I sort the data and ask for only the first record, I leak over 2
megabytes of data. Here's the query:
select datetime(value_timestamp) AS latest_time from trend_data order
by value_timestamp desc limit 1
I got the same result when the query used the max() function instead
of ordering the recordset.
My program use sqlite3_prepare16_v2, followed by sqlite3_step,
followed by sqlite3_finalize.
Is there something I've left out? The application in which these
calls are made is designed to be started and left alone. At one
point, I checked TaskManager on the customer's computer and found that
one instance of this program was using over 950 megabytes of memory!
At that point, I advised the customer to restart the program once a
day, but I'd really like to be able to tell them they don't have to do
that any more.