AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird - context limit

Ein Thema von lxo · begonnen am 24. Nov 2023 · letzter Beitrag vom 24. Nov 2023
Antwort Antwort
lxo

Registriert seit: 30. Nov 2017
288 Beiträge
 
Delphi 12 Athens
 
#1

Firebird - context limit

  Alt 24. Nov 2023, 08:11
Datenbank: Firebird • Version: 4 • Zugriff über: UniDAC
Hallo zusammen,

weiß jemand wieso das context limit bei stored procedures innerhalb eines execute blocks nicht greift?
Ist das irgendwo dokumentiert oder gibt es da doch ein Limit?

Beispiel
Wenn ich innerhalb eines execute blocks mehr als 256 inserts mache kommt die Meldung "Too many Contexts of Relation/Procedure/Views. Maximum allowed is 256.".
Würde ich nun den insert in eine stored procedure packen könnte ich die stored procedure 1000fach in ein execute block packen und ausführen.
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
288 Beiträge
 
Delphi 12 Athens
 
#2

AW: Firebird - context limit

  Alt 24. Nov 2023, 09:17
Da ist die Antwort
https://github.com/FirebirdSQL/firebird/issues/1195
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
679 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Firebird - context limit

  Alt 24. Nov 2023, 09:19
das limit gibt es in blocks und in procedures, beide könnten das limit aber über execute statement beliebig umgehend, jedes statement selbst ist dann aber wieder mit dem gleichen limit umzusetzen. im anhang als beispiel eine sp mit 1000 update or insert statements (von denen ohne execute statement nur ca 80 gehen würden, weil jeder 3 contexte verbraucht

falls die antwort nicht zu deinem problem passt, bau doch mal minimal beispiel was geht und was nicht mehr geht
Angehängte Dateien
Dateityp: zip ex.zip (14,5 KB, 2x aufgerufen)
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
679 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Firebird - context limit

  Alt 24. Nov 2023, 09:21
nö, das ist der stand von 2006, da gab es noch gar kein execute block
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
288 Beiträge
 
Delphi 12 Athens
 
#5

AW: Firebird - context limit

  Alt 24. Nov 2023, 09:28
nö, das ist der stand von 2006, da gab es noch gar kein execute block
Siehe Kommentare, ganz unten.

Zitat:
The limit applies to the BLR (byte code) where every table reference is encoded with a single-byte number. Thus the limit is static and does not affect how many times the procedure is executed.


BLR is per-procedure, so one procedure call cannot have more than 255 table references, but many different calls do not share this limit.
EXECUTE PROCEDURE does not create a context, so EXECUTE BLOCK may have lots of them. However, SELECT FROM PROCEDURE creates a context, so your EXECUTE BLOCK cannot have more than 255 SELECTs from procedures.
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
679 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Firebird - context limit

  Alt 24. Nov 2023, 09:33
wo du recht hast ....

hatte nicht erwartet das ein thread 17 Jahre lebt ....
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
679 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Firebird - context limit

  Alt 24. Nov 2023, 09:38
ist aber ja ähnlich mit aufrufen von execute procedure oder execute statement, beide nutzen keinen eigenen context von den 255 verfügbaren
jeder select/insert/update/update or insert aber schon und zwar 1/1/2/3
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
288 Beiträge
 
Delphi 12 Athens
 
#8

AW: Firebird - context limit

  Alt 24. Nov 2023, 10:22
ist aber ja ähnlich mit aufrufen von execute procedure oder execute statement, beide nutzen keinen eigenen context von den 255 verfügbaren
jeder select/insert/update/update or insert aber schon und zwar 1/1/2/3
Das wollte ich wissen.
Dann brauch ich mir bei einem Execute Block mit x Execute Procedures ja keine Sorgen machen.
  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 14:22 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