|
1 README.sequence - Additional documentation on manual inserts (using |
|
2 poweradmin along with other interfaces to the powerdns database). |
|
3 |
|
4 |
|
5 Removal of "sequence updater" |
|
6 ----------------------------------------------------------------------- |
|
7 |
|
8 Up to poweradmin version 1.2.7-patched, the code included the so |
|
9 called "sequence updater". It was written to synchronize poweradmin |
|
10 with the database after manual inserts of zones and records. This |
|
11 happens if you insert new zones or records by hand, or have other |
|
12 interfaces than poweradmin talking to the database as well. |
|
13 |
|
14 The 1.2.7-patched version of poweradmin was using the PEAR::DB module, |
|
15 using it's nextID() function. It tells the application what will be |
|
16 the next ID for insertion. However, mysql has "auto_increment" and |
|
17 pgsql has "serial". Both allow to do insert with ID's created on the |
|
18 run, without the need of seperate sequence numbers. |
|
19 |
|
20 In order to get rid of the incidental errors and the need to hit the |
|
21 "synchronize database" from time to time, the "sequence updater" has |
|
22 been removed and the code has been updated to use the "auto_increment" |
|
23 and "serial" functionality. As long as you do manual inserts the |
|
24 correct way, this will not cause any problems. |
|
25 |
|
26 |
|
27 Insert new records and zones the correct way (using other tools) |
|
28 ----------------------------------------------------------------------- |
|
29 |
|
30 According to the documentation of powerdns (2.9.20), the id column of |
|
31 the tables domains and records in a mysql setup are created using the |
|
32 "auto_increment" option and in a pgsql setup using the "serial" |
|
33 option. [1] |
|
34 |
|
35 This will allow for auto increments of the id field, as long as no one |
|
36 does a manual insert, specifying the id. So, let's say we have created |
|
37 a table, one in mysql, one in pgsql: |
|
38 |
|
39 CREATE TABLE xmpl_tbl (id INT auto_increment, text TEXT); |
|
40 CREATE TABLE xmpl_tbl (id SERIAL PRIMARY KEY, text TEXT); |
|
41 |
|
42 This insert will work in pgsql only: |
|
43 |
|
44 INSERT INTO xmpl_tbl VALUES (DEFAULT,'First insert test"); |
|
45 |
|
46 These inserts will work in mysql only: |
|
47 |
|
48 INSERT INTO xmpl_tbl VALUES (NULL,'Third insert test"); |
|
49 INSERT INTO xmpl_tbl VALUES ('','Fourth insert test"); |
|
50 |
|
51 This will work in both mysql and pgsql (as long as id didn't exist |
|
52 already), but it will break "auto increment" feature in pgsql [2] (can |
|
53 be fixed using setval() functionality in pgsql): |
|
54 |
|
55 INSERT INTO xmpl_tbl VALUES (42,'Fifth insert test"); |
|
56 |
|
57 This will work in both mysql and pgsql: |
|
58 |
|
59 INSERT INTO xmpl_tbl (text) VALUES ('Second insert test"); |
|
60 |
|
61 So, in other words: if you want to insert records and zones into the |
|
62 powerdns database using other tools and interfaces than poweradmin, |
|
63 you should make sure you are using the correct syntax. |
|
64 |
|
65 |
|
66 Limitations |
|
67 ----------------------------------------------------------------------- |
|
68 |
|
69 Removing the "sequence updater" removes the possibilty to use the |
|
70 poweradmin code against other databases than mysql and pgsql (or at |
|
71 least, it is untested). |
|
72 |
|
73 |
|
74 More information |
|
75 ----------------------------------------------------------------------- |
|
76 |
|
77 More information can be found here: |
|
78 |
|
79 - PowerDNS manual, section backends in detail |
|
80 <http://downloads.powerdns.com/documentation/html/generic-mypgsql-backends.html> |
|
81 |
|
82 - Postgresql documentation, section Operational Questions |
|
83 <http://www.postgresql.org/files/documentation/books/aw_pgsql/node196.html#SECTION0029916000000000000000> |
|
84 |
|
85 - pgsql-bugs mailinglist archive |
|
86 <http://archives.postgresql.org/pgsql-bugs/2004-11/msg00340.php> |
|
87 <http://archives.postgresql.org/pgsql-bugs/2004-11/msg00344.php> |
|
88 |