Funzioni deterministiche

In un ambiente non replicativo, le funzioni di sistema di questo argomento sono gestite in modo non deterministico e per valore. Tuttavia, in un ambiente di replica, la logica del software di replica li rende deterministici e, di conseguenza, vengono gestiti da SQL. Questo è necessario per mantenere sincronizzati i nodi di un set di replica.

Ad esempio, senza la modifica, se un'istruzione chiamasse la funzione CURRENT_TIMESTAMP sul primario, la replica non sarebbe a conoscenza dell'istruzione se non dopo il commit del primario e quindi avrebbe un timbro temporale diverso. Il codice aggiuntivo per la funzione CURRENT_TIMESTAMP nell'ambiente di replica consente alla replica di utilizzare la stessa marca temporale del primario. L'uso della marca temporale del primario rende deterministica la funzione CURRENT_TIMESTAMP all'interno dell'istruzione.

La tabella seguente elenca le funzioni di sistema gestite in modo deterministico in un ambiente di replica:
Tabella 1. Funzioni deterministiche
Nome funzione Tipo di ritorno Argomenti
ADD_MONTI DATA DATA INT4
ADD_MONTI Data/ora TIMESTAMP INT4
ETÀ INTERVAL DATE Date
ETÀ INTERVAL TIMESTAMP Timestamp
DATA_PARTE INT8 VARCHAR DATA
DATA_PARTE INT8 VARCHAR TEMPO
DATA_PARTE INT8 VARCHAR TIMESTAMP
DATA_PARTE INT8 VARCHAR INTERVALLO
DATA_TRUNCO Data/ora VARCHAR TIMESTAMP
DATA_TRUNCO INTERVAL VARCHAR INTERVALLO
ULTIMO GIORNO DATA DATA
MESI_ TRA NUMERIC TIMESTAMP Timestamp
GIORNO SUCCESSIVO DATA DATA VARCHAR
GIORNO SUCCESSIVO Data/ora TIMESTAMP VARCHAR
ORA Data/ora  
ORA Data/ora INT4
Sovrapposizioni Bool TEMPO TEMPO TEMPO TEMPO
Sovrapposizioni Bool TEMPO INTERVALLO DI TEMPO
Sovrapposizioni Bool INTERVALLO DI TEMPO TEMPO TEMPO
Sovrapposizioni Bool INTERVALLO DI TEMPO INTERVALLO DI TEMPO
Sovrapposizioni Bool TIMESTAMP TIMESTAMP TIMESTAMP TIMESTAMP
Sovrapposizioni Bool TIMESTAMP TIMESTAMP INTERVALLO DI TEMPO
Sovrapposizioni Bool INTERVALLO TIMESTAMP TIMESTAMP TIMESTAMP
Sovrapposizioni Bool INTERVALLO DI TIMESTAMP INTERVALLO DI TIMESTAMP
Sovrapposizioni Bool TIMETZ TIMETZ TIMETZ
Data/ora Data/ora CAR. VAR.
Data/ora Data/ora DATA
Data/ora Data/ora Data/ora
Data/ora Data/ora DATA TIMETZ
timeTZ timeTZ CAR. VAR.
timeTZ timeTZ Data/ora
timeTZ timeTZ timeTZ
Fuso orario CAR. VAR. VARCHAR TIMESTAMP
Fuso orario CAR. VAR. INTERVALLO TIMESTAMP
TO_CHAR CAR. VAR. TIMESTAMP VARCHAR
TO_CHAR NVARCHAR TIMESTAMP NVARCHAR
DATA DATA VARCHAR VARCHAR
DATA DATA NVARCHAR NVARCHAR
TO_TIMESTAMP Data/ora VARCHAR VARCHAR
TO_TIMESTAMP Data/ora NVARCHAR NVARCHAR