Subject Re: [ib-support] Re: Database grows rapidly (3 to 770MB) when using BLOB views/UDFs
Author Ivan Prenosil
> From: Claudio Valderrama C.
> > Hmmm, how can the temporary blob (returned from UDF) be garbage collected
> > if it was not assigned to any row (and thus converted to permanent blob)
> ??
>
> Is the term "garbage collection" the problem or the process itself?

What I had in mind was situation when you create temporary blob
(e.g. by selecting from view that contains UDF with blob as return
parameter), and then you do not use(read) it at all.
- Because such blob is not assigned to any row in table,
it can't be garbage collected the usual way.
- You also do not call isc_cancel_blob (either because of client crash,
or because the driver you use does not allow such level of control,
as mentioned in previous messages (odbc)).
Will such blob be ever deleted ?

> That's said, if you look at BLB_close, it doesn't call delete_blob. It
> defers the page cleaning to normal garbage collection.

I do not understand this sentence. I thought that "normal garbage
collection" takes place when somebody "touches" the _record_ in _table_;
garbage collection thread then removes obsolete record version(s),
and obsolete index entries, _and_ obsolete blobs.

If you do not explicitly delete temporary blob by delete_blob,
how/when it will be removed from database ?
a) if I just call BLB_close;
b) if I do not call enything

Ivan
http://www.volny.cz/iprenosil/interbase