Honor a sequence's startValue in NoSQL
Use the startValue from the schema when starting a new counter
pool. This way Gerrit Code Review's account_id field will be
starting from a different value range than its account_group_id.
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/src/main/java/com/google/gwtorm/nosql/NoSqlDatabase.java b/src/main/java/com/google/gwtorm/nosql/NoSqlDatabase.java
index c426806..86f88a5 100644
--- a/src/main/java/com/google/gwtorm/nosql/NoSqlDatabase.java
+++ b/src/main/java/com/google/gwtorm/nosql/NoSqlDatabase.java
@@ -84,7 +84,7 @@
}
/** @return the derived model of the application's schema. */
- protected SchemaModel getSchemaModel() {
+ public SchemaModel getSchemaModel() {
return schemaModel;
}
diff --git a/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java b/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java
index 9792235..79e65bd 100644
--- a/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java
+++ b/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java
@@ -51,7 +51,15 @@
if (val != null) {
ctr = CounterShard.CODEC.decode(val);
} else {
- ctr = new CounterShard(1, Long.MAX_VALUE);
+ long start = 1;
+ for (SequenceModel s : getDatabase().getSchemaModel()
+ .getSequences()) {
+ if (poolName.equals(s.getSequenceName())) {
+ start = s.getSequence().startWith();
+ break;
+ }
+ }
+ ctr = new CounterShard(start, Long.MAX_VALUE);
}
if (ctr.isEmpty()) {