Sizer

Sizer, die von AEs verwendet werden, werden von skalaren Funktionen aufgerufen, um die Rückgabegröße von Strings und numerischen Werten dynamisch zu deklarieren.

Für die Größenbestimmung wird die SQL-Skalar-Funktion mit dem Rückgabewert CHAR(ANY), VARCHAR(ANY), NCHAR(ANY) oder NVARCHAR(ANY) für Strings und NUMERIC(ANY) für numerische Werte deklariert. Wie bei Shapern wird für lokale AEs eine Instanz für die Größenbestimmung auf dem Host erstellt, und für entfernte AEs wird eine Benachrichtigung auf dem Host erstellt. Die Instanz wird nur aufgerufen, um diese Größeninformationen bereitzustellen, und wird nicht zur Verarbeitung von Daten verwendet. Die AE-Instanz wird aufgerufen, bevor Daten abgerufen werden, d. h. sie erhält Metadaten über die Eingabeargumente und kann auch alle Argumente abrufen, die nur konstante Ganzzahlen vom Typ int4 sind (nicht int1, int2 oder int8).

Sizer sind eingeschränkter als Shaper und erlauben nur die Spezifikation der Größe der String-Ausgabe oder die Präzision und Skalierung einer numerischen Ausgabe. Der Typ wird bei der Registrierung angegeben. Sizer erlauben nur den Zugriff auf literalisierte int32 innerhalb der Eingabedaten.

Wenn eine AE als skalare SQL-Funktion registriert ist, die mit dem String-Rückgabewert CHAR(ANY) oder NUMERIC(ANY) deklariert ist, muss die AE so geschrieben werden, dass sie sowohl "Sizing" als auch Datenverarbeitung durchführt. Ein und dieselbe Prozessinstanz führt niemals beides aus, es sei denn, es handelt sich um eine entfernte AE. Jede AE-Sprache verfügt über eine API-Funktion, die angibt, ob die AE als Sizer oder als normaler Datenprozessor verwendet wird.