Hallo,
kann es sein, dass in Firebird LIST noch fehlerhaft ist.
Ich habe in einer View eine Spalte, welche mir zu einer Adresse alle Nummern (Kunde, Lieferant etc.) als VARCHAR liefert.
(select result from sp_partnernummern(a.adresse_id))
Code:
create or alter procedure sp_partnernummern (
adresse_id integer$)
returns (
result sys_varchar_255)
as
begin
select substring(list(nummer) from 1 for 255) from sp_partner_zu_adresse$(:adresse_id)
into :result;
suspend;
end
wenn ich jetzt eine Abfrage mache:
select * from view_adresse a where a.partner_nummern containing '102768' or a.partner_nummern containing '192733' or a.partner_nummern containing '111795'
so steigt der Speicherverbrauch von Firebird bis zum Crash an (hier um ca. 1,5 GB)
Mit jerder zusätzlichen Nummer steigt auch der Verbrauch.
Jetzt habe ich die Procedure umgeschrieben:
Code:
create or alter procedure sp_partnernummern$ (
adresse_id integer$)
returns (
result sys_varchar_255)
as
declare variable nummer sys_nummer_null;
begin
result = null;
for select nummer from sp_partner_zu_adresse$(:adresse_id) order by nummer
into :nummer do
begin
if (coalesce(:nummer, '') <> '') then
if (:result is null) then
result = :nummer;
else
result = :result||','||:nummer;
end
suspend;
end
Kaum noch erhöhter Speicherverbrauch (ca. 40 kB)
Sollte man LIST jetzt lieber nicht benutzen?
Kennt jemand das Problem und kann bestenfalls auch sagen, dass das schon bekannt ist?
Ich habe bei meiner Suche in der Trrackinglist von
FB noch nichts gefunden.
Frank