1 *** sequence/sequence.c.orig 2008-05-05 13:25:09.000000000 -0700
2 --- sequence/sequence.c 2008-08-15 09:58:46.000000000 -0700
5 if ((ret = __db_get_flags(dbp, &tflags)) != 0)
8 ! if (DB_IS_READONLY(dbp)) {
9 ret = __db_rdonly(dbp->env, "DB_SEQUENCE->open");
13 if ((ret = __db_get_flags(dbp, &tflags)) != 0)
17 ! * We can let replication clients open sequences, but must
18 ! * check later that they do not update them.
20 ! if (F_ISSET(dbp, DB_AM_RDONLY)) {
21 ret = __db_rdonly(dbp->env, "DB_SEQUENCE->open");
27 if ((ret != DB_NOTFOUND && ret != DB_KEYEMPTY) ||
30 + if (IS_REP_CLIENT(env) &&
31 + !F_ISSET(dbp, DB_AM_NOT_DURABLE)) {
32 + ret = __db_rdonly(env, "DB_SEQUENCE->open");
37 rp = &seq->seq_record;
41 rp = seq->seq_data.data;
42 if (rp->seq_version == DB_SEQUENCE_OLDVER) {
43 ! oldver: rp->seq_version = DB_SEQUENCE_VERSION;
44 if (!F_ISSET(env, ENV_LITTLEENDIAN)) {
45 if (IS_DB_AUTO_COMMIT(dbp, txn)) {
49 rp = seq->seq_data.data;
50 if (rp->seq_version == DB_SEQUENCE_OLDVER) {
51 ! oldver: if (IS_REP_CLIENT(env) &&
52 ! !F_ISSET(dbp, DB_AM_NOT_DURABLE)) {
53 ! ret = __db_rdonly(env, "DB_SEQUENCE->open");
56 ! rp->seq_version = DB_SEQUENCE_VERSION;
57 if (!F_ISSET(env, ENV_LITTLEENDIAN)) {
58 if (IS_DB_AUTO_COMMIT(dbp, txn)) {
64 MUTEX_LOCK(env, seq->mtx_seq);
66 + if (handle_check && IS_REP_CLIENT(env) &&
67 + !F_ISSET(dbp, DB_AM_NOT_DURABLE)) {
68 + ret = __db_rdonly(env, "DB_SEQUENCE->get");
73 if (rp->seq_min + delta > rp->seq_max) {
74 __db_errx(env, "Sequence overflow");