AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird List sort error: not enough memory
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird List sort error: not enough memory

Ein Thema von dataspider · begonnen am 28. Nov 2012 · letzter Beitrag vom 28. Nov 2012
Antwort Antwort
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
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#2

AW: Firebird List sort error: not enough memory

  Alt 28. Nov 2012, 15:29
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.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

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

AW: Firebird List sort error: not enough memory

  Alt 28. Nov 2012, 15:47
Welche Firebird Version setzt du exakt ein? Es gab doch den einen oder anderen Bugfix zu den temporären BLOBs in den unterschiedlichen Releases.
2.1.3.18185 32-bit

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
Frank Reim

Geändert von dataspider (28. Nov 2012 um 15:58 Uhr)
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#4

AW: Firebird List sort error: not enough memory

  Alt 28. Nov 2012, 15:59
Wennst auf der 2.1er Linie bleiben mußt, dann versuche 2.1.5, weil dort z.B. http://tracker.firebirdsql.org/browse/CORE-1658 gefixt ist, was in direktem Zusammenhang mit deinem Problem stehen könnte.

Edit: Oops, zu spät.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

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

AW: Firebird List sort error: not enough memory

  Alt 28. Nov 2012, 20:15
Wennst auf der 2.1er Linie bleiben mußt...
...ich habe jetzt auch den Kundenserver auf 2.15 geupdatet und nach meinen Tests ist nun alles OK.
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
Frank Reim
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#6

AW: Firebird List sort error: not enough memory

  Alt 28. Nov 2012, 20:26
SMP-Feeling gibt es mit Classic auch schon unter 2.1.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz