"Aldobino Braga" <[EMAIL PROTECTED]> wrote:
> I've run into an issue where the reuse of a TCL array (to hold query
> results) causes a catastrophic memory leak. The "eval" command is called
> with the same array name again and again. Each successive query / array
> population exponentially consumes more and more memory (until the system
> crashes).
>
> Since "eval" is responsible for the array creation, it seems to me that it
> should be responsible for calling "array unset" before it populates the
> data. When I call "array unset" myself, everything works as expected.
>
> Perhaps this is the expected behavior, however I was unable to find anything
> in the documentation regarding it.
> Would anyone care to comment?
>
A common idiom is to do this:
db eval {SELECT * FROM table} v break
After this statement runs, the array variable v contains
the content of the first row of the table. Sometimes you
see two or three SELECT statements in a row populating the
same array:
db eval {SELECT * FROM table1} v break
db eval {SELECT * FROM table2} v break
...
db eval {SELECT * FROM tableN} v break
All of the about (which is commonly used) would break if
SQLite tried to do unsets for you.
I think, therefore, that the current behavior is correct.
--
D. Richard Hipp <[EMAIL PROTECTED]>