]> git.pld-linux.org Git - packages/db4.7.git/blob - patch.4.7.25.1
- from upstream
[packages/db4.7.git] / patch.4.7.25.1
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
3 ***************
4 *** 187,193 ****
5         if ((ret = __db_get_flags(dbp, &tflags)) != 0)
6                 goto err;
7   
8 !       if (DB_IS_READONLY(dbp)) {
9                 ret = __db_rdonly(dbp->env, "DB_SEQUENCE->open");
10                 goto err;
11         }
12 --- 187,197 ----
13         if ((ret = __db_get_flags(dbp, &tflags)) != 0)
14                 goto err;
15   
16 !       /*
17 !        * We can let replication clients open sequences, but must
18 !        * check later that they do not update them.
19 !        */
20 !       if (F_ISSET(dbp, DB_AM_RDONLY)) {
21                 ret = __db_rdonly(dbp->env, "DB_SEQUENCE->open");
22                 goto err;
23         }
24 ***************
25 *** 244,249 ****
26 --- 248,258 ----
27                 if ((ret != DB_NOTFOUND && ret != DB_KEYEMPTY) ||
28                     !LF_ISSET(DB_CREATE))
29                         goto err;
30 +               if (IS_REP_CLIENT(env) &&
31 +                   !F_ISSET(dbp, DB_AM_NOT_DURABLE)) {
32 +                       ret = __db_rdonly(env, "DB_SEQUENCE->open");
33 +                       goto err;
34 +               }
35                 ret = 0;
36   
37                 rp = &seq->seq_record;
38 ***************
39 *** 296,302 ****
40          */
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)) {
46                                 if ((ret =
47 --- 305,316 ----
48          */
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");
54 !                       goto err;
55 !               }
56 !               rp->seq_version = DB_SEQUENCE_VERSION;
57                 if (!F_ISSET(env, ENV_LITTLEENDIAN)) {
58                         if (IS_DB_AUTO_COMMIT(dbp, txn)) {
59                                 if ((ret =
60 ***************
61 *** 707,712 ****
62 --- 721,733 ----
63   
64         MUTEX_LOCK(env, seq->mtx_seq);
65   
66 +       if (handle_check && IS_REP_CLIENT(env) &&
67 +           !F_ISSET(dbp, DB_AM_NOT_DURABLE)) {
68 +               ret = __db_rdonly(env, "DB_SEQUENCE->get");
69 +               goto err;
70 +       }
71
72
73         if (rp->seq_min + delta > rp->seq_max) {
74                 __db_errx(env, "Sequence overflow");
75                 ret = EINVAL;
This page took 0.052305 seconds and 3 git commands to generate.