Einzelnen Beitrag anzeigen

Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#1

Firebird List sort error: not enough memory

  Alt 28. Nov 2012, 12:54
Datenbank: Firebird • Version: 2.13 • Zugriff über: IBO
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
Frank Reim
  Mit Zitat antworten Zitat