Deterministische Funktionen

In einer Umgebung ohne Replikation werden die Systemfunktionen in diesem Bereich als nicht-deterministisch und wertorientiert behandelt. In einer Replikationsumgebung sind sie jedoch aufgrund der Logik der Replikationssoftware deterministisch und werden folglich von SQL verarbeitet. Dies ist notwendig, um die Knoten in einem Replikationssatz synchron zu halten.

Wenn beispielsweise eine Anweisung die Funktion CURRENT_TIMESTAMP auf dem Primärsystem aufruft, würde das Replikat die Anweisung erst nach dem Commit des Primärsystems erkennen und daher einen anderen Zeitstempel erhalten. Der zusätzliche Code für die Funktion CURRENT_TIMESTAMP in der Replikationsumgebung ermöglicht es dem Replikat, denselben Zeitstempel wie das Primärsystem zu verwenden. Die Verwendung des Zeitstempels der Primärdatei macht die Funktion CURRENT_TIMESTAMP innerhalb der Anweisung deterministisch.

In der folgenden Tabelle sind Systemfunktionen aufgeführt, die in einer Replikationsumgebung deterministisch gehandhabt werden:
Tabelle 1. Deterministische Funktionen
Funktionsname Rückgabetyp Argumente
ADD_MONTHS DATUM DATUM INT4
ADD_MONTHS TIMESTAMP (Zeitmarke) ZEITSTEMPEL- INT4
AGE INTERVALL DATE Datum
AGE INTERVALL TIMESTAMP Zeitmarke
date_part INT8 VARCHAR DATE
date_part INT8 VARCHAR TIME
date_part INT8 VARCHAR ZEITSTEMPEL
date_part INT8 VARCHAR-INTERVALL
date_trunc TIMESTAMP (Zeitmarke) VARCHAR ZEITSTEMPEL
date_trunc INTERVALL VARCHAR-INTERVALL
LAST_DAY DATUM DATUM
MONATE_ ZWISCHEN NUMERIC TIMESTAMP Zeitmarke
NEXT_DAY DATUM DATE VARCHAR
NEXT_DAY TIMESTAMP (Zeitmarke) ZEITSTEMPEL VARCHAR
JETZT TIMESTAMP (Zeitmarke)  
JETZT TIMESTAMP (Zeitmarke) INT4
OVERLAPS BOOL ZEIT ZEIT ZEIT ZEIT
OVERLAPS BOOL ZEIT ZEIT ZEITINTERVALL
OVERLAPS BOOL ZEITINTERVALL ZEIT ZEIT
OVERLAPS BOOL ZEITINTERVALL ZEITINTERVALL
OVERLAPS BOOL ZEITSTEMPEL ZEITSTEMPEL ZEITSTEMPEL ZEITSTEMPEL
OVERLAPS BOOL ZEITSTEMPEL ZEITSTEMPEL ZEITSTEMPEL INTERVALL
OVERLAPS BOOL ZEITSTEMPEL INTERVALL ZEITSTEMPEL ZEITSTEMPEL
OVERLAPS BOOL ZEITSTEMPELINTERVALL ZEITSTEMPELINTERVALL
OVERLAPS BOOL TIMETZ TIMETZ TIMETZ TIMETZ
TIMESTAMP (Zeitmarke) TIMESTAMP (Zeitmarke) VARCHAR
TIMESTAMP (Zeitmarke) TIMESTAMP (Zeitmarke) DATUM
TIMESTAMP (Zeitmarke) TIMESTAMP (Zeitmarke) Datum/Zeit
TIMESTAMP (Zeitmarke) TIMESTAMP (Zeitmarke) DATUM ZEIT
TIMETZ TIMETZ VARCHAR
TIMETZ TIMETZ TIMESTAMP (Zeitmarke)
TIMETZ TIMETZ TIMETZ
TIMEZONE VARCHAR VARCHAR ZEITSTEMPEL
TIMEZONE VARCHAR INTERVALL-ZEITSTEMPEL
to_char VARCHAR ZEITSTEMPEL VARCHAR
to_char NVARCHAR ZEITSTEMPEL NVARCHAR
TO_DATE DATUM VARCHAR VARCHAR
TO_DATE DATUM NVARCHAR NVARCHAR
to_timestamp TIMESTAMP (Zeitmarke) VARCHAR VARCHAR
to_timestamp TIMESTAMP (Zeitmarke) NVARCHAR NVARCHAR