Package org.h2.schema
Class Sequence
- java.lang.Object
-
- org.h2.engine.DbObject
-
- org.h2.schema.SchemaObject
-
- org.h2.schema.Sequence
-
- All Implemented Interfaces:
HasSQL
public final class Sequence extends SchemaObject
A sequence is created using the statement CREATE SEQUENCE
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Sequence.Cycle
CYCLE clause and sequence state.
-
Field Summary
Fields Modifier and Type Field Description private long
baseValue
private boolean
belongsToTable
private long
cacheSize
private Sequence.Cycle
cycle
private TypeInfo
dataType
static int
DEFAULT_CACHE_SIZE
The default cache size for sequences.private long
increment
private long
margin
private long
maxValue
private long
minValue
private long
startValue
private boolean
writeWithMargin
-
Fields inherited from class org.h2.engine.DbObject
AGGREGATE, comment, COMMENT, CONSTANT, CONSTRAINT, database, DOMAIN, FUNCTION_ALIAS, INDEX, RIGHT, ROLE, SCHEMA, SEQUENCE, SETTING, SYNONYM, TABLE_OR_VIEW, trace, TRIGGER, USER
-
Fields inherited from interface org.h2.util.HasSQL
ADD_PLAN_INFORMATION, DEFAULT_SQL_FLAGS, NO_CASTS, QUOTE_ONLY_WHEN_REQUIRED, REPLACE_LOBS_FOR_TRACE, TRACE_SQL_FLAGS
-
-
Constructor Summary
Constructors Constructor Description Sequence(SessionLocal session, Schema schema, int id, java.lang.String name, SequenceOptions options, boolean belongsToTable)
Creates a new sequence.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private long
checkOptions(long baseValue, long startValue, long minValue, long maxValue, long increment, long cacheSize, boolean mayAdjustCacheSize)
Validates the specified prospective base value, start value, min value, max value, increment, and cache size relative to each other, since each of their respective validities are contingent on the values of the other parameters.void
close()
Flush the current value to disk and close this object.private boolean
decrement(long oldBase, long newBase)
void
flush(SessionLocal session)
Flush the current value, including the margin, to disk.private void
flushInternal(SessionLocal session)
void
flushWithoutMargin()
Flush the current value to disk.long
getBaseValue()
boolean
getBelongsToTable()
long
getCacheSize()
java.lang.String
getCreateSQL()
Construct the CREATE ...java.lang.String
getCreateSQLForCopy(Table table, java.lang.String quotedName)
Build a SQL statement to re-create the object, or to create a copy of the object with a different name or referencing a different tablelong
getCurrentValue()
Sequence.Cycle
getCycle()
TypeInfo
getDataType()
static long
getDefaultMaxValue(java.lang.Long startValue, long increment, long[] bounds)
Calculates default max value.static long
getDefaultMinValue(java.lang.Long startValue, long increment, long[] bounds)
Calculates default min value.java.lang.String
getDropSQL()
Construct a DROP ...int
getEffectivePrecision()
long
getIncrement()
private static long
getMaxCacheSize(long range, long increment)
long
getMaxValue()
long
getMinValue()
Value
getNext(SessionLocal session)
Get the next value for this sequence.java.lang.StringBuilder
getSequenceOptionsSQL(java.lang.StringBuilder builder)
Append the options part of the SQL statement to create the sequence.private java.lang.StringBuilder
getSequenceOptionsSQL(java.lang.StringBuilder builder, long value)
long
getStartValue()
int
getType()
Get the object type.private boolean
increment(long oldBase, long newBase)
void
modify(java.lang.Long baseValue, java.lang.Long startValue, java.lang.Long minValue, java.lang.Long maxValue, java.lang.Long increment, Sequence.Cycle cycle, java.lang.Long cacheSize)
Allows the base value, start value, min value, max value, increment and cache size to be updated atomically, including atomic validation.void
removeChildrenAndResources(SessionLocal session)
Delete all dependent children objects and resources of this object.void
setBelongsToTable(boolean b)
-
Methods inherited from class org.h2.schema.SchemaObject
getSchema, getSQL, getSQL, isHidden
-
Methods inherited from class org.h2.engine.DbObject
checkRename, getChildren, getComment, getCreateSQLForMeta, getDatabase, getId, getModificationId, getName, invalidate, isTemporary, isValid, rename, setComment, setModified, setObjectName, setTemporary, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.h2.util.HasSQL
getTraceSQL
-
-
-
-
Field Detail
-
DEFAULT_CACHE_SIZE
public static final int DEFAULT_CACHE_SIZE
The default cache size for sequences.- See Also:
- Constant Field Values
-
baseValue
private long baseValue
-
margin
private long margin
-
dataType
private TypeInfo dataType
-
increment
private long increment
-
cacheSize
private long cacheSize
-
startValue
private long startValue
-
minValue
private long minValue
-
maxValue
private long maxValue
-
cycle
private Sequence.Cycle cycle
-
belongsToTable
private boolean belongsToTable
-
writeWithMargin
private boolean writeWithMargin
-
-
Constructor Detail
-
Sequence
public Sequence(SessionLocal session, Schema schema, int id, java.lang.String name, SequenceOptions options, boolean belongsToTable)
Creates a new sequence.- Parameters:
session
- the sessionschema
- the schemaid
- the object idname
- the sequence nameoptions
- the sequence optionsbelongsToTable
- whether this sequence belongs to a table (for generated columns)
-
-
Method Detail
-
modify
public void modify(java.lang.Long baseValue, java.lang.Long startValue, java.lang.Long minValue, java.lang.Long maxValue, java.lang.Long increment, Sequence.Cycle cycle, java.lang.Long cacheSize)
Allows the base value, start value, min value, max value, increment and cache size to be updated atomically, including atomic validation. Useful because setting these attributes one after the other could otherwise result in an invalid sequence state (e.g. min value > max value, start value < min value, etc).- Parameters:
baseValue
- the base value (null
if restart is not requested)startValue
- the new start value (null
if no change)minValue
- the new min value (null
if no change)maxValue
- the new max value (null
if no change)increment
- the new increment (null
if no change)cycle
- the new cycle value, ornull
if no changecacheSize
- the new cache size (null
if no change)
-
checkOptions
private long checkOptions(long baseValue, long startValue, long minValue, long maxValue, long increment, long cacheSize, boolean mayAdjustCacheSize)
Validates the specified prospective base value, start value, min value, max value, increment, and cache size relative to each other, since each of their respective validities are contingent on the values of the other parameters.- Parameters:
baseValue
- the prospective base valuestartValue
- the prospective start valueminValue
- the prospective min valuemaxValue
- the prospective max valueincrement
- the prospective incrementcacheSize
- the prospective cache sizemayAdjustCacheSize
- whether cache size may be adjusted, cache size 0 is adjusted unconditionally to 1- Returns:
- the prospective or adjusted cache size
-
getMaxCacheSize
private static long getMaxCacheSize(long range, long increment)
-
getDefaultMinValue
public static long getDefaultMinValue(java.lang.Long startValue, long increment, long[] bounds)
Calculates default min value.- Parameters:
startValue
- the start value of the sequence.increment
- the increment of the sequence value.bounds
- min and max bounds of data type of the sequence- Returns:
- min value.
-
getDefaultMaxValue
public static long getDefaultMaxValue(java.lang.Long startValue, long increment, long[] bounds)
Calculates default max value.- Parameters:
startValue
- the start value of the sequence.increment
- the increment of the sequence value.bounds
- min and max bounds of data type of the sequence- Returns:
- min value.
-
getBelongsToTable
public boolean getBelongsToTable()
-
getDataType
public TypeInfo getDataType()
-
getEffectivePrecision
public int getEffectivePrecision()
-
getIncrement
public long getIncrement()
-
getStartValue
public long getStartValue()
-
getMinValue
public long getMinValue()
-
getMaxValue
public long getMaxValue()
-
getCycle
public Sequence.Cycle getCycle()
-
getDropSQL
public java.lang.String getDropSQL()
Description copied from class:DbObject
Construct a DROP ... SQL statement for this object.- Overrides:
getDropSQL
in classDbObject
- Returns:
- the SQL statement
-
getCreateSQLForCopy
public java.lang.String getCreateSQLForCopy(Table table, java.lang.String quotedName)
Description copied from class:DbObject
Build a SQL statement to re-create the object, or to create a copy of the object with a different name or referencing a different table- Specified by:
getCreateSQLForCopy
in classDbObject
- Parameters:
table
- the new tablequotedName
- the quoted name- Returns:
- the SQL statement
-
getCreateSQL
public java.lang.String getCreateSQL()
Description copied from class:DbObject
Construct the CREATE ... SQL statement for this object.- Specified by:
getCreateSQL
in classDbObject
- Returns:
- the SQL statement
-
getSequenceOptionsSQL
public java.lang.StringBuilder getSequenceOptionsSQL(java.lang.StringBuilder builder)
Append the options part of the SQL statement to create the sequence.- Parameters:
builder
- the builder- Returns:
- the builder
-
getSequenceOptionsSQL
private java.lang.StringBuilder getSequenceOptionsSQL(java.lang.StringBuilder builder, long value)
-
getNext
public Value getNext(SessionLocal session)
Get the next value for this sequence. Should not be called directly, useSessionLocal.getNextValueFor(Sequence, org.h2.command.Prepared)
instead.- Parameters:
session
- the session- Returns:
- the next value
-
increment
private boolean increment(long oldBase, long newBase)
-
decrement
private boolean decrement(long oldBase, long newBase)
-
flushWithoutMargin
public void flushWithoutMargin()
Flush the current value to disk.
-
flush
public void flush(SessionLocal session)
Flush the current value, including the margin, to disk.- Parameters:
session
- the session
-
flushInternal
private void flushInternal(SessionLocal session)
-
close
public void close()
Flush the current value to disk and close this object.
-
getType
public int getType()
Description copied from class:DbObject
Get the object type.
-
removeChildrenAndResources
public void removeChildrenAndResources(SessionLocal session)
Description copied from class:DbObject
Delete all dependent children objects and resources of this object.- Specified by:
removeChildrenAndResources
in classDbObject
- Parameters:
session
- the session
-
getBaseValue
public long getBaseValue()
-
getCurrentValue
public long getCurrentValue()
-
setBelongsToTable
public void setBelongsToTable(boolean b)
-
getCacheSize
public long getCacheSize()
-
-