@@ -18883,40 +18883,86 @@ SequenceOwnership SequenceOwnership():
1888318883 { return ownership; }
1888418884}
1888518885
18886+ /** AS, ownership and numeric parameters share the same sequence-option boundary. */
18887+ void SequenceDefinitionOptions(Sequence sequence):
18888+ {
18889+ List<Sequence.Parameter> parameters = new ArrayList<Sequence.Parameter>();
18890+ Sequence.Parameter parameter;
18891+ SequenceOwnership ownership;
18892+ Token dataType;
18893+ }
18894+ {
18895+ (
18896+ LOOKAHEAD(2)
18897+ (
18898+ <K_AS> ( dataType=<S_IDENTIFIER> | dataType=<DATA_TYPE> ) {
18899+ requireDdlSyntax(sequence.getDataType() == null, "Duplicate sequence AS clause");
18900+ sequence.setDataType(dataType.image);
18901+ }
18902+ |
18903+ LOOKAHEAD({ isKeywordAhead("OWNED") }) ownership=SequenceOwnership() {
18904+ requireDdlSyntax(sequence.getOwnership() == null, "Duplicate sequence OWNED BY clause");
18905+ sequence.setOwnership(ownership);
18906+ }
18907+ |
18908+ parameter=SequenceParameter() { parameters.add(parameter); }
18909+ )
18910+ )*
18911+ { sequence.setParameters(parameters); }
18912+ }
18913+
1888618914CreateSequence CreateSequence():
1888718915{
18888- CreateSequence createSequence = new CreateSequence();
18889- Sequence sequence;
18890- List<Sequence.Parameter> sequenceParameters;
18891- Token dataType = null;
18892- SequenceOwnership ownership;
18916+ CreateSequence result = new CreateSequence();
18917+ Sequence sequence;
18918+ Token persistence;
18919+ Token scope = null;
1889318920}
1889418921{
18895- <K_SEQUENCE> sequence=Sequence() { createSequence.setSequence(sequence); }
18896- [ <K_AS> ( dataType=<S_IDENTIFIER> | dataType=<DATA_TYPE> ) { sequence.setDataType(dataType.image); } ]
18897- sequenceParameters = SequenceParameters()
18898- [ LOOKAHEAD({ isKeywordAhead("OWNED") }) ownership=SequenceOwnership() { sequence.setOwnership(ownership); } ]
18899- {
18900- sequence.setParameters(sequenceParameters);
18901- return createSequence;
18902- }
18922+ [
18923+ ( <K_UNLOGGED> { result.setPersistence(CreateSequence.Persistence.UNLOGGED); }
18924+ |
18925+ [ ( scope=<K_LOCAL> | scope=<K_GLOBAL> ) ]
18926+ ( persistence=<K_TEMP> | persistence=<K_TEMPORARY> ) {
18927+ result.setPersistence(CreateSequence.Persistence.valueOf(
18928+ (scope == null ? "" : scope.image.toUpperCase(Locale.ROOT) + "_")
18929+ + persistence.image.toUpperCase(Locale.ROOT)));
18930+ } )
18931+ ]
18932+ <K_SEQUENCE>
18933+ [ LOOKAHEAD(3) <K_IF> <K_NOT> <K_EXISTS> { result.setIfNotExists(true); } ]
18934+ sequence=Sequence() { result.setSequence(sequence); }
18935+ SequenceDefinitionOptions(sequence)
18936+ { return result; }
1890318937}
1890418938
1890518939AlterSequence AlterSequence():
1890618940{
18907- AlterSequence alterSequence = new AlterSequence();
18908- Sequence sequence;
18909- List<Sequence.Parameter> sequenceParameters;
18910- SequenceOwnership ownership;
18941+ AlterSequence result = new AlterSequence();
18942+ Sequence sequence;
18943+ String name;
1891118944}
1891218945{
18913- <K_SEQUENCE> sequence=Sequence() { alterSequence.setSequence(sequence); }
18914- sequenceParameters = SequenceParameters()
18915- [ LOOKAHEAD({ isKeywordAhead("OWNED") }) ownership=SequenceOwnership() { sequence.setOwnership(ownership); } ]
18916- {
18917- sequence.setParameters(sequenceParameters);
18918- return alterSequence;
18919- }
18946+ <K_SEQUENCE> [ LOOKAHEAD(2) <K_IF> <K_EXISTS> { result.setIfExists(true); } ]
18947+ sequence=Sequence() { result.setSequence(sequence); }
18948+ (
18949+ <K_RENAME> <K_TO> name=RelObjectName()
18950+ { result.setAction(AlterSequence.Action.RENAME); result.setNewName(name); }
18951+ |
18952+ LOOKAHEAD({ isKeywordAhead("OWNER") }) ContextualKeyword("OWNER") <K_TO> name=RelObjectName()
18953+ { result.setAction(AlterSequence.Action.OWNER); result.setOwner(name); }
18954+ |
18955+ <K_SET>
18956+ (
18957+ <K_SCHEMA> name=RelObjectName()
18958+ { result.setAction(AlterSequence.Action.SET_SCHEMA); result.setSchemaName(name); }
18959+ | <K_UNLOGGED> { result.setAction(AlterSequence.Action.SET_UNLOGGED); }
18960+ | ContextualKeyword("LOGGED") { result.setAction(AlterSequence.Action.SET_LOGGED); }
18961+ )
18962+ |
18963+ SequenceDefinitionOptions(sequence)
18964+ )
18965+ { return result; }
1892018966}
1892118967
1892218968Statement Create():
@@ -18968,6 +19014,7 @@ Statement Create():
1896819014 |
1896919015 statement = CreateDatabase()
1897019016 |
19017+ LOOKAHEAD([ <K_UNLOGGED> | [ <K_LOCAL> | <K_GLOBAL> ] ( <K_TEMP> | <K_TEMPORARY> ) ] <K_SEQUENCE>)
1897119018 statement = CreateSequence()
1897219019 |
1897319020 statement = CreateSynonym(isUsingOrReplace)
0 commit comments