![]() |
Datenbank: Firebird • Version: 2.13 • Zugriff über: IBO
Firebird List sort error: not enough memory
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:
wenn ich jetzt eine Abfrage mache:
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 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:
Kaum noch erhöhter Speicherverbrauch (ca. 40 kB)
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 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 |
AW: Firebird List sort error: not enough memory
Das hängt vermutlich mit den angelegten temporären BLOBs zusammen, da ja LIST als Rückgabewert einen BLOB liefert und wenn dann darauf ein SUBSTRING erfolgt, ist ein temporärer BLOB notwendig. Es gibt dazu ein paar Einträge im Tracker. In deinem zweiten Beispiel ist kein BLOB, sondern max. ein VARCHAR(255) mit im Spiel, darum dürfte dort auch das Problem nicht auftreten.
Welche Firebird Version setzt du exakt ein? Es gab doch den einen oder anderen Bugfix zu den temporären BLOBs in den unterschiedlichen Releases. |
AW: Firebird List sort error: not enough memory
Zitat:
Ich werde es auch mit einer neueren Version testen und berichten. [EDIT] Ich habe die 2.13 durch die 2.15 manuell ersetzt. Jetzt werden ca. 40 kB Speicher verbraucht. Also sollte ich wohl auch beim Kunden die Version erneuern! Vielen Dank, Thomas. [/EDIT] Frank |
AW: Firebird List sort error: not enough memory
Wennst auf der 2.1er Linie bleiben mußt, dann versuche 2.1.5, weil dort z.B.
![]() Edit: Oops, zu spät. ;-) |
AW: Firebird List sort error: not enough memory
Zitat:
Ich muss nicht auf 2.1x bleiben, mir war der Aufwand nur etwas zu hoch bis jetzt. Obwohl der Kunde schon Vorteile hätte, er hat mehrere Datenbanken - und da kann wohl FB 2.5 schon SMP - Feeling andeuten. Na ja, vielleicht zwischen Wihnachten uns Sylvester... Vielen Dank noch einmal! Frank |
AW: Firebird List sort error: not enough memory
SMP-Feeling gibt es mit Classic auch schon unter 2.1.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz