1ALTER TABLE acknowledges ALTER COLUMN acknowledgeid SET WITH DEFAULT NULL
2/
3REORG TABLE acknowledges
4/
5ALTER TABLE acknowledges ALTER COLUMN userid SET WITH DEFAULT NULL
6/
7REORG TABLE acknowledges
8/
9ALTER TABLE acknowledges ALTER COLUMN eventid SET WITH DEFAULT NULL
10/
11REORG TABLE acknowledges
12/
13DELETE FROM acknowledges WHERE NOT userid IN (SELECT userid FROM users)
14/
15DELETE FROM acknowledges WHERE NOT eventid IN (SELECT eventid FROM events)
16/
17ALTER TABLE acknowledges ADD CONSTRAINT c_acknowledges_1 FOREIGN KEY (userid) REFERENCES users (userid) ON DELETE CASCADE
18/
19ALTER TABLE acknowledges ADD CONSTRAINT c_acknowledges_2 FOREIGN KEY (eventid) REFERENCES events (eventid) ON DELETE CASCADE
20/
21ALTER TABLE actions ALTER COLUMN actionid SET WITH DEFAULT NULL
22/
23REORG TABLE actions
24/
25UPDATE actions SET esc_period=3600 WHERE eventsource=0 AND esc_period=0
26/
27ALTER TABLE alerts ALTER COLUMN alertid SET WITH DEFAULT NULL
28/
29REORG TABLE alerts
30/
31ALTER TABLE alerts ALTER COLUMN actionid SET WITH DEFAULT NULL
32/
33REORG TABLE alerts
34/
35ALTER TABLE alerts ALTER COLUMN eventid SET WITH DEFAULT NULL
36/
37REORG TABLE alerts
38/
39ALTER TABLE alerts ALTER COLUMN userid SET WITH DEFAULT NULL
40/
41REORG TABLE alerts
42/
43ALTER TABLE alerts ALTER COLUMN userid DROP NOT NULL
44/
45REORG TABLE alerts
46/
47ALTER TABLE alerts ALTER COLUMN mediatypeid SET WITH DEFAULT NULL
48/
49REORG TABLE alerts
50/
51ALTER TABLE alerts ALTER COLUMN mediatypeid DROP NOT NULL
52/
53REORG TABLE alerts
54/
55UPDATE alerts SET userid=NULL WHERE userid=0
56/
57UPDATE alerts SET mediatypeid=NULL WHERE mediatypeid=0
58/
59DELETE FROM alerts WHERE NOT actionid IN (SELECT actionid FROM actions)
60/
61DELETE FROM alerts WHERE NOT eventid IN (SELECT eventid FROM events)
62/
63DELETE FROM alerts WHERE NOT userid IN (SELECT userid FROM users)
64/
65DELETE FROM alerts WHERE NOT mediatypeid IN (SELECT mediatypeid FROM media_type)
66/
67ALTER TABLE alerts ADD CONSTRAINT c_alerts_1 FOREIGN KEY (actionid) REFERENCES actions (actionid) ON DELETE CASCADE
68/
69ALTER TABLE alerts ADD CONSTRAINT c_alerts_2 FOREIGN KEY (eventid) REFERENCES events (eventid) ON DELETE CASCADE
70/
71ALTER TABLE alerts ADD CONSTRAINT c_alerts_3 FOREIGN KEY (userid) REFERENCES users (userid) ON DELETE CASCADE
72/
73ALTER TABLE alerts ADD CONSTRAINT c_alerts_4 FOREIGN KEY (mediatypeid) REFERENCES media_type (mediatypeid) ON DELETE CASCADE
74/
75ALTER TABLE applications ALTER COLUMN applicationid SET WITH DEFAULT NULL
76/
77REORG TABLE applications
78/
79ALTER TABLE applications ALTER COLUMN hostid SET WITH DEFAULT NULL
80/
81REORG TABLE applications
82/
83ALTER TABLE applications ALTER COLUMN templateid SET WITH DEFAULT NULL
84/
85REORG TABLE applications
86/
87ALTER TABLE applications ALTER COLUMN templateid DROP NOT NULL
88/
89REORG TABLE applications
90/
91DELETE FROM applications WHERE NOT hostid IN (SELECT hostid FROM hosts)
92/
93UPDATE applications SET templateid=NULL WHERE templateid=0
94/
95UPDATE applications SET templateid=NULL WHERE NOT templateid IS NULL AND NOT templateid IN (SELECT applicationid FROM applications)
96/
97ALTER TABLE applications ADD CONSTRAINT c_applications_1 FOREIGN KEY (hostid) REFERENCES hosts (hostid) ON DELETE CASCADE
98/
99ALTER TABLE applications ADD CONSTRAINT c_applications_2 FOREIGN KEY (templateid) REFERENCES applications (applicationid) ON DELETE CASCADE
100/
101ALTER TABLE auditlog_details ALTER COLUMN auditdetailid SET WITH DEFAULT NULL
102/
103REORG TABLE auditlog_details
104/
105ALTER TABLE auditlog_details ALTER COLUMN auditid SET WITH DEFAULT NULL
106/
107REORG TABLE auditlog_details
108/
109DELETE FROM auditlog_details WHERE NOT auditid IN (SELECT auditid FROM auditlog)
110/
111ALTER TABLE auditlog_details ADD CONSTRAINT c_auditlog_details_1 FOREIGN KEY (auditid) REFERENCES auditlog (auditid) ON DELETE CASCADE
112/
113ALTER TABLE auditlog ALTER COLUMN auditid SET WITH DEFAULT NULL
114/
115REORG TABLE auditlog
116/
117ALTER TABLE auditlog ALTER COLUMN userid SET WITH DEFAULT NULL
118/
119REORG TABLE auditlog
120/
121DELETE FROM auditlog WHERE NOT userid IN (SELECT userid FROM users)
122/
123ALTER TABLE auditlog ADD CONSTRAINT c_auditlog_1 FOREIGN KEY (userid) REFERENCES users (userid) ON DELETE CASCADE
124/
125DROP INDEX autoreg_host_1
126/
127REORG TABLE autoreg_host
128/
129CREATE INDEX autoreg_host_1 ON autoreg_host (proxy_hostid,host)
130/
131REORG TABLE autoreg_host
132/
133ALTER TABLE autoreg_host ALTER COLUMN autoreg_hostid SET WITH DEFAULT NULL
134/
135REORG TABLE autoreg_host
136/
137ALTER TABLE autoreg_host ALTER COLUMN proxy_hostid SET WITH DEFAULT NULL
138/
139REORG TABLE autoreg_host
140/
141ALTER TABLE autoreg_host ALTER COLUMN proxy_hostid DROP NOT NULL
142/
143REORG TABLE autoreg_host
144/
145ALTER TABLE autoreg_host ADD listen_ip varchar(39) WITH DEFAULT '' NOT NULL
146/
147REORG TABLE autoreg_host
148/
149ALTER TABLE autoreg_host ADD listen_port integer WITH DEFAULT '0' NOT NULL
150/
151REORG TABLE autoreg_host
152/
153ALTER TABLE autoreg_host ADD listen_dns varchar(64) WITH DEFAULT '' NOT NULL
154/
155REORG TABLE autoreg_host
156/
157UPDATE autoreg_host SET proxy_hostid=NULL WHERE proxy_hostid=0
158/
159DELETE FROM autoreg_host WHERE proxy_hostid IS NOT NULL AND proxy_hostid NOT IN (SELECT hostid FROM hosts)
160/
161ALTER TABLE autoreg_host ADD CONSTRAINT c_autoreg_host_1 FOREIGN KEY (proxy_hostid) REFERENCES hosts (hostid) ON DELETE CASCADE
162/
163ALTER TABLE conditions ALTER COLUMN conditionid SET WITH DEFAULT NULL
164/
165REORG TABLE conditions
166/
167ALTER TABLE conditions ALTER COLUMN actionid SET WITH DEFAULT NULL
168/
169REORG TABLE conditions
170/
171DELETE FROM conditions WHERE NOT actionid IN (SELECT actionid FROM actions)
172/
173ALTER TABLE conditions ADD CONSTRAINT c_conditions_1 FOREIGN KEY (actionid) REFERENCES actions (actionid) ON DELETE CASCADE
174/
175ALTER TABLE config ALTER COLUMN configid SET WITH DEFAULT NULL
176/
177REORG TABLE config
178/
179ALTER TABLE config ALTER COLUMN alert_usrgrpid SET WITH DEFAULT NULL
180/
181REORG TABLE config
182/
183ALTER TABLE config ALTER COLUMN alert_usrgrpid DROP NOT NULL
184/
185REORG TABLE config
186/
187ALTER TABLE config ALTER COLUMN discovery_groupid SET WITH DEFAULT NULL
188/
189REORG TABLE config
190/
191ALTER TABLE config ALTER COLUMN default_theme SET WITH DEFAULT 'originalblue'
192/
193REORG TABLE config
194/
195ALTER TABLE config ADD severity_color_0 varchar(6) WITH DEFAULT 'DBDBDB' NOT NULL
196/
197REORG TABLE config
198/
199ALTER TABLE config ADD severity_color_1 varchar(6) WITH DEFAULT 'D6F6FF' NOT NULL
200/
201REORG TABLE config
202/
203ALTER TABLE config ADD severity_color_2 varchar(6) WITH DEFAULT 'FFF6A5' NOT NULL
204/
205REORG TABLE config
206/
207ALTER TABLE config ADD severity_color_3 varchar(6) WITH DEFAULT 'FFB689' NOT NULL
208/
209REORG TABLE config
210/
211ALTER TABLE config ADD severity_color_4 varchar(6) WITH DEFAULT 'FF9999' NOT NULL
212/
213REORG TABLE config
214/
215ALTER TABLE config ADD severity_color_5 varchar(6) WITH DEFAULT 'FF3838' NOT NULL
216/
217REORG TABLE config
218/
219ALTER TABLE config ADD severity_name_0 varchar(32) WITH DEFAULT 'Not classified' NOT NULL
220/
221REORG TABLE config
222/
223ALTER TABLE config ADD severity_name_1 varchar(32) WITH DEFAULT 'Information' NOT NULL
224/
225REORG TABLE config
226/
227ALTER TABLE config ADD severity_name_2 varchar(32) WITH DEFAULT 'Warning' NOT NULL
228/
229REORG TABLE config
230/
231ALTER TABLE config ADD severity_name_3 varchar(32) WITH DEFAULT 'Average' NOT NULL
232/
233REORG TABLE config
234/
235ALTER TABLE config ADD severity_name_4 varchar(32) WITH DEFAULT 'High' NOT NULL
236/
237REORG TABLE config
238/
239ALTER TABLE config ADD severity_name_5 varchar(32) WITH DEFAULT 'Disaster' NOT NULL
240/
241REORG TABLE config
242/
243ALTER TABLE config ADD ok_period integer WITH DEFAULT '1800' NOT NULL
244/
245REORG TABLE config
246/
247ALTER TABLE config ADD blink_period integer WITH DEFAULT '1800' NOT NULL
248/
249REORG TABLE config
250/
251ALTER TABLE config ADD problem_unack_color varchar(6) WITH DEFAULT 'DC0000' NOT NULL
252/
253REORG TABLE config
254/
255ALTER TABLE config ADD problem_ack_color varchar(6) WITH DEFAULT 'DC0000' NOT NULL
256/
257REORG TABLE config
258/
259ALTER TABLE config ADD ok_unack_color varchar(6) WITH DEFAULT '00AA00' NOT NULL
260/
261REORG TABLE config
262/
263ALTER TABLE config ADD ok_ack_color varchar(6) WITH DEFAULT '00AA00' NOT NULL
264/
265REORG TABLE config
266/
267ALTER TABLE config ADD problem_unack_style integer WITH DEFAULT '1' NOT NULL
268/
269REORG TABLE config
270/
271ALTER TABLE config ADD problem_ack_style integer WITH DEFAULT '1' NOT NULL
272/
273REORG TABLE config
274/
275ALTER TABLE config ADD ok_unack_style integer WITH DEFAULT '1' NOT NULL
276/
277REORG TABLE config
278/
279ALTER TABLE config ADD ok_ack_style integer WITH DEFAULT '1' NOT NULL
280/
281REORG TABLE config
282/
283ALTER TABLE config ADD snmptrap_logging integer WITH DEFAULT '1' NOT NULL
284/
285REORG TABLE config
286/
287ALTER TABLE config ADD server_check_interval integer WITH DEFAULT '60' NOT NULL
288/
289REORG TABLE config
290/
291UPDATE config SET alert_usrgrpid=NULL WHERE NOT alert_usrgrpid IN (SELECT usrgrpid FROM usrgrp)
292/
293UPDATE config SET discovery_groupid=(SELECT MIN(groupid) FROM groups) WHERE NOT discovery_groupid IN (SELECT groupid FROM groups)
294/
295
296UPDATE config SET default_theme='darkblue' WHERE default_theme='css_bb.css'
297/
298UPDATE config SET default_theme='originalblue' WHERE default_theme IN ('css_ob.css', 'default.css')
299/
300UPDATE config SET default_theme='darkorange' WHERE default_theme='css_od.css'
301/
302
303ALTER TABLE config ADD CONSTRAINT c_config_1 FOREIGN KEY (alert_usrgrpid) REFERENCES usrgrp (usrgrpid)
304/
305ALTER TABLE config ADD CONSTRAINT c_config_2 FOREIGN KEY (discovery_groupid) REFERENCES groups (groupid)
306/
307-- See drules.sql
308ALTER TABLE dhosts ALTER COLUMN dhostid SET WITH DEFAULT NULL
309/
310REORG TABLE dhosts
311/
312ALTER TABLE dhosts ALTER COLUMN druleid SET WITH DEFAULT NULL
313/
314REORG TABLE dhosts
315/
316DELETE FROM dhosts WHERE NOT druleid IN (SELECT druleid FROM drules)
317/
318ALTER TABLE dhosts ADD CONSTRAINT c_dhosts_1 FOREIGN KEY (druleid) REFERENCES drules (druleid) ON DELETE CASCADE
319/
320ALTER TABLE dchecks ALTER COLUMN dcheckid SET WITH DEFAULT NULL
321/
322REORG TABLE dchecks
323/
324ALTER TABLE dchecks ALTER COLUMN druleid SET WITH DEFAULT NULL
325/
326REORG TABLE dchecks
327/
328ALTER TABLE dchecks ALTER COLUMN key_ SET WITH DEFAULT ''
329/
330REORG TABLE dchecks
331/
332ALTER TABLE dchecks ALTER COLUMN snmp_community SET WITH DEFAULT ''
333/
334REORG TABLE dchecks
335/
336ALTER TABLE dchecks ADD uniq integer DEFAULT '0' NOT NULL
337/
338REORG TABLE dchecks
339/
340DELETE FROM dchecks WHERE NOT druleid IN (SELECT druleid FROM drules)
341/
342ALTER TABLE dchecks ADD CONSTRAINT c_dchecks_1 FOREIGN KEY (druleid) REFERENCES drules (druleid) ON DELETE CASCADE
343/
344UPDATE dchecks SET uniq=1 WHERE dcheckid IN (SELECT unique_dcheckid FROM drules)
345/
346ALTER TABLE drules ALTER COLUMN druleid SET WITH DEFAULT NULL
347/
348REORG TABLE drules
349/
350ALTER TABLE drules ALTER COLUMN proxy_hostid SET WITH DEFAULT NULL
351/
352REORG TABLE drules
353/
354ALTER TABLE drules ALTER COLUMN proxy_hostid DROP NOT NULL
355/
356REORG TABLE drules
357/
358ALTER TABLE drules ALTER COLUMN delay SET WITH DEFAULT '3600'
359/
360REORG TABLE drules
361/
362ALTER TABLE drules DROP COLUMN unique_dcheckid
363/
364REORG TABLE drules
365/
366UPDATE drules SET proxy_hostid=NULL WHERE NOT proxy_hostid IN (SELECT hostid FROM hosts)
367/
368ALTER TABLE drules ADD CONSTRAINT c_drules_1 FOREIGN KEY (proxy_hostid) REFERENCES hosts (hostid)
369/
370ALTER TABLE dservices ALTER COLUMN dserviceid SET WITH DEFAULT NULL
371/
372REORG TABLE dservices
373/
374ALTER TABLE dservices ALTER COLUMN dhostid SET WITH DEFAULT NULL
375/
376REORG TABLE dservices
377/
378ALTER TABLE dservices ALTER COLUMN dcheckid SET WITH DEFAULT NULL
379/
380REORG TABLE dservices
381/
382ALTER TABLE dservices ALTER COLUMN key_ SET WITH DEFAULT ''
383/
384REORG TABLE dservices
385/
386ALTER TABLE dservices ALTER COLUMN value SET WITH DEFAULT ''
387/
388REORG TABLE dservices
389/
390ALTER TABLE dservices ADD dns varchar(64) WITH DEFAULT '' NOT NULL
391/
392REORG TABLE dservices
393/
394DELETE FROM dservices WHERE NOT dhostid IN (SELECT dhostid FROM dhosts)
395/
396DELETE FROM dservices WHERE NOT dcheckid IN (SELECT dcheckid FROM dchecks)
397/
398ALTER TABLE dservices ADD CONSTRAINT c_dservices_1 FOREIGN KEY (dhostid) REFERENCES dhosts (dhostid) ON DELETE CASCADE
399/
400ALTER TABLE dservices ADD CONSTRAINT c_dservices_2 FOREIGN KEY (dcheckid) REFERENCES dchecks (dcheckid) ON DELETE CASCADE
401/
402ALTER TABLE escalations ALTER COLUMN escalationid SET WITH DEFAULT NULL
403/
404REORG TABLE escalations
405/
406ALTER TABLE escalations ALTER COLUMN actionid SET WITH DEFAULT NULL
407/
408REORG TABLE escalations
409/
410ALTER TABLE escalations ALTER COLUMN triggerid SET WITH DEFAULT NULL
411/
412REORG TABLE escalations
413/
414ALTER TABLE escalations ALTER COLUMN triggerid DROP NOT NULL
415/
416REORG TABLE escalations
417/
418ALTER TABLE escalations ALTER COLUMN eventid SET WITH DEFAULT NULL
419/
420REORG TABLE escalations
421/
422ALTER TABLE escalations ALTER COLUMN eventid DROP NOT NULL
423/
424REORG TABLE escalations
425/
426ALTER TABLE escalations ALTER COLUMN r_eventid SET WITH DEFAULT NULL
427/
428REORG TABLE escalations
429/
430ALTER TABLE escalations ALTER COLUMN r_eventid DROP NOT NULL
431/
432REORG TABLE escalations
433/
434DROP INDEX escalations_2
435/
436
437-- 0: ESCALATION_STATUS_ACTIVE
438-- 1: ESCALATION_STATUS_RECOVERY
439-- 2: ESCALATION_STATUS_SLEEP
440-- 4: ESCALATION_STATUS_SUPERSEDED_ACTIVE
441-- 5: ESCALATION_STATUS_SUPERSEDED_RECOVERY
442UPDATE escalations SET status=0 WHERE status in (1,4,5)
443/
444
445CREATE SEQUENCE escalations_seq AS bigint
446/
447
448CREATE PROCEDURE zbx_convert_escalations()
449LANGUAGE SQL
450BEGIN
451	DECLARE max_escalationid bigint;
452	DECLARE m_done integer DEFAULT 0;
453	DECLARE m_not_found CONDITION FOR SQLSTATE '02000';
454	DECLARE m_cur CURSOR FOR (SELECT MAX(escalationid) FROM escalations);
455	DECLARE CONTINUE HANDLER FOR m_not_found SET m_done = 1;
456
457	OPEN m_cur;
458
459	m_loop: LOOP
460		FETCH m_cur INTO max_escalationid;
461
462		IF m_done = 1 THEN
463			LEAVE m_loop;
464		END IF;
465
466		BEGIN
467			DECLARE v_actionid bigint;
468			DECLARE v_triggerid bigint;
469			DECLARE v_r_eventid bigint;
470			DECLARE e_done integer DEFAULT 0;
471			DECLARE e_not_found CONDITION FOR SQLSTATE '02000';
472			DECLARE e_cur CURSOR FOR (
473				SELECT actionid, triggerid, r_eventid
474					FROM escalations
475					WHERE status = 0
476						AND eventid IS NOT NULL
477						AND r_eventid IS NOT NULL);
478			DECLARE CONTINUE HANDLER FOR e_not_found SET e_done = 1;
479
480			OPEN e_cur;
481
482			e_loop: LOOP
483				FETCH e_cur INTO v_actionid, v_triggerid, v_r_eventid;
484
485				IF e_done = 1 THEN
486					LEAVE e_loop;
487				END IF;
488
489				INSERT INTO escalations (escalationid, actionid, triggerid, r_eventid) VALUES
490					(max_escalationid + (NEXTVAL FOR escalations_seq), v_actionid, v_triggerid, v_r_eventid);
491			END LOOP e_loop;
492
493			CLOSE e_cur;
494		END;
495	END LOOP m_loop;
496
497	CLOSE m_cur;
498END
499/
500
501CALL zbx_convert_escalations
502/
503
504DROP PROCEDURE zbx_convert_escalations
505/
506
507DROP SEQUENCE escalations_seq
508/
509
510UPDATE escalations SET r_eventid = NULL WHERE eventid IS NOT NULL AND r_eventid IS NOT NULL
511/
512-- See triggers.sql
513ALTER TABLE expressions ALTER COLUMN expressionid SET WITH DEFAULT NULL
514/
515REORG TABLE expressions
516/
517ALTER TABLE expressions ALTER COLUMN regexpid SET WITH DEFAULT NULL
518/
519REORG TABLE expressions
520/
521DELETE FROM expressions WHERE NOT regexpid IN (SELECT regexpid FROM regexps)
522/
523ALTER TABLE expressions ADD CONSTRAINT c_expressions_1 FOREIGN KEY (regexpid) REFERENCES regexps (regexpid) ON DELETE CASCADE
524/
525ALTER TABLE functions ALTER COLUMN functionid SET WITH DEFAULT NULL
526/
527REORG TABLE functions
528/
529ALTER TABLE functions ALTER COLUMN itemid SET WITH DEFAULT NULL
530/
531REORG TABLE functions
532/
533ALTER TABLE functions ALTER COLUMN triggerid SET WITH DEFAULT NULL
534/
535REORG TABLE functions
536/
537ALTER TABLE functions DROP COLUMN lastvalue
538/
539REORG TABLE functions
540/
541DELETE FROM functions WHERE NOT itemid IN (SELECT itemid FROM items)
542/
543DELETE FROM functions WHERE NOT triggerid IN (SELECT triggerid FROM triggers)
544/
545ALTER TABLE functions ADD CONSTRAINT c_functions_1 FOREIGN KEY (itemid) REFERENCES items (itemid) ON DELETE CASCADE
546/
547ALTER TABLE functions ADD CONSTRAINT c_functions_2 FOREIGN KEY (triggerid) REFERENCES triggers (triggerid) ON DELETE CASCADE
548/
549ALTER TABLE globalmacro ALTER COLUMN globalmacroid SET WITH DEFAULT NULL
550/
551REORG TABLE globalmacro
552/
553CREATE TABLE globalvars (
554	globalvarid              bigint                                    NOT NULL,
555	snmp_lastsize            integer         WITH DEFAULT '0'          NOT NULL,
556	PRIMARY KEY (globalvarid)
557)
558/
559CREATE TABLE graph_discovery (
560	graphdiscoveryid         bigint                                    NOT NULL,
561	graphid                  bigint                                    NOT NULL,
562	parent_graphid           bigint                                    NOT NULL,
563	name                     varchar(128)    WITH DEFAULT ''           NOT NULL,
564	PRIMARY KEY (graphdiscoveryid)
565)
566/
567CREATE UNIQUE INDEX graph_discovery_1 on graph_discovery (graphid,parent_graphid)
568/
569ALTER TABLE graph_discovery ADD CONSTRAINT c_graph_discovery_1 FOREIGN KEY (graphid) REFERENCES graphs (graphid) ON DELETE CASCADE
570/
571ALTER TABLE graph_discovery ADD CONSTRAINT c_graph_discovery_2 FOREIGN KEY (parent_graphid) REFERENCES graphs (graphid) ON DELETE CASCADE
572/
573ALTER TABLE graphs_items ALTER COLUMN gitemid SET WITH DEFAULT NULL
574/
575REORG TABLE graphs_items
576/
577ALTER TABLE graphs_items ALTER COLUMN graphid SET WITH DEFAULT NULL
578/
579REORG TABLE graphs_items
580/
581ALTER TABLE graphs_items ALTER COLUMN itemid SET WITH DEFAULT NULL
582/
583REORG TABLE graphs_items
584/
585ALTER TABLE graphs_items DROP COLUMN periods_cnt
586/
587REORG TABLE graphs_items
588/
589UPDATE graphs_items SET type=0 WHERE type=1
590/
591DELETE FROM graphs_items WHERE NOT graphid IN (SELECT graphid FROM graphs)
592/
593DELETE FROM graphs_items WHERE NOT itemid IN (SELECT itemid FROM items)
594/
595ALTER TABLE graphs_items ADD CONSTRAINT c_graphs_items_1 FOREIGN KEY (graphid) REFERENCES graphs (graphid) ON DELETE CASCADE
596/
597ALTER TABLE graphs_items ADD CONSTRAINT c_graphs_items_2 FOREIGN KEY (itemid) REFERENCES items (itemid) ON DELETE CASCADE
598/
599ALTER TABLE graphs ALTER COLUMN graphid SET WITH DEFAULT NULL
600/
601REORG TABLE graphs
602/
603ALTER TABLE graphs ALTER COLUMN templateid SET WITH DEFAULT NULL
604/
605REORG TABLE graphs
606/
607ALTER TABLE graphs ALTER COLUMN templateid DROP NOT NULL
608/
609REORG TABLE graphs
610/
611ALTER TABLE graphs ALTER COLUMN ymin_itemid SET WITH DEFAULT NULL
612/
613REORG TABLE graphs
614/
615ALTER TABLE graphs ALTER COLUMN ymin_itemid DROP NOT NULL
616/
617REORG TABLE graphs
618/
619ALTER TABLE graphs ALTER COLUMN ymax_itemid SET WITH DEFAULT NULL
620/
621REORG TABLE graphs
622/
623ALTER TABLE graphs ALTER COLUMN ymax_itemid DROP NOT NULL
624/
625REORG TABLE graphs
626/
627ALTER TABLE graphs ALTER COLUMN show_legend SET DEFAULT 1
628/
629REORG TABLE graphs
630/
631ALTER TABLE graphs ADD flags integer WITH DEFAULT '0' NOT NULL
632/
633REORG TABLE graphs
634/
635UPDATE graphs SET show_legend=1 WHERE graphtype IN (0, 1)
636/
637UPDATE graphs SET templateid=NULL WHERE templateid=0
638/
639UPDATE graphs SET templateid=NULL WHERE templateid IS NOT NULL AND templateid NOT IN (SELECT graphid FROM graphs)
640/
641UPDATE graphs SET ymin_itemid=NULL WHERE ymin_itemid=0 OR ymin_itemid NOT IN (SELECT itemid FROM items)
642/
643UPDATE graphs SET ymax_itemid=NULL WHERE ymax_itemid=0 OR ymax_itemid NOT IN (SELECT itemid FROM items)
644/
645UPDATE graphs SET ymin_type=0 WHERE ymin_type=2 AND ymin_itemid=NULL
646/
647UPDATE graphs SET ymax_type=0 WHERE ymax_type=2 AND ymax_itemid=NULL
648/
649ALTER TABLE graphs ADD CONSTRAINT c_graphs_1 FOREIGN KEY (templateid) REFERENCES graphs (graphid) ON DELETE CASCADE
650/
651ALTER TABLE graphs ADD CONSTRAINT c_graphs_2 FOREIGN KEY (ymin_itemid) REFERENCES items (itemid)
652/
653ALTER TABLE graphs ADD CONSTRAINT c_graphs_3 FOREIGN KEY (ymax_itemid) REFERENCES items (itemid)
654/
655ALTER TABLE graph_theme ALTER COLUMN graphthemeid SET WITH DEFAULT NULL
656/
657REORG TABLE graph_theme
658/
659ALTER TABLE graph_theme ALTER COLUMN noneworktimecolor SET DEFAULT 'CCCCCC'
660/
661REORG TABLE graph_theme
662/
663ALTER TABLE graph_theme RENAME COLUMN noneworktimecolor TO nonworktimecolor
664/
665REORG TABLE graph_theme
666/
667UPDATE graph_theme SET theme = 'darkblue' WHERE theme = 'css_bb.css'
668/
669UPDATE graph_theme SET theme = 'originalblue' WHERE theme = 'css_ob.css'
670/
671-- Insert new graph theme
672INSERT INTO graph_theme (graphthemeid, description, theme, backgroundcolor, graphcolor, graphbordercolor, gridcolor,
673	maingridcolor, gridbordercolor, textcolor, highlightcolor, leftpercentilecolor, rightpercentilecolor,
674	nonworktimecolor, gridview, legendview)
675SELECT (SELECT MAX(graphthemeid) FROM graph_theme) + 1 AS graphthemeid, 'Dark orange' AS description, 'darkorange' AS theme,
676	'333333' AS backgroundcolor, '0A0A0A' AS graphcolor, '888888' AS graphbordercolor, '222222' AS gridcolor,
677	'4F4F4F' AS maingridcolor, 'EFEFEF' AS gridbordercolor, 'DFDFDF' AS textcolor, 'FF5500' AS highlightcolor,
678	'FF5500' AS leftpercentilecolor, 'FF1111' AS rightpercentilecolor, '1F1F1F' AS nonworktimecolor, 1 AS gridview,
679	1 AS legendview
680FROM dual WHERE EXISTS (SELECT NULL FROM graph_theme)
681/
682INSERT INTO graph_theme (graphthemeid, description, theme, backgroundcolor, graphcolor, graphbordercolor, gridcolor,
683	maingridcolor, gridbordercolor, textcolor, highlightcolor, leftpercentilecolor, rightpercentilecolor,
684	nonworktimecolor, gridview, legendview)
685SELECT (SELECT MAX(graphthemeid) FROM graph_theme) + 1 AS graphthemeid, 'Classic' AS description, 'classic' AS theme,
686	'F0F0F0' AS backgroundcolor, 'FFFFFF' AS graphcolor, '333333' AS graphbordercolor, 'CCCCCC' AS gridcolor,
687	'AAAAAA' AS maingridcolor, '000000' AS gridbordercolor, '222222' AS textcolor, 'AA4444' AS highlightcolor,
688	'11CC11' AS leftpercentilecolor, 'CC1111' AS rightpercentilecolor, 'E0E0E0' AS nonworktimecolor, 1 AS gridview,
689	1 AS legendview
690FROM dual WHERE EXISTS (SELECT NULL FROM graph_theme)
691/
692DELETE FROM ids WHERE table_name = 'graph_theme'
693/
694ALTER TABLE groups ALTER COLUMN groupid SET WITH DEFAULT NULL
695/
696REORG TABLE groups
697/
698DROP TABLE help_items
699/
700
701CREATE TABLE help_items (
702	itemtype	integer		WITH DEFAULT '0'	NOT NULL,
703	key_		varchar(255)	WITH DEFAULT ''		NOT NULL,
704	description	varchar(255)	WITH DEFAULT ''		NOT NULL,
705	PRIMARY KEY (itemtype,key_)
706)
707/
708
709INSERT INTO help_items (itemtype,key_,description) values ('0','agent.ping','Check the agent usability. Always return 1. Can be used as a TCP ping.')
710/
711INSERT INTO help_items (itemtype,key_,description) values ('0','agent.version','Version of zabbix_agent(d) running on monitored host. String value. Example of returned value: 1.1')
712/
713INSERT INTO help_items (itemtype,key_,description) values ('0','kernel.maxfiles','Maximum number of opened files supported by OS.')
714/
715INSERT INTO help_items (itemtype,key_,description) values ('0','kernel.maxproc','Maximum number of processes supported by OS.')
716/
717INSERT INTO help_items (itemtype,key_,description) values ('0','net.dns.record[<ip>,name,<type>,<timeout>,<count>]','Performs a DNS query. On success returns a character string with the required type of information.')
718/
719INSERT INTO help_items (itemtype,key_,description) values ('0','net.dns[<ip>,name,<type>,<timeout>,<count>]','Checks if DNS service is up. 0 - DNS is down (server did not respond or DNS resolution failed), 1 - DNS is up.')
720/
721INSERT INTO help_items (itemtype,key_,description) values ('0','net.if.collisions[if]','Out-of-window collision. Collisions count.')
722/
723INSERT INTO help_items (itemtype,key_,description) values ('0','net.if.in[if,<mode>]','Network interface input statistic. Integer value. If mode is missing bytes is used.')
724/
725INSERT INTO help_items (itemtype,key_,description) values ('0','net.if.list','List of network interfaces. Text value.')
726/
727INSERT INTO help_items (itemtype,key_,description) values ('0','net.if.out[if,<mode>]','Network interface output statistic. Integer value. If mode is missing bytes is used.')
728/
729INSERT INTO help_items (itemtype,key_,description) values ('0','net.if.total[if,<mode>]','Sum of network interface incoming and outgoing statistics. Integer value. Mode - one of bytes (default), packets, errors or dropped')
730/
731INSERT INTO help_items (itemtype,key_,description) values ('0','net.tcp.listen[port]','Checks if this port is in LISTEN state. 0 - it is not, 1 - it is in LISTEN state.')
732/
733INSERT INTO help_items (itemtype,key_,description) values ('0','net.tcp.port[<ip>,port]','Check, if it is possible to make TCP connection to the port number. 0 - cannot connect, 1 - can connect. IP address is optional. If ip is missing, 127.0.0.1 is used. Example: net.tcp.port[,80]')
734/
735INSERT INTO help_items (itemtype,key_,description) values ('0','net.tcp.service.perf[service,<ip>,<port>]','Check performance of service "service". 0 - service is down, sec - number of seconds spent on connection to the service. If ip is missing 127.0.0.1 is used.  If port number is missing, default service port is used.')
736/
737INSERT INTO help_items (itemtype,key_,description) values ('0','net.tcp.service[service,<ip>,<port>]','Check if service is available. 0 - service is down, 1 - service is running. If ip is missing 127.0.0.1 is used. If port number is missing, default service port is used. Example: net.tcp.service[ftp,,45].')
738/
739INSERT INTO help_items (itemtype,key_,description) values ('0','perf_counter[counter,<interval>]','Value of any performance counter, where "counter" parameter is the counter path and "interval" parameter is a number of last seconds, for which the agent returns an average value.')
740/
741INSERT INTO help_items (itemtype,key_,description) values ('0','proc.mem[<name>,<user>,<mode>,<cmdline>]','Memory used by process with name name running under user user. Memory used by processes. Process name, user and mode is optional. If name or user is missing all processes will be calculated. If mode is missing sum is used. Example: proc.mem[,root]')
742/
743INSERT INTO help_items (itemtype,key_,description) values ('0','proc.num[<name>,<user>,<state>,<cmdline>]','Number of processes with name name running under user user having state state. Process name, user and state are optional. Examples: proc.num[,mysql]; proc.num[apache2,www-data]; proc.num[,oracle,sleep,oracleZABBIX]')
744/
745INSERT INTO help_items (itemtype,key_,description) values ('0','proc_info[<process>,<attribute>,<type>]','Different information about specific process(es)')
746/
747INSERT INTO help_items (itemtype,key_,description) values ('0','service_state[service]','State of service. 0 - running, 1 - paused, 2 - start pending, 3 - pause pending, 4 - continue pending, 5 - stop pending, 6 - stopped, 7 - unknown, 255 - no such service')
748/
749INSERT INTO help_items (itemtype,key_,description) values ('0','system.boottime','Timestamp of system boot.')
750/
751INSERT INTO help_items (itemtype,key_,description) values ('0','system.cpu.intr','Device interrupts.')
752/
753INSERT INTO help_items (itemtype,key_,description) values ('0','system.cpu.load[<cpu>,<mode>]','CPU(s) load. Processor load. The cpu and mode are optional. If cpu is missing all is used. If mode is missing avg1 is used. Note that this is not percentage.')
754/
755INSERT INTO help_items (itemtype,key_,description) values ('0','system.cpu.num','Number of available proccessors.')
756/
757INSERT INTO help_items (itemtype,key_,description) values ('0','system.cpu.switches','Context switches.')
758/
759INSERT INTO help_items (itemtype,key_,description) values ('0','system.cpu.util[<cpu>,<type>,<mode>]','CPU(s) utilisation. Processor load in percents. The cpu, type and mode are optional. If cpu is missing all is used.  If type is missing user is used. If mode is missing avg1 is used.')
760/
761INSERT INTO help_items (itemtype,key_,description) values ('0','system.hostname[<type>]','Returns hostname (or NetBIOS name (by default) on Windows). String value. Example of returned value: www.zabbix.com')
762/
763INSERT INTO help_items (itemtype,key_,description) values ('0','system.hw.chassis[<info>]','Chassis info - returns full info by default')
764/
765INSERT INTO help_items (itemtype,key_,description) values ('0','system.hw.cpu[<cpu>,<info>]','CPU info - lists full info for all CPUs by default')
766/
767INSERT INTO help_items (itemtype,key_,description) values ('0','system.hw.devices[<type>]','Device list - lists PCI devices by default')
768/
769INSERT INTO help_items (itemtype,key_,description) values ('0','system.hw.macaddr[<interface>,<format>]','MAC address - lists all MAC addresses with interface names by default')
770/
771INSERT INTO help_items (itemtype,key_,description) values ('0','system.localtime','System local time. Time in seconds.')
772/
773INSERT INTO help_items (itemtype,key_,description) values ('0','system.run[command,<mode>]','Run specified command on the host.')
774/
775INSERT INTO help_items (itemtype,key_,description) values ('0','system.stat[resource,<type>]','Virtual memory statistics.')
776/
777INSERT INTO help_items (itemtype,key_,description) values ('0','system.sw.arch','Software architecture')
778/
779INSERT INTO help_items (itemtype,key_,description) values ('0','system.sw.os[<info>]','Current OS - returns full info by default')
780/
781INSERT INTO help_items (itemtype,key_,description) values ('0','system.sw.packages[<package>,<manager>,<format>]','Software package list - lists all packages for all supported package managers by default')
782/
783INSERT INTO help_items (itemtype,key_,description) values ('0','system.swap.in[<swap>,<type>]','Swap in. If type is count - swapins is returned. If type is pages - pages swapped in is returned. If swap is missing all is used.')
784/
785INSERT INTO help_items (itemtype,key_,description) values ('0','system.swap.out[<swap>,<type>]','Swap out. If type is count - swapouts is returned. If type is pages - pages swapped in is returned. If swap is missing all is used.')
786/
787INSERT INTO help_items (itemtype,key_,description) values ('0','system.swap.size[<swap>,<mode>]','Swap space. Number of bytes. If swap is missing all is used. If mode is missing free is used.')
788/
789INSERT INTO help_items (itemtype,key_,description) values ('0','system.uname','Returns detailed host information. String value')
790/
791INSERT INTO help_items (itemtype,key_,description) values ('0','system.uptime','System uptime in seconds.')
792/
793INSERT INTO help_items (itemtype,key_,description) values ('0','system.users.num','Number of users connected. Command who is used on agent side.')
794/
795INSERT INTO help_items (itemtype,key_,description) values ('0','vfs.dev.read[device,<type>,<mode>]','Device read statistics.')
796/
797INSERT INTO help_items (itemtype,key_,description) values ('0','vfs.dev.write[device,<type>,<mode>]','Device write statistics.')
798/
799INSERT INTO help_items (itemtype,key_,description) values ('0','vfs.file.cksum[file]','Calculate check sum of a given file. Check sum of the file calculate by standard algorithm used by UNIX utility cksum. Example: vfs.file.cksum[/etc/passwd]')
800/
801INSERT INTO help_items (itemtype,key_,description) values ('0','vfs.file.contents[file,<encoding>]','Get contents of a given file.')
802/
803INSERT INTO help_items (itemtype,key_,description) values ('0','vfs.file.exists[file]','Check if file exists. 0 - file does not exist, 1 - file exists')
804/
805INSERT INTO help_items (itemtype,key_,description) values ('0','vfs.file.md5sum[file]','Calculate MD5 check sum of a given file. String MD5 hash of the file. Can be used for files less than 64MB, unsupported otherwise. Example: vfs.file.md5sum[/usr/local/usr/local/etc/zabbix3_agentd.conf]')
806/
807INSERT INTO help_items (itemtype,key_,description) values ('0','vfs.file.regexp[file,regexp,<encoding>]','Find string in a file. Matched string')
808/
809INSERT INTO help_items (itemtype,key_,description) values ('0','vfs.file.regmatch[file,regexp,<encoding>]','Find string in a file. 0 - expression not found, 1 - found')
810/
811INSERT INTO help_items (itemtype,key_,description) values ('0','vfs.file.size[file]','Size of a given file. Size in bytes. File must have read permissions for user zabbix. Example: vfs.file.size[/var/log/syslog]')
812/
813INSERT INTO help_items (itemtype,key_,description) values ('0','vfs.file.time[file,<mode>]','File time information. Number of seconds.The mode is optional. If mode is missing modify is used.')
814/
815INSERT INTO help_items (itemtype,key_,description) values ('0','vfs.fs.inode[fs,<mode>]','Number of inodes for a given volume. If mode is missing total is used.')
816/
817INSERT INTO help_items (itemtype,key_,description) values ('0','vfs.fs.size[fs,<mode>]','Calculate disk space for a given volume. Disk space in KB. If mode is missing total is used.  In case of mounted volume, unused disk space for local file system is returned. Example: vfs.fs.size[/tmp,free].')
818/
819INSERT INTO help_items (itemtype,key_,description) values ('0','vm.memory.size[<mode>]','Amount of memory size in bytes. If mode is missing total is used.')
820/
821INSERT INTO help_items (itemtype,key_,description) values ('0','web.page.get[host,<path>,<port>]','Get content of web page. Default path is /')
822/
823INSERT INTO help_items (itemtype,key_,description) values ('0','web.page.perf[host,<path>,<port>]','Get timing of loading full web page. Default path is /')
824/
825INSERT INTO help_items (itemtype,key_,description) values ('0','web.page.regexp[host,<path>,<port>,<regexp>,<length>]','Get first occurrence of regexp in web page. Default path is /')
826/
827INSERT INTO help_items (itemtype,key_,description) values ('3','icmppingloss[<target>,<packets>,<interval>,<size>,<timeout>]','Returns percentage of lost ICMP ping packets.')
828/
829INSERT INTO help_items (itemtype,key_,description) values ('3','icmppingsec[<target>,<packets>,<interval>,<size>,<timeout>,<mode>]','Returns ICMP ping response time in seconds. Example: 0.02')
830/
831INSERT INTO help_items (itemtype,key_,description) values ('3','icmpping[<target>,<packets>,<interval>,<size>,<timeout>]','Checks if server is accessible by ICMP ping. 0 - ICMP ping fails. 1 - ICMP ping successful. One of zabbix_server processes performs ICMP pings once per PingerFrequency seconds.')
832/
833INSERT INTO help_items (itemtype,key_,description) values ('3','net.tcp.service.perf[service,<ip>,<port>]','Check performance of service. 0 - service is down, sec - number of seconds spent on connection to the service. If <ip> is missing, IP or DNS name is taken from host definition. If <port> is missing, default service port is used.')
834/
835INSERT INTO help_items (itemtype,key_,description) values ('3','net.tcp.service[service,<ip>,<port>]','Check if service is available. 0 - service is down, 1 - service is running. If <ip> is missing, IP or DNS name is taken from host definition. If <port> is missing, default service port is used.')
836/
837INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[boottime]','Startup time of Zabbix server, Unix timestamp.')
838/
839INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[history]','Number of values stored in table HISTORY.')
840/
841INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[history_log]','Number of values stored in table HISTORY_LOG.')
842/
843INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[history_str]','Number of values stored in table HISTORY_STR.')
844/
845INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[history_text]','Number of values stored in table HISTORY_TEXT.')
846/
847INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[history_uint]','Number of values stored in table HISTORY_UINT.')
848/
849INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[host,<type>,available]','Returns availability of a particular type of checks on the host. Value of this item corresponds to availability icons in the host list. Valid types are: agent, snmp, ipmi, jmx.')
850/
851INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[items]','Number of items in Zabbix database.')
852/
853INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[items_unsupported]','Number of unsupported items in Zabbix database.')
854/
855INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[java,,<param>]','Returns information associated with Zabbix Java gateway. Valid params are: ping, version.')
856/
857INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[process,<type>,<num>,<state>]','Time a particular Zabbix process or a group of processes (identified by <type> and <num>) spent in <state> in percentage.')
858/
859INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[proxy,<name>,<param>]','Time of proxy last access. Name - proxy name. Param - lastaccess. Unix timestamp.')
860/
861INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[queue,<from>,<to>]','Number of items in the queue which are delayed by from to to seconds, inclusive.')
862/
863INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[requiredperformance]','Required performance of the Zabbix server, in new values per second expected.')
864/
865INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[rcache,<cache>,<mode>]','Configuration cache statistics. Cache - buffer (modes: pfree, total, used, free).')
866/
867INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[trends]','Number of values stored in table TRENDS.')
868/
869INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[trends_uint]','Number of values stored in table TRENDS_UINT.')
870/
871INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[triggers]','Number of triggers in Zabbix database.')
872/
873INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[uptime]','Uptime of Zabbix server process in seconds.')
874/
875INSERT INTO help_items (itemtype,key_,description) values ('5','zabbix[wcache,<cache>,<mode>]','Data cache statistics. Cache - one of values (modes: all, float, uint, str, log, text), history (modes: pfree, total, used, free), trend (modes: pfree, total, used, free), text (modes: pfree, total, used, free).')
876/
877INSERT INTO help_items (itemtype,key_,description) values ('7','agent.ping','Check the agent usability. Always return 1. Can be used as a TCP ping.')
878/
879INSERT INTO help_items (itemtype,key_,description) values ('7','agent.version','Version of zabbix_agent(d) running on monitored host. String value. Example of returned value: 1.1')
880/
881INSERT INTO help_items (itemtype,key_,description) values ('7','eventlog[logtype,<pattern>,<severity>,<source>,<eventid>,<maxlines>,<mode>]','Monitoring of Windows event logs. pattern, severity, eventid - regular expressions')
882/
883INSERT INTO help_items (itemtype,key_,description) values ('7','kernel.maxfiles','Maximum number of opened files supported by OS.')
884/
885INSERT INTO help_items (itemtype,key_,description) values ('7','kernel.maxproc','Maximum number of processes supported by OS.')
886/
887INSERT INTO help_items (itemtype,key_,description) values ('7','logrt[file_format,<pattern>,<encoding>,<maxlines>,<mode>]','Monitoring of log file with rotation. fileformat - [path][regexp], pattern - regular expression')
888/
889INSERT INTO help_items (itemtype,key_,description) values ('7','log[file,<pattern>,<encoding>,<maxlines>,<mode>]','Monitoring of log file. pattern - regular expression')
890/
891INSERT INTO help_items (itemtype,key_,description) values ('7','net.dns.record[<ip>,name,<type>,<timeout>,<count>]','Performs a DNS query. On success returns a character string with the required type of information.')
892/
893INSERT INTO help_items (itemtype,key_,description) values ('7','net.dns[<ip>,name,<type>,<timeout>,<count>]','Checks if DNS service is up. 0 - DNS is down (server did not respond or DNS resolution failed), 1 - DNS is up.')
894/
895INSERT INTO help_items (itemtype,key_,description) values ('7','net.if.collisions[if]','Out-of-window collision. Collisions count.')
896/
897INSERT INTO help_items (itemtype,key_,description) values ('7','net.if.in[if,<mode>]','Network interface input statistic. Integer value. If mode is missing bytes is used.')
898/
899INSERT INTO help_items (itemtype,key_,description) values ('7','net.if.list','List of network interfaces. Text value.')
900/
901INSERT INTO help_items (itemtype,key_,description) values ('7','net.if.out[if,<mode>]','Network interface output statistic. Integer value. If mode is missing bytes is used.')
902/
903INSERT INTO help_items (itemtype,key_,description) values ('7','net.if.total[if,<mode>]','Sum of network interface incoming and outgoing statistics. Integer value. Mode - one of bytes (default), packets, errors or dropped')
904/
905INSERT INTO help_items (itemtype,key_,description) values ('7','net.tcp.listen[port]','Checks if this port is in LISTEN state. 0 - it is not, 1 - it is in LISTEN state.')
906/
907INSERT INTO help_items (itemtype,key_,description) values ('7','net.tcp.port[<ip>,port]','Check, if it is possible to make TCP connection to the port number. 0 - cannot connect, 1 - can connect. IP address is optional. If ip is missing, 127.0.0.1 is used. Example: net.tcp.port[,80]')
908/
909INSERT INTO help_items (itemtype,key_,description) values ('7','net.tcp.service.perf[service,<ip>,<port>]','Check performance of service "service". 0 - service is down, sec - number of seconds spent on connection to the service. If ip is missing 127.0.0.1 is used.  If port number is missing, default service port is used.')
910/
911INSERT INTO help_items (itemtype,key_,description) values ('7','net.tcp.service[service,<ip>,<port>]','Check if service is available. 0 - service is down, 1 - service is running. If ip is missing 127.0.0.1 is used. If port number is missing, default service port is used. Example: net.tcp.service[ftp,,45].')
912/
913INSERT INTO help_items (itemtype,key_,description) values ('7','perf_counter[counter,<interval>]','Value of any performance counter, where "counter" parameter is the counter path and "interval" parameter is a number of last seconds, for which the agent returns an average value.')
914/
915INSERT INTO help_items (itemtype,key_,description) values ('7','proc.mem[<name>,<user>,<mode>,<cmdline>]','Memory used by process with name name running under user user. Memory used by processes. Process name, user and mode is optional. If name or user is missing all processes will be calculated. If mode is missing sum is used. Example: proc.mem[,root]')
916/
917INSERT INTO help_items (itemtype,key_,description) values ('7','proc.num[<name>,<user>,<state>,<cmdline>]','Number of processes with name name running under user user having state state. Process name, user and state are optional. Examples: proc.num[,mysql]; proc.num[apache2,www-data]; proc.num[,oracle,sleep,oracleZABBIX]')
918/
919INSERT INTO help_items (itemtype,key_,description) values ('7','proc_info[<process>,<attribute>,<type>]','Different information about specific process(es)')
920/
921INSERT INTO help_items (itemtype,key_,description) values ('7','service_state[service]','State of service. 0 - running, 1 - paused, 2 - start pending, 3 - pause pending, 4 - continue pending, 5 - stop pending, 6 - stopped, 7 - unknown, 255 - no such service')
922/
923INSERT INTO help_items (itemtype,key_,description) values ('7','system.boottime','Timestamp of system boot.')
924/
925INSERT INTO help_items (itemtype,key_,description) values ('7','system.cpu.intr','Device interrupts.')
926/
927INSERT INTO help_items (itemtype,key_,description) values ('7','system.cpu.load[<cpu>,<mode>]','CPU(s) load. Processor load. The cpu and mode are optional. If cpu is missing all is used. If mode is missing avg1 is used. Note that this is not percentage.')
928/
929INSERT INTO help_items (itemtype,key_,description) values ('7','system.cpu.num','Number of available proccessors.')
930/
931INSERT INTO help_items (itemtype,key_,description) values ('7','system.cpu.switches','Context switches.')
932/
933INSERT INTO help_items (itemtype,key_,description) values ('7','system.cpu.util[<cpu>,<type>,<mode>]','CPU(s) utilisation. Processor load in percents. The cpu, type and mode are optional. If cpu is missing all is used.  If type is missing user is used. If mode is missing avg1 is used.')
934/
935INSERT INTO help_items (itemtype,key_,description) values ('7','system.hostname[<type>]','Returns hostname (or NetBIOS name (by default) on Windows). String value. Example of returned value: www.zabbix.com')
936/
937INSERT INTO help_items (itemtype,key_,description) values ('7','system.hw.chassis[<info>]','Chassis info - returns full info by default')
938/
939INSERT INTO help_items (itemtype,key_,description) values ('7','system.hw.cpu[<cpu>,<info>]','CPU info - lists full info for all CPUs by default')
940/
941INSERT INTO help_items (itemtype,key_,description) values ('7','system.hw.devices[<type>]','Device list - lists PCI devices by default')
942/
943INSERT INTO help_items (itemtype,key_,description) values ('7','system.hw.macaddr[<interface>,<format>]','MAC address - lists all MAC addresses with interface names by default')
944/
945INSERT INTO help_items (itemtype,key_,description) values ('7','system.localtime','System local time. Time in seconds.')
946/
947INSERT INTO help_items (itemtype,key_,description) values ('7','system.run[command,<mode>]','Run specified command on the host.')
948/
949INSERT INTO help_items (itemtype,key_,description) values ('7','system.stat[resource,<type>]','Virtual memory statistics.')
950/
951INSERT INTO help_items (itemtype,key_,description) values ('7','system.sw.arch','Software architecture')
952/
953INSERT INTO help_items (itemtype,key_,description) values ('7','system.sw.os[<info>]','Current OS - returns full info by default')
954/
955INSERT INTO help_items (itemtype,key_,description) values ('7','system.sw.packages[<package>,<manager>,<format>]','Software package list - lists all packages for all supported package managers by default')
956/
957INSERT INTO help_items (itemtype,key_,description) values ('7','system.swap.in[<swap>,<type>]','Swap in. If type is count - swapins is returned. If type is pages - pages swapped in is returned. If swap is missing all is used.')
958/
959INSERT INTO help_items (itemtype,key_,description) values ('7','system.swap.out[<swap>,<type>]','Swap out. If type is count - swapouts is returned. If type is pages - pages swapped in is returned. If swap is missing all is used.')
960/
961INSERT INTO help_items (itemtype,key_,description) values ('7','system.swap.size[<swap>,<mode>]','Swap space. Number of bytes. If swap is missing all is used. If mode is missing free is used.')
962/
963INSERT INTO help_items (itemtype,key_,description) values ('7','system.uname','Returns detailed host information. String value')
964/
965INSERT INTO help_items (itemtype,key_,description) values ('7','system.uptime','System uptime in seconds.')
966/
967INSERT INTO help_items (itemtype,key_,description) values ('7','system.users.num','Number of users connected. Command who is used on agent side.')
968/
969INSERT INTO help_items (itemtype,key_,description) values ('7','vfs.dev.read[device,<type>,<mode>]','Device read statistics.')
970/
971INSERT INTO help_items (itemtype,key_,description) values ('7','vfs.dev.write[device,<type>,<mode>]','Device write statistics.')
972/
973INSERT INTO help_items (itemtype,key_,description) values ('7','vfs.file.cksum[file]','Calculate check sum of a given file. Check sum of the file calculate by standard algorithm used by UNIX utility cksum. Example: vfs.file.cksum[/etc/passwd]')
974/
975INSERT INTO help_items (itemtype,key_,description) values ('7','vfs.file.contents[file,<encoding>]','Get contents of a given file.')
976/
977INSERT INTO help_items (itemtype,key_,description) values ('7','vfs.file.exists[file]','Check if file exists. 0 - file does not exist, 1 - file exists')
978/
979INSERT INTO help_items (itemtype,key_,description) values ('7','vfs.file.md5sum[file]','Calculate MD5 check sum of a given file. String MD5 hash of the file. Can be used for files less than 64MB, unsupported otherwise. Example: vfs.file.md5sum[/usr/local/usr/local/etc/zabbix3_agentd.conf]')
980/
981INSERT INTO help_items (itemtype,key_,description) values ('7','vfs.file.regexp[file,regexp,<encoding>]','Find string in a file. Matched string')
982/
983INSERT INTO help_items (itemtype,key_,description) values ('7','vfs.file.regmatch[file,regexp,<encoding>]','Find string in a file. 0 - expression not found, 1 - found')
984/
985INSERT INTO help_items (itemtype,key_,description) values ('7','vfs.file.size[file]','Size of a given file. Size in bytes. File must have read permissions for user zabbix. Example: vfs.file.size[/var/log/syslog]')
986/
987INSERT INTO help_items (itemtype,key_,description) values ('7','vfs.file.time[file,<mode>]','File time information. Number of seconds.The mode is optional. If mode is missing modify is used.')
988/
989INSERT INTO help_items (itemtype,key_,description) values ('7','vfs.fs.inode[fs,<mode>]','Number of inodes for a given volume. If mode is missing total is used.')
990/
991INSERT INTO help_items (itemtype,key_,description) values ('7','vfs.fs.size[fs,<mode>]','Calculate disk space for a given volume. Disk space in KB. If mode is missing total is used.  In case of mounted volume, unused disk space for local file system is returned. Example: vfs.fs.size[/tmp,free].')
992/
993INSERT INTO help_items (itemtype,key_,description) values ('7','vm.memory.size[<mode>]','Amount of memory size in bytes. If mode is missing total is used.')
994/
995INSERT INTO help_items (itemtype,key_,description) values ('7','web.page.get[host,<path>,<port>]','Get content of web page. Default path is /')
996/
997INSERT INTO help_items (itemtype,key_,description) values ('7','web.page.perf[host,<path>,<port>]','Get timing of loading full web page. Default path is /')
998/
999INSERT INTO help_items (itemtype,key_,description) values ('7','web.page.regexp[host,<path>,<port>,<regexp>,<length>]','Get first occurrence of regexp in web page. Default path is /')
1000/
1001INSERT INTO help_items (itemtype,key_,description) values ('8','grpfunc[<group>,<key>,<func>,<param>]','Aggregate checks do not require any agent running on a host being monitored. Zabbix server collects aggregate information by doing direct database queries. See Zabbix Manual.')
1002/
1003INSERT INTO help_items (itemtype,key_,description) values ('17','snmptrap.fallback','Catches all SNMP traps from a corresponding address that were not catched by any of the snmptrap[] items for that interface.')
1004/
1005INSERT INTO help_items (itemtype,key_,description) values ('17','snmptrap[<regex>]','Catches all SNMP traps from a corresponding address that match regex. Default regex is an empty string.')
1006/
1007ALTER TABLE history_log ALTER COLUMN id SET WITH DEFAULT NULL
1008/
1009REORG TABLE history_log
1010/
1011ALTER TABLE history_log ALTER COLUMN itemid SET WITH DEFAULT NULL
1012/
1013REORG TABLE history_log
1014/
1015ALTER TABLE history_log ADD ns integer WITH DEFAULT '0' NOT NULL
1016/
1017REORG TABLE history_log
1018/
1019ALTER TABLE history ALTER COLUMN itemid SET WITH DEFAULT NULL
1020/
1021REORG TABLE history
1022/
1023ALTER TABLE history ADD ns integer WITH DEFAULT '0' NOT NULL
1024/
1025REORG TABLE history
1026/
1027ALTER TABLE history_str ALTER COLUMN itemid SET WITH DEFAULT NULL
1028/
1029REORG TABLE history_str
1030/
1031ALTER TABLE history_str ADD ns integer WITH DEFAULT '0' NOT NULL
1032/
1033REORG TABLE history_str
1034/
1035ALTER TABLE history_str_sync ALTER COLUMN itemid SET WITH DEFAULT NULL
1036/
1037REORG TABLE history_str_sync
1038/
1039ALTER TABLE history_str_sync ALTER COLUMN nodeid SET WITH DEFAULT NULL
1040/
1041REORG TABLE history_str_sync
1042/
1043ALTER TABLE history_str_sync ALTER COLUMN nodeid SET DATA TYPE integer
1044/
1045REORG TABLE history_str_sync
1046/
1047ALTER TABLE history_str_sync ADD ns integer WITH DEFAULT '0' NOT NULL
1048/
1049REORG TABLE history_str_sync
1050/
1051ALTER TABLE history_sync ALTER COLUMN itemid SET WITH DEFAULT NULL
1052/
1053REORG TABLE history_sync
1054/
1055ALTER TABLE history_sync ALTER COLUMN nodeid SET WITH DEFAULT NULL
1056/
1057REORG TABLE history_sync
1058/
1059ALTER TABLE history_sync ALTER COLUMN nodeid SET DATA TYPE integer
1060/
1061REORG TABLE history_sync
1062/
1063ALTER TABLE history_sync ADD ns integer WITH DEFAULT '0' NOT NULL
1064/
1065REORG TABLE history_sync
1066/
1067ALTER TABLE history_text ALTER COLUMN id SET WITH DEFAULT NULL
1068/
1069REORG TABLE history_text
1070/
1071ALTER TABLE history_text ALTER COLUMN itemid SET WITH DEFAULT NULL
1072/
1073REORG TABLE history_text
1074/
1075ALTER TABLE history_text ADD ns integer WITH DEFAULT '0' NOT NULL
1076/
1077REORG TABLE history_text
1078/
1079ALTER TABLE history_uint ALTER COLUMN itemid SET WITH DEFAULT NULL
1080/
1081REORG TABLE history_uint
1082/
1083ALTER TABLE history_uint ADD ns integer WITH DEFAULT '0' NOT NULL
1084/
1085REORG TABLE history_uint
1086/
1087ALTER TABLE history_uint_sync ALTER COLUMN itemid SET WITH DEFAULT NULL
1088/
1089REORG TABLE history_uint_sync
1090/
1091ALTER TABLE history_uint_sync ALTER COLUMN nodeid SET WITH DEFAULT NULL
1092/
1093REORG TABLE history_uint_sync
1094/
1095ALTER TABLE history_uint_sync ALTER COLUMN nodeid SET DATA TYPE integer
1096/
1097REORG TABLE history_uint_sync
1098/
1099ALTER TABLE history_uint_sync ADD ns integer WITH DEFAULT '0' NOT NULL
1100/
1101REORG TABLE history_uint_sync
1102/
1103DELETE FROM hosts_profiles WHERE NOT hostid IN (SELECT hostid FROM hosts)
1104/
1105DELETE FROM hosts_profiles_ext WHERE NOT hostid IN (SELECT hostid FROM hosts)
1106/
1107
1108CREATE TABLE host_inventory (
1109	hostid                   bigint                                    NOT NULL,
1110	inventory_mode           integer         WITH DEFAULT '0'          NOT NULL,
1111	type                     varchar(64)     WITH DEFAULT ''           NOT NULL,
1112	type_full                varchar(64)     WITH DEFAULT ''           NOT NULL,
1113	name                     varchar(64)     WITH DEFAULT ''           NOT NULL,
1114	alias                    varchar(64)     WITH DEFAULT ''           NOT NULL,
1115	os                       varchar(64)     WITH DEFAULT ''           NOT NULL,
1116	os_full                  varchar(255)    WITH DEFAULT ''           NOT NULL,
1117	os_short                 varchar(64)     WITH DEFAULT ''           NOT NULL,
1118	serialno_a               varchar(64)     WITH DEFAULT ''           NOT NULL,
1119	serialno_b               varchar(64)     WITH DEFAULT ''           NOT NULL,
1120	tag                      varchar(64)     WITH DEFAULT ''           NOT NULL,
1121	asset_tag                varchar(64)     WITH DEFAULT ''           NOT NULL,
1122	macaddress_a             varchar(64)     WITH DEFAULT ''           NOT NULL,
1123	macaddress_b             varchar(64)     WITH DEFAULT ''           NOT NULL,
1124	hardware                 varchar(255)    WITH DEFAULT ''           NOT NULL,
1125	hardware_full            varchar(2048)   WITH DEFAULT ''           NOT NULL,
1126	software                 varchar(255)    WITH DEFAULT ''           NOT NULL,
1127	software_full            varchar(2048)   WITH DEFAULT ''           NOT NULL,
1128	software_app_a           varchar(64)     WITH DEFAULT ''           NOT NULL,
1129	software_app_b           varchar(64)     WITH DEFAULT ''           NOT NULL,
1130	software_app_c           varchar(64)     WITH DEFAULT ''           NOT NULL,
1131	software_app_d           varchar(64)     WITH DEFAULT ''           NOT NULL,
1132	software_app_e           varchar(64)     WITH DEFAULT ''           NOT NULL,
1133	contact                  varchar(2048)   WITH DEFAULT ''           NOT NULL,
1134	location                 varchar(2048)   WITH DEFAULT ''           NOT NULL,
1135	location_lat             varchar(16)     WITH DEFAULT ''           NOT NULL,
1136	location_lon             varchar(16)     WITH DEFAULT ''           NOT NULL,
1137	notes                    varchar(2048)   WITH DEFAULT ''           NOT NULL,
1138	chassis                  varchar(64)     WITH DEFAULT ''           NOT NULL,
1139	model                    varchar(64)     WITH DEFAULT ''           NOT NULL,
1140	hw_arch                  varchar(32)     WITH DEFAULT ''           NOT NULL,
1141	vendor                   varchar(64)     WITH DEFAULT ''           NOT NULL,
1142	contract_number          varchar(64)     WITH DEFAULT ''           NOT NULL,
1143	installer_name           varchar(64)     WITH DEFAULT ''           NOT NULL,
1144	deployment_status        varchar(64)     WITH DEFAULT ''           NOT NULL,
1145	url_a                    varchar(255)    WITH DEFAULT ''           NOT NULL,
1146	url_b                    varchar(255)    WITH DEFAULT ''           NOT NULL,
1147	url_c                    varchar(255)    WITH DEFAULT ''           NOT NULL,
1148	host_networks            varchar(2048)   WITH DEFAULT ''           NOT NULL,
1149	host_netmask             varchar(39)     WITH DEFAULT ''           NOT NULL,
1150	host_router              varchar(39)     WITH DEFAULT ''           NOT NULL,
1151	oob_ip                   varchar(39)     WITH DEFAULT ''           NOT NULL,
1152	oob_netmask              varchar(39)     WITH DEFAULT ''           NOT NULL,
1153	oob_router               varchar(39)     WITH DEFAULT ''           NOT NULL,
1154	date_hw_purchase         varchar(64)     WITH DEFAULT ''           NOT NULL,
1155	date_hw_install          varchar(64)     WITH DEFAULT ''           NOT NULL,
1156	date_hw_expiry           varchar(64)     WITH DEFAULT ''           NOT NULL,
1157	date_hw_decomm           varchar(64)     WITH DEFAULT ''           NOT NULL,
1158	site_address_a           varchar(128)    WITH DEFAULT ''           NOT NULL,
1159	site_address_b           varchar(128)    WITH DEFAULT ''           NOT NULL,
1160	site_address_c           varchar(128)    WITH DEFAULT ''           NOT NULL,
1161	site_city                varchar(128)    WITH DEFAULT ''           NOT NULL,
1162	site_state               varchar(64)     WITH DEFAULT ''           NOT NULL,
1163	site_country             varchar(64)     WITH DEFAULT ''           NOT NULL,
1164	site_zip                 varchar(64)     WITH DEFAULT ''           NOT NULL,
1165	site_rack                varchar(128)    WITH DEFAULT ''           NOT NULL,
1166	site_notes               varchar(2048)   WITH DEFAULT ''           NOT NULL,
1167	poc_1_name               varchar(128)    WITH DEFAULT ''           NOT NULL,
1168	poc_1_email              varchar(128)    WITH DEFAULT ''           NOT NULL,
1169	poc_1_phone_a            varchar(64)     WITH DEFAULT ''           NOT NULL,
1170	poc_1_phone_b            varchar(64)     WITH DEFAULT ''           NOT NULL,
1171	poc_1_cell               varchar(64)     WITH DEFAULT ''           NOT NULL,
1172	poc_1_screen             varchar(64)     WITH DEFAULT ''           NOT NULL,
1173	poc_1_notes              varchar(2048)   WITH DEFAULT ''           NOT NULL,
1174	poc_2_name               varchar(128)    WITH DEFAULT ''           NOT NULL,
1175	poc_2_email              varchar(128)    WITH DEFAULT ''           NOT NULL,
1176	poc_2_phone_a            varchar(64)     WITH DEFAULT ''           NOT NULL,
1177	poc_2_phone_b            varchar(64)     WITH DEFAULT ''           NOT NULL,
1178	poc_2_cell               varchar(64)     WITH DEFAULT ''           NOT NULL,
1179	poc_2_screen             varchar(64)     WITH DEFAULT ''           NOT NULL,
1180	poc_2_notes              varchar(2048)   WITH DEFAULT ''           NOT NULL,
1181	PRIMARY KEY (hostid)
1182)
1183/
1184ALTER TABLE host_inventory ADD CONSTRAINT c_host_inventory_1 FOREIGN KEY (hostid) REFERENCES hosts (hostid) ON DELETE CASCADE
1185/
1186
1187-- create temporary t_host_inventory table
1188CREATE TABLE t_host_inventory (
1189	hostid                   bigint,
1190	inventory_mode           integer,
1191	type                     varchar(64),
1192	type_full                varchar(64),
1193	name                     varchar(64),
1194	alias                    varchar(64),
1195	os                       varchar(64),
1196	os_full                  varchar(255),
1197	os_short                 varchar(64),
1198	serialno_a               varchar(64),
1199	serialno_b               varchar(64),
1200	tag                      varchar(64),
1201	asset_tag                varchar(64),
1202	macaddress_a             varchar(64),
1203	macaddress_b             varchar(64),
1204	hardware                 varchar(255),
1205	hardware_full            varchar(2048),
1206	software                 varchar(255),
1207	software_full            varchar(2048),
1208	software_app_a           varchar(64),
1209	software_app_b           varchar(64),
1210	software_app_c           varchar(64),
1211	software_app_d           varchar(64),
1212	software_app_e           varchar(64),
1213	contact                  varchar(2048),
1214	location                 varchar(2048),
1215	location_lat             varchar(16),
1216	location_lon             varchar(16),
1217	notes                    varchar(2048),
1218	chassis                  varchar(64),
1219	model                    varchar(64),
1220	hw_arch                  varchar(32),
1221	vendor                   varchar(64),
1222	contract_number          varchar(64),
1223	installer_name           varchar(64),
1224	deployment_status        varchar(64),
1225	url_a                    varchar(255),
1226	url_b                    varchar(255),
1227	url_c                    varchar(255),
1228	host_networks            varchar(2048),
1229	host_netmask             varchar(39),
1230	host_router              varchar(39),
1231	oob_ip                   varchar(39),
1232	oob_netmask              varchar(39),
1233	oob_router               varchar(39),
1234	date_hw_purchase         varchar(64),
1235	date_hw_install          varchar(64),
1236	date_hw_expiry           varchar(64),
1237	date_hw_decomm           varchar(64),
1238	site_address_a           varchar(128),
1239	site_address_b           varchar(128),
1240	site_address_c           varchar(128),
1241	site_city                varchar(128),
1242	site_state               varchar(64),
1243	site_country             varchar(64),
1244	site_zip                 varchar(64),
1245	site_rack                varchar(128),
1246	site_notes               varchar(2048),
1247	poc_1_name               varchar(128),
1248	poc_1_email              varchar(128),
1249	poc_1_phone_a            varchar(64),
1250	poc_1_phone_b            varchar(64),
1251	poc_1_cell               varchar(64),
1252	poc_1_screen             varchar(64),
1253	poc_1_notes              varchar(2048),
1254	poc_2_name               varchar(128),
1255	poc_2_email              varchar(128),
1256	poc_2_phone_a            varchar(64),
1257	poc_2_phone_b            varchar(64),
1258	poc_2_cell               varchar(64),
1259	poc_2_screen             varchar(64),
1260	poc_2_notes              varchar(2048),
1261	notes_ext                varchar(2048)
1262)
1263/
1264
1265-- select all profiles into temporary table
1266INSERT INTO t_host_inventory
1267	SELECT p.hostid,0,p.devicetype,ep.device_type,p.name,ep.device_alias,p.os,ep.device_os,ep.device_os_short,
1268		p.serialno,ep.device_serial,p.tag,ep.device_tag,p.macaddress,ep.ip_macaddress,ep.device_hardware,
1269		p.hardware,ep.device_software,p.software,ep.device_app_01,ep.device_app_02,ep.device_app_03,
1270		ep.device_app_04,ep.device_app_05,p.contact,p.location,'','',p.notes,ep.device_chassis,ep.device_model,
1271		ep.device_hw_arch,ep.device_vendor,ep.device_contract,ep.device_who,ep.device_status,ep.device_url_1,
1272		ep.device_url_2,ep.device_url_3,ep.device_networks,ep.ip_subnet_mask,ep.ip_router,ep.oob_ip,
1273		ep.oob_subnet_mask,ep.oob_router,ep.date_hw_buy,ep.date_hw_install,ep.date_hw_expiry,ep.date_hw_decomm,
1274		ep.site_street_1,ep.site_street_2,ep.site_street_3,ep.site_city,ep.site_state,ep.site_country,
1275		ep.site_zip,ep.site_rack,ep.site_notes,ep.poc_1_name,ep.poc_1_email,ep.poc_1_phone_1,ep.poc_1_phone_2,
1276		ep.poc_1_cell,ep.poc_1_screen,ep.poc_1_notes,ep.poc_2_name,ep.poc_2_email,ep.poc_2_phone_1,
1277		ep.poc_2_phone_2,ep.poc_2_cell,ep.poc_2_screen,ep.poc_2_notes,ep.device_notes
1278	FROM hosts_profiles p LEFT JOIN hosts_profiles_ext ep on p.hostid=ep.hostid
1279	UNION ALL
1280	SELECT ep.hostid,0,p.devicetype,ep.device_type,p.name,ep.device_alias,p.os,ep.device_os,ep.device_os_short,
1281		p.serialno,ep.device_serial,p.tag,ep.device_tag,p.macaddress,ep.ip_macaddress,ep.device_hardware,
1282		p.hardware,ep.device_software,p.software,ep.device_app_01,ep.device_app_02,ep.device_app_03,
1283		ep.device_app_04,ep.device_app_05,p.contact,p.location,'','',p.notes,ep.device_chassis,ep.device_model,
1284		ep.device_hw_arch,ep.device_vendor,ep.device_contract,ep.device_who,ep.device_status,ep.device_url_1,
1285		ep.device_url_2,ep.device_url_3,ep.device_networks,ep.ip_subnet_mask,ep.ip_router,ep.oob_ip,
1286		ep.oob_subnet_mask,ep.oob_router,ep.date_hw_buy,ep.date_hw_install,ep.date_hw_expiry,ep.date_hw_decomm,
1287		ep.site_street_1,ep.site_street_2,ep.site_street_3,ep.site_city,ep.site_state,ep.site_country,
1288		ep.site_zip,ep.site_rack,ep.site_notes,ep.poc_1_name,ep.poc_1_email,ep.poc_1_phone_1,ep.poc_1_phone_2,
1289		ep.poc_1_cell,ep.poc_1_screen,ep.poc_1_notes,ep.poc_2_name,ep.poc_2_email,ep.poc_2_phone_1,
1290		ep.poc_2_phone_2,ep.poc_2_cell,ep.poc_2_screen,ep.poc_2_notes,ep.device_notes
1291	FROM hosts_profiles p RIGHT JOIN hosts_profiles_ext ep on p.hostid=ep.hostid
1292	WHERE p.hostid IS NULL
1293/
1294
1295UPDATE t_host_inventory SET type='' WHERE type IS NULL
1296/
1297UPDATE t_host_inventory SET type_full='' WHERE type_full IS NULL
1298/
1299UPDATE t_host_inventory SET name='' WHERE name IS NULL
1300/
1301UPDATE t_host_inventory SET alias='' WHERE alias IS NULL
1302/
1303UPDATE t_host_inventory SET os='' WHERE os IS NULL
1304/
1305UPDATE t_host_inventory SET os_full='' WHERE os_full IS NULL
1306/
1307UPDATE t_host_inventory SET os_short='' WHERE os_short IS NULL
1308/
1309UPDATE t_host_inventory SET serialno_a='' WHERE serialno_a IS NULL
1310/
1311UPDATE t_host_inventory SET serialno_b='' WHERE serialno_b IS NULL
1312/
1313UPDATE t_host_inventory SET tag='' WHERE tag IS NULL
1314/
1315UPDATE t_host_inventory SET asset_tag='' WHERE asset_tag IS NULL
1316/
1317UPDATE t_host_inventory SET macaddress_a='' WHERE macaddress_a IS NULL
1318/
1319UPDATE t_host_inventory SET macaddress_b='' WHERE macaddress_b IS NULL
1320/
1321UPDATE t_host_inventory SET hardware='' WHERE hardware IS NULL
1322/
1323UPDATE t_host_inventory SET hardware_full='' WHERE hardware_full IS NULL
1324/
1325UPDATE t_host_inventory SET software='' WHERE software IS NULL
1326/
1327UPDATE t_host_inventory SET software_full='' WHERE software_full IS NULL
1328/
1329UPDATE t_host_inventory SET software_app_a='' WHERE software_app_a IS NULL
1330/
1331UPDATE t_host_inventory SET software_app_b='' WHERE software_app_b IS NULL
1332/
1333UPDATE t_host_inventory SET software_app_c='' WHERE software_app_c IS NULL
1334/
1335UPDATE t_host_inventory SET software_app_d='' WHERE software_app_d IS NULL
1336/
1337UPDATE t_host_inventory SET software_app_e='' WHERE software_app_e IS NULL
1338/
1339UPDATE t_host_inventory SET contact='' WHERE contact IS NULL
1340/
1341UPDATE t_host_inventory SET location='' WHERE location IS NULL
1342/
1343UPDATE t_host_inventory SET location_lat='' WHERE location_lat IS NULL
1344/
1345UPDATE t_host_inventory SET location_lon='' WHERE location_lon IS NULL
1346/
1347UPDATE t_host_inventory SET notes='' WHERE notes IS NULL
1348/
1349UPDATE t_host_inventory SET chassis='' WHERE chassis IS NULL
1350/
1351UPDATE t_host_inventory SET model='' WHERE model IS NULL
1352/
1353UPDATE t_host_inventory SET hw_arch='' WHERE hw_arch IS NULL
1354/
1355UPDATE t_host_inventory SET vendor='' WHERE vendor IS NULL
1356/
1357UPDATE t_host_inventory SET contract_number='' WHERE contract_number IS NULL
1358/
1359UPDATE t_host_inventory SET installer_name='' WHERE installer_name IS NULL
1360/
1361UPDATE t_host_inventory SET deployment_status='' WHERE deployment_status IS NULL
1362/
1363UPDATE t_host_inventory SET url_a='' WHERE url_a IS NULL
1364/
1365UPDATE t_host_inventory SET url_b='' WHERE url_b IS NULL
1366/
1367UPDATE t_host_inventory SET url_c='' WHERE url_c IS NULL
1368/
1369UPDATE t_host_inventory SET host_networks='' WHERE host_networks IS NULL
1370/
1371UPDATE t_host_inventory SET host_netmask='' WHERE host_netmask IS NULL
1372/
1373UPDATE t_host_inventory SET host_router='' WHERE host_router IS NULL
1374/
1375UPDATE t_host_inventory SET oob_ip='' WHERE oob_ip IS NULL
1376/
1377UPDATE t_host_inventory SET oob_netmask='' WHERE oob_netmask IS NULL
1378/
1379UPDATE t_host_inventory SET oob_router='' WHERE oob_router IS NULL
1380/
1381UPDATE t_host_inventory SET date_hw_purchase='' WHERE date_hw_purchase IS NULL
1382/
1383UPDATE t_host_inventory SET date_hw_install='' WHERE date_hw_install IS NULL
1384/
1385UPDATE t_host_inventory SET date_hw_expiry='' WHERE date_hw_expiry IS NULL
1386/
1387UPDATE t_host_inventory SET date_hw_decomm='' WHERE date_hw_decomm IS NULL
1388/
1389UPDATE t_host_inventory SET site_address_a='' WHERE site_address_a IS NULL
1390/
1391UPDATE t_host_inventory SET site_address_b='' WHERE site_address_b IS NULL
1392/
1393UPDATE t_host_inventory SET site_address_c='' WHERE site_address_c IS NULL
1394/
1395UPDATE t_host_inventory SET site_city='' WHERE site_city IS NULL
1396/
1397UPDATE t_host_inventory SET site_state='' WHERE site_state IS NULL
1398/
1399UPDATE t_host_inventory SET site_country='' WHERE site_country IS NULL
1400/
1401UPDATE t_host_inventory SET site_zip='' WHERE site_zip IS NULL
1402/
1403UPDATE t_host_inventory SET site_rack='' WHERE site_rack IS NULL
1404/
1405UPDATE t_host_inventory SET site_notes='' WHERE site_notes IS NULL
1406/
1407UPDATE t_host_inventory SET poc_1_name='' WHERE poc_1_name IS NULL
1408/
1409UPDATE t_host_inventory SET poc_1_email='' WHERE poc_1_email IS NULL
1410/
1411UPDATE t_host_inventory SET poc_1_phone_a='' WHERE poc_1_phone_a IS NULL
1412/
1413UPDATE t_host_inventory SET poc_1_phone_b='' WHERE poc_1_phone_b IS NULL
1414/
1415UPDATE t_host_inventory SET poc_1_cell='' WHERE poc_1_cell IS NULL
1416/
1417UPDATE t_host_inventory SET poc_1_screen='' WHERE poc_1_screen IS NULL
1418/
1419UPDATE t_host_inventory SET poc_1_notes='' WHERE poc_1_notes IS NULL
1420/
1421UPDATE t_host_inventory SET poc_2_name='' WHERE poc_2_name IS NULL
1422/
1423UPDATE t_host_inventory SET poc_2_email='' WHERE poc_2_email IS NULL
1424/
1425UPDATE t_host_inventory SET poc_2_phone_a='' WHERE poc_2_phone_a IS NULL
1426/
1427UPDATE t_host_inventory SET poc_2_phone_b='' WHERE poc_2_phone_b IS NULL
1428/
1429UPDATE t_host_inventory SET poc_2_cell='' WHERE poc_2_cell IS NULL
1430/
1431UPDATE t_host_inventory SET poc_2_screen='' WHERE poc_2_screen IS NULL
1432/
1433UPDATE t_host_inventory SET poc_2_notes='' WHERE poc_2_notes IS NULL
1434/
1435
1436-- merge notes field
1437UPDATE t_host_inventory SET notes_ext='' WHERE notes_ext IS NULL
1438/
1439UPDATE t_host_inventory SET notes=notes||CHR(13)||CHR(10)||notes_ext WHERE notes<>'' AND notes_ext<>''
1440/
1441UPDATE t_host_inventory SET notes=notes_ext WHERE notes=''
1442/
1443ALTER TABLE t_host_inventory DROP COLUMN notes_ext
1444/
1445REORG TABLE t_host_inventory
1446/
1447
1448-- copy data from temporary table
1449INSERT INTO host_inventory SELECT * FROM t_host_inventory
1450/
1451
1452DROP TABLE t_host_inventory
1453/
1454DROP TABLE hosts_profiles
1455/
1456DROP TABLE hosts_profiles_ext
1457/
1458
1459DELETE FROM ids WHERE table_name IN ('hosts_profiles', 'hosts_profiles_ext')
1460/
1461ALTER TABLE hostmacro ALTER COLUMN hostmacroid SET WITH DEFAULT NULL
1462/
1463REORG TABLE hostmacro
1464/
1465ALTER TABLE hostmacro ALTER COLUMN hostid SET WITH DEFAULT NULL
1466/
1467REORG TABLE hostmacro
1468/
1469DELETE FROM hostmacro WHERE NOT hostid IN (SELECT hostid FROM hosts)
1470/
1471-- remove duplicates to allow unique index
1472DELETE FROM hostmacro
1473	WHERE hostmacroid IN (
1474		SELECT hm1.hostmacroid
1475		FROM hostmacro hm1
1476		LEFT OUTER JOIN (
1477			SELECT MIN(hm2.hostmacroid) AS hostmacroid
1478			FROM hostmacro hm2
1479			GROUP BY hm2.hostid,hm2.macro
1480		) keep_rows ON
1481			hm1.hostmacroid=keep_rows.hostmacroid
1482		WHERE keep_rows.hostmacroid IS NULL
1483	)
1484/
1485DROP INDEX hostmacro_1
1486/
1487CREATE UNIQUE INDEX hostmacro_1 ON hostmacro (hostid,macro)
1488/
1489ALTER TABLE hostmacro ADD CONSTRAINT c_hostmacro_1 FOREIGN KEY (hostid) REFERENCES hosts (hostid) ON DELETE CASCADE
1490/
1491ALTER TABLE hosts_groups ALTER COLUMN hostgroupid SET WITH DEFAULT NULL
1492/
1493REORG TABLE hosts_groups
1494/
1495ALTER TABLE hosts_groups ALTER COLUMN hostid SET WITH DEFAULT NULL
1496/
1497REORG TABLE hosts_groups
1498/
1499ALTER TABLE hosts_groups ALTER COLUMN groupid SET WITH DEFAULT NULL
1500/
1501REORG TABLE hosts_groups
1502/
1503DELETE FROM hosts_groups WHERE NOT hostid IN (SELECT hostid FROM hosts)
1504/
1505DELETE FROM hosts_groups WHERE NOT groupid IN (SELECT groupid FROM groups)
1506/
1507-- remove duplicates to allow unique index
1508DELETE FROM hosts_groups
1509	WHERE hostgroupid IN (
1510		SELECT hg1.hostgroupid
1511		FROM hosts_groups hg1
1512		LEFT OUTER JOIN (
1513			SELECT MIN(hg2.hostgroupid) AS hostgroupid
1514			FROM hosts_groups hg2
1515			GROUP BY hostid,groupid
1516		) keep_rows ON
1517			hg1.hostgroupid=keep_rows.hostgroupid
1518		WHERE keep_rows.hostgroupid IS NULL
1519	)
1520/
1521DROP INDEX hosts_groups_1
1522/
1523CREATE UNIQUE INDEX hosts_groups_1 ON hosts_groups (hostid,groupid)
1524/
1525ALTER TABLE hosts_groups ADD CONSTRAINT c_hosts_groups_1 FOREIGN KEY (hostid) REFERENCES hosts (hostid) ON DELETE CASCADE
1526/
1527ALTER TABLE hosts_groups ADD CONSTRAINT c_hosts_groups_2 FOREIGN KEY (groupid) REFERENCES groups (groupid) ON DELETE CASCADE
1528/
1529-- See host_inventory.sql
1530-- See host_inventory.sql
1531---- Patching table `interfaces`
1532
1533CREATE TABLE interface (
1534	interfaceid              bigint                                    NOT NULL,
1535	hostid                   bigint                                    NOT NULL,
1536	main                     integer         WITH DEFAULT '0'          NOT NULL,
1537	type                     integer         WITH DEFAULT '0'          NOT NULL,
1538	useip                    integer         WITH DEFAULT '1'          NOT NULL,
1539	ip                       varchar(39)     WITH DEFAULT '127.0.0.1'  NOT NULL,
1540	dns                      varchar(64)     WITH DEFAULT ''           NOT NULL,
1541	port                     varchar(64)     WITH DEFAULT '10050'      NOT NULL,
1542	PRIMARY KEY (interfaceid)
1543)
1544/
1545CREATE INDEX interface_1 on interface (hostid,type)
1546/
1547CREATE INDEX interface_2 on interface (ip,dns)
1548/
1549ALTER TABLE interface ADD CONSTRAINT c_interface_1 FOREIGN KEY (hostid) REFERENCES hosts (hostid) ON DELETE CASCADE
1550/
1551
1552-- Passive proxy interface
1553INSERT INTO interface (interfaceid,hostid,main,type,ip,dns,useip,port)
1554	(SELECT (hostid - ((hostid / 100000000000)*100000000000)) * 3 + ((hostid / 100000000000)*100000000000),
1555		hostid,1,0,ip,dns,useip,port
1556	FROM hosts
1557	WHERE status IN (6))
1558/
1559
1560-- Zabbix Agent interface
1561INSERT INTO interface (interfaceid,hostid,main,type,ip,dns,useip,port)
1562	(SELECT (hostid - ((hostid / 100000000000)*100000000000)) * 3 + ((hostid / 100000000000)*100000000000),
1563		hostid,1,1,ip,dns,useip,port
1564	FROM hosts
1565	WHERE status IN (0,1))
1566/
1567
1568-- SNMP interface
1569INSERT INTO interface (interfaceid,hostid,main,type,ip,dns,useip,port)
1570	(SELECT (hostid - ((hostid / 100000000000)*100000000000)) * 3 + ((hostid / 100000000000)*100000000000) + 1,
1571		hostid,1,2,ip,dns,useip,'161'
1572	FROM hosts
1573	WHERE status IN (0,1)
1574		AND EXISTS (SELECT DISTINCT i.hostid FROM items i WHERE i.hostid=hosts.hostid and i.type IN (1,4,6)))
1575/
1576
1577-- IPMI interface
1578INSERT INTO interface (interfaceid,hostid,main,type,ip,dns,useip,port)
1579	(SELECT (hostid - ((hostid / 100000000000)*100000000000)) * 3 + ((hostid / 100000000000)*100000000000) + 2,
1580		hostid,1,3,'',ipmi_ip,0,ipmi_port
1581	FROM hosts
1582	WHERE status IN (0,1) AND useipmi=1)
1583/
1584
1585---- Patching table `items`
1586ALTER TABLE items RENAME COLUMN description TO name
1587/
1588REORG TABLE items
1589/
1590ALTER TABLE items ALTER COLUMN itemid SET WITH DEFAULT NULL
1591/
1592REORG TABLE items
1593/
1594ALTER TABLE items ALTER COLUMN hostid SET WITH DEFAULT NULL
1595/
1596REORG TABLE items
1597/
1598ALTER TABLE items ALTER COLUMN units SET DATA TYPE varchar(255)
1599/
1600REORG TABLE items
1601/
1602ALTER TABLE items ALTER COLUMN lastlogsize SET DATA TYPE bigint
1603/
1604REORG TABLE items
1605/
1606ALTER TABLE items ALTER COLUMN templateid SET WITH DEFAULT NULL
1607/
1608REORG TABLE items
1609/
1610ALTER TABLE items ALTER COLUMN templateid DROP NOT NULL
1611/
1612REORG TABLE items
1613/
1614ALTER TABLE items ALTER COLUMN valuemapid SET WITH DEFAULT NULL
1615/
1616REORG TABLE items
1617/
1618ALTER TABLE items ALTER COLUMN valuemapid DROP NOT NULL
1619/
1620REORG TABLE items
1621/
1622ALTER TABLE items ADD lastns integer NULL
1623/
1624REORG TABLE items
1625/
1626ALTER TABLE items ADD flags integer WITH DEFAULT '0' NOT NULL
1627/
1628REORG TABLE items
1629/
1630ALTER TABLE items ADD filter varchar(255) WITH DEFAULT '' NOT NULL
1631/
1632REORG TABLE items
1633/
1634ALTER TABLE items ADD interfaceid bigint NULL
1635/
1636REORG TABLE items
1637/
1638ALTER TABLE items ADD port varchar(64) WITH DEFAULT '' NOT NULL
1639/
1640REORG TABLE items
1641/
1642ALTER TABLE items ADD description varchar(2048) WITH DEFAULT '' NOT NULL
1643/
1644REORG TABLE items
1645/
1646ALTER TABLE items ADD inventory_link integer WITH DEFAULT '0' NOT NULL
1647/
1648REORG TABLE items
1649/
1650ALTER TABLE items ADD lifetime varchar(64) WITH DEFAULT '30' NOT NULL
1651/
1652REORG TABLE items
1653/
1654UPDATE items
1655	SET templateid=NULL
1656	WHERE templateid=0
1657		OR templateid NOT IN (SELECT itemid FROM items)
1658/
1659UPDATE items
1660	SET valuemapid=NULL
1661	WHERE valuemapid=0
1662		OR valuemapid NOT IN (SELECT valuemapid from valuemaps)
1663/
1664UPDATE items SET units='Bps' WHERE type=9 AND units='bps'
1665/
1666DELETE FROM items WHERE hostid NOT IN (SELECT hostid FROM hosts)
1667/
1668CREATE INDEX items_5 on items (valuemapid)
1669/
1670ALTER TABLE items ADD CONSTRAINT c_items_1 FOREIGN KEY (hostid) REFERENCES hosts (hostid) ON DELETE CASCADE
1671/
1672ALTER TABLE items ADD CONSTRAINT c_items_2 FOREIGN KEY (templateid) REFERENCES items (itemid) ON DELETE CASCADE
1673/
1674ALTER TABLE items ADD CONSTRAINT c_items_3 FOREIGN KEY (valuemapid) REFERENCES valuemaps (valuemapid)
1675/
1676ALTER TABLE items ADD CONSTRAINT c_items_4 FOREIGN KEY (interfaceid) REFERENCES interface (interfaceid)
1677/
1678
1679UPDATE items SET port=snmp_port
1680/
1681ALTER TABLE items DROP COLUMN snmp_port
1682/
1683REORG TABLE items
1684/
1685
1686-- host interface for non IPMI, SNMP and non templated items
1687UPDATE items
1688	SET interfaceid=(SELECT interfaceid FROM interface WHERE hostid=items.hostid AND main=1 AND type=1)
1689	WHERE EXISTS (SELECT hostid FROM hosts WHERE hosts.hostid=items.hostid AND hosts.status IN (0,1))
1690		AND type IN (0,3,10,11,13,14)	-- ZABBIX, SIMPLE, EXTERNAL, DB_MONITOR, SSH, TELNET
1691/
1692
1693
1694-- host interface for SNMP and non templated items
1695UPDATE items
1696	SET interfaceid=(SELECT interfaceid FROM interface WHERE hostid=items.hostid AND main=1 AND type=2)
1697	WHERE EXISTS (SELECT hostid FROM hosts WHERE hosts.hostid=items.hostid AND hosts.status IN (0,1))
1698		AND type IN (1,4,6)		-- SNMPv1, SNMPv2c, SNMPv3
1699/
1700
1701-- host interface for IPMI and non templated items
1702UPDATE items
1703	SET interfaceid=(SELECT interfaceid FROM interface WHERE hostid=items.hostid AND main=1 AND type=3)
1704	WHERE EXISTS(SELECT hostid FROM hosts WHERE hosts.hostid=items.hostid AND hosts.status IN (0,1))
1705		AND type IN (12)		-- IPMI
1706/
1707
1708-- clear port number for non SNMP items
1709UPDATE items
1710	SET port=''
1711	WHERE type NOT IN (1,4,6)		-- SNMPv1, SNMPv2c, SNMPv3
1712/
1713
1714-- add a first parameter {HOST.CONN} for external checks
1715
1716UPDATE items
1717	SET key_ = SUBSTR(key_, 1, INSTR(key_, '[')) || '"{HOST.CONN}",' || SUBSTR(key_, INSTR(key_, '[') + 1)
1718	WHERE type IN (10)	-- EXTERNAL
1719		AND INSTR(key_, '[') <> 0
1720/
1721
1722UPDATE items
1723	SET key_ = key_ || '["{HOST.CONN}"]'
1724	WHERE type IN (10)	-- EXTERNAL
1725		AND INSTR(key_, '[') = 0
1726/
1727
1728-- convert simple check keys to a new form
1729
1730CREATE TABLE t_keys (
1731	hostid bigint NOT NULL,
1732	key_ varchar(255) NOT NULL,
1733	PRIMARY KEY (hostid, key_)
1734)
1735/
1736
1737CREATE FUNCTION zbx_convert_simple_checks(v_itemid bigint, v_hostid bigint, v_key varchar(255))
1738RETURNS varchar(255)
1739LANGUAGE SQL
1740BEGIN
1741	DECLARE new_key varchar(255);
1742	DECLARE pos integer;
1743
1744	SET new_key = 'net.tcp.service';
1745	SET pos = INSTR(v_key, '_perf');
1746	IF 0 <> pos THEN
1747		SET new_key = new_key || '.perf';
1748		SET v_key = SUBSTR(v_key, 1, pos - 1) || SUBSTR(v_key, pos + 5);
1749	END IF;
1750	SET new_key = new_key || '[';
1751	SET pos = INSTR(v_key, ',');
1752	IF 0 <> pos THEN
1753		SET new_key = new_key || '"' || SUBSTR(v_key, 1, pos - 1) || '"';
1754		SET v_key = SUBSTR(v_key, pos + 1);
1755	ELSE
1756		SET new_key = new_key || '"' || v_key || '"';
1757		SET v_key = '';
1758	END IF;
1759	IF 0 <> LENGTH(v_key) THEN
1760		SET new_key = new_key || ',,"' || v_key || '"';
1761	END IF;
1762
1763	WHILE 0 != (SELECT COUNT(*) FROM t_keys WHERE hostid = v_hostid AND key_ = new_key || ']') DO
1764		SET new_key = new_key || ' ';
1765	END WHILE;
1766
1767	RETURN new_key || ']';
1768END
1769/
1770
1771INSERT INTO t_keys
1772	SELECT hostid, key_
1773		FROM items
1774		WHERE key_ LIKE 'net.tcp.service[%'
1775/
1776
1777UPDATE items SET key_ = zbx_convert_simple_checks(itemid, hostid, key_)
1778	WHERE type IN (3)	-- SIMPLE
1779		AND (key_ IN ('ftp','http','imap','ldap','nntp','ntp','pop','smtp','ssh',
1780			'ftp_perf','http_perf', 'imap_perf','ldap_perf','nntp_perf','ntp_perf','pop_perf',
1781			'smtp_perf','ssh_perf')
1782			OR key_ LIKE 'ftp,%' OR key_ LIKE 'http,%' OR key_ LIKE 'imap,%' OR key_ LIKE 'ldap,%'
1783			OR key_ LIKE 'nntp,%' OR key_ LIKE 'ntp,%' OR key_ LIKE 'pop,%' OR key_ LIKE 'smtp,%'
1784			OR key_ LIKE 'ssh,%' OR key_ LIKE 'tcp,%'
1785			OR key_ LIKE 'ftp_perf,%' OR key_ LIKE 'http_perf,%' OR key_ LIKE 'imap_perf,%'
1786			OR key_ LIKE 'ldap_perf,%' OR key_ LIKE 'nntp_perf,%' OR key_ LIKE 'ntp_perf,%'
1787			OR key_ LIKE 'pop_perf,%' OR key_ LIKE 'smtp_perf,%' OR key_ LIKE 'ssh_perf,%'
1788			OR key_ LIKE 'tcp_perf,%')
1789/
1790
1791DROP TABLE t_keys
1792/
1793
1794DROP FUNCTION zbx_convert_simple_checks
1795/
1796
1797ROLLBACK
1798/
1799
1800-- adding web.test.error[<web check>] items
1801
1802CREATE PROCEDURE zbx_add_web_test_error()
1803LANGUAGE SQL
1804BEGIN
1805	DECLARE httptest_nodeid INTEGER;
1806	DECLARE init_nodeid BIGINT;
1807	DECLARE min_nodeid BIGINT;
1808	DECLARE max_nodeid BIGINT;
1809
1810	DECLARE max_itemid BIGINT;
1811	DECLARE max_httptestitemid BIGINT;
1812	DECLARE max_itemappid BIGINT;
1813
1814	DECLARE node_done integer DEFAULT 0;
1815	DECLARE node_not_found CONDITION FOR SQLSTATE '02000';
1816	DECLARE node_cursor CURSOR FOR (SELECT DISTINCT TRUNC(httptestid / 100000000000000) FROM httptest);
1817	DECLARE CONTINUE HANDLER FOR node_not_found SET node_done = 1;
1818
1819	OPEN node_cursor;
1820
1821	node_loop: LOOP
1822		FETCH node_cursor INTO httptest_nodeid;
1823
1824		IF node_done = 1 THEN
1825			LEAVE node_loop;
1826		END IF;
1827
1828		SET min_nodeid = httptest_nodeid * 100000000000000;
1829		SET max_nodeid = min_nodeid + 99999999999999;
1830		SET init_nodeid = (httptest_nodeid * 1000 + httptest_nodeid) * 100000000000;
1831
1832		SELECT MAX(itemid) INTO max_itemid FROM items WHERE itemid BETWEEN min_nodeid AND max_nodeid;
1833		IF max_itemid IS NULL THEN
1834			SET max_itemid = init_nodeid;
1835		END IF;
1836		EXECUTE IMMEDIATE 'CREATE SEQUENCE items_seq AS BIGINT MINVALUE ' || (max_itemid + 1);
1837
1838		SELECT MAX(httptestitemid) INTO max_httptestitemid FROM httptestitem WHERE httptestitemid BETWEEN min_nodeid AND max_nodeid;
1839		IF max_httptestitemid IS NULL THEN
1840			SET max_httptestitemid = init_nodeid;
1841		END IF;
1842		EXECUTE IMMEDIATE 'CREATE SEQUENCE httptestitem_seq AS BIGINT MINVALUE ' || (max_httptestitemid + 1);
1843
1844		SELECT MAX(itemappid) INTO max_itemappid FROM items_applications WHERE itemappid BETWEEN min_nodeid AND max_nodeid;
1845		IF max_itemappid IS NULL THEN
1846			SET max_itemappid = init_nodeid;
1847		END IF;
1848		EXECUTE IMMEDIATE 'CREATE SEQUENCE items_applications_seq AS BIGINT MINVALUE ' || (max_itemappid + 1);
1849
1850		EXECUTE IMMEDIATE 'INSERT INTO items (itemid, hostid, type, name, key_, value_type, units, delay, history, trends, status)
1851			SELECT (NEXT VALUE FOR items_seq), hostid, type, ''Last error message of scenario ''''$1'''''', ''web.test.error'' || SUBSTR(key_, POSSTR(key_, ''['')), 1, '''', delay, history, 0, status
1852			FROM items
1853			WHERE type = 9
1854				AND key_ LIKE ''web.test.fail%''
1855				AND itemid BETWEEN ' || min_nodeid ||' AND ' || max_nodeid;
1856
1857		EXECUTE IMMEDIATE 'INSERT INTO httptestitem (httptestitemid, httptestid, itemid, type)
1858			SELECT (NEXT VALUE FOR httptestitem_seq), ht.httptestid, i.itemid, 4
1859			FROM httptest ht,applications a,items i
1860			WHERE ht.applicationid=a.applicationid
1861				AND a.hostid=i.hostid
1862				AND ''web.test.error['' || ht.name || '']'' = i.key_
1863				AND itemid BETWEEN ' || min_nodeid ||' AND ' || max_nodeid;
1864
1865		EXECUTE IMMEDIATE 'INSERT INTO items_applications (itemappid, applicationid, itemid)
1866			SELECT (NEXT VALUE FOR items_applications_seq), ht.applicationid, hti.itemid
1867			FROM httptest ht, httptestitem hti
1868			WHERE ht.httptestid = hti.httptestid
1869				AND hti.type = 4
1870				AND itemid BETWEEN ' || min_nodeid ||' AND ' || max_nodeid;
1871
1872		EXECUTE IMMEDIATE 'DROP SEQUENCE items_seq';
1873		EXECUTE IMMEDIATE 'DROP SEQUENCE httptestitem_seq';
1874		EXECUTE IMMEDIATE 'DROP SEQUENCE items_applications_seq';
1875
1876	END LOOP node_loop;
1877
1878	CLOSE node_cursor;
1879
1880END
1881/
1882
1883CALL zbx_add_web_test_error
1884/
1885
1886DROP PROCEDURE zbx_add_web_test_error
1887/
1888
1889DELETE FROM ids WHERE table_name IN ('items', 'httptestitem', 'items_applications')
1890/
1891
1892---- Patching table `hosts`
1893
1894ALTER TABLE hosts ALTER COLUMN hostid SET WITH DEFAULT NULL
1895/
1896REORG TABLE hosts
1897/
1898ALTER TABLE hosts ALTER COLUMN proxy_hostid SET WITH DEFAULT NULL
1899/
1900REORG TABLE hosts
1901/
1902ALTER TABLE hosts ALTER COLUMN proxy_hostid DROP NOT NULL
1903/
1904REORG TABLE hosts
1905/
1906ALTER TABLE hosts ALTER COLUMN maintenanceid SET WITH DEFAULT NULL
1907/
1908REORG TABLE hosts
1909/
1910ALTER TABLE hosts ALTER COLUMN maintenanceid DROP NOT NULL
1911/
1912REORG TABLE hosts
1913/
1914ALTER TABLE hosts DROP COLUMN ip
1915/
1916REORG TABLE hosts
1917/
1918ALTER TABLE hosts DROP COLUMN dns
1919/
1920REORG TABLE hosts
1921/
1922ALTER TABLE hosts DROP COLUMN port
1923/
1924REORG TABLE hosts
1925/
1926ALTER TABLE hosts DROP COLUMN useip
1927/
1928REORG TABLE hosts
1929/
1930ALTER TABLE hosts DROP COLUMN useipmi
1931/
1932REORG TABLE hosts
1933/
1934ALTER TABLE hosts DROP COLUMN ipmi_ip
1935/
1936REORG TABLE hosts
1937/
1938ALTER TABLE hosts DROP COLUMN ipmi_port
1939/
1940REORG TABLE hosts
1941/
1942ALTER TABLE hosts DROP COLUMN inbytes
1943/
1944REORG TABLE hosts
1945/
1946ALTER TABLE hosts DROP COLUMN outbytes
1947/
1948REORG TABLE hosts
1949/
1950ALTER TABLE hosts ADD jmx_disable_until integer WITH DEFAULT '0' NOT NULL
1951/
1952REORG TABLE hosts
1953/
1954ALTER TABLE hosts ADD jmx_available integer WITH DEFAULT '0' NOT NULL
1955/
1956REORG TABLE hosts
1957/
1958ALTER TABLE hosts ADD jmx_errors_from integer WITH DEFAULT '0' NOT NULL
1959/
1960REORG TABLE hosts
1961/
1962ALTER TABLE hosts ADD jmx_error varchar(128) WITH DEFAULT '' NOT NULL
1963/
1964REORG TABLE hosts
1965/
1966ALTER TABLE hosts ADD name varchar(64) WITH DEFAULT '' NOT NULL
1967/
1968REORG TABLE hosts
1969/
1970UPDATE hosts
1971	SET proxy_hostid=NULL
1972	WHERE proxy_hostid=0
1973		OR NOT EXISTS (SELECT 1 FROM hosts h WHERE h.hostid=hosts.proxy_hostid)
1974/
1975UPDATE hosts
1976	SET maintenanceid=NULL,
1977		maintenance_status=0,
1978		maintenance_type=0,
1979		maintenance_from=0
1980	WHERE maintenanceid=0
1981		OR NOT EXISTS (SELECT 1 FROM maintenances m WHERE m.maintenanceid=hosts.maintenanceid)
1982/
1983UPDATE hosts SET name=host WHERE status in (0,1,3)
1984/
1985ALTER TABLE hosts ADD CONSTRAINT c_hosts_1 FOREIGN KEY (proxy_hostid) REFERENCES hosts (hostid)
1986/
1987ALTER TABLE hosts ADD CONSTRAINT c_hosts_2 FOREIGN KEY (maintenanceid) REFERENCES maintenances (maintenanceid)
1988/
1989DELETE FROM hosts_templates WHERE hostid NOT IN (SELECT hostid FROM hosts)
1990/
1991DELETE FROM hosts_templates WHERE templateid NOT IN (SELECT hostid FROM hosts)
1992/
1993
1994CREATE TABLE t_hosts_templates (
1995	hosttemplateid           bigint                                    NOT NULL,
1996	hostid                   bigint                                    NOT NULL,
1997	templateid               bigint                                    NOT NULL
1998)
1999/
2000
2001INSERT INTO t_hosts_templates (SELECT hosttemplateid, hostid, templateid FROM hosts_templates)
2002/
2003
2004DROP TABLE hosts_templates
2005/
2006
2007CREATE TABLE hosts_templates (
2008	hosttemplateid           bigint                                    NOT NULL,
2009	hostid                   bigint                                    NOT NULL,
2010	templateid               bigint                                    NOT NULL,
2011	PRIMARY KEY (hosttemplateid)
2012)
2013/
2014CREATE UNIQUE INDEX hosts_templates_1 ON hosts_templates (hostid,templateid)
2015/
2016CREATE INDEX hosts_templates_2 ON hosts_templates (templateid)
2017/
2018ALTER TABLE hosts_templates ADD CONSTRAINT c_hosts_templates_1 FOREIGN KEY (hostid) REFERENCES hosts (hostid) ON DELETE CASCADE
2019/
2020ALTER TABLE hosts_templates ADD CONSTRAINT c_hosts_templates_2 FOREIGN KEY (templateid) REFERENCES hosts (hostid) ON DELETE CASCADE
2021/
2022
2023INSERT INTO hosts_templates (SELECT hosttemplateid, hostid, templateid FROM t_hosts_templates)
2024/
2025
2026DROP TABLE t_hosts_templates
2027/
2028ALTER TABLE housekeeper ALTER COLUMN housekeeperid SET WITH DEFAULT NULL
2029/
2030REORG TABLE housekeeper
2031/
2032ALTER TABLE housekeeper ALTER COLUMN value SET WITH DEFAULT NULL
2033/
2034REORG TABLE housekeeper
2035/
2036ALTER TABLE httpstepitem ALTER COLUMN httpstepitemid SET WITH DEFAULT NULL
2037/
2038REORG TABLE httpstepitem
2039/
2040ALTER TABLE httpstepitem ALTER COLUMN httpstepid SET WITH DEFAULT NULL
2041/
2042REORG TABLE httpstepitem
2043/
2044ALTER TABLE httpstepitem ALTER COLUMN itemid SET WITH DEFAULT NULL
2045/
2046REORG TABLE httpstepitem
2047/
2048DELETE FROM httpstepitem WHERE NOT httpstepid IN (SELECT httpstepid FROM httpstep)
2049/
2050DELETE FROM httpstepitem WHERE NOT itemid IN (SELECT itemid FROM items)
2051/
2052ALTER TABLE httpstepitem ADD CONSTRAINT c_httpstepitem_1 FOREIGN KEY (httpstepid) REFERENCES httpstep (httpstepid) ON DELETE CASCADE
2053/
2054ALTER TABLE httpstepitem ADD CONSTRAINT c_httpstepitem_2 FOREIGN KEY (itemid) REFERENCES items (itemid) ON DELETE CASCADE
2055/
2056ALTER TABLE httpstep ALTER COLUMN httpstepid SET WITH DEFAULT NULL
2057/
2058REORG TABLE httpstep
2059/
2060ALTER TABLE httpstep ALTER COLUMN httptestid SET WITH DEFAULT NULL
2061/
2062REORG TABLE httpstep
2063/
2064DELETE FROM httpstep WHERE NOT httptestid IN (SELECT httptestid FROM httptest)
2065/
2066ALTER TABLE httpstep ADD CONSTRAINT c_httpstep_1 FOREIGN KEY (httptestid) REFERENCES httptest (httptestid) ON DELETE CASCADE
2067/
2068ALTER TABLE httptestitem ALTER COLUMN httptestitemid SET WITH DEFAULT NULL
2069/
2070REORG TABLE httptestitem
2071/
2072ALTER TABLE httptestitem ALTER COLUMN httptestid SET WITH DEFAULT NULL
2073/
2074REORG TABLE httptestitem
2075/
2076ALTER TABLE httptestitem ALTER COLUMN itemid SET WITH DEFAULT NULL
2077/
2078REORG TABLE httptestitem
2079/
2080DELETE FROM httptestitem WHERE NOT httptestid IN (SELECT httptestid FROM httptest)
2081/
2082DELETE FROM httptestitem WHERE NOT itemid IN (SELECT itemid FROM items)
2083/
2084ALTER TABLE httptestitem ADD CONSTRAINT c_httptestitem_1 FOREIGN KEY (httptestid) REFERENCES httptest (httptestid) ON DELETE CASCADE
2085/
2086ALTER TABLE httptestitem ADD CONSTRAINT c_httptestitem_2 FOREIGN KEY (itemid) REFERENCES items (itemid) ON DELETE CASCADE
2087/
2088ALTER TABLE httptest ALTER COLUMN httptestid SET WITH DEFAULT NULL
2089/
2090REORG TABLE httptest
2091/
2092ALTER TABLE httptest ALTER COLUMN applicationid SET WITH DEFAULT NULL
2093/
2094REORG TABLE httptest
2095/
2096ALTER TABLE httptest DROP COLUMN lastcheck
2097/
2098REORG TABLE httptest
2099/
2100ALTER TABLE httptest DROP COLUMN curstate
2101/
2102REORG TABLE httptest
2103/
2104ALTER TABLE httptest DROP COLUMN curstep
2105/
2106REORG TABLE httptest
2107/
2108ALTER TABLE httptest DROP COLUMN lastfailedstep
2109/
2110REORG TABLE httptest
2111/
2112ALTER TABLE httptest DROP COLUMN time
2113/
2114REORG TABLE httptest
2115/
2116ALTER TABLE httptest DROP COLUMN error
2117/
2118REORG TABLE httptest
2119/
2120DELETE FROM httptest WHERE applicationid NOT IN (SELECT applicationid FROM applications)
2121/
2122ALTER TABLE httptest ADD CONSTRAINT c_httptest_1 FOREIGN KEY (applicationid) REFERENCES applications (applicationid) ON DELETE CASCADE
2123/
2124-- See icon_map.sql
2125CREATE TABLE icon_map (
2126	iconmapid                bigint                                    NOT NULL,
2127	name                     varchar(64)     WITH DEFAULT ''           NOT NULL,
2128	default_iconid           bigint                                    NOT NULL,
2129	PRIMARY KEY (iconmapid)
2130)
2131/
2132CREATE INDEX icon_map_1 ON icon_map (name)
2133/
2134ALTER TABLE icon_map ADD CONSTRAINT c_icon_map_1 FOREIGN KEY (default_iconid) REFERENCES images (imageid)
2135/
2136
2137CREATE TABLE icon_mapping (
2138	iconmappingid            bigint                                    NOT NULL,
2139	iconmapid                bigint                                    NOT NULL,
2140	iconid                   bigint                                    NOT NULL,
2141	inventory_link           integer         WITH DEFAULT '0'          NOT NULL,
2142	expression               varchar(64)     WITH DEFAULT ''           NOT NULL,
2143	sortorder                integer         WITH DEFAULT '0'          NOT NULL,
2144	PRIMARY KEY (iconmappingid)
2145)
2146/
2147CREATE INDEX icon_mapping_1 ON icon_mapping (iconmapid)
2148/
2149ALTER TABLE icon_mapping ADD CONSTRAINT c_icon_mapping_1 FOREIGN KEY (iconmapid) REFERENCES icon_map (iconmapid) ON DELETE CASCADE
2150/
2151ALTER TABLE icon_mapping ADD CONSTRAINT c_icon_mapping_2 FOREIGN KEY (iconid) REFERENCES images (imageid)
2152/
2153ALTER TABLE ids ALTER COLUMN nodeid SET WITH DEFAULT NULL
2154/
2155REORG TABLE ids
2156/
2157ALTER TABLE ids ALTER COLUMN nextid SET WITH DEFAULT NULL
2158/
2159REORG TABLE ids
2160/
2161ALTER TABLE images ALTER COLUMN imageid SET WITH DEFAULT NULL
2162/
2163REORG TABLE images
2164/
2165CREATE TABLE item_discovery (
2166	itemdiscoveryid          bigint                                    NOT NULL,
2167	itemid                   bigint                                    NOT NULL,
2168	parent_itemid            bigint                                    NOT NULL,
2169	key_                     varchar(255)    WITH DEFAULT ''           NOT NULL,
2170	lastcheck                integer         WITH DEFAULT '0'          NOT NULL,
2171	ts_delete                integer         WITH DEFAULT '0'          NOT NULL,
2172	PRIMARY KEY (itemdiscoveryid)
2173)
2174/
2175CREATE UNIQUE INDEX item_discovery_1 on item_discovery (itemid,parent_itemid)
2176/
2177ALTER TABLE item_discovery ADD CONSTRAINT c_item_discovery_1 FOREIGN KEY (itemid) REFERENCES items (itemid) ON DELETE CASCADE
2178/
2179ALTER TABLE item_discovery ADD CONSTRAINT c_item_discovery_2 FOREIGN KEY (parent_itemid) REFERENCES items (itemid) ON DELETE CASCADE
2180/
2181ALTER TABLE items_applications ALTER COLUMN itemappid SET WITH DEFAULT NULL
2182/
2183REORG TABLE items_applications
2184/
2185ALTER TABLE items_applications ALTER COLUMN applicationid SET WITH DEFAULT NULL
2186/
2187REORG TABLE items_applications
2188/
2189ALTER TABLE items_applications ALTER COLUMN itemid SET WITH DEFAULT NULL
2190/
2191REORG TABLE items_applications
2192/
2193DROP INDEX items_applications_1
2194/
2195DELETE FROM items_applications WHERE applicationid NOT IN (SELECT applicationid FROM applications)
2196/
2197DELETE FROM items_applications WHERE itemid NOT IN (SELECT itemid FROM items)
2198/
2199CREATE UNIQUE INDEX items_applications_1 ON items_applications (applicationid,itemid)
2200/
2201ALTER TABLE items_applications ADD CONSTRAINT c_items_applications_1 FOREIGN KEY (applicationid) REFERENCES applications (applicationid) ON DELETE CASCADE
2202/
2203ALTER TABLE items_applications ADD CONSTRAINT c_items_applications_2 FOREIGN KEY (itemid) REFERENCES items (itemid) ON DELETE CASCADE
2204/
2205-- See hosts.sql
2206ALTER TABLE maintenances_groups ALTER COLUMN maintenance_groupid SET WITH DEFAULT NULL
2207/
2208REORG TABLE maintenances_groups
2209/
2210ALTER TABLE maintenances_groups ALTER COLUMN maintenanceid SET WITH DEFAULT NULL
2211/
2212REORG TABLE maintenances_groups
2213/
2214ALTER TABLE maintenances_groups ALTER COLUMN groupid SET WITH DEFAULT NULL
2215/
2216REORG TABLE maintenances_groups
2217/
2218DROP INDEX maintenances_groups_1
2219/
2220DELETE FROM maintenances_groups WHERE maintenanceid NOT IN (SELECT maintenanceid FROM maintenances)
2221/
2222DELETE FROM maintenances_groups WHERE groupid NOT IN (SELECT groupid FROM groups)
2223/
2224CREATE UNIQUE INDEX maintenances_groups_1 ON maintenances_groups (maintenanceid,groupid)
2225/
2226ALTER TABLE maintenances_groups ADD CONSTRAINT c_maintenances_groups_1 FOREIGN KEY (maintenanceid) REFERENCES maintenances (maintenanceid) ON DELETE CASCADE
2227/
2228ALTER TABLE maintenances_groups ADD CONSTRAINT c_maintenances_groups_2 FOREIGN KEY (groupid) REFERENCES groups (groupid) ON DELETE CASCADE
2229/
2230ALTER TABLE maintenances_hosts ALTER COLUMN maintenance_hostid SET WITH DEFAULT NULL
2231/
2232REORG TABLE maintenances_hosts
2233/
2234ALTER TABLE maintenances_hosts ALTER COLUMN maintenanceid SET WITH DEFAULT NULL
2235/
2236REORG TABLE maintenances_hosts
2237/
2238ALTER TABLE maintenances_hosts ALTER COLUMN hostid SET WITH DEFAULT NULL
2239/
2240REORG TABLE maintenances_hosts
2241/
2242DROP INDEX maintenances_hosts_1
2243/
2244DELETE FROM maintenances_hosts WHERE maintenanceid NOT IN (SELECT maintenanceid FROM maintenances)
2245/
2246DELETE FROM maintenances_hosts WHERE hostid NOT IN (SELECT hostid FROM hosts)
2247/
2248CREATE UNIQUE INDEX maintenances_hosts_1 ON maintenances_hosts (maintenanceid,hostid)
2249/
2250ALTER TABLE maintenances_hosts ADD CONSTRAINT c_maintenances_hosts_1 FOREIGN KEY (maintenanceid) REFERENCES maintenances (maintenanceid) ON DELETE CASCADE
2251/
2252ALTER TABLE maintenances_hosts ADD CONSTRAINT c_maintenances_hosts_2 FOREIGN KEY (hostid) REFERENCES hosts (hostid) ON DELETE CASCADE
2253/
2254ALTER TABLE maintenances ALTER COLUMN maintenanceid SET WITH DEFAULT NULL
2255/
2256REORG TABLE maintenances
2257/
2258ALTER TABLE maintenances_windows ALTER COLUMN maintenance_timeperiodid SET WITH DEFAULT NULL
2259/
2260REORG TABLE maintenances_windows
2261/
2262ALTER TABLE maintenances_windows ALTER COLUMN maintenanceid SET WITH DEFAULT NULL
2263/
2264REORG TABLE maintenances_windows
2265/
2266ALTER TABLE maintenances_windows ALTER COLUMN timeperiodid SET WITH DEFAULT NULL
2267/
2268REORG TABLE maintenances_windows
2269/
2270DROP INDEX maintenances_windows_1
2271/
2272DELETE FROM maintenances_windows WHERE maintenanceid NOT IN (SELECT maintenanceid FROM maintenances)
2273/
2274DELETE FROM maintenances_windows WHERE timeperiodid NOT IN (SELECT timeperiodid FROM timeperiods)
2275/
2276CREATE UNIQUE INDEX maintenances_windows_1 ON maintenances_windows (maintenanceid,timeperiodid)
2277/
2278ALTER TABLE maintenances_windows ADD CONSTRAINT c_maintenances_windows_1 FOREIGN KEY (maintenanceid) REFERENCES maintenances (maintenanceid) ON DELETE CASCADE
2279/
2280ALTER TABLE maintenances_windows ADD CONSTRAINT c_maintenances_windows_2 FOREIGN KEY (timeperiodid) REFERENCES timeperiods (timeperiodid) ON DELETE CASCADE
2281/
2282ALTER TABLE mappings ALTER COLUMN mappingid SET WITH DEFAULT NULL
2283/
2284REORG TABLE mappings
2285/
2286ALTER TABLE mappings ALTER COLUMN valuemapid SET WITH DEFAULT NULL
2287/
2288REORG TABLE mappings
2289/
2290DELETE FROM mappings WHERE NOT valuemapid IN (SELECT valuemapid FROM valuemaps)
2291/
2292ALTER TABLE mappings ADD CONSTRAINT c_mappings_1 FOREIGN KEY (valuemapid) REFERENCES valuemaps (valuemapid) ON DELETE CASCADE
2293/
2294ALTER TABLE media ALTER COLUMN mediaid SET WITH DEFAULT NULL
2295/
2296REORG TABLE media
2297/
2298ALTER TABLE media ALTER COLUMN userid SET WITH DEFAULT NULL
2299/
2300REORG TABLE media
2301/
2302ALTER TABLE media ALTER COLUMN mediatypeid SET WITH DEFAULT NULL
2303/
2304REORG TABLE media
2305/
2306ALTER TABLE media ALTER COLUMN period SET DEFAULT '1-7,00:00-24:00'
2307/
2308REORG TABLE media
2309/
2310DELETE FROM media WHERE userid NOT IN (SELECT userid FROM users)
2311/
2312DELETE FROM media WHERE mediatypeid NOT IN (SELECT mediatypeid FROM media_type)
2313/
2314ALTER TABLE media ADD CONSTRAINT c_media_1 FOREIGN KEY (userid) REFERENCES users (userid) ON DELETE CASCADE
2315/
2316ALTER TABLE media ADD CONSTRAINT c_media_2 FOREIGN KEY (mediatypeid) REFERENCES media_type (mediatypeid) ON DELETE CASCADE
2317/
2318ALTER TABLE media_type ADD status integer WITH DEFAULT '0' NOT NULL
2319/
2320REORG TABLE media_type
2321/
2322ALTER TABLE media_type ALTER COLUMN mediatypeid SET WITH DEFAULT NULL
2323/
2324REORG TABLE media_type
2325/
2326CREATE PROCEDURE zbx_drop_indexes()
2327LANGUAGE SQL
2328BEGIN
2329	DECLARE idx_exists INTEGER;
2330
2331	SELECT COUNT(*) INTO idx_exists FROM SYSCAT.INDEXES WHERE INDNAME='NODE_CKSUM_1';
2332	IF idx_exists > 0 THEN
2333		DROP INDEX NODE_CKSUM_1;
2334	END IF;
2335
2336	SELECT COUNT(*) INTO idx_exists FROM SYSCAT.INDEXES WHERE INDNAME='NODE_CKSUM_CKSUM_1';
2337	IF idx_exists > 0 THEN
2338		DROP INDEX NODE_CKSUM_CKSUM_1;
2339	END IF;
2340END
2341/
2342CALL zbx_drop_indexes()
2343/
2344DROP PROCEDURE zbx_drop_indexes
2345/
2346ALTER TABLE node_cksum ALTER COLUMN nodeid SET WITH DEFAULT NULL
2347/
2348REORG TABLE node_cksum
2349/
2350ALTER TABLE node_cksum ALTER COLUMN recordid SET WITH DEFAULT NULL
2351/
2352REORG TABLE node_cksum
2353/
2354DELETE FROM node_cksum WHERE NOT nodeid IN (SELECT nodeid FROM nodes)
2355/
2356ALTER TABLE node_cksum ADD CONSTRAINT c_node_cksum_1 FOREIGN KEY (nodeid) REFERENCES nodes (nodeid) ON DELETE CASCADE
2357/
2358ALTER TABLE nodes ALTER COLUMN nodeid SET WITH DEFAULT NULL
2359/
2360REORG TABLE nodes
2361/
2362ALTER TABLE nodes ALTER COLUMN masterid SET WITH DEFAULT NULL
2363/
2364REORG TABLE nodes
2365/
2366ALTER TABLE nodes ALTER COLUMN masterid DROP NOT NULL
2367/
2368REORG TABLE nodes
2369/
2370ALTER TABLE nodes DROP COLUMN timezone
2371/
2372REORG TABLE nodes
2373/
2374ALTER TABLE nodes DROP COLUMN slave_history
2375/
2376REORG TABLE nodes
2377/
2378ALTER TABLE nodes DROP COLUMN slave_trends
2379/
2380REORG TABLE nodes
2381/
2382UPDATE nodes SET masterid=NULL WHERE masterid=0
2383/
2384ALTER TABLE nodes ADD CONSTRAINT c_nodes_1 FOREIGN KEY (masterid) REFERENCES nodes (nodeid)
2385/
2386-- See operations.sql
2387-- See operations.sql
2388-- See operations.sql
2389CREATE TABLE t_operations (
2390	operationid		bigint,
2391	actionid		bigint,
2392	operationtype		integer,
2393	object			integer,
2394	objectid		bigint,
2395	shortdata		varchar(255),
2396	longdata		varchar(2048),
2397	esc_period		integer,
2398	esc_step_from		integer,
2399	esc_step_to		integer,
2400	default_msg		integer,
2401	evaltype		integer,
2402	mediatypeid		bigint
2403)
2404/
2405
2406CREATE TABLE t_opconditions (
2407	operationid		bigint,
2408	conditiontype		integer,
2409	operator		integer,
2410	value			varchar(255)
2411)
2412/
2413
2414INSERT INTO t_operations
2415	SELECT o.operationid, o.actionid, o.operationtype, o.object, o.objectid, o.shortdata, o.longdata,
2416			o.esc_period, o.esc_step_from, o.esc_step_to, o.default_msg, o.evaltype, omt.mediatypeid
2417		FROM actions a, operations o
2418			LEFT JOIN opmediatypes omt ON omt.operationid=o.operationid
2419		WHERE a.actionid=o.actionid
2420/
2421
2422INSERT INTO t_opconditions
2423	SELECT operationid, conditiontype, operator, value FROM opconditions
2424/
2425
2426UPDATE t_operations
2427	SET mediatypeid = NULL
2428	WHERE NOT EXISTS (SELECT 1 FROM media_type mt WHERE mt.mediatypeid = t_operations.mediatypeid)
2429/
2430
2431UPDATE t_operations
2432	SET objectid = NULL
2433	WHERE operationtype = 0		-- OPERATION_TYPE_MESSAGE
2434		AND object = 0		-- OPERATION_OBJECT_USER
2435		AND NOT EXISTS (SELECT 1 FROM users u WHERE u.userid = t_operations.objectid)
2436/
2437
2438UPDATE t_operations
2439	SET objectid = NULL
2440	WHERE operationtype = 0		-- OPERATION_TYPE_MESSAGE
2441		AND object = 1		-- OPERATION_OBJECT_GROUP
2442		AND NOT EXISTS (SELECT 1 FROM usrgrp g WHERE g.usrgrpid = t_operations.objectid)
2443/
2444
2445DELETE FROM t_operations
2446	WHERE operationtype IN (4,5)	-- OPERATION_TYPE_GROUP_ADD, OPERATION_TYPE_GROUP_REMOVE
2447		AND NOT EXISTS (SELECT 1 FROM groups g WHERE g.groupid = t_operations.objectid)
2448/
2449
2450DELETE FROM t_operations
2451	WHERE operationtype IN (6,7)	-- OPERATION_TYPE_TEMPLATE_ADD, OPERATION_TYPE_TEMPLATE_REMOVE
2452		AND NOT EXISTS (SELECT 1 FROM hosts h WHERE h.hostid = t_operations.objectid)
2453/
2454
2455DROP TABLE operations
2456/
2457DROP TABLE opmediatypes
2458/
2459DROP TABLE opconditions
2460/
2461
2462CREATE TABLE operations (
2463	operationid              bigint                                    NOT NULL,
2464	actionid                 bigint                                    NOT NULL,
2465	operationtype            integer         WITH DEFAULT '0'          NOT NULL,
2466	esc_period               integer         WITH DEFAULT '0'          NOT NULL,
2467	esc_step_from            integer         WITH DEFAULT '1'          NOT NULL,
2468	esc_step_to              integer         WITH DEFAULT '1'          NOT NULL,
2469	evaltype                 integer         WITH DEFAULT '0'          NOT NULL,
2470	PRIMARY KEY (operationid)
2471)
2472/
2473CREATE INDEX operations_1 ON operations (actionid)
2474/
2475ALTER TABLE operations ADD CONSTRAINT c_operations_1 FOREIGN KEY (actionid) REFERENCES actions (actionid) ON DELETE CASCADE
2476/
2477
2478CREATE TABLE opmessage (
2479	operationid              bigint                                    NOT NULL,
2480	default_msg              integer         WITH DEFAULT '0'          NOT NULL,
2481	subject                  varchar(255)    WITH DEFAULT ''           NOT NULL,
2482	message                  varchar(2048)   WITH DEFAULT ''           NOT NULL,
2483	mediatypeid              bigint                                    NULL,
2484	PRIMARY KEY (operationid)
2485)
2486/
2487ALTER TABLE opmessage ADD CONSTRAINT c_opmessage_1 FOREIGN KEY (operationid) REFERENCES operations (operationid) ON DELETE CASCADE
2488/
2489ALTER TABLE opmessage ADD CONSTRAINT c_opmessage_2 FOREIGN KEY (mediatypeid) REFERENCES media_type (mediatypeid)
2490/
2491
2492CREATE TABLE opmessage_grp (
2493	opmessage_grpid          bigint                                    NOT NULL,
2494	operationid              bigint                                    NOT NULL,
2495	usrgrpid                 bigint                                    NOT NULL,
2496	PRIMARY KEY (opmessage_grpid)
2497)
2498/
2499CREATE UNIQUE INDEX opmessage_grp_1 ON opmessage_grp (operationid,usrgrpid)
2500/
2501ALTER TABLE opmessage_grp ADD CONSTRAINT c_opmessage_grp_1 FOREIGN KEY (operationid) REFERENCES operations (operationid) ON DELETE CASCADE
2502/
2503ALTER TABLE opmessage_grp ADD CONSTRAINT c_opmessage_grp_2 FOREIGN KEY (usrgrpid) REFERENCES usrgrp (usrgrpid)
2504/
2505
2506CREATE TABLE opmessage_usr (
2507	opmessage_usrid          bigint                                    NOT NULL,
2508	operationid              bigint                                    NOT NULL,
2509	userid                   bigint                                    NOT NULL,
2510	PRIMARY KEY (opmessage_usrid)
2511)
2512/
2513CREATE UNIQUE INDEX opmessage_usr_1 ON opmessage_usr (operationid,userid)
2514/
2515ALTER TABLE opmessage_usr ADD CONSTRAINT c_opmessage_usr_1 FOREIGN KEY (operationid) REFERENCES operations (operationid) ON DELETE CASCADE
2516/
2517ALTER TABLE opmessage_usr ADD CONSTRAINT c_opmessage_usr_2 FOREIGN KEY (userid) REFERENCES users (userid)
2518/
2519
2520CREATE TABLE opcommand (
2521	operationid              bigint                                    NOT NULL,
2522	type                     integer         WITH DEFAULT '0'          NOT NULL,
2523	scriptid                 bigint                                    NULL,
2524	execute_on               integer         WITH DEFAULT '0'          NOT NULL,
2525	port                     varchar(64)     WITH DEFAULT ''           NOT NULL,
2526	authtype                 integer         WITH DEFAULT '0'          NOT NULL,
2527	username                 varchar(64)     WITH DEFAULT ''           NOT NULL,
2528	password                 varchar(64)     WITH DEFAULT ''           NOT NULL,
2529	publickey                varchar(64)     WITH DEFAULT ''           NOT NULL,
2530	privatekey               varchar(64)     WITH DEFAULT ''           NOT NULL,
2531	command                  varchar(2048)   WITH DEFAULT ''           NOT NULL,
2532	PRIMARY KEY (operationid)
2533)
2534/
2535ALTER TABLE opcommand ADD CONSTRAINT c_opcommand_1 FOREIGN KEY (operationid) REFERENCES operations (operationid) ON DELETE CASCADE
2536/
2537ALTER TABLE opcommand ADD CONSTRAINT c_opcommand_2 FOREIGN KEY (scriptid) REFERENCES scripts (scriptid)
2538/
2539
2540CREATE TABLE opcommand_hst (
2541	opcommand_hstid          bigint                                    NOT NULL,
2542	operationid              bigint                                    NOT NULL,
2543	hostid                   bigint                                    NULL,
2544	PRIMARY KEY (opcommand_hstid)
2545)
2546/
2547CREATE INDEX opcommand_hst_1 ON opcommand_hst (operationid)
2548/
2549ALTER TABLE opcommand_hst ADD CONSTRAINT c_opcommand_hst_1 FOREIGN KEY (operationid) REFERENCES operations (operationid) ON DELETE CASCADE
2550/
2551ALTER TABLE opcommand_hst ADD CONSTRAINT c_opcommand_hst_2 FOREIGN KEY (hostid) REFERENCES hosts (hostid)
2552/
2553
2554CREATE TABLE opcommand_grp (
2555	opcommand_grpid          bigint                                    NOT NULL,
2556	operationid              bigint                                    NOT NULL,
2557	groupid                  bigint                                    NOT NULL,
2558	PRIMARY KEY (opcommand_grpid)
2559)
2560/
2561CREATE INDEX opcommand_grp_1 ON opcommand_grp (operationid)
2562/
2563ALTER TABLE opcommand_grp ADD CONSTRAINT c_opcommand_grp_1 FOREIGN KEY (operationid) REFERENCES operations (operationid) ON DELETE CASCADE
2564/
2565ALTER TABLE opcommand_grp ADD CONSTRAINT c_opcommand_grp_2 FOREIGN KEY (groupid) REFERENCES groups (groupid)
2566/
2567
2568CREATE TABLE opgroup (
2569	opgroupid                bigint                                    NOT NULL,
2570	operationid              bigint                                    NOT NULL,
2571	groupid                  bigint                                    NOT NULL,
2572	PRIMARY KEY (opgroupid)
2573)
2574/
2575CREATE UNIQUE INDEX opgroup_1 ON opgroup (operationid,groupid)
2576/
2577ALTER TABLE opgroup ADD CONSTRAINT c_opgroup_1 FOREIGN KEY (operationid) REFERENCES operations (operationid) ON DELETE CASCADE
2578/
2579ALTER TABLE opgroup ADD CONSTRAINT c_opgroup_2 FOREIGN KEY (groupid) REFERENCES groups (groupid)
2580/
2581
2582CREATE TABLE optemplate (
2583	optemplateid             bigint                                    NOT NULL,
2584	operationid              bigint                                    NOT NULL,
2585	templateid               bigint                                    NOT NULL,
2586	PRIMARY KEY (optemplateid)
2587)
2588/
2589CREATE UNIQUE INDEX optemplate_1 ON optemplate (operationid,templateid)
2590/
2591ALTER TABLE optemplate ADD CONSTRAINT c_optemplate_1 FOREIGN KEY (operationid) REFERENCES operations (operationid) ON DELETE CASCADE
2592/
2593ALTER TABLE optemplate ADD CONSTRAINT c_optemplate_2 FOREIGN KEY (templateid) REFERENCES hosts (hostid)
2594/
2595
2596CREATE TABLE opconditions (
2597	opconditionid            bigint                                    NOT NULL,
2598	operationid              bigint                                    NOT NULL,
2599	conditiontype            integer         WITH DEFAULT '0'          NOT NULL,
2600	operator                 integer         WITH DEFAULT '0'          NOT NULL,
2601	value                    varchar(255)    WITH DEFAULT ''           NOT NULL,
2602	PRIMARY KEY (opconditionid)
2603)
2604/
2605CREATE INDEX opconditions_1 ON opconditions (operationid)
2606/
2607ALTER TABLE opconditions ADD CONSTRAINT c_opconditions_1 FOREIGN KEY (operationid) REFERENCES operations (operationid) ON DELETE CASCADE
2608/
2609
2610CREATE SEQUENCE opconditions_seq AS bigint
2611/
2612
2613CREATE PROCEDURE zbx_convert_operations()
2614LANGUAGE SQL
2615BEGIN
2616	DECLARE v_nodeid integer;
2617	DECLARE minid, maxid bigint;
2618	DECLARE new_operationid bigint;
2619	DECLARE new_opmessage_grpid bigint;
2620	DECLARE new_opmessage_usrid bigint;
2621	DECLARE new_opgroupid bigint;
2622	DECLARE new_optemplateid bigint;
2623	DECLARE new_opcommand_hstid bigint;
2624	DECLARE new_opcommand_grpid bigint;
2625	DECLARE n_done integer DEFAULT 0;
2626	DECLARE n_not_found CONDITION FOR SQLSTATE '02000';
2627	DECLARE n_cur CURSOR FOR (SELECT DISTINCT TRUNC(operationid / 100000000000000) FROM t_operations);
2628	DECLARE CONTINUE HANDLER FOR n_not_found SET n_done = 1;
2629
2630	OPEN n_cur;
2631
2632	n_loop: LOOP
2633		FETCH n_cur INTO v_nodeid;
2634
2635		IF n_done = 1 THEN
2636			LEAVE n_loop;
2637		END IF;
2638
2639		SET minid = v_nodeid * 100000000000000;
2640		SET maxid = minid + 99999999999999;
2641		SET new_operationid = minid;
2642		SET new_opmessage_grpid = minid;
2643		SET new_opmessage_usrid = minid;
2644		SET new_opgroupid = minid;
2645		SET new_optemplateid = minid;
2646		SET new_opcommand_hstid = minid;
2647		SET new_opcommand_grpid = minid;
2648
2649		BEGIN
2650			DECLARE v_operationid bigint;
2651			DECLARE v_actionid bigint;
2652			DECLARE v_operationtype integer;
2653			DECLARE v_esc_period integer;
2654			DECLARE v_esc_step_from integer;
2655			DECLARE v_esc_step_to integer;
2656			DECLARE v_evaltype integer;
2657			DECLARE v_default_msg integer;
2658			DECLARE v_shortdata varchar(255);
2659			DECLARE v_longdata varchar(2048);
2660			DECLARE v_mediatypeid bigint;
2661			DECLARE v_object integer;
2662			DECLARE v_objectid bigint;
2663			DECLARE l_pos, r_pos, h_pos, g_pos integer;
2664			DECLARE cur_string varchar(2048);
2665			DECLARE v_host, v_group varchar(64);
2666			DECLARE v_hostid, v_groupid bigint;
2667			DECLARE o_done integer DEFAULT 0;
2668			DECLARE o_not_found CONDITION FOR SQLSTATE '02000';
2669			DECLARE o_cur CURSOR FOR (
2670				SELECT operationid, actionid, operationtype, esc_period, esc_step_from, esc_step_to,
2671						evaltype, default_msg, shortdata, longdata, mediatypeid, object, objectid
2672					FROM t_operations
2673					WHERE operationid BETWEEN minid AND maxid);
2674			DECLARE CONTINUE HANDLER FOR o_not_found SET o_done = 1;
2675
2676			OPEN o_cur;
2677
2678			o_loop: LOOP
2679				FETCH o_cur INTO v_operationid, v_actionid, v_operationtype, v_esc_period, v_esc_step_from,
2680						v_esc_step_to, v_evaltype, v_default_msg, v_shortdata, v_longdata,
2681						v_mediatypeid, v_object, v_objectid;
2682
2683				IF o_done = 1 THEN
2684					LEAVE o_loop;
2685				END IF;
2686
2687				IF v_operationtype IN (0) THEN			-- OPERATION_TYPE_MESSAGE
2688					SET new_operationid = new_operationid + 1;
2689
2690					INSERT INTO operations (operationid, actionid, operationtype, esc_period,
2691							esc_step_from, esc_step_to, evaltype)
2692						VALUES (new_operationid, v_actionid, v_operationtype, v_esc_period,
2693							v_esc_step_from, v_esc_step_to, v_evaltype);
2694
2695					INSERT INTO opmessage (operationid, default_msg, subject, message, mediatypeid)
2696						VALUES (new_operationid, v_default_msg, v_shortdata, v_longdata, v_mediatypeid);
2697
2698					IF v_object = 0 AND v_objectid IS NOT NULL THEN	-- OPERATION_OBJECT_USER
2699						SET new_opmessage_usrid = new_opmessage_usrid + 1;
2700
2701						INSERT INTO opmessage_usr (opmessage_usrid, operationid, userid)
2702							VALUES (new_opmessage_usrid, new_operationid, v_objectid);
2703					END IF;
2704
2705					IF v_object = 1 AND v_objectid IS NOT NULL THEN	-- OPERATION_OBJECT_GROUP
2706						SET new_opmessage_grpid = new_opmessage_grpid + 1;
2707
2708						INSERT INTO opmessage_grp (opmessage_grpid, operationid, usrgrpid)
2709							VALUES (new_opmessage_grpid, new_operationid, v_objectid);
2710					END IF;
2711
2712					INSERT INTO opconditions
2713						SELECT minid + (NEXTVAL FOR opconditions_seq), new_operationid, conditiontype,
2714								operator, value
2715							FROM t_opconditions
2716							WHERE operationid = v_operationid;
2717				ELSEIF v_operationtype IN (1) THEN		-- OPERATION_TYPE_COMMAND
2718					SET r_pos = 1;
2719					SET l_pos = 1;
2720
2721					WHILE r_pos > 0 DO
2722						SET r_pos = INSTR(v_longdata, CHR(10), l_pos);
2723
2724						IF r_pos = 0 THEN
2725							SET cur_string = SUBSTR(v_longdata, l_pos);
2726						ELSE
2727							SET cur_string = SUBSTR(v_longdata, l_pos, r_pos - l_pos);
2728						END IF;
2729
2730						SET cur_string = STRIP(cur_string, TRAILING, X'0D');
2731						SET cur_string = TRIM(cur_string);
2732
2733						IF LENGTH(cur_string) <> 0 THEN
2734							SET h_pos = INSTR(cur_string, ':');
2735							SET g_pos = INSTR(cur_string, '#');
2736
2737							IF h_pos <> 0 OR g_pos <> 0 THEN
2738								SET new_operationid = new_operationid + 1;
2739
2740								INSERT INTO operations (operationid, actionid, operationtype,
2741										esc_period, esc_step_from, esc_step_to, evaltype)
2742								VALUES (new_operationid, v_actionid, v_operationtype, v_esc_period,
2743										v_esc_step_from, v_esc_step_to, v_evaltype);
2744
2745								INSERT INTO opconditions
2746									SELECT minid + (NEXTVAL FOR opconditions_seq),
2747											new_operationid, conditiontype,
2748											operator, value
2749										FROM t_opconditions
2750										WHERE operationid = v_operationid;
2751
2752								IF h_pos <> 0 AND (g_pos = 0 OR h_pos < g_pos) THEN
2753									INSERT INTO opcommand (operationid, command)
2754										VALUES (new_operationid, TRIM(SUBSTR(cur_string, h_pos + 1)));
2755
2756									SET v_host = TRIM(SUBSTR(cur_string, 1, h_pos - 1));
2757
2758									IF v_host = '{HOSTNAME}' THEN
2759										SET new_opcommand_hstid = new_opcommand_hstid + 1;
2760
2761										INSERT INTO opcommand_hst
2762											VALUES (new_opcommand_hstid, new_operationid, NULL);
2763									ELSE
2764										SET v_hostid = (
2765											SELECT MIN(hostid)
2766												FROM hosts
2767												WHERE host = v_host
2768													AND TRUNC(hostid / 100000000000000) = v_nodeid);
2769
2770										IF v_hostid IS NOT NULL THEN
2771											SET new_opcommand_hstid = new_opcommand_hstid + 1;
2772
2773											INSERT INTO opcommand_hst
2774												VALUES (new_opcommand_hstid, new_operationid, v_hostid);
2775										END IF;
2776									END IF;
2777								END IF;
2778
2779								IF g_pos <> 0 AND (h_pos = 0 OR g_pos < h_pos) THEN
2780									INSERT INTO opcommand (operationid, command)
2781										VALUES (new_operationid, TRIM(SUBSTR(cur_string, g_pos + 1)));
2782
2783									SET v_group = TRIM(SUBSTR(cur_string, 1, g_pos - 1));
2784
2785									SET v_groupid = (
2786										SELECT MIN(groupid)
2787											FROM groups
2788											WHERE name = v_group
2789												AND TRUNC(groupid / 100000000000000) = v_nodeid);
2790
2791									IF v_groupid IS NOT NULL THEN
2792										SET new_opcommand_grpid = new_opcommand_grpid + 1;
2793
2794										INSERT INTO opcommand_grp
2795											VALUES (new_opcommand_grpid, new_operationid, v_groupid);
2796									END IF;
2797								END IF;
2798							END IF;
2799						END IF;
2800
2801						SET l_pos = r_pos + 1;
2802					END WHILE;
2803				ELSEIF v_operationtype IN (2, 3, 8, 9) THEN	-- OPERATION_TYPE_HOST_(ADD, REMOVE, ENABLE, DISABLE)
2804					SET new_operationid = new_operationid + 1;
2805
2806					INSERT INTO operations (operationid, actionid, operationtype)
2807						VALUES (new_operationid, v_actionid, v_operationtype);
2808				ELSEIF v_operationtype IN (4, 5) THEN		-- OPERATION_TYPE_GROUP_(ADD, REMOVE)
2809					SET new_operationid = new_operationid + 1;
2810
2811					INSERT INTO operations (operationid, actionid, operationtype)
2812						VALUES (new_operationid, v_actionid, v_operationtype);
2813
2814					SET new_opgroupid = new_opgroupid + 1;
2815
2816					INSERT INTO opgroup (opgroupid, operationid, groupid)
2817						VALUES (new_opgroupid, new_operationid, v_objectid);
2818				ELSEIF v_operationtype IN (6, 7) THEN		-- OPERATION_TYPE_TEMPLATE_(ADD, REMOVE)
2819					SET new_operationid = new_operationid + 1;
2820
2821					INSERT INTO operations (operationid, actionid, operationtype)
2822						VALUES (new_operationid, v_actionid, v_operationtype);
2823
2824					SET new_optemplateid = new_optemplateid + 1;
2825
2826					INSERT INTO optemplate (optemplateid, operationid, templateid)
2827						VALUES (new_optemplateid, new_operationid, v_objectid);
2828				END IF;
2829			END LOOP o_loop;
2830
2831			CLOSE o_cur;
2832		END;
2833	END LOOP n_loop;
2834
2835	CLOSE n_cur;
2836END
2837/
2838
2839CALL zbx_convert_operations
2840/
2841
2842DROP SEQUENCE opconditions_seq
2843/
2844
2845DROP TABLE t_operations
2846/
2847DROP TABLE t_opconditions
2848/
2849DROP PROCEDURE zbx_convert_operations
2850/
2851
2852UPDATE opcommand
2853	SET type = 1, command = TRIM(SUBSTR(command, 5))
2854	WHERE SUBSTR(command, 1, 4) = 'IPMI'
2855/
2856
2857DELETE FROM ids WHERE table_name IN ('operations', 'opconditions', 'opmediatypes')
2858/
2859-- See operations.sql
2860-- See operations.sql
2861-- See operations.sql
2862-- See operations.sql
2863-- See operations.sql
2864-- See operations.sql
2865ALTER TABLE profiles ALTER COLUMN profileid SET WITH DEFAULT NULL
2866/
2867REORG TABLE profiles
2868/
2869ALTER TABLE profiles ALTER COLUMN userid SET WITH DEFAULT NULL
2870/
2871REORG TABLE profiles
2872/
2873DELETE FROM profiles WHERE NOT userid IN (SELECT userid FROM users)
2874/
2875DELETE FROM profiles WHERE idx LIKE 'web.%.sort' OR idx LIKE 'web.%.sortorder'
2876/
2877ALTER TABLE profiles ADD CONSTRAINT c_profiles_1 FOREIGN KEY (userid) REFERENCES users (userid) ON DELETE CASCADE
2878/
2879
2880UPDATE profiles SET idx = 'web.screens.period' WHERE idx = 'web.charts.period'
2881/
2882UPDATE profiles SET idx = 'web.screens.stime' WHERE idx = 'web.charts.stime'
2883/
2884UPDATE profiles SET idx = 'web.screens.timelinefixed' WHERE idx = 'web.charts.timelinefixed'
2885/
2886ALTER TABLE proxy_autoreg_host ADD listen_ip varchar(39) WITH DEFAULT '' NOT NULL
2887/
2888REORG TABLE proxy_autoreg_host
2889/
2890ALTER TABLE proxy_autoreg_host ADD listen_port integer WITH DEFAULT '0' NOT NULL
2891/
2892REORG TABLE proxy_autoreg_host
2893/
2894ALTER TABLE proxy_autoreg_host ADD listen_dns varchar(64) WITH DEFAULT '' NOT NULL
2895/
2896REORG TABLE proxy_autoreg_host
2897/
2898DELETE FROM proxy_dhistory WHERE druleid NOT IN (SELECT druleid FROM drules)
2899/
2900DELETE FROM proxy_dhistory WHERE dcheckid<>0 AND dcheckid NOT IN (SELECT dcheckid FROM dchecks)
2901/
2902ALTER TABLE proxy_dhistory ALTER COLUMN druleid SET WITH DEFAULT NULL
2903/
2904REORG TABLE proxy_dhistory
2905/
2906ALTER TABLE proxy_dhistory ALTER COLUMN dcheckid DROP NOT NULL
2907/
2908ALTER TABLE proxy_dhistory ALTER COLUMN dcheckid SET WITH DEFAULT NULL
2909/
2910REORG TABLE proxy_dhistory
2911/
2912ALTER TABLE proxy_dhistory ADD dns varchar(64) WITH DEFAULT '' NOT NULL
2913/
2914REORG TABLE proxy_dhistory
2915/
2916UPDATE proxy_dhistory SET dcheckid=NULL WHERE dcheckid=0
2917/
2918ALTER TABLE proxy_history ALTER COLUMN itemid SET WITH DEFAULT NULL
2919/
2920REORG TABLE proxy_history
2921/
2922ALTER TABLE proxy_history ADD ns integer WITH DEFAULT '0' NOT NULL
2923/
2924REORG TABLE proxy_history
2925/
2926ALTER TABLE proxy_history ADD status integer WITH DEFAULT '0' NOT NULL
2927/
2928REORG TABLE proxy_history
2929/
2930ALTER TABLE regexps ALTER COLUMN regexpid SET WITH DEFAULT NULL
2931/
2932REORG TABLE regexps
2933/
2934ALTER TABLE rights ALTER COLUMN rightid SET WITH DEFAULT NULL
2935/
2936REORG TABLE rights
2937/
2938ALTER TABLE rights ALTER COLUMN groupid SET WITH DEFAULT NULL
2939/
2940REORG TABLE rights
2941/
2942ALTER TABLE rights ALTER COLUMN id SET NOT NULL
2943/
2944REORG TABLE rights
2945/
2946DELETE FROM rights WHERE NOT groupid IN (SELECT usrgrpid FROM usrgrp)
2947/
2948DELETE FROM rights WHERE NOT id IN (SELECT groupid FROM groups)
2949/
2950ALTER TABLE rights ADD CONSTRAINT c_rights_1 FOREIGN KEY (groupid) REFERENCES usrgrp (usrgrpid) ON DELETE CASCADE
2951/
2952ALTER TABLE rights ADD CONSTRAINT c_rights_2 FOREIGN KEY (id) REFERENCES groups (groupid) ON DELETE CASCADE
2953/
2954ALTER TABLE screens_items ALTER COLUMN screenitemid SET WITH DEFAULT NULL
2955/
2956REORG TABLE screens_items
2957/
2958ALTER TABLE screens_items ALTER COLUMN screenid SET WITH DEFAULT NULL
2959/
2960REORG TABLE screens_items
2961/
2962ALTER TABLE screens_items ADD sort_triggers integer WITH DEFAULT '0' NOT NULL
2963/
2964REORG TABLE screens_items
2965/
2966DELETE FROM screens_items WHERE screenid NOT IN (SELECT screenid FROM screens)
2967/
2968ALTER TABLE screens_items ADD CONSTRAINT c_screens_items_1 FOREIGN KEY (screenid) REFERENCES screens (screenid) ON DELETE CASCADE
2969/
2970ALTER TABLE screens ALTER COLUMN screenid SET WITH DEFAULT NULL
2971/
2972REORG TABLE screens
2973/
2974ALTER TABLE screens ALTER COLUMN name SET WITH DEFAULT NULL
2975/
2976REORG TABLE screens
2977/
2978ALTER TABLE screens ADD templateid bigint NULL
2979/
2980REORG TABLE screens
2981/
2982ALTER TABLE screens ADD CONSTRAINT c_screens_1 FOREIGN KEY (templateid) REFERENCES hosts (hostid) ON DELETE CASCADE
2983/
2984ALTER TABLE scripts ALTER COLUMN scriptid SET WITH DEFAULT NULL
2985/
2986REORG TABLE scripts
2987/
2988ALTER TABLE scripts ALTER COLUMN usrgrpid SET WITH DEFAULT NULL
2989/
2990REORG TABLE scripts
2991/
2992ALTER TABLE scripts ALTER COLUMN usrgrpid DROP NOT NULL
2993/
2994REORG TABLE scripts
2995/
2996ALTER TABLE scripts ALTER COLUMN groupid SET WITH DEFAULT NULL
2997/
2998REORG TABLE scripts
2999/
3000ALTER TABLE scripts ALTER COLUMN groupid DROP NOT NULL
3001/
3002REORG TABLE scripts
3003/
3004ALTER TABLE scripts ADD description varchar(2048) WITH DEFAULT '' NOT NULL
3005/
3006REORG TABLE scripts
3007/
3008ALTER TABLE scripts ADD confirmation varchar(255) WITH DEFAULT '' NOT NULL
3009/
3010REORG TABLE scripts
3011/
3012ALTER TABLE scripts ADD type integer WITH DEFAULT '0' NOT NULL
3013/
3014REORG TABLE scripts
3015/
3016ALTER TABLE scripts ADD execute_on integer WITH DEFAULT '1' NOT NULL
3017/
3018REORG TABLE scripts
3019/
3020UPDATE scripts SET usrgrpid=NULL WHERE usrgrpid=0
3021/
3022UPDATE scripts SET groupid=NULL WHERE groupid=0
3023/
3024UPDATE scripts SET type=1,command=TRIM(SUBSTR(command, 5)) WHERE SUBSTR(command, 1, 4)='IPMI'
3025/
3026DELETE FROM scripts WHERE usrgrpid IS NOT NULL AND usrgrpid NOT IN (SELECT usrgrpid FROM usrgrp)
3027/
3028DELETE FROM scripts WHERE groupid IS NOT NULL AND groupid NOT IN (SELECT groupid FROM groups)
3029/
3030ALTER TABLE scripts ADD CONSTRAINT c_scripts_1 FOREIGN KEY (usrgrpid) REFERENCES usrgrp (usrgrpid)
3031/
3032ALTER TABLE scripts ADD CONSTRAINT c_scripts_2 FOREIGN KEY (groupid) REFERENCES groups (groupid)
3033/
3034ALTER TABLE service_alarms ALTER COLUMN servicealarmid SET WITH DEFAULT NULL
3035/
3036REORG TABLE service_alarms
3037/
3038ALTER TABLE service_alarms ALTER COLUMN serviceid SET WITH DEFAULT NULL
3039/
3040REORG TABLE service_alarms
3041/
3042DELETE FROM service_alarms WHERE NOT serviceid IN (SELECT serviceid FROM services)
3043/
3044ALTER TABLE service_alarms ADD CONSTRAINT c_service_alarms_1 FOREIGN KEY (serviceid) REFERENCES services (serviceid) ON DELETE CASCADE
3045/
3046ALTER TABLE services_links ALTER COLUMN linkid SET WITH DEFAULT NULL
3047/
3048REORG TABLE services_links
3049/
3050ALTER TABLE services_links ALTER COLUMN serviceupid SET WITH DEFAULT NULL
3051/
3052REORG TABLE services_links
3053/
3054ALTER TABLE services_links ALTER COLUMN servicedownid SET WITH DEFAULT NULL
3055/
3056REORG TABLE services_links
3057/
3058DELETE FROM services_links WHERE NOT serviceupid IN (SELECT serviceid FROM services)
3059/
3060DELETE FROM services_links WHERE NOT servicedownid IN (SELECT serviceid FROM services)
3061/
3062ALTER TABLE services_links ADD CONSTRAINT c_services_links_1 FOREIGN KEY (serviceupid) REFERENCES services (serviceid) ON DELETE CASCADE
3063/
3064ALTER TABLE services_links ADD CONSTRAINT c_services_links_2 FOREIGN KEY (servicedownid) REFERENCES services (serviceid) ON DELETE CASCADE
3065/
3066UPDATE services SET triggerid = NULL WHERE NOT EXISTS (SELECT 1 FROM triggers t WHERE t.triggerid = services.triggerid)
3067/
3068ALTER TABLE services ALTER COLUMN serviceid SET WITH DEFAULT NULL
3069/
3070REORG TABLE services
3071/
3072ALTER TABLE services ADD CONSTRAINT c_services_1 FOREIGN KEY (triggerid) REFERENCES triggers (triggerid) ON DELETE CASCADE
3073/
3074ALTER TABLE services_times ALTER COLUMN timeid SET WITH DEFAULT NULL
3075/
3076REORG TABLE services_times
3077/
3078ALTER TABLE services_times ALTER COLUMN serviceid SET WITH DEFAULT NULL
3079/
3080REORG TABLE services_times
3081/
3082DELETE FROM services_times WHERE NOT serviceid IN (SELECT serviceid FROM services)
3083/
3084ALTER TABLE services_times ADD CONSTRAINT c_services_times_1 FOREIGN KEY (serviceid) REFERENCES services (serviceid) ON DELETE CASCADE
3085/
3086ALTER TABLE sessions ALTER COLUMN userid SET WITH DEFAULT NULL
3087/
3088REORG TABLE sessions
3089/
3090DELETE FROM sessions WHERE NOT userid IN (SELECT userid FROM users)
3091/
3092ALTER TABLE sessions ADD CONSTRAINT c_sessions_1 FOREIGN KEY (userid) REFERENCES users (userid) ON DELETE CASCADE
3093/
3094ALTER TABLE slideshows ALTER COLUMN slideshowid SET WITH DEFAULT NULL
3095/
3096REORG TABLE slideshows
3097/
3098ALTER TABLE slides ALTER COLUMN slideid SET WITH DEFAULT NULL
3099/
3100REORG TABLE slides
3101/
3102ALTER TABLE slides ALTER COLUMN slideshowid SET WITH DEFAULT NULL
3103/
3104REORG TABLE slides
3105/
3106ALTER TABLE slides ALTER COLUMN screenid SET WITH DEFAULT NULL
3107/
3108REORG TABLE slides
3109/
3110DELETE FROM slides WHERE NOT slideshowid IN (SELECT slideshowid FROM slideshows)
3111/
3112DELETE FROM slides WHERE NOT screenid IN (SELECT screenid FROM screens)
3113/
3114ALTER TABLE slides ADD CONSTRAINT c_slides_1 FOREIGN KEY (slideshowid) REFERENCES slideshows (slideshowid) ON DELETE CASCADE
3115/
3116ALTER TABLE slides ADD CONSTRAINT c_slides_2 FOREIGN KEY (screenid) REFERENCES screens (screenid) ON DELETE CASCADE
3117/
3118-- See sysmaps_elements.sql
3119CREATE TABLE sysmap_element_url (
3120	sysmapelementurlid       BIGINT                                NOT NULL,
3121	selementid               BIGINT                                NOT NULL,
3122	name                     varchar(255)                            ,
3123	url                      varchar(255)  DEFAULT ''                ,
3124	PRIMARY KEY (sysmapelementurlid)
3125)
3126/
3127CREATE UNIQUE INDEX sysmap_element_url_1 on sysmap_element_url (selementid,name)
3128/
3129ALTER TABLE sysmap_element_url ADD CONSTRAINT c_sysmap_element_url_1 FOREIGN KEY (selementid) REFERENCES sysmaps_elements (selementid) ON DELETE CASCADE
3130/
3131
3132INSERT INTO sysmap_element_url (sysmapelementurlid,selementid,name,url)
3133	SELECT selementid,selementid,url,url FROM sysmaps_elements WHERE url IS NOT NULL
3134/
3135
3136ALTER TABLE sysmaps_elements ALTER COLUMN selementid SET WITH DEFAULT NULL
3137/
3138REORG TABLE sysmaps_elements
3139/
3140ALTER TABLE sysmaps_elements ALTER COLUMN sysmapid SET WITH DEFAULT NULL
3141/
3142REORG TABLE sysmaps_elements
3143/
3144ALTER TABLE sysmaps_elements ALTER COLUMN iconid_off SET WITH DEFAULT NULL
3145/
3146REORG TABLE sysmaps_elements
3147/
3148ALTER TABLE sysmaps_elements ALTER COLUMN iconid_off DROP NOT NULL
3149/
3150REORG TABLE sysmaps_elements
3151/
3152ALTER TABLE sysmaps_elements ALTER COLUMN iconid_on SET WITH DEFAULT NULL
3153/
3154REORG TABLE sysmaps_elements
3155/
3156ALTER TABLE sysmaps_elements ALTER COLUMN iconid_on DROP NOT NULL
3157/
3158REORG TABLE sysmaps_elements
3159/
3160ALTER TABLE sysmaps_elements DROP COLUMN iconid_unknown
3161/
3162REORG TABLE sysmaps_elements
3163/
3164ALTER TABLE sysmaps_elements ALTER COLUMN iconid_disabled SET WITH DEFAULT NULL
3165/
3166REORG TABLE sysmaps_elements
3167/
3168ALTER TABLE sysmaps_elements ALTER COLUMN iconid_disabled DROP NOT NULL
3169/
3170REORG TABLE sysmaps_elements
3171/
3172ALTER TABLE sysmaps_elements ALTER COLUMN iconid_maintenance SET WITH DEFAULT NULL
3173/
3174REORG TABLE sysmaps_elements
3175/
3176ALTER TABLE sysmaps_elements ALTER COLUMN iconid_maintenance DROP NOT NULL
3177/
3178REORG TABLE sysmaps_elements
3179/
3180ALTER TABLE sysmaps_elements DROP COLUMN url
3181/
3182REORG TABLE sysmaps_elements
3183/
3184ALTER TABLE sysmaps_elements ADD elementsubtype integer WITH DEFAULT '0' NOT NULL
3185/
3186REORG TABLE sysmaps_elements
3187/
3188ALTER TABLE sysmaps_elements ADD areatype integer WITH DEFAULT '0' NOT NULL
3189/
3190REORG TABLE sysmaps_elements
3191/
3192ALTER TABLE sysmaps_elements ADD width integer WITH DEFAULT '200' NOT NULL
3193/
3194REORG TABLE sysmaps_elements
3195/
3196ALTER TABLE sysmaps_elements ADD height integer WITH DEFAULT '200' NOT NULL
3197/
3198REORG TABLE sysmaps_elements
3199/
3200ALTER TABLE sysmaps_elements ADD viewtype integer WITH DEFAULT '0' NOT NULL
3201/
3202REORG TABLE sysmaps_elements
3203/
3204ALTER TABLE sysmaps_elements ADD use_iconmap integer WITH DEFAULT '1' NOT NULL
3205/
3206REORG TABLE sysmaps_elements
3207/
3208DELETE FROM sysmaps_elements WHERE sysmapid NOT IN (SELECT sysmapid FROM sysmaps)
3209/
3210UPDATE sysmaps_elements SET iconid_off=NULL WHERE iconid_off=0
3211/
3212UPDATE sysmaps_elements SET iconid_on=NULL WHERE iconid_on=0
3213/
3214UPDATE sysmaps_elements SET iconid_disabled=NULL WHERE iconid_disabled=0
3215/
3216UPDATE sysmaps_elements SET iconid_maintenance=NULL WHERE iconid_maintenance=0
3217/
3218UPDATE sysmaps_elements SET iconid_off=NULL WHERE NOT iconid_off IS NULL AND NOT iconid_off IN (SELECT imageid FROM images WHERE imagetype=1)
3219/
3220UPDATE sysmaps_elements SET iconid_on=NULL WHERE NOT iconid_on IS NULL AND NOT iconid_on IN (SELECT imageid FROM images WHERE imagetype=1)
3221/
3222UPDATE sysmaps_elements SET iconid_disabled=NULL WHERE NOT iconid_disabled IS NULL AND NOT iconid_disabled IN (SELECT imageid FROM images WHERE imagetype=1)
3223/
3224UPDATE sysmaps_elements SET iconid_maintenance=NULL WHERE NOT iconid_maintenance IS NULL AND NOT iconid_maintenance IN (SELECT imageid FROM images WHERE imagetype=1)
3225/
3226ALTER TABLE sysmaps_elements ADD CONSTRAINT c_sysmaps_elements_1 FOREIGN KEY (sysmapid) REFERENCES sysmaps (sysmapid) ON DELETE CASCADE
3227/
3228ALTER TABLE sysmaps_elements ADD CONSTRAINT c_sysmaps_elements_2 FOREIGN KEY (iconid_off) REFERENCES images (imageid)
3229/
3230ALTER TABLE sysmaps_elements ADD CONSTRAINT c_sysmaps_elements_3 FOREIGN KEY (iconid_on) REFERENCES images (imageid)
3231/
3232ALTER TABLE sysmaps_elements ADD CONSTRAINT c_sysmaps_elements_4 FOREIGN KEY (iconid_disabled) REFERENCES images (imageid)
3233/
3234ALTER TABLE sysmaps_elements ADD CONSTRAINT c_sysmaps_elements_5 FOREIGN KEY (iconid_maintenance) REFERENCES images (imageid)
3235/
3236ALTER TABLE sysmaps_links ALTER COLUMN linkid SET WITH DEFAULT NULL
3237/
3238REORG TABLE sysmaps_links
3239/
3240ALTER TABLE sysmaps_links ALTER COLUMN sysmapid SET WITH DEFAULT NULL
3241/
3242REORG TABLE sysmaps_links
3243/
3244ALTER TABLE sysmaps_links ALTER COLUMN selementid1 SET WITH DEFAULT NULL
3245/
3246REORG TABLE sysmaps_links
3247/
3248ALTER TABLE sysmaps_links ALTER COLUMN selementid2 SET WITH DEFAULT NULL
3249/
3250REORG TABLE sysmaps_links
3251/
3252DELETE FROM sysmaps_links WHERE sysmapid NOT IN (SELECT sysmapid FROM sysmaps)
3253/
3254DELETE FROM sysmaps_links WHERE selementid1 NOT IN (SELECT selementid FROM sysmaps_elements)
3255/
3256DELETE FROM sysmaps_links WHERE selementid2 NOT IN (SELECT selementid FROM sysmaps_elements)
3257/
3258ALTER TABLE sysmaps_links ADD CONSTRAINT c_sysmaps_links_1 FOREIGN KEY (sysmapid) REFERENCES sysmaps (sysmapid) ON DELETE CASCADE
3259/
3260ALTER TABLE sysmaps_links ADD CONSTRAINT c_sysmaps_links_2 FOREIGN KEY (selementid1) REFERENCES sysmaps_elements (selementid) ON DELETE CASCADE
3261/
3262ALTER TABLE sysmaps_links ADD CONSTRAINT c_sysmaps_links_3 FOREIGN KEY (selementid2) REFERENCES sysmaps_elements (selementid) ON DELETE CASCADE
3263/
3264ALTER TABLE sysmaps_link_triggers ALTER COLUMN linktriggerid SET WITH DEFAULT NULL
3265/
3266REORG TABLE sysmaps_link_triggers
3267/
3268ALTER TABLE sysmaps_link_triggers ALTER COLUMN linkid SET WITH DEFAULT NULL
3269/
3270REORG TABLE sysmaps_link_triggers
3271/
3272ALTER TABLE sysmaps_link_triggers ALTER COLUMN triggerid SET WITH DEFAULT NULL
3273/
3274REORG TABLE sysmaps_link_triggers
3275/
3276DELETE FROM sysmaps_link_triggers WHERE linkid NOT IN (SELECT linkid FROM sysmaps_links)
3277/
3278DELETE FROM sysmaps_link_triggers WHERE triggerid NOT IN (SELECT triggerid FROM triggers)
3279/
3280ALTER TABLE sysmaps_link_triggers ADD CONSTRAINT c_sysmaps_link_triggers_1 FOREIGN KEY (linkid) REFERENCES sysmaps_links (linkid) ON DELETE CASCADE
3281/
3282ALTER TABLE sysmaps_link_triggers ADD CONSTRAINT c_sysmaps_link_triggers_2 FOREIGN KEY (triggerid) REFERENCES triggers (triggerid) ON DELETE CASCADE
3283/
3284ALTER TABLE sysmaps ALTER COLUMN sysmapid SET WITH DEFAULT NULL
3285/
3286REORG TABLE sysmaps
3287/
3288ALTER TABLE sysmaps ALTER COLUMN width SET DEFAULT '600'
3289/
3290REORG TABLE sysmaps
3291/
3292ALTER TABLE sysmaps ALTER COLUMN height SET DEFAULT '400'
3293/
3294REORG TABLE sysmaps
3295/
3296ALTER TABLE sysmaps ALTER COLUMN backgroundid SET WITH DEFAULT NULL
3297/
3298REORG TABLE sysmaps
3299/
3300ALTER TABLE sysmaps ALTER COLUMN backgroundid DROP NOT NULL
3301/
3302REORG TABLE sysmaps
3303/
3304ALTER TABLE sysmaps ALTER COLUMN label_type SET DEFAULT '2'
3305/
3306REORG TABLE sysmaps
3307/
3308ALTER TABLE sysmaps ALTER COLUMN label_location SET DEFAULT '3'
3309/
3310REORG TABLE sysmaps
3311/
3312ALTER TABLE sysmaps ADD expandproblem integer WITH DEFAULT '1' NOT NULL
3313/
3314REORG TABLE sysmaps
3315/
3316ALTER TABLE sysmaps ADD markelements integer WITH DEFAULT '0' NOT NULL
3317/
3318REORG TABLE sysmaps
3319/
3320ALTER TABLE sysmaps ADD show_unack integer WITH DEFAULT '0' NOT NULL
3321/
3322REORG TABLE sysmaps
3323/
3324ALTER TABLE sysmaps ADD grid_size integer DEFAULT '50' NOT NULL
3325/
3326REORG TABLE sysmaps
3327/
3328ALTER TABLE sysmaps ADD grid_show integer DEFAULT '1' NOT NULL
3329/
3330REORG TABLE sysmaps
3331/
3332ALTER TABLE sysmaps ADD grid_align integer DEFAULT '1' NOT NULL
3333/
3334REORG TABLE sysmaps
3335/
3336ALTER TABLE sysmaps ADD label_format integer WITH DEFAULT '0' NOT NULL
3337/
3338REORG TABLE sysmaps
3339/
3340ALTER TABLE sysmaps ADD label_type_host integer WITH DEFAULT '2' NOT NULL
3341/
3342REORG TABLE sysmaps
3343/
3344ALTER TABLE sysmaps ADD label_type_hostgroup integer WITH DEFAULT '2' NOT NULL
3345/
3346REORG TABLE sysmaps
3347/
3348ALTER TABLE sysmaps ADD label_type_trigger integer WITH DEFAULT '2' NOT NULL
3349/
3350REORG TABLE sysmaps
3351/
3352ALTER TABLE sysmaps ADD label_type_map integer WITH DEFAULT '2' NOT NULL
3353/
3354REORG TABLE sysmaps
3355/
3356ALTER TABLE sysmaps ADD label_type_image integer WITH DEFAULT '2' NOT NULL
3357/
3358REORG TABLE sysmaps
3359/
3360ALTER TABLE sysmaps ADD label_string_host varchar(255) WITH DEFAULT '' NOT NULL
3361/
3362REORG TABLE sysmaps
3363/
3364ALTER TABLE sysmaps ADD label_string_hostgroup varchar(255) WITH DEFAULT '' NOT NULL
3365/
3366REORG TABLE sysmaps
3367/
3368ALTER TABLE sysmaps ADD label_string_trigger varchar(255) WITH DEFAULT '' NOT NULL
3369/
3370REORG TABLE sysmaps
3371/
3372ALTER TABLE sysmaps ADD label_string_map varchar(255) WITH DEFAULT '' NOT NULL
3373/
3374REORG TABLE sysmaps
3375/
3376ALTER TABLE sysmaps ADD label_string_image varchar(255) WITH DEFAULT '' NOT NULL
3377/
3378REORG TABLE sysmaps
3379/
3380ALTER TABLE sysmaps ADD iconmapid bigint NULL
3381/
3382REORG TABLE sysmaps
3383/
3384ALTER TABLE sysmaps ADD expand_macros integer WITH DEFAULT '0' NOT NULL
3385/
3386REORG TABLE sysmaps
3387/
3388UPDATE sysmaps SET backgroundid=NULL WHERE backgroundid=0
3389/
3390UPDATE sysmaps SET show_unack=1 WHERE highlight>7 AND highlight<16
3391/
3392UPDATE sysmaps SET show_unack=2 WHERE highlight>23
3393/
3394UPDATE sysmaps SET highlight=(highlight-16) WHERE highlight>15
3395/
3396UPDATE sysmaps SET highlight=(highlight-8) WHERE highlight>7
3397/
3398UPDATE sysmaps SET markelements=1 WHERE highlight>3  AND highlight<8
3399/
3400UPDATE sysmaps SET highlight=(highlight-4) WHERE highlight>3
3401/
3402UPDATE sysmaps SET expandproblem=0 WHERE highlight>1 AND highlight<4
3403/
3404UPDATE sysmaps SET highlight=(highlight-2) WHERE highlight>1
3405/
3406ALTER TABLE sysmaps ADD CONSTRAINT c_sysmaps_1 FOREIGN KEY (backgroundid) REFERENCES images (imageid)
3407/
3408ALTER TABLE sysmaps ADD CONSTRAINT c_sysmaps_2 FOREIGN KEY (iconmapid) REFERENCES icon_map (iconmapid)
3409/
3410CREATE TABLE sysmap_url (
3411	sysmapurlid              BIGINT                                NOT NULL,
3412	sysmapid                 BIGINT                                NOT NULL,
3413	name                     varchar(255)                            ,
3414	url                      varchar(255)  DEFAULT ''                ,
3415	elementtype              integer      DEFAULT '0'               NOT NULL,
3416	PRIMARY KEY (sysmapurlid)
3417)
3418/
3419CREATE UNIQUE INDEX sysmap_url_1 on sysmap_url (sysmapid,name)
3420/
3421ALTER TABLE sysmap_url ADD CONSTRAINT c_sysmap_url_1 FOREIGN KEY (sysmapid) REFERENCES sysmaps (sysmapid) ON DELETE CASCADE
3422/
3423ALTER TABLE timeperiods ALTER COLUMN timeperiodid SET WITH DEFAULT NULL
3424/
3425REORG TABLE timeperiods
3426/
3427ALTER TABLE trends ALTER COLUMN itemid SET WITH DEFAULT NULL
3428/
3429REORG TABLE trends
3430/
3431ALTER TABLE trends_uint ALTER COLUMN itemid SET WITH DEFAULT NULL
3432/
3433REORG TABLE trends_uint
3434/
3435ALTER TABLE trigger_depends ALTER COLUMN triggerdepid SET WITH DEFAULT NULL
3436/
3437REORG TABLE trigger_depends
3438/
3439ALTER TABLE trigger_depends ALTER COLUMN triggerid_down SET WITH DEFAULT NULL
3440/
3441REORG TABLE trigger_depends
3442/
3443ALTER TABLE trigger_depends ALTER COLUMN triggerid_up SET WITH DEFAULT NULL
3444/
3445REORG TABLE trigger_depends
3446/
3447DROP INDEX trigger_depends_1
3448/
3449DELETE FROM trigger_depends WHERE triggerid_down NOT IN (SELECT triggerid FROM triggers)
3450/
3451DELETE FROM trigger_depends WHERE triggerid_up NOT IN (SELECT triggerid FROM triggers)
3452/
3453-- remove duplicates to allow unique index
3454DELETE FROM trigger_depends
3455	WHERE triggerdepid IN (
3456		SELECT td1.triggerdepid
3457		FROM trigger_depends td1
3458		LEFT OUTER JOIN (
3459			SELECT MIN(td2.triggerdepid) AS triggerdepid
3460			FROM trigger_depends td2
3461			GROUP BY td2.triggerid_down,td2.triggerid_up
3462		) keep_rows ON
3463			td1.triggerdepid=keep_rows.triggerdepid
3464		WHERE keep_rows.triggerdepid IS NULL
3465	)
3466/
3467CREATE UNIQUE INDEX trigger_depends_1 ON trigger_depends (triggerid_down,triggerid_up)
3468/
3469ALTER TABLE trigger_depends ADD CONSTRAINT c_trigger_depends_1 FOREIGN KEY (triggerid_down) REFERENCES triggers (triggerid) ON DELETE CASCADE
3470/
3471ALTER TABLE trigger_depends ADD CONSTRAINT c_trigger_depends_2 FOREIGN KEY (triggerid_up) REFERENCES triggers (triggerid) ON DELETE CASCADE
3472/
3473CREATE TABLE trigger_discovery (
3474	triggerdiscoveryid       bigint                                    NOT NULL,
3475	triggerid                bigint                                    NOT NULL,
3476	parent_triggerid         bigint                                    NOT NULL,
3477	name                     varchar(255)    WITH DEFAULT ''           NOT NULL,
3478	PRIMARY KEY (triggerdiscoveryid)
3479)
3480/
3481CREATE UNIQUE INDEX trigger_discovery_1 on trigger_discovery (triggerid,parent_triggerid)
3482/
3483ALTER TABLE trigger_discovery ADD CONSTRAINT c_trigger_discovery_1 FOREIGN KEY (triggerid) REFERENCES triggers (triggerid) ON DELETE CASCADE
3484/
3485ALTER TABLE trigger_discovery ADD CONSTRAINT c_trigger_discovery_2 FOREIGN KEY (parent_triggerid) REFERENCES triggers (triggerid) ON DELETE CASCADE
3486/
3487----
3488---- Patching table `events`
3489----
3490
3491DROP INDEX events_2
3492/
3493CREATE INDEX events_2 on events (clock)
3494/
3495ALTER TABLE events ALTER COLUMN eventid SET WITH DEFAULT NULL
3496/
3497REORG TABLE events
3498/
3499ALTER TABLE events ADD ns integer DEFAULT '0' NOT NULL
3500/
3501REORG TABLE events
3502/
3503ALTER TABLE events ADD value_changed integer DEFAULT '0' NOT NULL
3504/
3505REORG TABLE events
3506/
3507
3508-- Begin event redesign patch
3509
3510CREATE TABLE tmp_events_eventid (eventid bigint NOT NULL PRIMARY KEY,prev_value integer,value integer)
3511/
3512CREATE INDEX tmp_events_index on events (source, object, objectid, clock, eventid, value)
3513/
3514
3515-- Which OK events should have value_changed flag set?
3516-- Those that have a PROBLEM event (or no event) before them.
3517
3518INSERT INTO tmp_events_eventid (eventid,prev_value,value)
3519(
3520	SELECT e1.eventid,(SELECT e2.value
3521				FROM events e2
3522				WHERE e2.source=e1.source
3523					AND e2.object=e1.object
3524					AND e2.objectid=e1.objectid
3525					AND (e2.clock<e1.clock OR (e2.clock=e1.clock AND e2.eventid<e1.eventid))
3526					AND e2.value IN (0,1)	-- TRIGGER_VALUE_FALSE (OK), TRIGGER_VALUE_TRUE (PROBLEM)
3527				ORDER BY e2.source DESC,
3528						e2.object DESC,
3529						e2.objectid DESC,
3530						e2.clock DESC,
3531						e2.eventid DESC,
3532						e2.value DESC
3533				FETCH FIRST 1 ROWS ONLY),e1.value
3534		FROM events e1
3535		WHERE e1.source=0				-- EVENT_SOURCE_TRIGGERS
3536			AND e1.object=0 			-- EVENT_OBJECT_TRIGGER
3537			AND e1.value=0				-- TRIGGER_VALUE_FALSE (OK)
3538)
3539/
3540
3541-- Which PROBLEM events should have value_changed flag set?
3542-- (1) Those that have an OK event (or no event) before them.
3543
3544INSERT INTO tmp_events_eventid (eventid,prev_value,value)
3545(
3546	SELECT e1.eventid,(SELECT e2.value
3547				FROM events e2
3548				WHERE e2.source=e1.source
3549					AND e2.object=e1.object
3550					AND e2.objectid=e1.objectid
3551					AND (e2.clock<e1.clock OR (e2.clock=e1.clock AND e2.eventid<e1.eventid))
3552					AND e2.value IN (0,1)	-- TRIGGER_VALUE_FALSE (OK), TRIGGER_VALUE_TRUE (PROBLEM)
3553				ORDER BY e2.source DESC,
3554						e2.object DESC,
3555						e2.objectid DESC,
3556						e2.clock DESC,
3557						e2.eventid DESC,
3558						e2.value DESC
3559				FETCH FIRST 1 ROWS ONLY),e1.value
3560		FROM events e1,triggers t
3561		WHERE e1.source=0				-- EVENT_SOURCE_TRIGGERS
3562			AND e1.object=0 			-- EVENT_OBJECT_TRIGGER
3563			AND e1.objectid=t.triggerid
3564			AND e1.value=1				-- TRIGGER_VALUE_TRUE
3565			AND t.type=0				-- TRIGGER_TYPE_NORMAL
3566)
3567/
3568
3569-- (2) Those that came from a "MULTIPLE PROBLEM" trigger.
3570
3571INSERT INTO tmp_events_eventid (eventid,value)
3572(
3573	SELECT e1.eventid,e1.value
3574		FROM events e1,triggers t
3575		WHERE e1.source=0				-- EVENT_SOURCE_TRIGGERS
3576			AND e1.object=0 			-- EVENT_OBJECT_TRIGGER
3577			AND e1.objectid=t.triggerid
3578			AND e1.value=1				-- TRIGGER_VALUE_TRUE (PROBLEM)
3579			AND t.type=1				-- TRIGGER_TYPE_MULTIPLE_TRUE
3580)
3581/
3582
3583DELETE FROM tmp_events_eventid WHERE prev_value = value
3584/
3585
3586-- Update the value_changed flag.
3587
3588DROP INDEX tmp_events_index
3589/
3590
3591UPDATE events SET value_changed=1 WHERE eventid IN (SELECT eventid FROM tmp_events_eventid)
3592/
3593
3594DROP TABLE tmp_events_eventid
3595/
3596
3597-- End event redesign patch
3598
3599----
3600---- Patching table `triggers`
3601----
3602
3603ALTER TABLE triggers ALTER COLUMN triggerid SET WITH DEFAULT NULL
3604/
3605REORG TABLE triggers
3606/
3607ALTER TABLE triggers ALTER COLUMN templateid SET WITH DEFAULT NULL
3608/
3609REORG TABLE triggers
3610/
3611ALTER TABLE triggers ALTER COLUMN templateid DROP NOT NULL
3612/
3613REORG TABLE triggers
3614/
3615ALTER TABLE triggers DROP COLUMN dep_level
3616/
3617REORG TABLE triggers
3618/
3619ALTER TABLE triggers ADD value_flags integer WITH DEFAULT '0' NOT NULL
3620/
3621REORG TABLE triggers
3622/
3623ALTER TABLE triggers ADD flags integer WITH DEFAULT '0' NOT NULL
3624/
3625REORG TABLE triggers
3626/
3627UPDATE triggers SET templateid=NULL WHERE templateid=0
3628/
3629UPDATE triggers SET templateid=NULL WHERE NOT templateid IS NULL AND NOT templateid IN (SELECT triggerid FROM triggers)
3630/
3631ALTER TABLE triggers ADD CONSTRAINT c_triggers_1 FOREIGN KEY (templateid) REFERENCES triggers (triggerid) ON DELETE CASCADE
3632/
3633
3634-- Begin event redesign patch
3635
3636CREATE TABLE tmp_triggers (triggerid bigint NOT NULL PRIMARY KEY, eventid bigint)
3637/
3638
3639INSERT INTO tmp_triggers (triggerid, eventid)
3640(
3641	SELECT t.triggerid, MAX(e.eventid)
3642		FROM triggers t, events e
3643		WHERE t.value=2			-- TRIGGER_VALUE_UNKNOWN
3644			AND e.source=0		-- EVENT_SOURCE_TRIGGERS
3645			AND e.object=0		-- EVENT_OBJECT_TRIGGER
3646			AND e.objectid=t.triggerid
3647			AND e.value IN (0,1)	-- TRIGGER_VALUE_FALSE (OK), TRIGGER_VALUE_TRUE (PROBLEM)
3648		GROUP BY t.triggerid
3649)
3650/
3651
3652UPDATE triggers
3653	SET value=(
3654		SELECT e.value
3655			FROM events e,tmp_triggers t
3656			WHERE e.eventid=t.eventid
3657				AND triggers.triggerid=t.triggerid
3658	)
3659	WHERE triggerid IN (
3660		SELECT triggerid
3661			FROM tmp_triggers
3662	)
3663/
3664
3665UPDATE triggers
3666	SET value=0,				-- TRIGGER_VALUE_FALSE (OK)
3667		value_flags=1
3668	WHERE value NOT IN (0,1)		-- TRIGGER_VALUE_FALSE (OK), TRIGGER_VALUE_TRUE (PROBLEM)
3669
3670/
3671
3672DROP TABLE tmp_triggers
3673/
3674
3675-- End event redesign patch
3676ALTER TABLE user_history ALTER COLUMN userhistoryid SET WITH DEFAULT NULL
3677/
3678REORG TABLE user_history
3679/
3680ALTER TABLE user_history ALTER COLUMN userid SET WITH DEFAULT NULL
3681/
3682REORG TABLE user_history
3683/
3684DELETE FROM user_history WHERE NOT userid IN (SELECT userid FROM users)
3685/
3686ALTER TABLE user_history ADD CONSTRAINT c_user_history_1 FOREIGN KEY (userid) REFERENCES users (userid) ON DELETE CASCADE
3687/
3688ALTER TABLE users_groups ALTER COLUMN id SET WITH DEFAULT NULL
3689/
3690REORG TABLE users_groups
3691/
3692ALTER TABLE users_groups ALTER COLUMN usrgrpid SET WITH DEFAULT NULL
3693/
3694REORG TABLE users_groups
3695/
3696ALTER TABLE users_groups ALTER COLUMN userid SET WITH DEFAULT NULL
3697/
3698REORG TABLE users_groups
3699/
3700DELETE FROM users_groups WHERE usrgrpid NOT IN (SELECT usrgrpid FROM usrgrp)
3701/
3702DELETE FROM users_groups WHERE userid NOT IN (SELECT userid FROM users)
3703/
3704-- remove duplicates to allow unique index
3705DELETE FROM users_groups
3706	WHERE id IN (
3707		SELECT hm1.id
3708		FROM users_groups hm1
3709		LEFT OUTER JOIN (
3710			SELECT MIN(hm2.id) AS id
3711			FROM users_groups hm2
3712			GROUP BY hm2.usrgrpid,hm2.userid
3713		) keep_rows ON
3714			hm1.id=keep_rows.id
3715		WHERE keep_rows.id IS NULL
3716	)
3717/
3718DROP INDEX users_groups_1
3719/
3720CREATE UNIQUE INDEX users_groups_1 ON users_groups (usrgrpid,userid)
3721/
3722ALTER TABLE users_groups ADD CONSTRAINT c_users_groups_1 FOREIGN KEY (usrgrpid) REFERENCES usrgrp (usrgrpid) ON DELETE CASCADE
3723/
3724ALTER TABLE users_groups ADD CONSTRAINT c_users_groups_2 FOREIGN KEY (userid) REFERENCES users (userid) ON DELETE CASCADE
3725/
3726ALTER TABLE users ALTER COLUMN userid SET WITH DEFAULT NULL
3727/
3728REORG TABLE users
3729/
3730ALTER TABLE users ALTER COLUMN lang SET WITH DEFAULT 'en_GB'
3731/
3732REORG TABLE users
3733/
3734ALTER TABLE users ALTER COLUMN theme SET WITH DEFAULT 'default'
3735/
3736REORG TABLE users
3737/
3738UPDATE users SET lang = 'zh_CN' WHERE lang = 'cn_zh'
3739/
3740UPDATE users SET lang = 'es_ES' WHERE lang = 'sp_sp'
3741/
3742UPDATE users SET lang = 'en_GB' WHERE lang = 'en_gb'
3743/
3744UPDATE users SET lang = 'cs_CZ' WHERE lang = 'cs_cz'
3745/
3746UPDATE users SET lang = 'nl_NL' WHERE lang = 'nl_nl'
3747/
3748UPDATE users SET lang = 'fr_FR' WHERE lang = 'fr_fr'
3749/
3750UPDATE users SET lang = 'de_DE' WHERE lang = 'de_de'
3751/
3752UPDATE users SET lang = 'hu_HU' WHERE lang = 'hu_hu'
3753/
3754UPDATE users SET lang = 'ko_KR' WHERE lang = 'ko_kr'
3755/
3756UPDATE users SET lang = 'ja_JP' WHERE lang = 'ja_jp'
3757/
3758UPDATE users SET lang = 'lv_LV' WHERE lang = 'lv_lv'
3759/
3760UPDATE users SET lang = 'pl_PL' WHERE lang = 'pl_pl'
3761/
3762UPDATE users SET lang = 'pt_BR' WHERE lang = 'pt_br'
3763/
3764UPDATE users SET lang = 'ru_RU' WHERE lang = 'ru_ru'
3765/
3766UPDATE users SET lang = 'sv_SE' WHERE lang = 'sv_se'
3767/
3768UPDATE users SET lang = 'uk_UA' WHERE lang = 'ua_ua'
3769/
3770
3771UPDATE users SET theme = 'darkblue' WHERE theme = 'css_bb.css'
3772/
3773UPDATE users SET theme = 'originalblue' WHERE theme = 'css_ob.css'
3774/
3775UPDATE users SET theme = 'darkorange' WHERE theme = 'css_od.css'
3776/
3777UPDATE users SET theme = 'default' WHERE theme = 'default.css'
3778/
3779ALTER TABLE usrgrp ALTER COLUMN usrgrpid SET WITH DEFAULT NULL
3780/
3781REORG TABLE usrgrp
3782/
3783ALTER TABLE usrgrp DROP COLUMN api_access
3784/
3785REORG TABLE usrgrp
3786/
3787ALTER TABLE valuemaps ALTER COLUMN valuemapid SET WITH DEFAULT NULL
3788/
3789REORG TABLE valuemaps
3790/
3791