"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]>