1------------------------------------------------------------------------------
2-- Database upgrade to 2.2 version
3--
4-- Use:
5--	psql --no-psqlrc --single-transaction -f upgrade.sql database-name
6--
7-- Please, make a backup of your existing database first!
8-- Use a tool such as nohup or script in order to log output and check
9-- error messages:
10--	- Lines with "NOTICE:" are not important.
11--	- You should pay attention to lines with "ERROR:"
12------------------------------------------------------------------------------
13
14-- create pgauth.* tables if they do not exist
15
16-- uncomment this line if you get error 'ERROR: schema "pgauth" does not exist'
17-- CREATE SCHEMA pgauth ;
18CREATE TABLE IF NOT EXISTS pgauth.user (
19    login TEXT, password TEXT, nom TEXT, prenom TEXT, mel TEXT, tel TEXT,
20    mobile TEXT, fax TEXT, adr TEXT, phnom TEXT, phprenom TEXT
21) ;
22CREATE TABLE IF NOT EXISTS pgauth.realm (
23    realm TEXT, descr TEXT, admin INT
24) ;
25CREATE TABLE IF NOT EXISTS pgauth.member (
26    login TEXT, realm TEXT
27) ;
28
29------------------------------------------------------------------------------
30-- Remove triggers in order to quietly make changes on tables
31------------------------------------------------------------------------------
32
33DROP TRIGGER IF EXISTS tr_modifier_cname ON dns.rr_cname	CASCADE ;
34DROP TRIGGER IF EXISTS tr_modifier_dhcpprofil ON dns.dhcpprofil	CASCADE ;
35DROP TRIGGER IF EXISTS tr_modifier_dhcprange ON dns.dhcprange	CASCADE ;
36DROP TRIGGER IF EXISTS tr_modifier_ip ON dns.rr_ip		CASCADE ;
37DROP TRIGGER IF EXISTS tr_modifier_mx ON dns.rr_mx		CASCADE ;
38DROP TRIGGER IF EXISTS tr_modifier_relais ON dns.relais_dom	CASCADE ;
39DROP TRIGGER IF EXISTS tr_modifier_reseau ON dns.reseau		CASCADE ;
40DROP TRIGGER IF EXISTS tr_modifier_rr ON dns.rr			CASCADE ;
41DROP TRIGGER IF EXISTS tr_modifier_zone ON dns.zone_normale	CASCADE ;
42DROP TRIGGER IF EXISTS tr_modifier_zone4 ON dns.zone_reverse4	CASCADE ;
43DROP TRIGGER IF EXISTS tr_modifier_zone6 ON dns.zone_reverse6	CASCADE ;
44DROP TRIGGER IF EXISTS phnom ON pgauth."user"			CASCADE ;
45DROP TRIGGER IF EXISTS tr_mod_eq ON topo.eq			CASCADE ;
46DROP TRIGGER IF EXISTS tr_mod_vlan ON topo.vlan			CASCADE ;
47
48DROP FUNCTION IF EXISTS add_soundex ()				CASCADE ;
49DROP FUNCTION IF EXISTS pgauth.add_soundex ()			CASCADE ;
50DROP FUNCTION IF EXISTS soundex (TEXT)				CASCADE ;
51DROP FUNCTION IF EXISTS pgauth.soundex (TEXT)			CASCADE ;
52DROP FUNCTION IF EXISTS gen_dhcp (INTEGER, INTEGER)		CASCADE ;
53DROP FUNCTION IF EXISTS gen_norm_iddom (INTEGER)		CASCADE ;
54DROP FUNCTION IF EXISTS gen_norm_iddom (INTEGER, INTEGER)	CASCADE ;
55DROP FUNCTION IF EXISTS gen_norm_idrr (INTEGER)			CASCADE ;
56DROP FUNCTION IF EXISTS gen_norm_idrr (INTEGER, INTEGER)	CASCADE ;
57DROP FUNCTION IF EXISTS gen_relais (INTEGER)			CASCADE ;
58DROP FUNCTION IF EXISTS gen_relais (INTEGER, INTEGER)		CASCADE ;
59DROP FUNCTION IF EXISTS gen_rev4 (INET)				CASCADE ;
60DROP FUNCTION IF EXISTS gen_rev4 (INET, INTEGER)		CASCADE ;
61DROP FUNCTION IF EXISTS gen_rev6 (INET)				CASCADE ;
62DROP FUNCTION IF EXISTS gen_rev6 (INET, INTEGER)		CASCADE ;
63DROP FUNCTION IF EXISTS generer_dhcp ()				CASCADE ;
64DROP FUNCTION IF EXISTS ipranges (CIDR, INTEGER, INTEGER)	CASCADE ;
65DROP FUNCTION IF EXISTS markcidr (CIDR, INTEGER, INTEGER)	CASCADE ;
66DROP FUNCTION IF EXISTS modif_routerdb ()			CASCADE ;
67DROP FUNCTION IF EXISTS modif_vlan ()				CASCADE ;
68DROP FUNCTION IF EXISTS modifier_ip ()				CASCADE ;
69DROP FUNCTION IF EXISTS modifier_mxcname ()			CASCADE ;
70DROP FUNCTION IF EXISTS modifier_relais ()			CASCADE ;
71DROP FUNCTION IF EXISTS modifier_rr ()				CASCADE ;
72DROP FUNCTION IF EXISTS modifier_zone ()			CASCADE ;
73DROP FUNCTION IF EXISTS valide_dhcprange_grp (INTEGER, INET, INET) CASCADE ;
74DROP FUNCTION IF EXISTS valide_ip_cor (INET, INTEGER)		CASCADE ;
75DROP FUNCTION IF EXISTS valide_ip_grp (INET, INTEGER)		CASCADE ;
76
77------------------------------------------------------------------------------
78-- Prepare table renaming: remove all constraints on "to be renamed"
79-- tables: we will rebuild them later. This is done in order to get
80-- new implicit names consistent with new table names.
81------------------------------------------------------------------------------
82
83ALTER TABLE dns.relais_dom
84    DROP CONSTRAINT IF EXISTS relais_dom_pkey			CASCADE,
85    DROP CONSTRAINT IF EXISTS relais_dom_iddom_fkey		CASCADE,
86    DROP CONSTRAINT IF EXISTS relais_dom_mx_fkey		CASCADE ;
87
88ALTER TABLE dns.dr_dhcpprofil
89    DROP CONSTRAINT IF EXISTS dr_dhcpprofil_pkey		CASCADE,
90    DROP CONSTRAINT IF EXISTS dr_dhcpprofil_iddhcpprofil_fkey	CASCADE,
91    DROP CONSTRAINT IF EXISTS dr_dhcpprofil_idgrp_fkey		CASCADE ;
92
93ALTER TABLE dns.dr_ip
94    DROP CONSTRAINT IF EXISTS dr_ip_pkey			CASCADE,
95    DROP CONSTRAINT IF EXISTS dr_ip_idgrp_fkey			CASCADE ;
96
97ALTER TABLE dns.dr_dom
98    DROP CONSTRAINT IF EXISTS dr_dom_idgrp_fkey			CASCADE,
99    DROP CONSTRAINT IF EXISTS dr_dom_pkey			CASCADE ;
100
101ALTER TABLE dns.dr_reseau
102    DROP CONSTRAINT IF EXISTS dr_reseau_idgrp_fkey		CASCADE,
103    DROP CONSTRAINT IF EXISTS dr_reseau_idreseau_fkey		CASCADE,
104    DROP CONSTRAINT IF EXISTS dr_reseau_pkey			CASCADE ;
105
106ALTER TABLE dns.zone
107    DROP CONSTRAINT IF EXISTS zone_pkey				CASCADE,
108    DROP CONSTRAINT IF EXISTS zone_domaine_key 			CASCADE ;
109
110ALTER TABLE dns.zone_normale
111    DROP CONSTRAINT IF EXISTS zone_normale_pkey			CASCADE,
112    DROP CONSTRAINT IF EXISTS zone_normale_domaine_key 		CASCADE ;
113
114ALTER TABLE dns.zone_reverse4
115    DROP CONSTRAINT IF EXISTS zone_reverse4_pkey		CASCADE,
116    DROP CONSTRAINT IF EXISTS zone_reverse4_domaine_key 	CASCADE ;
117
118ALTER TABLE dns.zone_reverse6
119    DROP CONSTRAINT IF EXISTS zone_reverse6_pkey		CASCADE,
120    DROP CONSTRAINT IF EXISTS zone_reverse6_domaine_key 	CASCADE ;
121
122ALTER TABLE dns.reseau
123    DROP CONSTRAINT IF EXISTS reseau_pkey			CASCADE,
124    DROP CONSTRAINT IF EXISTS reseau_idetabl_fkey		CASCADE,
125    DROP CONSTRAINT IF EXISTS reseau_idcommu_fkey		CASCADE,
126    DROP CONSTRAINT IF EXISTS au_moins_un_prefixe_v4_ou_v6	CASCADE,
127    DROP CONSTRAINT IF EXISTS gw4_in_net			CASCADE,
128    DROP CONSTRAINT IF EXISTS gw6_in_net 			CASCADE ;
129
130ALTER TABLE dns.communaute
131    DROP CONSTRAINT IF EXISTS communaute_pkey			CASCADE ;
132
133ALTER TABLE dns.etablissement
134    DROP CONSTRAINT IF EXISTS etablissement_pkey		CASCADE ;
135
136ALTER TABLE dns.domaine
137    DROP CONSTRAINT IF EXISTS domaine_nom_key			CASCADE,
138    DROP CONSTRAINT IF EXISTS domaine_pkey			CASCADE ;
139
140ALTER TABLE dns.role_mail
141    DROP CONSTRAINT IF EXISTS role_mail_heberg_fkey		CASCADE,
142    DROP CONSTRAINT IF EXISTS role_mail_idrr_fkey		CASCADE,
143    DROP CONSTRAINT IF EXISTS role_mail_pkey			CASCADE ;
144
145ALTER TABLE dns.rr
146    DROP CONSTRAINT IF EXISTS rr_pkey				CASCADE,
147    DROP CONSTRAINT IF EXISTS rr_mac_key			CASCADE,
148    DROP CONSTRAINT IF EXISTS rr_nom_iddom_key			CASCADE,
149    DROP CONSTRAINT IF EXISTS rr_idcor_fkey			CASCADE,
150    DROP CONSTRAINT IF EXISTS rr_iddhcpprofil_fkey		CASCADE,
151    DROP CONSTRAINT IF EXISTS rr_iddom_fkey			CASCADE,
152    DROP CONSTRAINT IF EXISTS rr_idhinfo_fkey			CASCADE ;
153
154ALTER TABLE dns.dhcpprofil
155    DROP CONSTRAINT IF EXISTS dhcpprofil_pkey			CASCADE,
156    DROP CONSTRAINT IF EXISTS dhcpprofil_nom_pkey		CASCADE,
157    DROP CONSTRAINT IF EXISTS dhcpprofil_iddhcpprofil_check	CASCADE ;
158
159ALTER TABLE global.corresp
160    DROP CONSTRAINT IF EXISTS corresp_pkey			CASCADE,
161    DROP CONSTRAINT IF EXISTS corresp_login_key			CASCADE,
162    DROP CONSTRAINT IF EXISTS corresp_idgrp_fkey		CASCADE ;
163
164ALTER TABLE global.groupe
165    DROP CONSTRAINT IF EXISTS groupe_pkey			CASCADE,
166    DROP CONSTRAINT IF EXISTS groupe_nom_key			CASCADE ;
167
168ALTER TABLE topo.dr_eq
169    DROP CONSTRAINT IF EXISTS dr_eq_idgrp_fkey			CASCADE ;
170
171ALTER TABLE topo.ifchanges
172    DROP CONSTRAINT IF EXISTS ifchanges_idrr_fkey		CASCADE,
173    DROP CONSTRAINT IF EXISTS ifchanges_pkey			CASCADE ;
174
175------------------------------------------------------------------------------
176-- Rename tables and columns, and rebuild constraints
177------------------------------------------------------------------------------
178
179-- global schema
180
181ALTER TABLE global.config RENAME COLUMN clef		TO key ;
182ALTER TABLE global.config RENAME COLUMN valeur		TO value ;
183
184DELETE FROM global.config WHERE key = 'dnsupdateperiod' ;
185INSERT INTO global.config (key, value) VALUES ('schemaversion', '22') ;
186UPDATE global.config SET key = 'dayfmt' WHERE key = 'jourfmt' ;
187
188ALTER TABLE global.seq_groupe RENAME TO seq_nmgroup ;
189ALTER TABLE global.groupe RENAME TO nmgroup ;
190ALTER TABLE global.nmgroup RENAME COLUMN nom		TO name ;
191ALTER TABLE global.nmgroup RENAME COLUMN admin		TO p_admin ;
192ALTER TABLE global.nmgroup RENAME COLUMN droitsmtp	TO p_smtp ;
193ALTER TABLE global.nmgroup RENAME COLUMN droitttl	TO p_ttl ;
194ALTER TABLE global.nmgroup RENAME COLUMN droitmac	TO p_mac ;
195ALTER TABLE global.nmgroup RENAME COLUMN droitgenl	TO p_genl ;
196ALTER TABLE global.nmgroup
197    ADD UNIQUE (name),
198    ADD PRIMARY KEY (idgrp) ;
199
200ALTER TABLE global.seq_corresp RENAME TO seq_nmuser ;
201ALTER TABLE global.corresp RENAME TO nmuser ;
202ALTER TABLE global.nmuser
203    ADD UNIQUE (login),
204    ADD FOREIGN KEY (idgrp) REFERENCES global.nmgroup (idgrp),
205    ADD PRIMARY KEY (idcor) ;
206
207
208
209-- dns schema
210
211ALTER TABLE dns.seq_domaine RENAME TO seq_domain ;
212ALTER TABLE dns.domaine RENAME TO domain ;
213ALTER TABLE dns.domain RENAME COLUMN nom		TO name ;
214ALTER TABLE dns.domain
215    ADD UNIQUE (name),
216    ADD PRIMARY KEY (iddom) ;
217
218ALTER TABLE dns.seq_etablissement RENAME TO seq_organization ;
219ALTER TABLE dns.etablissement RENAME TO organization ;
220ALTER TABLE dns.organization RENAME COLUMN idetabl	TO idorg ;
221ALTER TABLE dns.organization RENAME COLUMN nom		TO name ;
222ALTER TABLE dns.organization
223    ADD PRIMARY KEY (idorg) ;
224
225ALTER TABLE dns.seq_communaute RENAME TO seq_community ;
226ALTER TABLE dns.communaute RENAME TO community ;
227ALTER TABLE dns.community RENAME COLUMN idcommu		TO idcomm ;
228ALTER TABLE dns.community RENAME COLUMN nom		TO name ;
229ALTER TABLE dns.community
230    ADD PRIMARY KEY (idcomm) ;
231
232ALTER TABLE dns.seq_reseau RENAME TO seq_network ;
233ALTER TABLE dns.reseau RENAME TO network ;
234ALTER TABLE dns.network RENAME COLUMN idreseau		TO idnet ;
235ALTER TABLE dns.network RENAME COLUMN nom		TO name ;
236ALTER TABLE dns.network RENAME COLUMN localisation	TO location ;
237ALTER TABLE dns.network RENAME COLUMN adr4		TO addr4 ;
238ALTER TABLE dns.network RENAME COLUMN adr6		TO addr6 ;
239ALTER TABLE dns.network RENAME COLUMN idetabl		TO idorg ;
240ALTER TABLE dns.network RENAME COLUMN idcommu		TO idcomm ;
241ALTER TABLE dns.network RENAME COLUMN commentaire	TO comment ;
242ALTER TABLE dns.network
243    ADD CONSTRAINT at_least_one_prefix_v4_or_v6
244		CHECK (addr4 IS NOT NULL OR addr6 IS NOT NULL),
245    ADD CONSTRAINT gw4_in_net CHECK (gw4 <<= addr4),
246    ADD CONSTRAINT gw6_in_net CHECK (gw6 <<= addr6),
247    ADD FOREIGN KEY (idorg) REFERENCES dns.organization (idorg),
248    ADD FOREIGN KEY (idcomm) REFERENCES dns.community (idcomm),
249    ADD PRIMARY KEY (idnet) ;
250
251-- Add views
252CREATE SEQUENCE dns.seq_view START 1 ;
253CREATE TABLE dns.view (
254    idview	INT		-- view id
255	    DEFAULT NEXTVAL ('dns.seq_view'),
256    name	TEXT,		-- e.g.: "internal", "external"...
257    gendhcp	INT,		-- 1 if dhcp conf must be generated
258
259    UNIQUE (name),
260    PRIMARY KEY (idview)
261) ;
262INSERT INTO dns.view (name) VALUES ('default') ;
263
264-- Disambiguate zone name and attach zones to views
265
266ALTER TABLE dns.zone ADD COLUMN idview INT ;
267UPDATE dns.zone
268    SET idview = (SELECT idview FROM dns.view WHERE name = 'default') ;
269ALTER TABLE dns.zone RENAME COLUMN domaine		TO name ;
270ALTER TABLE dns.zone RENAME COLUMN generer		TO gen ;
271
272ALTER TABLE dns.zone_normale RENAME to zone_forward ;
273ALTER TABLE dns.zone_forward
274    ADD UNIQUE (name),
275    ADD FOREIGN KEY (idview) REFERENCES dns.view (idview),
276    ADD PRIMARY KEY (idzone)
277    ;
278ALTER TABLE dns.zone_reverse4
279    ADD UNIQUE (name),
280    ADD FOREIGN KEY (idview) REFERENCES dns.view (idview),
281    ADD PRIMARY KEY (idzone)
282    ;
283ALTER TABLE dns.zone_reverse6
284    ADD UNIQUE (name),
285    ADD FOREIGN KEY (idview) REFERENCES dns.view (idview),
286    ADD PRIMARY KEY (idzone)
287    ;
288
289ALTER TABLE dns.hinfo RENAME COLUMN texte		TO name ;
290ALTER TABLE dns.hinfo RENAME COLUMN tri			TO sort ;
291
292ALTER TABLE dns.dr_reseau RENAME TO p_network ;
293ALTER TABLE dns.p_network RENAME COLUMN idreseau TO idnet ;
294ALTER TABLE dns.p_network RENAME COLUMN tri		TO sort ;
295ALTER TABLE dns.p_network
296    ADD FOREIGN KEY (idnet) REFERENCES dns.network (idnet),
297    ADD FOREIGN KEY (idgrp) REFERENCES global.nmgroup (idgrp),
298    ADD PRIMARY KEY (idgrp, idnet) ;
299
300ALTER TABLE dns.dr_dom RENAME TO p_dom ;
301ALTER TABLE dns.p_dom RENAME COLUMN tri			TO sort ;
302ALTER TABLE dns.p_dom RENAME COLUMN rolemail		TO mailrole ;
303ALTER TABLE dns.p_dom DROP COLUMN roleweb ;
304ALTER TABLE dns.p_dom
305    ADD FOREIGN KEY (idgrp) REFERENCES global.nmgroup (idgrp),
306    ADD PRIMARY KEY (idgrp, iddom) ;
307
308ALTER TABLE dns.dr_ip RENAME TO p_ip ;
309ALTER TABLE dns.p_ip RENAME COLUMN adr			TO addr ;
310ALTER TABLE dns.p_ip
311    ADD FOREIGN KEY (idgrp) REFERENCES global.nmgroup (idgrp),
312    ADD PRIMARY KEY (idgrp, addr) ;
313
314-- Add a new access right to views
315CREATE TABLE dns.p_view (
316    idgrp	INT,		-- group
317    idview	INT,		-- the view
318    sort	INT,		-- sort class
319    selected	INT,		-- selected by default in menus
320
321    FOREIGN KEY (idgrp)  REFERENCES global.nmgroup (idgrp),
322    FOREIGN KEY (idview) REFERENCES dns.view (idview),
323    PRIMARY KEY (idgrp, idview)
324) ;
325INSERT INTO dns.p_view (idgrp, idview, sort, selected)
326    SELECT idgrp, idview, 100, 1
327	    FROM global.nmgroup, dns.view
328	    WHERE view.name = 'default' ;
329
330ALTER TABLE dns.seq_dhcpprofil RENAME TO seq_dhcpprofile ;
331ALTER TABLE dns.dhcpprofil RENAME TO dhcpprofile ;
332ALTER TABLE dns.dhcpprofile RENAME COLUMN iddhcpprofil	TO iddhcpprof ;
333ALTER TABLE dns.dhcpprofile RENAME COLUMN nom		TO name ;
334ALTER TABLE dns.dhcpprofile RENAME COLUMN texte		TO text ;
335ALTER TABLE dns.dhcpprofile
336    ADD CONSTRAINT non_default CHECK (iddhcpprof >= 1),
337    ADD UNIQUE (name),
338    ADD PRIMARY KEY (iddhcpprof) ;
339
340ALTER TABLE dns.dr_dhcpprofil RENAME TO p_dhcpprofile ;
341ALTER TABLE dns.p_dhcpprofile RENAME COLUMN iddhcpprofil TO iddhcpprof ;
342ALTER TABLE dns.p_dhcpprofile RENAME COLUMN tri		TO sort ;
343ALTER TABLE dns.p_dhcpprofile
344    ADD FOREIGN KEY (idgrp)      REFERENCES global.nmgroup (idgrp),
345    ADD FOREIGN KEY (iddhcpprof) REFERENCES dns.dhcpprofile (iddhcpprof),
346    ADD PRIMARY KEY (idgrp, iddhcpprof) ;
347
348ALTER TABLE dns.dhcprange RENAME COLUMN iddhcpprofil	TO iddhcpprof ;
349
350ALTER TABLE dns.rr ADD COLUMN idview INT ;
351ALTER TABLE dns.rr RENAME COLUMN nom			TO name ;
352ALTER TABLE dns.rr RENAME COLUMN iddhcpprofil		TO iddhcpprof ;
353ALTER TABLE dns.rr RENAME COLUMN commentaire		TO comment ;
354ALTER TABLE dns.rr RENAME COLUMN respnom		TO respname ;
355ALTER TABLE dns.rr RENAME COLUMN respmel		TO respmail ;
356ALTER TABLE dns.rr RENAME COLUMN droitsmtp		TO sendsmtp ;
357UPDATE dns.rr
358    SET idview = (SELECT idview FROM dns.view WHERE name = 'default') ;
359ALTER TABLE dns.rr
360    ADD FOREIGN KEY (idcor)      REFERENCES global.nmuser   (idcor),
361    ADD FOREIGN KEY (iddom)      REFERENCES dns.domain      (iddom),
362    ADD FOREIGN KEY (idview)     REFERENCES dns.view        (idview),
363    ADD FOREIGN KEY (iddhcpprof) REFERENCES dns.dhcpprofile (iddhcpprof),
364    ADD FOREIGN KEY (idhinfo)    REFERENCES dns.hinfo       (idhinfo),
365    ADD UNIQUE (name, iddom, idview),
366    ADD UNIQUE (mac, idview),
367    ADD PRIMARY KEY (idrr) ;
368
369ALTER TABLE dns.rr_ip RENAME COLUMN adr			TO addr ;
370
371ALTER TABLE dns.rr_mx RENAME COLUMN priorite		TO prio ;
372
373ALTER TABLE dns.role_mail RENAME TO mail_role ;
374ALTER TABLE dns.mail_role RENAME COLUMN idrr		TO mailaddr ;
375ALTER TABLE dns.mail_role RENAME COLUMN heberg		TO mboxhost ;
376ALTER TABLE dns.mail_role
377    ADD FOREIGN KEY (mailaddr) REFERENCES dns.rr (idrr),
378    ADD FOREIGN KEY (mboxhost) REFERENCES dns.rr (idrr),
379    ADD PRIMARY KEY (mailaddr) ;
380
381ALTER TABLE dns.relais_dom RENAME TO relay_dom ;
382ALTER TABLE dns.relay_dom RENAME COLUMN priorite	TO prio ;
383ALTER TABLE dns.relay_dom
384    ADD FOREIGN KEY (iddom)  REFERENCES dns.domain  (iddom),
385    ADD FOREIGN KEY (mx)     REFERENCES dns.rr      (idrr),
386    ADD PRIMARY KEY (iddom, mx) ;
387
388DROP TABLE dns.dhcp ;
389
390DROP TABLE dns.role_web ;
391
392-- topo schema
393
394ALTER TABLE topo.dr_eq RENAME TO p_eq ;
395ALTER TABLE topo.p_eq
396    ADD FOREIGN KEY (idgrp) REFERENCES global.nmgroup (idgrp) ;
397
398ALTER TABLE topo.ifchanges ADD COLUMN eq TEXT ;
399UPDATE topo.ifchanges SET eq = (SELECT rr.name || '.' || domain.name
400				    FROM dns.rr, dns.domain
401				    WHERE rr.idrr = ifchanges.idrr
402					AND rr.iddom = domain.iddom) ;
403ALTER TABLE topo.ifchanges DROP COLUMN idrr ;
404ALTER TABLE topo.ifchanges
405    ADD PRIMARY KEY (eq, reqdate, iface) ;
406
407CREATE TABLE topo.p_l2only (
408    idgrp	INT,
409    vlanid	INT,
410    PRIMARY KEY (idgrp, vlanid),
411    FOREIGN KEY (idgrp) REFERENCES global.nmgroup (idgrp)
412) ;
413
414-- pgauth schema
415
416ALTER TABLE pgauth.user RENAME COLUMN nom		TO lastname ;
417ALTER TABLE pgauth.user RENAME COLUMN prenom		TO firstname ;
418ALTER TABLE pgauth.user RENAME COLUMN mel		TO mail ;
419ALTER TABLE pgauth.user RENAME COLUMN tel		TO phone ;
420ALTER TABLE pgauth.user RENAME COLUMN adr		TO addr ;
421ALTER TABLE pgauth.user RENAME COLUMN phnom		TO phlast ;
422ALTER TABLE pgauth.user RENAME COLUMN phprenom		TO phfirst ;
423
424------------------------------------------------------------------------------
425-- Create new functions/triggers for the new version
426------------------------------------------------------------------------------
427
428\i %NMLIBDIR%/sql22/functions.sql
429\i %NMLIBDIR%/sql22/triggers.sql
430