8
|
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 |
|