Deterministic functions
In a non-replication environment, the system functions in this topic are handled as non-deterministic and by value. However, in a replication environment, logic in the replication software renders them deterministic and, as a result, they are handled by SQL. This is necessary to keep nodes in a replication set synchronized.
For example, without the modification, if a statement called the CURRENT_TIMESTAMP function on the primary, the replica would not be aware of the statement until after the primary commits and would therefore have a different time stamp. The additional code for the CURRENT_TIMESTAMP function in the replication environment allows the replica to use the same time stamp as the primary. Using the primary's time stamp makes the CURRENT_TIMESTAMP function within the statement deterministic.
| Function name | Return type | Arguments |
|---|---|---|
| ADD_MONTHS | DATE | DATE INT4 |
| ADD_MONTHS | TIMESTAMP | TIMESTAMP INT4 |
| AGE | INTERVAL | DATE DATE |
| AGE | INTERVAL | TIMESTAMP TIMESTAMP |
| DATE_PART | INT8 | VARCHAR DATE |
| DATE_PART | INT8 | VARCHAR TIME |
| DATE_PART | INT8 | VARCHAR TIMESTAMP |
| DATE_PART | INT8 | VARCHAR INTERVAL |
| DATE_TRUNC | TIMESTAMP | VARCHAR TIMESTAMP |
| DATE_TRUNC | INTERVAL | VARCHAR INTERVAL |
| LAST_DAY | DATE | DATE |
| MONTHS_ BETWEEN | NUMERIC | TIMESTAMP TIMESTAMP |
| NEXT_DAY | DATE | DATE VARCHAR |
| NEXT_DAY | TIMESTAMP | TIMESTAMP VARCHAR |
| NOW | TIMESTAMP | |
| NOW | TIMESTAMP | INT4 |
| OVERLAPS | BOOL | TIME TIME TIME TIME |
| OVERLAPS | BOOL | TIME TIME TIME INTERVAL |
| OVERLAPS | BOOL | TIME INTERVAL TIME TIME |
| OVERLAPS | BOOL | TIME INTERVAL TIME INTERVAL |
| OVERLAPS | BOOL | TIMESTAMP TIMESTAMP TIMESTAMP TIMESTAMP |
| OVERLAPS | BOOL | TIMESTAMP TIMESTAMP TIMESTAMP INTERVAL |
| OVERLAPS | BOOL | TIMESTAMP INTERVAL TIMESTAMP TIMESTAMP |
| OVERLAPS | BOOL | TIMESTAMP INTERVAL TIMESTAMP INTERVAL |
| OVERLAPS | BOOL | TIMETZ TIMETZ TIMETZ TIMETZ |
| TIMESTAMP | TIMESTAMP | VARCHAR |
| TIMESTAMP | TIMESTAMP | DATE |
| TIMESTAMP | TIMESTAMP | DATE TIME |
| TIMESTAMP | TIMESTAMP | DATE TIMETZ |
| TIMETZ | TIMETZ | VARCHAR |
| TIMETZ | TIMETZ | TIMESTAMP |
| TIMETZ | TIMETZ | TIMETZ |
| TIMEZONE | VARCHAR | VARCHAR TIMESTAMP |
| TIMEZONE | VARCHAR | INTERVAL TIMESTAMP |
| TO_CHAR | VARCHAR | TIMESTAMP VARCHAR |
| TO_CHAR | NVARCHAR | TIMESTAMP NVARCHAR |
| TO_DATE | DATE | VARCHAR VARCHAR |
| TO_DATE | DATE | NVARCHAR NVARCHAR |
| TO_TIMESTAMP | TIMESTAMP | VARCHAR VARCHAR |
| TO_TIMESTAMP | TIMESTAMP | NVARCHAR NVARCHAR |