Interface TemporalTableSupport
- All Known Implementing Classes:
DB2TemporalTableSupport, DefaultTemporalTableSupport, MariaDBTemporalTableSupport, MySQLTemporalTableSupport, OracleTemporalTableSupport, PostgreSQLTemporalTableSupport, SQLServerTemporalTableSupport
Abstracts the support for temporal tables.
- Since:
- 7.4
-
Method Summary
Modifier and TypeMethodDescriptionvoidaddTemporalTableAuxiliaryObjects(TemporalTableStrategy strategy, Table table, Database database, boolean partitioned, String currentPartitionName, String historyPartitionName) Register any auxiliary database objects required for the given temporary table and strategy.booleanShould we create acheckconstraint to enforce effectivity constraints? (That starting timestamps precede ending timestamps.) This is typically not needed for native temporal tables.getAsOfOperator(TemporalTableStrategy strategy) The operator used to specify a temporal instant for querying historical data.The recommended temporal table strategy for this dialect.getExtraTemporalTableDeclarations(TemporalTableStrategy strategy, String rowStartColumn, String rowEndColumn, boolean partitioned) Any extra declarations required as part of thecreate tablestatement for a temporal table.intThe column precision to use for effectivity columns of native temporal tables when the precision is not explicitly specified.intThe column type to use for effectivity columns of temporal tables.Column options for a native implementation of exclusion from temporal versioning.getTemporalTableOptions(TemporalTableStrategy strategy, String rowEndColumnName, boolean partitioned, String currentPartitionName, String historyPartitionName) Table options to use for temporal tables, used to specify system versioning or table partitioning.booleanDoes this dialect natively support SQL 2011-style temporal tables?booleanDo we support partitioning temporal tables in this dialect?booleansuppressesTemporalTablePrimaryKeys(boolean partitioned) Do we need to suppress creation of the primary key constraint on a temporal table?booleanuseAsOfOperator(TemporalTableStrategy strategy) Should be use thefor system_time as ofoperator when querying temporal tables? We usually only use it for querying native temporal tables at a historical instant, but in Oracle we use it all the time.booleanuseTemporalRestriction(LoadQueryInfluencers influencers) Should we use temporal restrictions on therow startandrow endcolumns when querying temporal tables? We usually use them unless we are using native temporal tables, but on Oracle we never use them.
-
Method Details
-
supportsNativeTemporalTables
boolean supportsNativeTemporalTables()Does this dialect natively support SQL 2011-style temporal tables?- See Also:
-
getTemporalColumnType
int getTemporalColumnType()The column type to use for effectivity columns of temporal tables. The default implementation returnsTIMESTAMP. -
getTemporalColumnPrecision
int getTemporalColumnPrecision()The column precision to use for effectivity columns of native temporal tables when the precision is not explicitly specified. The default implementation returns the default timestamp precision for this dialect.- See Also:
-
getTemporalTableOptions
String getTemporalTableOptions(TemporalTableStrategy strategy, String rowEndColumnName, boolean partitioned, String currentPartitionName, String historyPartitionName) Table options to use for temporal tables, used to specify system versioning or table partitioning.- Parameters:
strategy- The temporal table strategyrowEndColumnName- The name of therow endcolumn specified viaTemporal.rowEnd()partitioned- Is partitioning requestedcurrentPartitionName- The current partition name, if specifiedhistoryPartitionName- The history partition name, if specified- Returns:
- The options, or
nullif there are no options
-
suppressesTemporalTablePrimaryKeys
boolean suppressesTemporalTablePrimaryKeys(boolean partitioned) Do we need to suppress creation of the primary key constraint on a temporal table?- Parameters:
partitioned- Is partitioning requested
-
supportsTemporalTablePartitioning
boolean supportsTemporalTablePartitioning()Do we support partitioning temporal tables in this dialect?- See Also:
-
addTemporalTableAuxiliaryObjects
void addTemporalTableAuxiliaryObjects(TemporalTableStrategy strategy, Table table, Database database, boolean partitioned, String currentPartitionName, String historyPartitionName) Register any auxiliary database objects required for the given temporary table and strategy. Used to create history tables or table partitions.- Parameters:
strategy- The temporal table strategytable- A temporal tabledatabase- The database to register withpartitioned- Is partitioning requestedcurrentPartitionName- The current partition name, if specifiedhistoryPartitionName- The history partition name, if specified
-
getExtraTemporalTableDeclarations
String getExtraTemporalTableDeclarations(TemporalTableStrategy strategy, String rowStartColumn, String rowEndColumn, boolean partitioned) Any extra declarations required as part of thecreate tablestatement for a temporal table. These declarations, unlike the options come inside the parentheses, along with the column and constraint definitions. Examples include theperiod for system_timeclause, the Db2transaction start idcolumn, the MySQL partitioning column, and so on.- Parameters:
strategy- The temporal table strategypartitioned- Is partitioning requested
-
createTemporalTableCheckConstraint
Should we create acheckconstraint to enforce effectivity constraints? (That starting timestamps precede ending timestamps.) This is typically not needed for native temporal tables. -
getAsOfOperator
The operator used to specify a temporal instant for querying historical data. Usuallyfor system_time as of. This is usually used together with native temporal tables, but in Oracle we use it all the time. -
useAsOfOperator
Should be use thefor system_time as ofoperator when querying temporal tables? We usually only use it for querying native temporal tables at a historical instant, but in Oracle we use it all the time.- Parameters:
strategy- The strategy
-
useTemporalRestriction
Should we use temporal restrictions on therow startandrow endcolumns when querying temporal tables? We usually use them unless we are using native temporal tables, but on Oracle we never use them.- Parameters:
influencers- TheLoadQueryInfluencers
-
getTemporalExclusionColumnOption
String getTemporalExclusionColumnOption()Column options for a native implementation of exclusion from temporal versioning. -
getDefaultTemporalTableStrategy
TemporalTableStrategy getDefaultTemporalTableStrategy()The recommended temporal table strategy for this dialect.- See Also:
-