in google-cloud-spanner-hibernate-tools/src/main/java/com/google/cloud/spanner/hibernate/BitReversedSequenceStructure.java [92:126]
protected void buildSequence(Database database) {
Sequence sequence;
Optional<AuxiliaryDatabaseObject> existing =
database.getAuxiliaryDatabaseObjects().stream()
.filter(aux -> aux.getExportIdentifier().equals(qualifiedSequenceName.render()))
.findAny();
if (existing.isPresent()) {
sequence = ((BitReversedSequenceAuxiliaryDatabaseObject) existing.get()).sequence;
} else {
final Namespace namespace =
database.locateNamespace(
qualifiedSequenceName.getCatalogName(), qualifiedSequenceName.getSchemaName());
sequence =
namespace.createSequence(
qualifiedSequenceName.getObjectName(),
(physicalName) ->
new Sequence(
contributor,
namespace.getPhysicalName().getCatalog(),
namespace.getPhysicalName().getSchema(),
physicalName,
initialValue,
1));
database.addAuxiliaryDatabaseObject(
new BitReversedSequenceAuxiliaryDatabaseObject(sequence, excludedRanges));
Iterator<Sequence> iterator = namespace.getSequences().iterator();
while (iterator.hasNext()) {
if (iterator.next() == sequence) {
iterator.remove();
break;
}
}
}
this.physicalSequenceName = sequence.getName();
}