Im Fall von DB2-Datenbanken kann sich die Änderung von Sonderregisterwerten auf das Verhalten der Anwendung auswirken. Beispielsweise kann sich das Sonderregister CURRENT DECFLOAT ROUNDING MODE auf die von einer SQL-Anweisung zurückgegebenen Daten auswirken. Angenommen, der Wert des Sonderregisters ist bei der Erfassung einer SQL-Anweisung auf ROUND_CEILING gesetzt. Dann binden Sie die in der pureQueryXML-Datei enthaltenen SQL-Anweisungen mit der Bindeoption, die das Äquivalent zu ROUND_FLOOR festlegt. Wenn die Anwendung die SQL-Anweisungen im statischen Modus ausführt, werden möglicherweise andere Daten zurückgegeben, falls die Daten vom Wert des Sonderregisters abhängen. Die Ergebnisse können auch dann anders ausfallen, wenn es keine Änderung im Anwendungscode gegeben hat.
Wenn die pureQuery-Clientoptimierung eine SQL-Anweisung erfasst, während eine Anwendung aktiv ist, werden dabei einige Sonderregisterwerte verfolgt und aufgezeichnet. Beim Zusammenführen und Konfigurieren des erfassten SQL werden die mit der SQL-Anweisung erfassten Sonderregisterinformationen zusammen mit der Anweisung abgelegt.
Es gibt die folgenden pureQuery-Kategorien für Sonderregister:
Die aufgezeichneten Sonderregisterinformationen werden in der pureQueryXML-Datei als Sonderregisterwertegruppen gespeichert. Die Informationen können bei der Konfiguration der pureQueryXML-Dateien mit dem Dienstprogramm Configure zum Erstellen von Anweisungsgruppen verwendet werden. Die erfassten Sonderregisterinformationen sind sichtbar, wenn Sie die pureQueryXML-Datei im pureQueryXML-Editor in der Workbench anzeigen.
Die Optionen groupSQLBySpecialRegisters und -optionsFileForBind des pureQuery-Dienstprogramms Configure unterstützen Sie bei der statischen Ausführung von SQL-Anweisungen. Sie können die Optionen separat oder zusammen verwenden.
Die Option -groupSQLBySpecialRegisters gruppiert SQL-Anweisungen auf der Basis der Sonderregisterinformationen, die beim Erfassen der Anweisungen aufgezeichnet wurden, in Anweisungsgruppen.
Die Option -optionsFileForBind erstellt eine StaticBinder-Optionsdatei. Die StaticBinder-Optionsdatei enthält Bindeoptionen für die Anweisungsgruppen, die in der pureQueryXML-Datei enthalten sind. Die Bindeoptionen basieren auf den Sonderregisterinformationen, die mit den SQL-Anweisungen aufgezeichnet werden. Die Datei enthält außerdem Kommentare mit Informationen und Warnungen zu den Anweisungsgruppen, SQL-Anweisungen und Sonderregisterinformationen der pureQueryXML-Datei.
Mit den Optionen des Dienstprogramms Configure können Sie die SQL-Anweisungen entsprechend der Sonderregisterinformationen gruppieren und eine StaticBinder-Optionsdatei generieren, die die Bindeoptionen enthält. Mithilfe der Bindeoptionen und zusätzlichen Informationen in der Datei können Sie eine Gruppe von Bindeoptionen angeben, sodass das Verhalten einer SQL-Anweisung bei der statischen Ausführung dem Verhalten bei einer dynamischen Ausführung über eine Anwendung vergleichbar ist. Wenn Sie über eine Gruppe von Bindeoptionen verfügen, verwenden Sie das Dienstprogramm StaticBinder, die Optionen und die pureQueryXML-Datei, um Pakete für eine Datenbank zu binden.
In der folgenden Tabelle sind die Sonderregister, die von pureQuery Runtime aufgezeichnet werden, und die Bindeoptionen, die den Sonderregistern zugeordnet sind, aufgelistet.
Sonderregister | Bindeoption | Notes |
---|---|---|
CURRENT DECFLOAT ROUNDING MODE1 | ROUNDING für DB2 for z/OS und DB2 for System i. Keine Bindeoption für DB2 for Linux, UNIX and Windows |
Die Bindeoption ROUNDING ist nicht für alle DB2-Datenbanken verfügbar. Datenbanken, die diese Bindeoption nicht unterstützen, geben bei ihrer Verwendung eine Warnung aus. |
CURRENT PATH | FUNCPATH für DB2 for Linux, UNIX and Windows PATH oder FUNCPATH für DB2 for z/OS und DB2 for System i |
Bei der Generierung einer StaticBinder-Optionsdatei gibt das Dienstprogramm Configure die Bindeoption FUNCPATH an. |
CURRENT PRECISION2 | DEC | Der Sonderregisterwert CURRENT PRECISION kann bei Divisionsoperationen die Werte für die Genauigkeit und die Mindestanzahl Kommastellen bei Divisionen einschließen. Der Bindeoptionswert kann den Wert für die Mindestanzahl der Kommastellen bei Divisionen nicht einschließen. Das Dienstprogramm Configure generiert einen Warnungskommentar, wenn es bei der Generierung einer StaticBinder-Optionsdatei im Wert CURRENT PRECISION einen Wert für die Mindestanzahl der Kommastellen bei Divisionen vorfindet. |
CURRENT SCHEMA3 | QUALIFIER | |
CURRENT SQLID3 | QUALIFIER für DB2 for Linux, UNIX and DB2 for System
i Keine Bindeoption für DB2 for z/OS |
Das Dienstprogramm Configure generiert einen Warnungskommentar, wenn bei der Generierung einer StaticBinder-Optionsdatei die Werte der Sonderregister CURRENT SCHEMA und CURRENT SQLID nicht identisch sind. Bei DB2 for z/OS kann in manchen Fällen die Bindeoption OWNER verwendet werden. |