Commit | Line | Data |
---|---|---|
6f33021d | 1 | /* |
5039dede | 2 | ** nxdbmgr - NetXMS database manager |
c908b63b | 3 | ** Copyright (C) 2004-2016 Victor Kirhenshtein |
5039dede AK |
4 | ** |
5 | ** This program is free software; you can redistribute it and/or modify | |
6 | ** it under the terms of the GNU General Public License as published by | |
7 | ** the Free Software Foundation; either version 2 of the License, or | |
8 | ** (at your option) any later version. | |
9 | ** | |
10 | ** This program is distributed in the hope that it will be useful, | |
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | ** GNU General Public License for more details. | |
14 | ** | |
15 | ** You should have received a copy of the GNU General Public License | |
16 | ** along with this program; if not, write to the Free Software | |
17 | ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
18 | ** | |
19 | ** File: upgrade.cpp | |
20 | ** | |
21 | **/ | |
22 | ||
23 | #include "nxdbmgr.h" | |
bf6fb6c3 | 24 | #include <nxevent.h> |
5039dede | 25 | |
4f50e45c VK |
26 | /** |
27 | * Externals | |
28 | */ | |
7a41a06e VK |
29 | BOOL MigrateMaps(); |
30 | ||
50963ced VK |
31 | /** |
32 | * Pre-defined GUID mapping for GenerateGUID | |
33 | */ | |
34 | struct GUID_MAPPING | |
35 | { | |
36 | UINT32 id; | |
37 | const TCHAR *guid; | |
38 | }; | |
39 | ||
271e3971 VK |
40 | /** |
41 | * Generate GUIDs | |
42 | */ | |
50963ced | 43 | static bool GenerateGUID(const TCHAR *table, const TCHAR *idColumn, const TCHAR *guidColumn, const GUID_MAPPING *mapping) |
271e3971 VK |
44 | { |
45 | TCHAR query[256]; | |
46 | _sntprintf(query, 256, _T("SELECT %s FROM %s"), idColumn, table); | |
47 | DB_RESULT hResult = SQLSelect(query); | |
48 | if (hResult == NULL) | |
49 | return false; | |
50 | ||
50963ced VK |
51 | uuid_t guid; |
52 | TCHAR buffer[64]; | |
53 | ||
271e3971 VK |
54 | int count = DBGetNumRows(hResult); |
55 | for(int i = 0; i < count; i++) | |
56 | { | |
50963ced VK |
57 | const TCHAR *guidText = NULL; |
58 | UINT32 id = DBGetFieldULong(hResult, i, 0); | |
59 | if (mapping != NULL) | |
60 | { | |
61 | for(int j = 0; mapping[j].guid != NULL; j++) | |
62 | if (mapping[j].id == id) | |
63 | { | |
64 | guidText = mapping[j].guid; | |
65 | break; | |
66 | } | |
67 | } | |
68 | if (guidText == NULL) | |
69 | { | |
70 | _uuid_generate(guid); | |
71 | guidText = _uuid_to_string(guid, buffer); | |
72 | } | |
73 | _sntprintf(query, 256, _T("UPDATE %s SET %s='%s' WHERE %s=%d"), table, guidColumn, guidText, idColumn, id); | |
271e3971 VK |
74 | if (!SQLQuery(query)) |
75 | { | |
76 | DBFreeResult(hResult); | |
77 | return false; | |
78 | } | |
79 | } | |
80 | DBFreeResult(hResult); | |
81 | return true; | |
82 | } | |
83 | ||
4f50e45c VK |
84 | /** |
85 | * Create table | |
86 | */ | |
c85c8ef2 | 87 | static bool CreateTable(const TCHAR *pszQuery) |
5039dede | 88 | { |
7618e362 | 89 | String query(pszQuery); |
5039dede | 90 | |
2a964810 VK |
91 | query.replace(_T("$SQL:TEXT"), g_pszSqlType[g_dbSyntax][SQL_TYPE_TEXT]); |
92 | query.replace(_T("$SQL:TXT4K"), g_pszSqlType[g_dbSyntax][SQL_TYPE_TEXT4K]); | |
93 | query.replace(_T("$SQL:INT64"), g_pszSqlType[g_dbSyntax][SQL_TYPE_INT64]); | |
94 | if (g_dbSyntax == DB_SYNTAX_MYSQL) | |
7618e362 | 95 | query += g_pszTableSuffix; |
c85c8ef2 | 96 | return SQLQuery(query); |
5039dede AK |
97 | } |
98 | ||
4f50e45c | 99 | /** |
c85c8ef2 | 100 | * Check if cnfiguration variable exist |
4f50e45c | 101 | */ |
c85c8ef2 | 102 | static bool IsConfigurationVariableExist(const TCHAR *name) |
5039dede | 103 | { |
c85c8ef2 VK |
104 | bool found = false; |
105 | TCHAR query[256]; | |
106 | _sntprintf(query, 256, _T("SELECT var_value FROM config WHERE var_name='%s'"), name); | |
107 | DB_RESULT hResult = DBSelect(g_hCoreDB, query); | |
5039dede AK |
108 | if (hResult != 0) |
109 | { | |
c85c8ef2 | 110 | found = (DBGetNumRows(hResult) > 0); |
5039dede AK |
111 | DBFreeResult(hResult); |
112 | } | |
c85c8ef2 VK |
113 | return found; |
114 | } | |
5039dede | 115 | |
c85c8ef2 VK |
116 | /** |
117 | * Create configuration parameter if it doesn't exist (unless bForceUpdate set to true) | |
118 | */ | |
119 | bool CreateConfigParam(const TCHAR *name, const TCHAR *value, const TCHAR *description, char dataType, bool isVisible, bool needRestart, bool isPublic, bool forceUpdate) | |
120 | { | |
121 | bool success = true; | |
2589cc10 | 122 | TCHAR szQuery[3024]; |
c85c8ef2 | 123 | if (!IsConfigurationVariableExist(name)) |
5039dede | 124 | { |
2589cc10 | 125 | _sntprintf(szQuery, 3024, _T("INSERT INTO config (var_name,var_value,is_visible,need_server_restart,is_public,data_type,description) VALUES (%s,%s,%d,%d,'%c','%c',%s)"), |
c85c8ef2 | 126 | (const TCHAR *)DBPrepareString(g_hCoreDB, name, 63), |
2589cc10 | 127 | (const TCHAR *)DBPrepareString(g_hCoreDB, value, 2000), isVisible ? 1 : 0, needRestart ? 1 : 0, |
c85c8ef2 VK |
128 | isPublic ? _T('Y') : _T('N'), dataType, (const TCHAR *)DBPrepareString(g_hCoreDB, description, 255)); |
129 | success = SQLQuery(szQuery); | |
5039dede | 130 | } |
c85c8ef2 | 131 | else if (forceUpdate) |
5039dede | 132 | { |
2589cc10 | 133 | _sntprintf(szQuery, 3024, _T("UPDATE config SET var_value=%s WHERE var_name=%s"), |
134 | (const TCHAR *)DBPrepareString(g_hCoreDB, value, 2000), (const TCHAR *)DBPrepareString(g_hCoreDB, name, 63)); | |
c85c8ef2 | 135 | success = SQLQuery(szQuery); |
5039dede | 136 | } |
c85c8ef2 VK |
137 | return success; |
138 | } | |
139 | ||
140 | /** | |
141 | * Create configuration parameter if it doesn't exist (unless bForceUpdate set to true) | |
142 | */ | |
143 | bool CreateConfigParam(const TCHAR *name, const TCHAR *value, bool isVisible, bool needRestart, bool forceUpdate) | |
144 | { | |
145 | bool success = true; | |
2589cc10 | 146 | TCHAR szQuery[3024]; |
c85c8ef2 VK |
147 | if (!IsConfigurationVariableExist(name)) |
148 | { | |
2589cc10 | 149 | _sntprintf(szQuery, 3024, _T("INSERT INTO config (var_name,var_value,is_visible,need_server_restart) VALUES (%s,%s,%d,%d)"), |
c85c8ef2 | 150 | (const TCHAR *)DBPrepareString(g_hCoreDB, name, 63), |
2589cc10 | 151 | (const TCHAR *)DBPrepareString(g_hCoreDB, value, 2000), isVisible ? 1 : 0, needRestart ? 1 : 0); |
c85c8ef2 VK |
152 | success = SQLQuery(szQuery); |
153 | } | |
154 | else if (forceUpdate) | |
155 | { | |
2589cc10 | 156 | _sntprintf(szQuery, 3024, _T("UPDATE config SET var_value=%s WHERE var_name=%s"), |
157 | (const TCHAR *)DBPrepareString(g_hCoreDB, value, 2000), (const TCHAR *)DBPrepareString(g_hCoreDB, name, 63)); | |
c85c8ef2 VK |
158 | success = SQLQuery(szQuery); |
159 | } | |
160 | return success; | |
5039dede AK |
161 | } |
162 | ||
4f50e45c VK |
163 | /** |
164 | * Set primary key constraint | |
165 | */ | |
5039dede AK |
166 | static BOOL SetPrimaryKey(const TCHAR *table, const TCHAR *key) |
167 | { | |
168 | TCHAR query[4096]; | |
169 | ||
2a964810 | 170 | if (g_dbSyntax == DB_SYNTAX_SQLITE) |
5039dede | 171 | return TRUE; // SQLite does not support adding constraints |
6f33021d | 172 | |
5039dede AK |
173 | _sntprintf(query, 4096, _T("ALTER TABLE %s ADD PRIMARY KEY (%s)"), table, key); |
174 | return SQLQuery(query); | |
175 | } | |
176 | ||
4f50e45c VK |
177 | /** |
178 | * Drop primary key from table | |
179 | */ | |
9bfc9a6b VK |
180 | static BOOL DropPrimaryKey(const TCHAR *table) |
181 | { | |
182 | TCHAR query[1024]; | |
183 | DB_RESULT hResult; | |
184 | BOOL success; | |
185 | ||
2a964810 | 186 | switch(g_dbSyntax) |
9bfc9a6b | 187 | { |
c849da55 VK |
188 | case DB_SYNTAX_DB2: |
189 | case DB_SYNTAX_INFORMIX: | |
9bfc9a6b | 190 | case DB_SYNTAX_MYSQL: |
c849da55 | 191 | case DB_SYNTAX_ORACLE: |
9bfc9a6b VK |
192 | _sntprintf(query, 1024, _T("ALTER TABLE %s DROP PRIMARY KEY"), table); |
193 | success = SQLQuery(query); | |
194 | break; | |
195 | case DB_SYNTAX_PGSQL: | |
196 | _sntprintf(query, 1024, _T("ALTER TABLE %s DROP CONSTRAINT %s_pkey"), table, table); | |
197 | success = SQLQuery(query); | |
198 | break; | |
199 | case DB_SYNTAX_MSSQL: | |
200 | success = FALSE; | |
201 | _sntprintf(query, 1024, _T("SELECT name FROM sysobjects WHERE xtype='PK' AND parent_obj=OBJECT_ID('%s')"), table); | |
202 | hResult = SQLSelect(query); | |
203 | if (hResult != NULL) | |
204 | { | |
205 | if (DBGetNumRows(hResult) > 0) | |
206 | { | |
207 | TCHAR objName[512]; | |
208 | ||
209 | DBGetField(hResult, 0, 0, objName, 512); | |
210 | _sntprintf(query, 1024, _T("ALTER TABLE %s DROP CONSTRAINT %s"), table, objName); | |
211 | success = SQLQuery(query); | |
212 | } | |
213 | DBFreeResult(hResult); | |
214 | } | |
215 | break; | |
216 | default: // Unsupported DB engine | |
217 | success = FALSE; | |
218 | break; | |
219 | } | |
c849da55 VK |
220 | |
221 | if ((g_dbSyntax == DB_SYNTAX_DB2) && success) | |
222 | { | |
223 | _sntprintf(query, 1024, _T("CALL Sysproc.admin_cmd('REORG TABLE %s')"), table); | |
224 | success = SQLQuery(query); | |
225 | } | |
9bfc9a6b VK |
226 | return success; |
227 | } | |
228 | ||
4f50e45c VK |
229 | /** |
230 | * Convert strings from # encoded form to normal form | |
231 | */ | |
d6bf58f9 | 232 | static BOOL ConvertStrings(const TCHAR *table, const TCHAR *idColumn, const TCHAR *idColumn2, const TCHAR *column, bool isStringId) |
643c9dcb VK |
233 | { |
234 | DB_RESULT hResult; | |
235 | TCHAR *query; | |
4e0e77e6 | 236 | size_t queryLen = 512; |
643c9dcb VK |
237 | BOOL success = FALSE; |
238 | ||
c29fb885 | 239 | query = (TCHAR *)malloc(queryLen * sizeof(TCHAR)); |
fe12a1ea | 240 | |
2a964810 | 241 | switch(g_dbSyntax) |
a4743a0f VK |
242 | { |
243 | case DB_SYNTAX_MSSQL: | |
9f6712bc | 244 | _sntprintf(query, queryLen, _T("UPDATE %s SET %s='' WHERE CAST(%s AS nvarchar(4000))=N'#00'"), table, column, column); |
a4743a0f VK |
245 | break; |
246 | case DB_SYNTAX_ORACLE: | |
247 | _sntprintf(query, queryLen, _T("UPDATE %s SET %s='' WHERE to_char(%s)='#00'"), table, column, column); | |
248 | break; | |
249 | default: | |
250 | _sntprintf(query, queryLen, _T("UPDATE %s SET %s='' WHERE %s='#00'"), table, column, column); | |
251 | break; | |
252 | } | |
fe12a1ea VK |
253 | if (!SQLQuery(query)) |
254 | { | |
255 | free(query); | |
256 | return FALSE; | |
257 | } | |
258 | ||
6f33021d | 259 | _sntprintf(query, queryLen, _T("SELECT %s,%s%s%s FROM %s WHERE %s LIKE '%%#%%'"), |
98cd01bb | 260 | idColumn, column, (idColumn2 != NULL) ? _T(",") : _T(""), (idColumn2 != NULL) ? idColumn2 : _T(""), table, column); |
643c9dcb VK |
261 | hResult = SQLSelect(query); |
262 | if (hResult == NULL) | |
263 | { | |
264 | free(query); | |
265 | return FALSE; | |
266 | } | |
267 | ||
268 | int count = DBGetNumRows(hResult); | |
269 | for(int i = 0; i < count; i++) | |
270 | { | |
643c9dcb | 271 | TCHAR *value = DBGetField(hResult, i, 1, NULL, 0); |
035a4d73 | 272 | if (_tcschr(value, _T('#')) != NULL) |
643c9dcb | 273 | { |
035a4d73 VK |
274 | DecodeSQLString(value); |
275 | String newValue = DBPrepareString(g_hCoreDB, value); | |
4e0e77e6 | 276 | if (newValue.length() + 256 > queryLen) |
035a4d73 | 277 | { |
4e0e77e6 | 278 | queryLen = newValue.length() + 256; |
c29fb885 | 279 | query = (TCHAR *)realloc(query, queryLen * sizeof(TCHAR)); |
035a4d73 | 280 | } |
d6bf58f9 | 281 | if (isStringId) |
98cd01bb | 282 | { |
d6bf58f9 VK |
283 | TCHAR *id = DBGetField(hResult, i, 0, NULL, 0); |
284 | if (idColumn2 != NULL) | |
285 | { | |
286 | TCHAR *id2 = DBGetField(hResult, i, 2, NULL, 0); | |
287 | _sntprintf(query, queryLen, _T("UPDATE %s SET %s=%s WHERE %s=%s AND %s=%s"), | |
288 | table, column, (const TCHAR *)newValue, | |
6f33021d | 289 | idColumn, (const TCHAR *)DBPrepareString(g_hCoreDB, id), |
d6bf58f9 VK |
290 | idColumn2, (const TCHAR *)DBPrepareString(g_hCoreDB, id2)); |
291 | } | |
292 | else | |
293 | { | |
294 | _sntprintf(query, queryLen, _T("UPDATE %s SET %s=%s WHERE %s=%s"), table, column, | |
295 | (const TCHAR *)newValue, idColumn, (const TCHAR *)DBPrepareString(g_hCoreDB, id)); | |
296 | } | |
297 | free(id); | |
98cd01bb VK |
298 | } |
299 | else | |
300 | { | |
d6bf58f9 VK |
301 | INT64 id = DBGetFieldInt64(hResult, i, 0); |
302 | if (idColumn2 != NULL) | |
303 | { | |
304 | INT64 id2 = DBGetFieldInt64(hResult, i, 2); | |
6f33021d | 305 | _sntprintf(query, queryLen, _T("UPDATE %s SET %s=%s WHERE %s=") INT64_FMT _T(" AND %s=") INT64_FMT, |
d6bf58f9 VK |
306 | table, column, (const TCHAR *)newValue, idColumn, id, idColumn2, id2); |
307 | } | |
308 | else | |
309 | { | |
310 | _sntprintf(query, queryLen, _T("UPDATE %s SET %s=%s WHERE %s=") INT64_FMT, table, column, | |
311 | (const TCHAR *)newValue, idColumn, id); | |
312 | } | |
98cd01bb | 313 | } |
035a4d73 VK |
314 | if (!SQLQuery(query)) |
315 | goto cleanup; | |
643c9dcb | 316 | } |
643c9dcb VK |
317 | } |
318 | success = TRUE; | |
319 | ||
320 | cleanup: | |
321 | DBFreeResult(hResult); | |
a4743a0f | 322 | free(query); |
643c9dcb VK |
323 | return success; |
324 | } | |
325 | ||
98cd01bb VK |
326 | static BOOL ConvertStrings(const TCHAR *table, const TCHAR *idColumn, const TCHAR *column) |
327 | { | |
d6bf58f9 | 328 | return ConvertStrings(table, idColumn, NULL, column, false); |
98cd01bb VK |
329 | } |
330 | ||
4f50e45c | 331 | /** |
70ffb771 | 332 | * Set column nullable (currently only Oracle and PostgreSQL) |
4f50e45c | 333 | */ |
480e036b | 334 | static BOOL SetColumnNullable(const TCHAR *table, const TCHAR *column) |
1024e962 VK |
335 | { |
336 | TCHAR query[1024] = _T(""); | |
337 | ||
2a964810 | 338 | switch(g_dbSyntax) |
1024e962 VK |
339 | { |
340 | case DB_SYNTAX_ORACLE: | |
341 | _sntprintf(query, 1024, _T("DECLARE already_null EXCEPTION; ") | |
342 | _T("PRAGMA EXCEPTION_INIT(already_null, -1451); ") | |
f57209fd VK |
343 | _T("BEGIN EXECUTE IMMEDIATE 'ALTER TABLE %s MODIFY %s null'; ") |
344 | _T("EXCEPTION WHEN already_null THEN null; END;"), table, column); | |
1024e962 | 345 | break; |
480e036b VK |
346 | case DB_SYNTAX_PGSQL: |
347 | _sntprintf(query, 1024, _T("ALTER TABLE %s ALTER COLUMN %s DROP NOT NULL"), table, column); | |
348 | break; | |
1024e962 VK |
349 | default: |
350 | break; | |
351 | } | |
352 | ||
353 | return (query[0] != 0) ? SQLQuery(query) : TRUE; | |
354 | } | |
355 | ||
480e036b VK |
356 | /** |
357 | * Resize varchar column | |
358 | */ | |
b69710b9 | 359 | static BOOL ResizeColumn(const TCHAR *table, const TCHAR *column, int newSize, bool nullable) |
480e036b VK |
360 | { |
361 | TCHAR query[1024]; | |
362 | ||
2a964810 | 363 | switch(g_dbSyntax) |
480e036b VK |
364 | { |
365 | case DB_SYNTAX_DB2: | |
366 | _sntprintf(query, 1024, _T("ALTER TABLE %s ALTER COLUMN %s SET DATA TYPE varchar(%d)"), table, column, newSize); | |
367 | break; | |
368 | case DB_SYNTAX_MSSQL: | |
b69710b9 | 369 | _sntprintf(query, 1024, _T("ALTER TABLE %s ALTER COLUMN %s varchar(%d) %s NULL"), table, column, newSize, nullable ? _T("") : _T("NOT")); |
480e036b VK |
370 | break; |
371 | case DB_SYNTAX_PGSQL: | |
372 | _sntprintf(query, 1024, _T("ALTER TABLE %s ALTER COLUMN %s TYPE varchar(%d)"), table, column, newSize); | |
373 | break; | |
374 | case DB_SYNTAX_SQLITE: | |
375 | /* TODO: add SQLite support */ | |
376 | query[0] = 0; | |
377 | break; | |
378 | default: | |
379 | _sntprintf(query, 1024, _T("ALTER TABLE %s MODIFY %s varchar(%d)"), table, column, newSize); | |
380 | break; | |
381 | } | |
382 | ||
383 | return (query[0] != 0) ? SQLQuery(query) : TRUE; | |
384 | } | |
385 | ||
4f50e45c VK |
386 | /** |
387 | * Create new event template | |
388 | */ | |
3da098f7 | 389 | static BOOL CreateEventTemplate(int code, const TCHAR *name, int severity, int flags, const TCHAR *guid, const TCHAR *message, const TCHAR *description) |
aa16f82b | 390 | { |
480e036b | 391 | TCHAR query[4096]; |
aa16f82b | 392 | |
3da098f7 VK |
393 | if (guid != NULL) |
394 | { | |
395 | _sntprintf(query, 4096, _T("INSERT INTO event_cfg (event_code,event_name,severity,flags,message,description,guid) VALUES (%d,'%s',%d,%d,%s,%s,'%s')"), | |
396 | code, name, severity, flags, (const TCHAR *)DBPrepareString(g_hCoreDB, message), | |
397 | (const TCHAR *)DBPrepareString(g_hCoreDB, description), guid); | |
398 | } | |
399 | else | |
400 | { | |
401 | _sntprintf(query, 4096, _T("INSERT INTO event_cfg (event_code,event_name,severity,flags,message,description) VALUES (%d,'%s',%d,%d,%s,%s)"), | |
402 | code, name, severity, flags, (const TCHAR *)DBPrepareString(g_hCoreDB, message), | |
403 | (const TCHAR *)DBPrepareString(g_hCoreDB, description)); | |
404 | } | |
aa16f82b VK |
405 | return SQLQuery(query); |
406 | } | |
407 | ||
22aaa779 VK |
408 | /** |
409 | * Re-create TDATA tables | |
410 | */ | |
2f1bc68b | 411 | static BOOL RecreateTData(const TCHAR *className, bool multipleTables, bool indexFix) |
22aaa779 | 412 | { |
1d4f7890 | 413 | TCHAR query[1024]; |
22aaa779 VK |
414 | _sntprintf(query, 256, _T("SELECT id FROM %s"), className); |
415 | DB_RESULT hResult = SQLSelect(query); | |
416 | if (hResult != NULL) | |
417 | { | |
418 | int count = DBGetNumRows(hResult); | |
419 | for(int i = 0; i < count; i++) | |
420 | { | |
2f1bc68b | 421 | bool recreateTables = true; |
22aaa779 VK |
422 | DWORD id = DBGetFieldULong(hResult, i, 0); |
423 | ||
2f1bc68b | 424 | if (indexFix) |
1d4f7890 | 425 | { |
2f1bc68b VK |
426 | _sntprintf(query, 256, _T("SELECT count(*) FROM dc_tables WHERE node_id=%d"), id); |
427 | DB_RESULT hResultCount = SQLSelect(query); | |
428 | if (hResultCount != NULL) | |
22aaa779 | 429 | { |
7d4f8ace | 430 | recreateTables = (DBGetFieldLong(hResultCount, 0, 0) == 0); |
2f1bc68b VK |
431 | DBFreeResult(hResultCount); |
432 | } | |
433 | ||
434 | if (!recreateTables) | |
435 | { | |
a9f5aa55 | 436 | _sntprintf(query, 256, _T("CREATE INDEX idx_tdata_rec_%d_id ON tdata_records_%d(record_id)"), id, id); |
2f1bc68b VK |
437 | if (!SQLQuery(query)) |
438 | { | |
439 | if (!g_bIgnoreErrors) | |
440 | { | |
441 | DBFreeResult(hResult); | |
442 | return FALSE; | |
443 | } | |
444 | } | |
22aaa779 VK |
445 | } |
446 | } | |
447 | ||
2f1bc68b | 448 | if (recreateTables) |
22aaa779 | 449 | { |
2f1bc68b | 450 | if (multipleTables) |
22aaa779 | 451 | { |
2f1bc68b VK |
452 | _sntprintf(query, 1024, _T("DROP TABLE tdata_rows_%d\nDROP TABLE tdata_records_%d\nDROP TABLE tdata_%d\n<END>"), id, id, id); |
453 | } | |
454 | else | |
455 | { | |
456 | _sntprintf(query, 256, _T("DROP TABLE tdata_%d\n<END>"), id); | |
457 | } | |
458 | if (!SQLBatch(query)) | |
459 | { | |
460 | if (!g_bIgnoreErrors) | |
461 | { | |
462 | DBFreeResult(hResult); | |
463 | return FALSE; | |
464 | } | |
465 | } | |
466 | ||
467 | if (!CreateTDataTables(id)) | |
468 | { | |
469 | if (!g_bIgnoreErrors) | |
470 | { | |
471 | DBFreeResult(hResult); | |
472 | return FALSE; | |
473 | } | |
22aaa779 VK |
474 | } |
475 | } | |
476 | } | |
477 | DBFreeResult(hResult); | |
478 | } | |
479 | else | |
480 | { | |
481 | if (!g_bIgnoreErrors) | |
482 | return FALSE; | |
483 | } | |
385b1f20 | 484 | return TRUE; |
485 | } | |
486 | ||
c75e9ee4 VK |
487 | /** |
488 | * Convert network masks from dotted decimal format to number of bits | |
489 | */ | |
490 | static BOOL ConvertNetMasks(const TCHAR *table, const TCHAR *column, const TCHAR *idColumn, const TCHAR *idColumn2 = NULL, const TCHAR *condition = NULL) | |
491 | { | |
492 | TCHAR query[256]; | |
fcf91b2e | 493 | |
c75e9ee4 VK |
494 | if (idColumn2 != NULL) |
495 | _sntprintf(query, 256, _T("SELECT %s,%s,%s FROM %s"), idColumn, column, idColumn2, table); | |
496 | else | |
497 | _sntprintf(query, 256, _T("SELECT %s,%s FROM %s"), idColumn, column, table); | |
498 | DB_RESULT hResult = SQLSelect(query); | |
499 | if (hResult == NULL) | |
500 | return FALSE; | |
501 | ||
a19fa589 | 502 | BOOL success = SQLDropColumn(table, column); |
fcf91b2e | 503 | |
c75e9ee4 VK |
504 | if (success) |
505 | { | |
506 | _sntprintf(query, 256, _T("ALTER TABLE %s ADD %s integer"), table, column); | |
507 | success = SQLQuery(query); | |
508 | } | |
509 | ||
510 | if (success) | |
511 | { | |
512 | int count = DBGetNumRows(hResult); | |
513 | for(int i = 0; (i < count) && success; i++) | |
514 | { | |
515 | if (idColumn2 != NULL) | |
516 | { | |
517 | TCHAR id2[256]; | |
fcf91b2e | 518 | _sntprintf(query, 256, _T("UPDATE %s SET %s=%d WHERE %s=%d AND %s='%s'"), |
c75e9ee4 VK |
519 | table, column, BitsInMask(DBGetFieldIPAddr(hResult, i, 1)), idColumn, DBGetFieldLong(hResult, i, 0), |
520 | idColumn2, DBGetField(hResult, i, 2, id2, 256)); | |
521 | } | |
522 | else | |
523 | { | |
fcf91b2e | 524 | _sntprintf(query, 256, _T("UPDATE %s SET %s=%d WHERE %s=%d"), |
c75e9ee4 VK |
525 | table, column, BitsInMask(DBGetFieldIPAddr(hResult, i, 1)), idColumn, DBGetFieldLong(hResult, i, 0)); |
526 | } | |
527 | success = SQLQuery(query); | |
528 | } | |
529 | } | |
530 | ||
531 | DBFreeResult(hResult); | |
532 | return success; | |
533 | } | |
534 | ||
b2a15edc VK |
535 | /** |
536 | * Convert object tool macros to new format | |
537 | */ | |
538 | static bool ConvertObjectToolMacros(UINT32 id, const TCHAR *text, const TCHAR *column) | |
539 | { | |
540 | if (_tcschr(text, _T('%')) == NULL) | |
541 | return true; // nothing to convert | |
542 | ||
543 | String s; | |
544 | for(const TCHAR *p = text; *p != 0; p++) | |
545 | { | |
546 | if (*p == _T('%')) | |
547 | { | |
548 | TCHAR name[256]; | |
549 | int i = 0; | |
550 | for(p++; (*p != _T('%')) && (*p != 0); p++) | |
551 | { | |
552 | if (i < 255) | |
553 | name[i++] = *p; | |
554 | } | |
555 | if (*p == 0) | |
556 | break; // malformed string | |
557 | name[i] = 0; | |
558 | if (!_tcscmp(name, _T("ALARM_ID"))) | |
559 | { | |
560 | s.append(_T("%Y")); | |
561 | } | |
562 | else if (!_tcscmp(name, _T("ALARM_MESSAGE"))) | |
563 | { | |
564 | s.append(_T("%A")); | |
565 | } | |
566 | else if (!_tcscmp(name, _T("ALARM_SEVERITY"))) | |
567 | { | |
568 | s.append(_T("%s")); | |
569 | } | |
570 | else if (!_tcscmp(name, _T("ALARM_SEVERITY_TEXT"))) | |
571 | { | |
572 | s.append(_T("%S")); | |
573 | } | |
574 | else if (!_tcscmp(name, _T("ALARM_STATE"))) | |
575 | { | |
576 | s.append(_T("%y")); | |
577 | } | |
578 | else if (!_tcscmp(name, _T("OBJECT_ID"))) | |
579 | { | |
580 | s.append(_T("%I")); | |
581 | } | |
582 | else if (!_tcscmp(name, _T("OBJECT_IP_ADDR"))) | |
583 | { | |
584 | s.append(_T("%a")); | |
585 | } | |
586 | else if (!_tcscmp(name, _T("OBJECT_NAME"))) | |
587 | { | |
588 | s.append(_T("%n")); | |
589 | } | |
590 | else if (!_tcscmp(name, _T("USERNAME"))) | |
591 | { | |
592 | s.append(_T("%U")); | |
593 | } | |
594 | else | |
595 | { | |
596 | s.append(_T("%{")); | |
597 | s.append(name); | |
598 | s.append(_T('}')); | |
599 | } | |
600 | } | |
601 | else | |
602 | { | |
603 | s.append(*p); | |
604 | } | |
605 | } | |
606 | ||
607 | String query = _T("UPDATE object_tools SET "); | |
608 | query.append(column); | |
609 | query.append(_T('=')); | |
610 | query.append(DBPrepareString(g_hCoreDB, s)); | |
611 | query.append(_T(" WHERE tool_id=")); | |
612 | query.append(id); | |
613 | return SQLQuery(query); | |
614 | } | |
8a1519ce | 615 | |
83aa5ebd VK |
616 | /** |
617 | * Create library script | |
618 | */ | |
619 | static bool CreateLibraryScript(UINT32 id, const TCHAR *name, const TCHAR *code) | |
620 | { | |
621 | // Check if script exists | |
622 | TCHAR query[256]; | |
623 | _sntprintf(query, 256, _T("SELECT script_id FROM script_library WHERE script_id=%d OR script_name=%s"), | |
624 | id, (const TCHAR *)DBPrepareString(g_hCoreDB, name)); | |
625 | DB_RESULT hResult = SQLSelect(query); | |
626 | if (hResult == NULL) | |
627 | return false; | |
628 | bool exist = (DBGetNumRows(hResult) > 0); | |
629 | DBFreeResult(hResult); | |
630 | if (exist) | |
631 | return true; | |
632 | ||
633 | DB_STATEMENT hStmt = DBPrepare(g_hCoreDB, _T("INSERT INTO script_library (script_id,script_name,script_code) VALUES (?,?,?)")); | |
634 | if (hStmt == NULL) | |
635 | return false; | |
636 | ||
637 | DBBind(hStmt, 1, DB_SQLTYPE_INTEGER, id); | |
638 | DBBind(hStmt, 2, DB_SQLTYPE_VARCHAR, name, DB_BIND_STATIC); | |
639 | DBBind(hStmt, 3, DB_SQLTYPE_TEXT, code, DB_BIND_STATIC); | |
640 | ||
641 | bool success = SQLExecute(hStmt); | |
642 | DBFreeStatement(hStmt); | |
643 | return success; | |
644 | } | |
645 | ||
e2a9c5fc VK |
646 | /** |
647 | * Check if an event pair is handled by any EPP rules | |
648 | */ | |
649 | static bool IsEventPairInUse(UINT32 code1, UINT32 code2) | |
650 | { | |
651 | TCHAR query[256]; | |
652 | _sntprintf(query, 256, _T("SELECT count(*) FROM policy_event_list WHERE event_code=%d OR event_code=%d"), code1, code2); | |
653 | DB_RESULT hResult = SQLSelect(query); | |
654 | if (hResult == NULL) | |
655 | return false; | |
656 | bool inUse = (DBGetFieldLong(hResult, 0, 0) > 0); | |
657 | DBFreeResult(hResult); | |
658 | return inUse; | |
659 | } | |
660 | ||
661 | /** | |
662 | * Return the next free EPP rule ID | |
663 | */ | |
664 | static int NextFreeEPPruleID() | |
665 | { | |
666 | int ruleId = 1; | |
667 | DB_RESULT hResult = SQLSelect(_T("SELECT max(rule_id) FROM event_policy")); | |
668 | if (hResult != NULL) | |
669 | { | |
670 | ruleId = DBGetFieldLong(hResult, 0, 0) + 1; | |
671 | DBFreeResult(hResult); | |
672 | } | |
673 | return ruleId; | |
674 | } | |
675 | ||
e4926628 VK |
676 | /** |
677 | * Set schema version | |
678 | */ | |
679 | static bool SetSchemaVersion(int version) | |
680 | { | |
681 | TCHAR query[256]; | |
682 | _sntprintf(query, 256, _T("UPDATE metadata SET var_value='%d' WHERE var_name='SchemaVersion'"), version); | |
683 | return SQLQuery(query); | |
684 | } | |
685 | ||
e980db40 VK |
686 | /** |
687 | * Upgrade from V408 to V409 | |
688 | */ | |
689 | static BOOL H_UpgradeFromV408(int currVersion, int newVersion) | |
690 | { | |
691 | static const TCHAR *batch = | |
692 | _T("ALTER TABLE nodes ADD node_type integer\n") | |
693 | _T("ALTER TABLE nodes ADD node_subtype varchar(127)\n") | |
694 | _T("UPDATE nodes SET node_type=0\n") | |
695 | _T("<END>"); | |
696 | CHK_EXEC(SQLBatch(batch)); | |
697 | ||
698 | CHK_EXEC(SetSchemaVersion(409)); | |
699 | return TRUE; | |
700 | } | |
701 | ||
e4926628 VK |
702 | /** |
703 | * Upgrade from V407 to V408 | |
704 | */ | |
705 | static BOOL H_UpgradeFromV407(int currVersion, int newVersion) | |
706 | { | |
707 | CHK_EXEC(CreateTable( | |
708 | _T("CREATE TABLE chassis (") | |
709 | _T(" id integer not null,") | |
32a400d9 | 710 | _T(" flags integer not null,") |
e4926628 VK |
711 | _T(" controller_id integer not null,") |
712 | _T(" rack_id integer not null,") | |
713 | _T(" rack_image varchar(36) null,") | |
714 | _T(" rack_position integer not null,") | |
715 | _T(" rack_height integer not null,") | |
716 | _T(" PRIMARY KEY(id))") | |
717 | )); | |
718 | ||
719 | static const TCHAR *batch = | |
720 | _T("ALTER TABLE nodes ADD chassis_id integer\n") | |
721 | _T("UPDATE nodes SET chassis_id=0\n") | |
722 | _T("<END>"); | |
723 | CHK_EXEC(SQLBatch(batch)); | |
724 | ||
725 | CHK_EXEC(SetSchemaVersion(408)); | |
726 | return TRUE; | |
727 | } | |
728 | ||
8498228c | 729 | /** |
730 | * Upgrade from V406 to V407 | |
731 | */ | |
732 | static BOOL H_UpgradeFromV406(int currVersion, int newVersion) | |
733 | { | |
734 | ResizeColumn(_T("user_groups"), _T("ldap_unique_id"), 64, true); | |
e4926628 | 735 | CHK_EXEC(SetSchemaVersion(407)); |
8498228c | 736 | return TRUE; |
737 | } | |
738 | ||
ba756b1a VK |
739 | /** |
740 | * Upgrade from V405 to V406 | |
741 | */ | |
742 | static BOOL H_UpgradeFromV405(int currVersion, int newVersion) | |
743 | { | |
744 | static const TCHAR *batch = | |
745 | _T("ALTER TABLE nodes ADD syslog_msg_count $SQL:INT64\n") | |
746 | _T("ALTER TABLE nodes ADD snmp_trap_count $SQL:INT64\n") | |
747 | _T("UPDATE nodes SET syslog_msg_count=0,snmp_trap_count=0\n") | |
748 | _T("<END>"); | |
749 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 750 | CHK_EXEC(SetSchemaVersion(406)); |
ba756b1a VK |
751 | return TRUE; |
752 | } | |
753 | ||
b123ecb3 | 754 | /** |
755 | * Upgrade from V404 to V405 | |
756 | */ | |
757 | static BOOL H_UpgradeFromV404(int currVersion, int newVersion) | |
758 | { | |
7b30e5ae | 759 | CHK_EXEC(CreateEventTemplate(EVENT_AGENT_LOG_PROBLEM, _T("SYS_AGENT_LOG_PROBLEM"), |
b123ecb3 | 760 | SEVERITY_MAJOR, EF_LOG, _T("262057ca-357a-4a4d-9b78-42ae96e490a1"), |
761 | _T("Problem with agent log: %2"), | |
7b30e5ae | 762 | _T("Generated on status poll if agent reports problem with log file.\r\n") |
b123ecb3 | 763 | _T("Parameters:\r\n") |
7b30e5ae | 764 | _T(" 1) Status code\r\n") |
b123ecb3 | 765 | _T(" 2) Description"))); |
7b30e5ae | 766 | CHK_EXEC(CreateEventTemplate(EVENT_AGENT_LOCAL_DATABASE_PROBLEM, _T("SYS_AGENT_LOCAL_DATABASE_PROBLEM"), |
b123ecb3 | 767 | SEVERITY_MAJOR, EF_LOG, _T("d02b63f1-1151-429e-adb9-1dfbb3a31b32"), |
768 | _T("Problem with agent local database: %2"), | |
7b30e5ae | 769 | _T("Generated on status poll if agent reports local database problem.\r\n") |
b123ecb3 | 770 | _T("Parameters:\r\n") |
7b30e5ae | 771 | _T(" 1) Status code\r\n") |
b123ecb3 | 772 | _T(" 2) Description"))); |
773 | ||
774 | int ruleId = NextFreeEPPruleID(); | |
775 | TCHAR query[1024]; | |
776 | _sntprintf(query, 1024, _T("INSERT INTO event_policy (rule_id,rule_guid,flags,comments,alarm_message,alarm_severity,alarm_key,script,alarm_timeout,alarm_timeout_event,situation_id,situation_instance) ") | |
7b30e5ae | 777 | _T("VALUES (%d,'19bd89ba-8bb2-4915-8546-a1ecc650dedd',7944,'Generate an alarm when there is problem with agent log','%%m',5,'SYS_AGENT_LOG_PROBLEM_%%i','',0,%d,0,'')"), |
b123ecb3 | 778 | ruleId, EVENT_ALARM_TIMEOUT); |
779 | CHK_EXEC(SQLQuery(query)); | |
7b30e5ae | 780 | _sntprintf(query, 1024, _T("INSERT INTO policy_event_list (rule_id,event_code) VALUES (%d,%d)"), ruleId, EVENT_AGENT_LOG_PROBLEM); |
b123ecb3 | 781 | CHK_EXEC(SQLQuery(query)); |
7b30e5ae VK |
782 | |
783 | ruleId = NextFreeEPPruleID(); | |
b123ecb3 | 784 | _sntprintf(query, 1024, _T("INSERT INTO event_policy (rule_id,rule_guid,flags,comments,alarm_message,alarm_severity,alarm_key,script,alarm_timeout,alarm_timeout_event,situation_id,situation_instance) ") |
7b30e5ae | 785 | _T("VALUES (%d,'cff7fe6b-2ad1-4c18-8a8f-4d397d44fe04',7944,'Generate an alarm when there is problem with agent local database','%%m',5,'SYS_AGENT_LOCAL_DATABASE_PROBLEM_%%i','',0,%d,0,'')"), |
b123ecb3 | 786 | ruleId, EVENT_ALARM_TIMEOUT); |
787 | CHK_EXEC(SQLQuery(query)); | |
7b30e5ae | 788 | _sntprintf(query, 1024, _T("INSERT INTO policy_event_list (rule_id,event_code) VALUES (%d,%d)"), ruleId, EVENT_AGENT_LOCAL_DATABASE_PROBLEM); |
b123ecb3 | 789 | CHK_EXEC(SQLQuery(query)); |
790 | ||
e4926628 | 791 | CHK_EXEC(SetSchemaVersion(405)); |
b123ecb3 | 792 | return TRUE; |
793 | } | |
794 | ||
b8c8a8a7 VK |
795 | /** |
796 | * Upgrade from V403 to V404 | |
797 | */ | |
798 | static BOOL H_UpgradeFromV403(int currVersion, int newVersion) | |
799 | { | |
800 | CHK_EXEC(CreateConfigParam(_T("SyslogIgnoreMessageTimestamp"), _T("0"), | |
801 | _T("Ignore timestamp received in syslog messages and always use server time"), | |
802 | 'B', true, false, false, false)); | |
e4926628 | 803 | CHK_EXEC(SetSchemaVersion(404)); |
b8c8a8a7 VK |
804 | return TRUE; |
805 | } | |
806 | ||
a18687b9 VK |
807 | /** |
808 | * Upgrade from V402 to V403 | |
809 | */ | |
810 | static BOOL H_UpgradeFromV402(int currVersion, int newVersion) | |
811 | { | |
812 | CHK_EXEC(SQLQuery(_T("DROP TABLE policy_time_range_list"))); | |
813 | CHK_EXEC(SQLQuery(_T("DROP TABLE time_ranges"))); | |
e4926628 | 814 | CHK_EXEC(SetSchemaVersion(403)); |
a18687b9 VK |
815 | return TRUE; |
816 | } | |
817 | ||
ed0a9e41 VK |
818 | /** |
819 | * Upgrade from V401 to V402 | |
820 | */ | |
821 | static BOOL H_UpgradeFromV401(int currVersion, int newVersion) | |
822 | { | |
823 | CHK_EXEC(SQLQuery(_T("CREATE INDEX idx_event_log_source ON event_log(event_source)"))); | |
e4926628 | 824 | CHK_EXEC(SetSchemaVersion(402)); |
ed0a9e41 VK |
825 | return TRUE; |
826 | } | |
827 | ||
bad2c02e | 828 | /** |
829 | * Upgrade from V400 to V401 | |
830 | */ | |
831 | static BOOL H_UpgradeFromV400(int currVersion, int newVersion) | |
832 | { | |
3da098f7 VK |
833 | CHK_EXEC(CreateEventTemplate(EVENT_LDAP_SYNC_ERROR, _T("SYS_LDAP_SYNC_ERROR"), |
834 | SEVERITY_MAJOR, EF_LOG, _T("f7e8508d-1503-4736-854b-1e5b8b0ad1f2"), | |
835 | _T("LDAP sync error: %5"), | |
bad2c02e | 836 | _T("Generated when LDAP synchronization error occurs.\r\n") |
837 | _T("Parameters:\r\n") | |
838 | _T(" 1) User ID\r\n") | |
839 | _T(" 2) User GUID\r\n") | |
840 | _T(" 3) User LDAP DN\r\n") | |
841 | _T(" 4) User name\r\n") | |
842 | _T(" 5) Problem description"))); | |
355aa002 | 843 | |
3da098f7 | 844 | int ruleId = NextFreeEPPruleID(); |
bad2c02e | 845 | TCHAR query[1024]; |
3da098f7 | 846 | _sntprintf(query, 1024, _T("INSERT INTO event_policy (rule_id,rule_guid,flags,comments,alarm_message,alarm_severity,alarm_key,script,alarm_timeout,alarm_timeout_event,situation_id,situation_instance) VALUES (%d,'417648af-5361-49a5-9471-6ef31e857b2d',7944,'Generate an alarm when error occurred during LDAP synchronization','%%m',5,'SYS_LDAP_SYNC_ERROR_%%2','',0,%d,0,'')"), ruleId, EVENT_ALARM_TIMEOUT); |
bad2c02e | 847 | CHK_EXEC(SQLQuery(query)); |
50e319a2 | 848 | _sntprintf(query, 1024, _T("INSERT INTO policy_event_list (rule_id,event_code) VALUES (%d,%d)"), ruleId, EVENT_LDAP_SYNC_ERROR); |
bad2c02e | 849 | CHK_EXEC(SQLQuery(query)); |
850 | ||
851 | CHK_EXEC(SQLQuery(_T("ALTER TABLE users ADD ldap_unique_id varchar(64)"))); | |
852 | CHK_EXEC(SQLQuery(_T("ALTER TABLE user_groups ADD ldap_unique_id varchar(64)"))); | |
853 | CHK_EXEC(CreateConfigParam(_T("LdapUserUniqueId"), _T(""), true, false, false)); | |
854 | CHK_EXEC(CreateConfigParam(_T("LdapGroupUniqueId"), _T(""), true, false, false)); | |
855 | ||
e4926628 | 856 | CHK_EXEC(SetSchemaVersion(401)); |
bad2c02e | 857 | return TRUE; |
858 | } | |
355aa002 | 859 | |
8e6e8ef1 | 860 | /** |
355aa002 TD |
861 | * Upgrade from V399 to V400 |
862 | */ | |
863 | static BOOL H_UpgradeFromV399(int currVersion, int newVersion) | |
864 | { | |
865 | CHK_EXEC(CreateConfigParam(_T("JobRetryCount"), _T("5"), _T("Maximum mumber of job execution retrys"), 'I', true, false, false, false)); | |
e4926628 | 866 | CHK_EXEC(SetSchemaVersion(400)); |
355aa002 TD |
867 | return TRUE; |
868 | } | |
869 | ||
870 | /** | |
871 | * Upgrade from V398 to V399 | |
8e6e8ef1 VK |
872 | */ |
873 | static BOOL H_UpgradeFromV398(int currVersion, int newVersion) | |
874 | { | |
875 | CHK_EXEC(CreateTable( | |
876 | _T("CREATE TABLE config_repositories (") | |
877 | _T(" id integer not null,") | |
878 | _T(" url varchar(1023) not null,") | |
879 | _T(" auth_token varchar(63) null,") | |
880 | _T(" description varchar(1023) null,") | |
881 | _T(" PRIMARY KEY(id))") | |
882 | )); | |
883 | ||
e4926628 | 884 | CHK_EXEC(SetSchemaVersion(399)); |
8e6e8ef1 VK |
885 | return TRUE; |
886 | } | |
887 | ||
0de31ec3 VK |
888 | /** |
889 | * Upgrade from V397 to V398 | |
890 | */ | |
891 | static BOOL H_UpgradeFromV397(int currVersion, int newVersion) | |
892 | { | |
893 | CHK_EXEC(CreateTable( | |
894 | _T("CREATE TABLE currency_codes (") | |
895 | _T(" numeric_code char(3) not null,") | |
896 | _T(" alpha_code char(3) not null,") | |
a27a303e | 897 | _T(" description varchar(127) not null,") |
0de31ec3 VK |
898 | _T(" exponent integer not null,") |
899 | _T(" PRIMARY KEY(numeric_code))") | |
900 | )); | |
901 | ||
902 | CHK_EXEC(CreateTable( | |
903 | _T("CREATE TABLE country_codes (") | |
904 | _T(" numeric_code char(3) not null,") | |
905 | _T(" alpha_code char(2) not null,") | |
906 | _T(" alpha3_code char(3) not null,") | |
a27a303e | 907 | _T(" name varchar(127) not null,") |
0de31ec3 VK |
908 | _T(" PRIMARY KEY(numeric_code))") |
909 | )); | |
910 | ||
dc4472a5 | 911 | static const TCHAR *batch1 = |
0de31ec3 VK |
912 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('008', 'ALL', 'Lek', 2)\n") |
913 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('012', 'DZD', 'Algerian Dinar', 2)\n") | |
914 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('031', 'AZM', 'Azerbaijanian Manat', 0)\n") | |
915 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('032', 'ARS', 'Argentine Peso', 2)\n") | |
916 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('036', 'AUD', 'Australian Dollar', 2)\n") | |
917 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('044', 'BSD', 'Bahamian Dollar', 2)\n") | |
918 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('048', 'BHD', 'Bahraini Dinar', 3)\n") | |
919 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('050', 'BDT', 'Taka', 2)\n") | |
920 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('051', 'AMD', 'Armenian Dram', 2)\n") | |
921 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('052', 'BBD', 'Barbados Dollar', 2)\n") | |
922 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('060', 'BMD', 'Bermudian Dollar', 2)\n") | |
923 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('064', 'BTN', 'Ngultrum', 2)\n") | |
924 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('068', 'BOB', 'Boliviano', 2)\n") | |
925 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('072', 'BWP', 'Pula', 2)\n") | |
926 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('084', 'BZD', 'Belize Dollar', 2)\n") | |
927 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('090', 'SBD', 'Solomon Islands Dollar', 2)\n") | |
928 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('096', 'BND', 'Brunei Dollar', 2)\n") | |
929 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('100', 'BGL', 'Lev', 0)\n") | |
930 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('104', 'MMK', 'Kyat', 2)\n") | |
931 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('108', 'BIF', 'Burundi Franc', 0)\n") | |
932 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('116', 'KHR', 'Riel', 2)\n") | |
933 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('124', 'CAD', 'Canadian Dollar', 2)\n") | |
934 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('132', 'CVE', 'Cape Verde Escudo', 2)\n") | |
935 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('136', 'KYD', 'Cayman Islands Dollar', 2)\n") | |
936 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('144', 'LKR', 'Sri Lanka Rupee', 2)\n") | |
937 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('152', 'CLP', 'Chilean Peso', 0)\n") | |
938 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('156', 'CNY', 'Yuan Renminbi', 2)\n") | |
939 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('170', 'COP', 'Colombian Peso', 2)\n") | |
940 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('174', 'KMF', 'Comoro Franc', 0)\n") | |
941 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('188', 'CRC', 'Costa Rican Colon', 2)\n") | |
942 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('191', 'HRK', 'Croatian Kuna', 2)\n") | |
943 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('192', 'CUP', 'Cuban Peso', 2)\n") | |
944 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('196', 'CYP', 'Cyprus Pound', 0)\n") | |
945 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('203', 'CZK', 'Czech Koruna', 2)\n") | |
946 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('208', 'DKK', 'Danish Krone', 2)\n") | |
947 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('214', 'DOP', 'Dominican Peso', 2)\n") | |
948 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('222', 'SVC', 'El Salvador Colon', 2)\n") | |
949 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('230', 'ETB', 'Ethiopian Birr', 2)\n") | |
950 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('232', 'ERN', 'Nakfa', 2)\n") | |
951 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('233', 'EEK', 'Estonian Kroon', 0)\n") | |
952 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('238', 'FKP', 'Falkland Islands Pound', 2)\n") | |
953 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('242', 'FJD', 'Fiji Dollar', 2)\n") | |
954 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('262', 'DJF', 'Djibouti Franc', 0)\n") | |
955 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('270', 'GMD', 'Dalasi', 2)\n") | |
956 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('288', 'GHC', 'Cedi', 0)\n") | |
957 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('292', 'GIP', 'Gibraltar Pound', 2)\n") | |
958 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('320', 'GTQ', 'Quetzal', 2)\n") | |
959 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('324', 'GNF', 'Guinea Franc', 0)\n") | |
960 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('328', 'GYD', 'Guyana Dollar', 2)\n") | |
961 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('332', 'HTG', 'Gourde', 2)\n") | |
962 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('340', 'HNL', 'Lempira', 2)\n") | |
963 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('344', 'HKD', 'Hong Kong Dollar', 2)\n") | |
964 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('348', 'HUF', 'Forint', 2)\n") | |
965 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('352', 'ISK', 'Iceland Krona', 0)\n") | |
966 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('356', 'INR', 'Indian Rupee', 2)\n") | |
967 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('360', 'IDR', 'Rupiah', 2)\n") | |
968 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('364', 'IRR', 'Iranian Rial', 2)\n") | |
969 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('368', 'IQD', 'Iraqi Dinar', 3)\n") | |
970 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('376', 'ILS', 'New Israeli Sheqel', 2)\n") | |
971 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('388', 'JMD', 'Jamaican Dollar', 2)\n") | |
972 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('392', 'JPY', 'Yen', 0)\n") | |
973 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('398', 'KZT', 'Tenge', 2)\n") | |
974 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('400', 'JOD', 'Jordanian Dinar', 3)\n") | |
975 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('404', 'KES', 'Kenyan Shilling', 2)\n") | |
976 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('408', 'KPW', 'North Korean Won', 2)\n") | |
977 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('410', 'KRW', 'Won', 0)\n") | |
978 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('414', 'KWD', 'Kuwaiti Dinar', 3)\n") | |
979 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('417', 'KGS', 'Som', 2)\n") | |
980 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('418', 'LAK', 'Kip', 2)\n") | |
981 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('422', 'LBP', 'Lebanese Pound', 2)\n") | |
982 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('426', 'LSL', 'Lesotho Loti', 2)\n") | |
983 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('428', 'LVL', 'Latvian Lats', 2)\n") | |
984 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('430', 'LRD', 'Liberian Dollar', 2)\n") | |
985 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('434', 'LYD', 'Lybian Dinar', 3)\n") | |
986 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('440', 'LTL', 'Lithuanian Litas', 2)\n") | |
987 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('446', 'MOP', 'Pataca', 2)\n") | |
988 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('450', 'MGF', 'Malagasy Franc', 0)\n") | |
989 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('454', 'MWK', 'Kwacha', 2)\n") | |
990 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('458', 'MYR', 'Malaysian Ringgit', 2)\n") | |
991 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('462', 'MVR', 'Rufiyaa', 2)\n") | |
992 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('470', 'MTL', 'Maltese Lira', 0)\n") | |
993 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('478', 'MRO', 'Ouguiya', 2)\n") | |
994 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('480', 'MUR', 'Mauritius Rupee', 2)\n") | |
995 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('484', 'MXN', 'Mexican Peso', 2)\n") | |
996 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('496', 'MNT', 'Tugrik', 2)\n") | |
997 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('498', 'MDL', 'Moldovan Leu', 2)\n") | |
998 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('504', 'MAD', 'Moroccan Dirham', 2)\n") | |
999 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('508', 'MZM', 'Metical', 0)\n") | |
1000 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('512', 'OMR', 'Rial Omani', 3)\n") | |
1001 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('516', 'NAD', 'Namibia Dollar', 2)\n") | |
1002 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('524', 'NPR', 'Nepalese Rupee', 2)\n") | |
1003 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('532', 'ANG', 'Netherlands Antillan Guilder', 2)\n") | |
1004 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('533', 'AWG', 'Aruban Guilder', 2)\n") | |
1005 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('548', 'VUV', 'Vatu', 0)\n") | |
1006 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('554', 'NZD', 'New Zealand Dollar', 2)\n") | |
1007 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('558', 'NIO', 'Cordoba Oro', 2)\n") | |
1008 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('566', 'NGN', 'Naira', 2)\n") | |
1009 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('578', 'NOK', 'Norvegian Krone', 2)\n") | |
1010 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('586', 'PKR', 'Pakistan Rupee', 2)\n") | |
1011 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('590', 'PAB', 'Balboa', 2)\n") | |
1012 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('598', 'PGK', 'Kina', 2)\n") | |
1013 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('600', 'PYG', 'Guarani', 0)\n") | |
1014 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('604', 'PEN', 'Nuevo Sol', 2)\n") | |
1015 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('608', 'PHP', 'Philippine Peso', 2)\n") | |
1016 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('624', 'GWP', 'Guinea-Bissau Peso', 0)\n") | |
1017 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('634', 'QAR', 'Qatari Rial', 2)\n") | |
1018 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('642', 'ROL', 'Leu', 0)\n") | |
1019 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('643', 'RUB', 'Russian Ruble', 2)\n") | |
1020 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('646', 'RWF', 'Rwanda Franc', 0)\n") | |
1021 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('654', 'SHP', 'Saint Helena Pound', 2)\n") | |
1022 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('678', 'STD', 'Dobra', 2)\n") | |
1023 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('682', 'SAR', 'Saudi Riyal', 2)\n") | |
1024 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('690', 'SCR', 'Seychelles Rupee', 2)\n") | |
1025 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('694', 'SLL', 'Leone', 2)\n") | |
1026 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('702', 'SGD', 'Singapore Dollar', 2)\n") | |
1027 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('703', 'SKK', 'Slovak Koruna', 0)\n") | |
1028 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('704', 'VND', 'Dong', 0)\n") | |
1029 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('706', 'SOS', 'Somali Shilling', 2)\n") | |
1030 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('710', 'ZAR', 'Rand', 2)\n") | |
1031 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('716', 'ZWD', 'Zimbabwe Dollar', 0)\n") | |
1032 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('728', 'SSP', 'South Sudanese pound', 2)\n") | |
1033 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('740', 'SRG', 'Suriname Guilder', 0)\n") | |
1034 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('748', 'SZL', 'Lilangeni', 2)\n") | |
1035 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('752', 'SEK', 'Swedish Krona', 2)\n") | |
1036 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('756', 'CHF', 'Swiss Franc', 2)\n") | |
1037 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('760', 'SYP', 'Syrian Pound', 2)\n") | |
1038 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('764', 'THB', 'Baht', 2)\n") | |
1039 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('776', 'TOP', 'Paanga', 2)\n") | |
1040 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('780', 'TTD', 'Trinidad and Tobago Dollar', 2)\n") | |
1041 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('784', 'AED', 'UAE Dirham', 2)\n") | |
1042 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('788', 'TND', 'Tunisian Dinar', 3)\n") | |
1043 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('795', 'TMM', 'Manat', 0)\n") | |
1044 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('800', 'UGX', 'Uganda Shilling', 2)\n") | |
1045 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('807', 'MKD', 'Denar', 2)\n") | |
1046 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('810', 'RUR', 'Russian Ruble', 0)\n") | |
1047 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('818', 'EGP', 'Egyptian Pound', 2)\n") | |
1048 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('826', 'GBP', 'Pound Sterling', 2)\n") | |
1049 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('834', 'TZS', 'Tanzanian Shilling', 2)\n") | |
1050 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('840', 'USD', 'US Dollar', 2)\n") | |
1051 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('858', 'UYU', 'Peso Uruguayo', 2)\n") | |
1052 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('860', 'UZS', 'Uzbekistan Sum', 2)\n") | |
1053 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('862', 'VEB', 'Bolivar', 0)\n") | |
1054 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('882', 'WST', 'Tala', 2)\n") | |
1055 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('886', 'YER', 'Yemeni Rial', 2)\n") | |
1056 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('891', 'CSD', 'Serbian Dinar', 0)\n") | |
1057 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('894', 'ZMK', 'Kwacha', 2)\n") | |
1058 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('901', 'TWD', 'New Taiwan Dollar', 2)\n") | |
1059 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('933', 'BYN', 'Belarussian New Ruble', 2)\n") | |
1060 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('934', 'TMT', 'Turkmenistani Manat', 2)\n") | |
1061 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('937', 'VEF', 'Venezuelan Bolivar', 2)\n") | |
1062 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('938', 'SDG', 'Sudanese Pound', 2)\n") | |
1063 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('941', 'RSD', 'Serbian Dinar', 2)\n") | |
1064 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('943', 'MZN', 'Mozambican Metical', 2)\n") | |
1065 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('944', 'AZN', 'Azerbaijani Manat', 2)\n") | |
1066 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('946', 'RON', 'New Romanian Leu', 2)\n") | |
1067 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('949', 'TRY', 'New Turkish Lira', 2)\n") | |
1068 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('950', 'XAF', 'CFA Franc BEAC', 0)\n") | |
1069 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('951', 'XCD', 'East Carribbean Dollar', 2)\n") | |
1070 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('952', 'XOF', 'CFA Franc BCEAO', 0)\n") | |
1071 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('953', 'XPF', 'CFP Franc', 0)\n") | |
1072 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('967', 'ZMW', 'Zambian Kwacha', 2)\n") | |
1073 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('968', 'SRD', 'Surinamese Dollar', 2)\n") | |
1074 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('969', 'MGA', 'Malagasy Ariary', 2)\n") | |
1075 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('971', 'AFN', 'Afghani', 2)\n") | |
1076 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('972', 'TJS', 'Somoni', 2)\n") | |
1077 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('973', 'AOA', 'Kwanza', 2)\n") | |
1078 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('974', 'BYR', 'Belarussian Ruble', 0)\n") | |
1079 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('975', 'BGN', 'Bulgarian Lev', 2)\n") | |
1080 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('976', 'CDF', 'Franc Congolais', 2)\n") | |
1081 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('977', 'BAM', 'Convertible Marks', 2)\n") | |
1082 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('978', 'EUR', 'Euro', 2)\n") | |
1083 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('979', 'MXV', 'Mexican Unidad de Inversion (UDI)', 2)\n") | |
1084 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('980', 'UAH', 'Hryvnia', 2)\n") | |
1085 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('981', 'GEL', 'Lari', 2)\n") | |
1086 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('984', 'BOV', 'Mvdol', 2)\n") | |
1087 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('985', 'PLN', 'Zloty', 2)\n") | |
1088 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('986', 'BRL', 'Brazilian Real', 2)\n") | |
1089 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('990', 'CLF', 'Unidades de Fomento', 0)\n") | |
1090 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('997', 'USN', 'US dollar (next day funds code)', 2)\n") | |
1091 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('998', 'USS', 'US dollar (same day funds code)', 2)\n") | |
1092 | _T("INSERT INTO currency_codes (numeric_code, alpha_code, description, exponent) VALUES ('999', 'XXX', 'No currency', 0)\n") | |
dc4472a5 VK |
1093 | _T("<END>"); |
1094 | static const TCHAR *batch2 = | |
0de31ec3 VK |
1095 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AD','AND','020','Andorra')\n") |
1096 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AE','ARE','784','United Arab Emirates')\n") | |
1097 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AF','AFG','004','Afghanistan')\n") | |
1098 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AG','ATG','028','Antigua and Barbuda')\n") | |
1099 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AI','AIA','660','Anguilla')\n") | |
1100 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AL','ALB','008','Albania')\n") | |
1101 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AM','ARM','051','Armenia')\n") | |
1102 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AN','ANT','530','Netherlands Antilles')\n") | |
1103 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AO','AGO','024','Angola')\n") | |
1104 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AQ','ATA','010','Antarctica')\n") | |
1105 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AR','ARG','032','Argentina')\n") | |
1106 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AS','ASM','016','American Samoa')\n") | |
1107 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AT','AUT','040','Austria')\n") | |
1108 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AU','AUS','036','Australia')\n") | |
1109 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AW','ABW','533','Aruba')\n") | |
1110 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AX','ALA','248','Aland Islands')\n") | |
1111 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('AZ','AZE','031','Azerbaijan')\n") | |
1112 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BA','BIH','070','Bosnia and Herzegovina')\n") | |
1113 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BB','BRB','052','Barbados')\n") | |
1114 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BD','BGD','050','Bangladesh')\n") | |
1115 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BE','BEL','056','Belgium')\n") | |
1116 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BF','BFA','854','Burkina Faso')\n") | |
1117 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BG','BGR','100','Bulgaria')\n") | |
1118 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BH','BHR','048','Bahrain')\n") | |
1119 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BI','BDI','108','Burundi')\n") | |
1120 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BJ','BEN','204','Benin')\n") | |
1121 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BL','BLM','652','Saint-Barthelemy')\n") | |
1122 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BM','BMU','060','Bermuda')\n") | |
1123 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BN','BRN','096','Brunei Darussalam')\n") | |
1124 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BO','BOL','068','Bolivia')\n") | |
1125 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BQ','BES','535','Bonaire, Sint Eustatius and Saba')\n") | |
1126 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BR','BRA','076','Brazil')\n") | |
1127 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BS','BHS','044','Bahamas')\n") | |
1128 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BT','BTN','064','Bhutan')\n") | |
1129 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BV','BVT','074','Bouvet Island')\n") | |
1130 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BW','BWA','072','Botswana')\n") | |
1131 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BY','BLR','112','Belarus')\n") | |
1132 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('BZ','BLZ','084','Belize')\n") | |
1133 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CA','CAN','124','Canada')\n") | |
1134 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CC','CCK','166','Cocos (Keeling) Islands')\n") | |
1135 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CD','COD','180','Congo, Democratic Republic of the')\n") | |
1136 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CF','CAF','140','Central African Republic')\n") | |
1137 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CG','COG','178','Congo (Brazzaville)')\n") | |
1138 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CH','CHE','756','Switzerland')\n") | |
1139 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CI','CIV','384','Cote d''Ivoire')\n") | |
1140 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CK','COK','184','Cook Islands')\n") | |
1141 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CL','CHL','152','Chile')\n") | |
1142 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CM','CMR','120','Cameroon')\n") | |
1143 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CN','CHN','156','China')\n") | |
1144 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CO','COL','170','Colombia')\n") | |
1145 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CR','CRI','188','Costa Rica')\n") | |
1146 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CU','CUB','192','Cuba')\n") | |
1147 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CV','CPV','132','Cape Verde')\n") | |
1148 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CW','CUW','531','Curacao')\n") | |
1149 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CX','CXR','162','Christmas Island')\n") | |
1150 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CY','CYP','196','Cyprus')\n") | |
1151 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('CZ','CZE','203','Czech Republic')\n") | |
1152 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('DE','DEU','276','Germany')\n") | |
1153 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('DJ','DJI','262','Djibouti')\n") | |
1154 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('DK','DNK','208','Denmark')\n") | |
1155 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('DM','DMA','212','Dominica')\n") | |
1156 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('DO','DOM','214','Dominican Republic')\n") | |
1157 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('DZ','DZA','012','Algeria')\n") | |
1158 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('EC','ECU','218','Ecuador')\n") | |
1159 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('EE','EST','233','Estonia')\n") | |
1160 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('EG','EGY','818','Egypt')\n") | |
1161 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('EH','ESH','732','Western Sahara')\n") | |
1162 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('ER','ERI','232','Eritrea')\n") | |
1163 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('ES','ESP','724','Spain')\n") | |
1164 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('ET','ETH','231','Ethiopia')\n") | |
1165 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('FI','FIN','246','Finland')\n") | |
1166 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('FJ','FJI','242','Fiji')\n") | |
1167 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('FK','FLK','238','Falkland Islands (Malvinas)')\n") | |
1168 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('FM','FSM','583','Micronesia, Federated States of')\n") | |
1169 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('FO','FRO','234','Faroe Islands')\n") | |
1170 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('FR','FRA','250','France')\n") | |
1171 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GA','GAB','266','Gabon')\n") | |
1172 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GB','GBR','826','United Kingdom')\n") | |
1173 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GD','GRD','308','Grenada')\n") | |
1174 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GE','GEO','268','Georgia')\n") | |
1175 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GF','GUF','254','French Guiana')\n") | |
1176 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GG','GGY','831','Guernsey')\n") | |
1177 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GH','GHA','288','Ghana')\n") | |
1178 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GI','GIB','292','Gibraltar')\n") | |
1179 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GL','GRL','304','Greenland')\n") | |
1180 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GM','GMB','270','Gambia')\n") | |
1181 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GN','GIN','324','Guinea')\n") | |
1182 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GP','GLP','312','Guadeloupe')\n") | |
1183 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GQ','GNQ','226','Equatorial Guinea')\n") | |
1184 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GR','GRC','300','Greece')\n") | |
1185 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GS','SGS','239','South Georgia and the South Sandwich Islands')\n") | |
1186 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GT','GTM','320','Guatemala')\n") | |
1187 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GU','GUM','316','Guam')\n") | |
1188 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GW','GNB','624','Guinea-Bissau')\n") | |
1189 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('GY','GUY','328','Guyana')\n") | |
1190 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('HK','HKG','344','Hong Kong, Special Administrative Region of China')\n") | |
1191 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('HM','HMD','334','Heard Island and Mcdonald Islands')\n") | |
1192 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('HN','HND','340','Honduras')\n") | |
1193 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('HR','HRV','191','Croatia')\n") | |
1194 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('HT','HTI','332','Haiti')\n") | |
1195 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('HU','HUN','348','Hungary')\n") | |
1196 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('ID','IDN','360','Indonesia')\n") | |
1197 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('IE','IRL','372','Ireland')\n") | |
1198 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('IL','ISR','376','Israel')\n") | |
1199 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('IM','IMN','833','Isle of Man')\n") | |
1200 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('IN','IND','356','India')\n") | |
1201 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('IO','IOT','086','British Indian Ocean Territory')\n") | |
1202 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('IQ','IRQ','368','Iraq')\n") | |
1203 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('IR','IRN','364','Iran, Islamic Republic of')\n") | |
1204 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('IS','ISL','352','Iceland')\n") | |
1205 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('IT','ITA','380','Italy')\n") | |
1206 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('JE','JEY','832','Jersey')\n") | |
1207 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('JM','JAM','388','Jamaica')\n") | |
1208 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('JO','JOR','400','Jordan')\n") | |
1209 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('JP','JPN','392','Japan')\n") | |
1210 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('KE','KEN','404','Kenya')\n") | |
1211 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('KG','KGZ','417','Kyrgyzstan')\n") | |
1212 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('KH','KHM','116','Cambodia')\n") | |
1213 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('KI','KIR','296','Kiribati')\n") | |
1214 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('KM','COM','174','Comoros')\n") | |
1215 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('KN','KNA','659','Saint Kitts and Nevis')\n") | |
1216 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('KP','PRK','408','Korea, Democratic People''s Republic of')\n") | |
1217 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('KR','KOR','410','Korea, Republic of')\n") | |
1218 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('KW','KWT','414','Kuwait')\n") | |
1219 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('KY','CYM','136','Cayman Islands')\n") | |
1220 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('KZ','KAZ','398','Kazakhstan')\n") | |
1221 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('LA','LAO','418','Lao PDR')\n") | |
1222 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('LB','LBN','422','Lebanon')\n") | |
1223 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('LC','LCA','662','Saint Lucia')\n") | |
1224 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('LI','LIE','438','Liechtenstein')\n") | |
1225 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('LK','LKA','144','Sri Lanka')\n") | |
1226 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('LR','LBR','430','Liberia')\n") | |
1227 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('LS','LSO','426','Lesotho')\n") | |
1228 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('LT','LTU','440','Lithuania')\n") | |
1229 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('LU','LUX','442','Luxembourg')\n") | |
1230 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('LV','LVA','428','Latvia')\n") | |
1231 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('LY','LBY','434','Libya')\n") | |
1232 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MA','MAR','504','Morocco')\n") | |
1233 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MC','MCO','492','Monaco')\n") | |
1234 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MD','MDA','498','Moldova')\n") | |
1235 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('ME','MNE','499','Montenegro')\n") | |
1236 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MF','MAF','663','Saint-Martin (French part)')\n") | |
1237 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MG','MDG','450','Madagascar')\n") | |
1238 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MH','MHL','584','Marshall Islands')\n") | |
1239 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MK','MKD','807','Macedonia, Republic of')\n") | |
1240 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('ML','MLI','466','Mali')\n") | |
1241 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MM','MMR','104','Myanmar')\n") | |
1242 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MN','MNG','496','Mongolia')\n") | |
1243 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MO','MAC','446','Macao, Special Administrative Region of China')\n") | |
1244 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MP','MNP','580','Northern Mariana Islands')\n") | |
1245 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MQ','MTQ','474','Martinique')\n") | |
1246 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MR','MRT','478','Mauritania')\n") | |
1247 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MS','MSR','500','Montserrat')\n") | |
1248 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MT','MLT','470','Malta')\n") | |
1249 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MU','MUS','480','Mauritius')\n") | |
1250 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MV','MDV','462','Maldives')\n") | |
1251 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MW','MWI','454','Malawi')\n") | |
1252 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MX','MEX','484','Mexico')\n") | |
1253 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MY','MYS','458','Malaysia')\n") | |
1254 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('MZ','MOZ','508','Mozambique')\n") | |
1255 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('NA','NAM','516','Namibia')\n") | |
1256 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('NC','NCL','540','New Caledonia')\n") | |
1257 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('NE','NER','562','Niger')\n") | |
1258 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('NF','NFK','574','Norfolk Island')\n") | |
1259 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('NG','NGA','566','Nigeria')\n") | |
1260 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('NI','NIC','558','Nicaragua')\n") | |
1261 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('NL','NLD','528','Netherlands')\n") | |
1262 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('NO','NOR','578','Norway')\n") | |
1263 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('NP','NPL','524','Nepal')\n") | |
1264 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('NR','NRU','520','Nauru')\n") | |
1265 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('NU','NIU','570','Niue')\n") | |
1266 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('NZ','NZL','554','New Zealand')\n") | |
1267 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('OM','OMN','512','Oman')\n") | |
1268 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PA','PAN','591','Panama')\n") | |
1269 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PE','PER','604','Peru')\n") | |
1270 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PF','PYF','258','French Polynesia')\n") | |
1271 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PG','PNG','598','Papua New Guinea')\n") | |
1272 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PH','PHL','608','Philippines')\n") | |
1273 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PK','PAK','586','Pakistan')\n") | |
1274 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PL','POL','616','Poland')\n") | |
1275 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PM','SPM','666','Saint Pierre and Miquelon')\n") | |
1276 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PN','PCN','612','Pitcairn')\n") | |
1277 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PR','PRI','630','Puerto Rico')\n") | |
1278 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PS','PSE','275','Palestinian Territory, Occupied')\n") | |
1279 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PT','PRT','620','Portugal')\n") | |
1280 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PW','PLW','585','Palau')\n") | |
1281 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('PY','PRY','600','Paraguay')\n") | |
1282 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('QA','QAT','634','Qatar')\n") | |
1283 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('RE','REU','638','Reunion')\n") | |
1284 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('RO','ROU','642','Romania')\n") | |
1285 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('RS','SRB','688','Serbia')\n") | |
1286 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('RU','RUS','643','Russian Federation')\n") | |
1287 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('RW','RWA','646','Rwanda')\n") | |
1288 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SA','SAU','682','Saudi Arabia')\n") | |
1289 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SB','SLB','090','Solomon Islands')\n") | |
1290 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SC','SYC','690','Seychelles')\n") | |
1291 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SD','SDN','729','Sudan')\n") | |
1292 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SE','SWE','752','Sweden')\n") | |
1293 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SG','SGP','702','Singapore')\n") | |
1294 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SH','SHN','654','Saint Helena')\n") | |
1295 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SI','SVN','705','Slovenia')\n") | |
1296 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SJ','SJM','744','Svalbard and Jan Mayen Islands')\n") | |
1297 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SK','SVK','703','Slovakia')\n") | |
1298 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SL','SLE','694','Sierra Leone')\n") | |
1299 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SM','SMR','674','San Marino')\n") | |
1300 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SN','SEN','686','Senegal')\n") | |
1301 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SO','SOM','706','Somalia')\n") | |
1302 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SR','SUR','740','Suriname')\n") | |
1303 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SS','SSD','728','South Sudan')\n") | |
1304 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('ST','STP','678','Sao Tome and Principe')\n") | |
1305 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SV','SLV','222','El Salvador')\n") | |
1306 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SX','SXM','534','Sint Maarten (Dutch part)')\n") | |
1307 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SY','SYR','760','Syrian Arab Republic (Syria)')\n") | |
1308 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('SZ','SWZ','748','Swaziland')\n") | |
1309 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TC','TCA','796','Turks and Caicos Islands')\n") | |
1310 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TD','TCD','148','Chad')\n") | |
1311 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TF','ATF','260','French Southern Territories')\n") | |
1312 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TG','TGO','768','Togo')\n") | |
1313 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TH','THA','764','Thailand')\n") | |
1314 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TJ','TJK','762','Tajikistan')\n") | |
1315 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TK','TKL','772','Tokelau')\n") | |
1316 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TL','TLS','626','Timor-Leste')\n") | |
1317 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TM','TKM','795','Turkmenistan')\n") | |
1318 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TN','TUN','788','Tunisia')\n") | |
1319 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TO','TON','776','Tonga')\n") | |
1320 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TR','TUR','792','Turkey')\n") | |
1321 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TT','TTO','780','Trinidad and Tobago')\n") | |
1322 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TV','TUV','798','Tuvalu')\n") | |
1323 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TW','TWN','158','Taiwan')\n") | |
1324 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('TZ','TZA','834','Tanzania')\n") | |
1325 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('UA','UKR','804','Ukraine')\n") | |
1326 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('UG','UGA','800','Uganda')\n") | |
1327 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('UM','UMI','581','United States Minor Outlying Islands')\n") | |
1328 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('US','USA','840','United States of America')\n") | |
1329 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('UY','URY','858','Uruguay')\n") | |
1330 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('UZ','UZB','860','Uzbekistan')\n") | |
1331 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('VA','VAT','336','Holy See (Vatican City State)')\n") | |
1332 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('VC','VCT','670','Saint Vincent and Grenadines')\n") | |
1333 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('VE','VEN','862','Venezuela')\n") | |
1334 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('VG','VGB','092','British Virgin Islands')\n") | |
1335 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('VI','VIR','850','Virgin Islands, US')\n") | |
1336 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('VN','VNM','704','Viet Nam')\n") | |
1337 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('VU','VUT','548','Vanuatu')\n") | |
1338 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('WF','WLF','876','Wallis and Futuna Islands')\n") | |
1339 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('WS','WSM','882','Samoa')\n") | |
1340 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('YE','YEM','887','Yemen')\n") | |
1341 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('YT','MYT','175','Mayotte')\n") | |
1342 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('ZA','ZAF','710','South Africa')\n") | |
1343 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('ZM','ZMB','894','Zambia')\n") | |
1344 | _T("INSERT INTO country_codes (alpha_code,alpha3_code,numeric_code,name) VALUES ('ZW','ZWE','716','Zimbabwe')\n") | |
1345 | _T("<END>"); | |
dc4472a5 VK |
1346 | CHK_EXEC(SQLBatch(batch1)); |
1347 | CHK_EXEC(SQLBatch(batch2)); | |
0de31ec3 | 1348 | |
e4926628 | 1349 | CHK_EXEC(SetSchemaVersion(398)); |
0de31ec3 VK |
1350 | return TRUE; |
1351 | } | |
1352 | ||
50963ced VK |
1353 | /** |
1354 | * Upgrade from V396 to V397 | |
1355 | */ | |
1356 | static BOOL H_UpgradeFromV396(int currVersion, int newVersion) | |
1357 | { | |
1358 | static GUID_MAPPING eventGuidMapping[] = { | |
1359 | { EVENT_NODE_ADDED, _T("8d34acfd-dad6-4f6e-b6a8-1189683591ef") }, | |
1360 | { EVENT_SUBNET_ADDED, _T("75fc3f8b-768f-46b4-bf44-72949436a679") }, | |
1361 | { EVENT_INTERFACE_ADDED, _T("33cb8f9c-9427-459c-8a71-45c73f5cc183") }, | |
1362 | { EVENT_INTERFACE_UP, _T("09ee209a-0e75-434f-b8c8-399d93305d7b") }, | |
1363 | { EVENT_INTERFACE_DOWN, _T("d9a6d46d-97f8-48eb-a86a-2c0f6b150d0d") }, | |
1364 | { EVENT_INTERFACE_UNKNOWN, _T("ecb47be1-f911-4c1f-9b00-d0d21694071d") }, | |
1365 | { EVENT_INTERFACE_DISABLED, _T("2f3123a2-425f-47db-9c6b-9bc05a7fba2d") }, | |
1366 | { EVENT_INTERFACE_TESTING, _T("eb500e5c-3560-4394-8f5f-80aa67036f13") }, | |
1367 | { EVENT_INTERFACE_UNEXPECTED_UP, _T("ff21a165-9253-4ecc-929a-ffd1e388d504") }, | |
1368 | { EVENT_INTERFACE_EXPECTED_DOWN, _T("911358f4-d2a1-4465-94d7-ce4bc5c38860") }, | |
1369 | { EVENT_NODE_NORMAL, _T("03bc11c0-ec20-43be-be45-e60846f744dc") }, | |
1370 | { EVENT_NODE_WARNING, _T("1c80deab-aafb-43a7-93a7-1330dd563b47") }, | |
1371 | { EVENT_NODE_MINOR, _T("84eaea00-4ed7-41eb-9079-b783e5c60651") }, | |
1372 | { EVENT_NODE_MAJOR, _T("27035c88-c27a-4c16-97b3-4658d34a5f63") }, | |
1373 | { EVENT_NODE_CRITICAL, _T("8f2e98f8-1cd4-4e12-b41f-48b5c60ebe8e") }, | |
1374 | { EVENT_NODE_UNKNOWN, _T("6933cce0-fe1f-4123-817f-af1fb9f0eab4") }, | |
1375 | { EVENT_NODE_UNMANAGED, _T("a8356ba7-51b7-4487-b74e-d12132db233c") }, | |
1376 | { EVENT_NODE_FLAGS_CHANGED, _T("b04e39f5-d3a7-4d9a-b594-37132f5eaf34") }, | |
1377 | { EVENT_SNMP_FAIL, _T("d2fc3b0c-1215-4a92-b8f3-47df5d753602") }, | |
1378 | { EVENT_AGENT_FAIL, _T("ba484457-3594-418e-a72a-65336055d025") }, | |
1379 | { EVENT_INTERFACE_DELETED, _T("ad7e9856-e361-4095-9361-ccc462d93624") }, | |
1380 | { EVENT_THRESHOLD_REACHED, _T("05161c3d-7ceb-406f-af0a-af5c77f324a5") }, | |
1381 | { EVENT_THRESHOLD_REARMED, _T("25eef3a7-6158-4c5e-b4e3-8a7aa7ade73c") }, | |
1382 | { EVENT_SUBNET_DELETED, _T("af188eb3-e84f-4fd9-aecf-f1ba934a9f1a") }, | |
1383 | { EVENT_THREAD_HANGS, _T("df247d13-a63a-43fe-bb02-cb41718ee387") }, | |
1384 | { EVENT_THREAD_RUNNING, _T("5589f6ce-7133-44db-8e7a-e1452d636a9a") }, | |
1385 | { EVENT_SMTP_FAILURE, _T("1e376009-0d26-4b86-87a2-f4715a02fb38") }, | |
1386 | { EVENT_MAC_ADDR_CHANGED, _T("61916ef0-1eee-4df7-a95b-150928d47962") }, | |
1387 | { EVENT_INCORRECT_NETMASK, _T("86c08c55-416e-4ac4-bf2b-302b5fddbd68") }, | |
1388 | { EVENT_NODE_DOWN, _T("ce34f0d0-5b21-48c2-8788-8ed5ee547023") }, | |
1389 | { EVENT_NODE_UP, _T("05f180b6-62e7-4bc4-8a8d-34540214254b") }, | |
1390 | { EVENT_SERVICE_DOWN, _T("89caacb5-d2cf-493b-862f-cddbfecac5b6") }, | |
1391 | { EVENT_SERVICE_UP, _T("ab35e7c7-2428-44db-ad43-57fe551bb8cc") }, | |
1392 | { EVENT_SERVICE_UNKNOWN, _T("d891adae-49fe-4442-a8f3-0ca37ca8820a") }, | |
1393 | { EVENT_SMS_FAILURE, _T("c349bf75-458a-4d43-9c27-f71ea4bb06e2") }, | |
1394 | { EVENT_SNMP_OK, _T("a821086b-1595-40db-9148-8d770d30a54b") }, | |
1395 | { EVENT_AGENT_OK, _T("9c15299a-f2e3-4440-84c5-b17dea87ae2a") }, | |
1396 | { EVENT_SCRIPT_ERROR, _T("2cc78efe-357a-4278-932f-91e36754c775") }, | |
1397 | { EVENT_CONDITION_ACTIVATED, _T("16a86780-b73a-4601-929c-0c503bd06401") }, | |
1398 | { EVENT_CONDITION_DEACTIVATED, _T("926d15d2-9761-4bb6-a1ce-64175303796f") }, | |
1399 | { EVENT_DB_CONNECTION_LOST, _T("0311e9c8-8dcf-4a5b-9036-8cff034409ff") }, | |
1400 | { EVENT_DB_CONNECTION_RESTORED, _T("d36259a7-5f6b-4e3c-bb6f-17d1f8ac950d") }, | |
1401 | { EVENT_CLUSTER_RESOURCE_MOVED, _T("44abe5f3-a7c9-4fbd-8d10-53be172eae83") }, | |
1402 | { EVENT_CLUSTER_RESOURCE_DOWN, _T("c3b1d4b5-2e41-4a2f-b379-9d74ebba3a25") }, | |
1403 | { EVENT_CLUSTER_RESOURCE_UP, _T("ef6fff96-0cbb-4030-aeba-2473a80c6568") }, | |
1404 | { EVENT_CLUSTER_DOWN, _T("8f14d0f7-08d4-4422-92f4-469e5eef93ef") }, | |
1405 | { EVENT_CLUSTER_UP, _T("4a9cdb65-aa44-42f2-99b0-1e302aec10f6") }, | |
1406 | { EVENT_ALARM_TIMEOUT, _T("4ae4f601-327b-4ef8-9740-8600a1ba2acd") }, | |
1407 | { EVENT_LOG_RECORD_MATCHED, _T("d9326159-5c60-410f-990e-fae88df7fdd4") }, | |
1408 | { EVENT_EVENT_STORM_DETECTED, _T("c98d8575-d134-4044-ba67-75c5f5d0f6e0") }, | |
1409 | { EVENT_EVENT_STORM_ENDED, _T("dfd5e3ba-3182-4deb-bc32-9e6b8c1c6546") }, | |
1410 | { EVENT_NETWORK_CONNECTION_LOST, _T("3cb0921a-87a1-46e4-8be1-82ad2dda0015") }, | |
1411 | { EVENT_NETWORK_CONNECTION_RESTORED, _T("1c61b3e0-389a-47ac-8469-932a907392bc") }, | |
1412 | { EVENT_DB_QUERY_FAILED, _T("5f35d646-63b6-4dcd-b94a-e2ccd060686a") }, | |
1413 | { EVENT_DCI_UNSUPPORTED, _T("28367b5b-1541-4526-8cbe-91a17ed31ba4") }, | |
1414 | { EVENT_DCI_DISABLED, _T("50196042-0619-4420-9471-16b7c25c0213") }, | |
1415 | { EVENT_DCI_ACTIVE, _T("740b6810-b355-46f4-a921-65118504af18") }, | |
1416 | { EVENT_IP_ADDRESS_CHANGED, _T("517b6d2a-f5c6-46aa-969d-48e62e05e3bf") }, | |
1417 | { EVENT_CONTAINER_AUTOBIND, _T("611133e2-1f76-446f-b278-9d500a823611") }, | |
1418 | { EVENT_CONTAINER_AUTOUNBIND, _T("e57603be-0d81-41aa-b07c-12d08640561c") }, | |
1419 | { EVENT_TEMPLATE_AUTOAPPLY, _T("bf084945-f928-4428-8c6c-d2965addc832") }, | |
1420 | { EVENT_TEMPLATE_AUTOREMOVE, _T("8f7a4b4a-d0a2-4404-9b66-fdbc029f42cf") }, | |
1421 | { EVENT_NODE_UNREACHABLE, _T("47bba2ce-c795-4e56-ad44-cbf05741e1ff") }, | |
1422 | { EVENT_TABLE_THRESHOLD_ACTIVATED, _T("c08a1cfe-3128-40c2-99cc-378e7ef91f79") }, | |
1423 | { EVENT_TABLE_THRESHOLD_DEACTIVATED, _T("479085e7-e1d1-4f2a-9d96-1d522f51b26a") }, | |
1424 | { EVENT_IF_PEER_CHANGED, _T("a3a5c1df-9d96-4e98-9e06-b3157dbf39f0") }, | |
1425 | { EVENT_AP_ADOPTED, _T("5aaee261-0c5d-44e0-b2f0-223bbba5297d") }, | |
1426 | { EVENT_AP_UNADOPTED, _T("846a3581-aad1-4e17-9c55-9bd2e6b1247b") }, | |
1427 | { EVENT_AP_DOWN, _T("2c8c6208-d3ab-4b8c-926a-872f4d8abcee") }, | |
1428 | { EVENT_IF_MASK_CHANGED, _T("f800e593-057e-4aec-9e47-be0f7718c5c4") }, | |
1429 | { EVENT_IF_IPADDR_ADDED, _T("475bdca6-543e-410b-9aff-c217599e0fe6") }, | |
1430 | { EVENT_IF_IPADDR_DELETED, _T("ef477387-eb50-4a1a-bf90-717502b9873c") }, | |
1431 | { EVENT_MAINTENANCE_MODE_ENTERED, _T("5f6c8b1c-f162-413e-8028-80e7ad2c362d") }, | |
1432 | { EVENT_MAINTENANCE_MODE_LEFT, _T("cab06848-a622-430d-8b4c-addeea732657") }, | |
1433 | { EVENT_SNMP_UNMATCHED_TRAP, _T("fc3613f7-d151-4221-9acd-d28b6f804335") }, | |
1434 | { EVENT_SNMP_COLD_START, _T("39920e99-97bd-4d61-a462-43f89ba6fbdf") }, | |
1435 | { EVENT_SNMP_WARM_START, _T("0aa888c1-eba6-4fe7-a37a-b85f2b373bdc") }, | |
1436 | { EVENT_SNMP_LINK_DOWN, _T("b71338cc-137d-473c-a0f1-6b131086af56") }, | |
1437 | { EVENT_SNMP_LINK_UP, _T("03da14a7-e39c-4a46-a7cb-4bf77ec7936c") }, | |
1438 | { EVENT_SNMP_AUTH_FAILURE, _T("37020cb0-dde7-487b-9cfb-0d5ee771aa13") }, | |
1439 | { EVENT_SNMP_EGP_NL, _T("aecf5fa4-390c-4125-be10-df8b0e669fe1") }, | |
1440 | { 0, NULL } | |
1441 | }; | |
1442 | ||
1443 | CHK_EXEC(SQLQuery(_T("ALTER TABLE event_cfg ADD guid varchar(36)"))); | |
1444 | CHK_EXEC(GenerateGUID(_T("event_cfg"), _T("event_code"), _T("guid"), eventGuidMapping)); | |
e4926628 | 1445 | CHK_EXEC(SetSchemaVersion(397)); |
50963ced VK |
1446 | return TRUE; |
1447 | } | |
1448 | ||
3df8bccd Z |
1449 | /** |
1450 | * Upgrade from V395 to V396 | |
1451 | */ | |
1452 | static BOOL H_UpgradeFromV395(int currVersion, int newVersion) | |
1453 | { | |
1454 | CHK_EXEC(CreateTable( | |
1455 | _T("CREATE TABLE ap_log_parser (") | |
1456 | _T(" policy_id integer not null,") | |
1457 | _T(" file_content $SQL:TEXT null,") | |
1458 | _T(" PRIMARY KEY(policy_id))"))); | |
1459 | ||
e4926628 | 1460 | CHK_EXEC(SetSchemaVersion(396)); |
3df8bccd Z |
1461 | return TRUE; |
1462 | } | |
1463 | ||
fdef3439 Z |
1464 | /** |
1465 | * Upgrade from V394 to V395 | |
1466 | */ | |
1467 | static BOOL H_UpgradeFromV394(int currVersion, int newVersion) | |
1468 | { | |
f6456d80 | 1469 | CHK_EXEC(SQLQuery(_T("UPDATE config SET need_server_restart='1' WHERE var_name='OfflineDataRelevanceTime'"))); |
e4926628 | 1470 | CHK_EXEC(SetSchemaVersion(395)); |
fdef3439 Z |
1471 | return TRUE; |
1472 | } | |
1473 | ||
7f418694 Z |
1474 | /** |
1475 | * Upgrade from V393 to V394 | |
1476 | */ | |
1477 | static BOOL H_UpgradeFromV393(int currVersion, int newVersion) | |
1478 | { | |
c0e0623b | 1479 | CHK_EXEC(CreateConfigParam(_T("OfflineDataRelevanceTime"), _T("86400"), _T("Time period in seconds within which received offline data still relevant for threshold validation"), 'I', true, false, false, false)); |
e4926628 | 1480 | CHK_EXEC(SetSchemaVersion(394)); |
7f418694 Z |
1481 | return TRUE; |
1482 | } | |
1483 | ||
c908b63b VK |
1484 | /** |
1485 | * Upgrade from V392 to V393 | |
1486 | */ | |
1487 | static BOOL H_UpgradeFromV392(int currVersion, int newVersion) | |
1488 | { | |
1489 | CHK_EXEC(CreateConfigParam(_T("DefaultInterfaceExpectedState"), _T("0"), _T("Default expected state for new interface objects"), 'C', true, false, false, false)); | |
e4926628 | 1490 | CHK_EXEC(SetSchemaVersion(393)); |
c908b63b VK |
1491 | return TRUE; |
1492 | } | |
1493 | ||
1494 | /** | |
03b96461 VK |
1495 | * Upgrade from V391 to V392 |
1496 | */ | |
1497 | static BOOL H_UpgradeFromV391(int currVersion, int newVersion) | |
1498 | { | |
1499 | CHK_EXEC(CreateConfigParam(_T("ImportConfigurationOnStartup"), _T("0"), _T("Import configuration from local files on server startup"), 'B', true, true, false, false)); | |
e4926628 | 1500 | CHK_EXEC(SetSchemaVersion(392)); |
03b96461 VK |
1501 | return TRUE; |
1502 | } | |
1503 | ||
c908b63b | 1504 | /** |
f61f151c AK |
1505 | * Upgrade from V390 to V391 |
1506 | */ | |
1507 | static BOOL H_UpgradeFromV390(int currVersion, int newVersion) | |
1508 | { | |
03b96461 VK |
1509 | CHK_EXEC(CreateTable( |
1510 | _T("CREATE TABLE zmq_subscription (") | |
1511 | _T(" object_id integer not null,") | |
1512 | _T(" subscription_type char(1) not null,") | |
1513 | _T(" ignore_items integer not null,") | |
1514 | _T(" items $SQL:TEXT,") | |
1515 | _T(" PRIMARY KEY(object_id, subscription_type))"))); | |
f61f151c | 1516 | |
e4926628 | 1517 | CHK_EXEC(SetSchemaVersion(391)); |
f61f151c AK |
1518 | return TRUE; |
1519 | } | |
1520 | ||
23464115 VK |
1521 | /** |
1522 | * Upgrade from V389 to V390 | |
1523 | */ | |
1524 | static BOOL H_UpgradeFromV389(int currVersion, int newVersion) | |
1525 | { | |
1526 | CHK_EXEC(CreateTable( | |
1527 | _T("CREATE TABLE object_containers (") | |
1528 | _T(" id integer not null,") | |
1529 | _T(" object_class integer not null,") | |
1530 | _T(" flags integer not null,") | |
1531 | _T(" auto_bind_filter $SQL:TEXT null,") | |
1532 | _T(" PRIMARY KEY(id))"))); | |
1533 | ||
1534 | DB_RESULT hResult = SQLSelect(_T("SELECT id,object_class,flags,auto_bind_filter FROM containers")); | |
1535 | if (hResult != NULL) | |
1536 | { | |
1537 | int count = DBGetNumRows(hResult); | |
1538 | if (count > 0) | |
1539 | { | |
1540 | DB_STATEMENT hStmt = DBPrepare(g_hCoreDB, _T("INSERT INTO object_containers (id,object_class,flags,auto_bind_filter) VALUES (?,?,?,?)")); | |
1541 | if (hStmt != NULL) | |
1542 | { | |
1543 | for(int i = 0; i < count; i++) | |
1544 | { | |
1545 | DBBind(hStmt, 1, DB_SQLTYPE_INTEGER, DBGetFieldULong(hResult, i, 0)); | |
1546 | DBBind(hStmt, 2, DB_SQLTYPE_INTEGER, DBGetFieldLong(hResult, i, 1)); | |
1547 | DBBind(hStmt, 3, DB_SQLTYPE_INTEGER, DBGetFieldULong(hResult, i, 2)); | |
1548 | DBBind(hStmt, 4, DB_SQLTYPE_TEXT, DBGetField(hResult, i, 3, NULL, 0), DB_BIND_DYNAMIC); | |
1549 | if (!SQLExecute(hStmt)) | |
1550 | { | |
1551 | if (!g_bIgnoreErrors) | |
1552 | { | |
1553 | DBFreeStatement(hStmt); | |
1554 | DBFreeResult(hResult); | |
1555 | return FALSE; | |
1556 | } | |
1557 | } | |
1558 | } | |
1559 | DBFreeStatement(hStmt); | |
1560 | } | |
1561 | else if (!g_bIgnoreErrors) | |
1562 | { | |
1563 | DBFreeResult(hResult); | |
1564 | return FALSE; | |
1565 | } | |
1566 | } | |
1567 | DBFreeResult(hResult); | |
1568 | } | |
1569 | else | |
1570 | { | |
1571 | if (!g_bIgnoreErrors) | |
1572 | return FALSE; | |
1573 | } | |
1574 | ||
1575 | CHK_EXEC(SQLQuery(_T("DROP TABLE containers"))); | |
1576 | CHK_EXEC(SQLQuery(_T("DROP TABLE container_categories"))); | |
e4926628 | 1577 | CHK_EXEC(SetSchemaVersion(390)); |
23464115 VK |
1578 | return TRUE; |
1579 | } | |
1580 | ||
b120cd0f VK |
1581 | /** |
1582 | * Upgrade from V388 to V389 | |
1583 | */ | |
1584 | static BOOL H_UpgradeFromV388(int currVersion, int newVersion) | |
1585 | { | |
1586 | static TCHAR batch[] = | |
1587 | _T("ALTER TABLE racks ADD top_bottom_num char(1)\n") | |
1588 | _T("UPDATE racks SET top_bottom_num='0'\n") | |
1589 | _T("<END>"); | |
1590 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 1591 | CHK_EXEC(SetSchemaVersion(389)); |
b120cd0f VK |
1592 | return TRUE; |
1593 | } | |
1594 | ||
65ce7452 VK |
1595 | /** |
1596 | * Upgrade from V387 to V388 | |
1597 | */ | |
1598 | static BOOL H_UpgradeFromV387(int currVersion, int newVersion) | |
1599 | { | |
1600 | static TCHAR batch[] = | |
1601 | _T("ALTER TABLE alarms ADD dci_id integer\n") | |
1602 | _T("UPDATE alarms SET dci_id=0\n") | |
1603 | _T("ALTER TABLE event_log ADD dci_id integer\n") | |
1604 | _T("UPDATE event_log SET dci_id=0\n") | |
1605 | _T("<END>"); | |
1606 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 1607 | CHK_EXEC(SetSchemaVersion(388)); |
65ce7452 VK |
1608 | return TRUE; |
1609 | } | |
1610 | ||
53e39123 VK |
1611 | /** |
1612 | * Upgrade from V386 to V387 | |
1613 | */ | |
1614 | static BOOL H_UpgradeFromV386(int currVersion, int newVersion) | |
1615 | { | |
1616 | DB_RESULT hResult = SQLSelect(_T("SELECT id,flags,filter FROM network_maps WHERE filter IS NOT NULL")); | |
1617 | if (hResult != NULL) | |
1618 | { | |
1619 | int count = DBGetNumRows(hResult); | |
1620 | for(int i = 0; i < count; i++) | |
1621 | { | |
1622 | TCHAR *filter = DBGetField(hResult, i, 2, NULL, 0); | |
1623 | if ((filter != NULL) && (filter[0] != 0)) | |
1624 | { | |
1625 | TCHAR query[256]; | |
1626 | _sntprintf(query, 256, _T("UPDATE network_maps SET flags=%d WHERE id=%d"), | |
1627 | DBGetFieldULong(hResult, i, 1) | MF_FILTER_OBJECTS, DBGetFieldULong(hResult, i, 0)); | |
1628 | CHK_EXEC(SQLQuery(query)); | |
1629 | } | |
1630 | free(filter); | |
1631 | } | |
1632 | DBFreeResult(hResult); | |
1633 | } | |
1634 | else | |
1635 | { | |
1636 | if (!g_bIgnoreErrors) | |
1637 | return FALSE; | |
1638 | } | |
e4926628 | 1639 | CHK_EXEC(SetSchemaVersion(387)); |
53e39123 VK |
1640 | return TRUE; |
1641 | } | |
1642 | ||
e2a9c5fc VK |
1643 | /** |
1644 | * Upgrade from V385 to V386 | |
1645 | */ | |
1646 | static BOOL H_UpgradeFromV385(int currVersion, int newVersion) | |
1647 | { | |
1648 | TCHAR query[1024]; | |
1649 | int ruleId = NextFreeEPPruleID(); | |
1650 | ||
1651 | if (!IsEventPairInUse(EVENT_THREAD_HANGS, EVENT_THREAD_RUNNING)) | |
1652 | { | |
1653 | _sntprintf(query, 1024, _T("INSERT INTO event_policy (rule_id,rule_guid,flags,comments,alarm_message,alarm_severity,alarm_key,script,alarm_timeout,alarm_timeout_event,situation_id,situation_instance) VALUES (%d,'ea1dee96-b42e-499c-a992-0b0f9e4874b9',7944,'Generate an alarm when one of the system threads hangs or stops unexpectedly','%%m',5,'SYS_THREAD_HANG_%%1','',0,%d,0,'')"), ruleId, EVENT_ALARM_TIMEOUT); | |
1654 | CHK_EXEC(SQLQuery(query)); | |
1655 | _sntprintf(query, 1024, _T("INSERT INTO policy_event_list (rule_id,event_code) VALUES (%d,%d)"), ruleId, EVENT_THREAD_HANGS); | |
1656 | CHK_EXEC(SQLQuery(query)); | |
1657 | ruleId++; | |
1658 | _sntprintf(query, 1024, _T("INSERT INTO event_policy (rule_id,rule_guid,flags,comments,alarm_message,alarm_severity,alarm_key,script,alarm_timeout,alarm_timeout_event,situation_id,situation_instance) VALUES (%d,'f0c5a6b2-7427-45e5-8333-7d60d2b408e6',7944,'Terminate the alarm when one of the system threads which previously hanged or stopped unexpectedly returned to the running state','%%m',6,'SYS_THREAD_HANG_%%1','',0,%d,0,'')"), ruleId, EVENT_ALARM_TIMEOUT); | |
1659 | CHK_EXEC(SQLQuery(query)); | |
1660 | _sntprintf(query, 1024, _T("INSERT INTO policy_event_list (rule_id,event_code) VALUES (%d,%d)"), ruleId, EVENT_THREAD_RUNNING); | |
1661 | CHK_EXEC(SQLQuery(query)); | |
1662 | ruleId++; | |
1663 | } | |
1664 | ||
1665 | if (!IsEventPairInUse(EVENT_MAINTENANCE_MODE_ENTERED, EVENT_MAINTENANCE_MODE_LEFT)) | |
1666 | { | |
1667 | _sntprintf(query, 1024, _T("INSERT INTO event_policy (rule_id,rule_guid,flags,comments,alarm_message,alarm_severity,alarm_key,script,alarm_timeout,alarm_timeout_event,situation_id,situation_instance) VALUES (%d,'ed3397a8-a496-4534-839b-5a6fc77c167c',7944,'Generate an alarm when the object enters the maintenance mode','%%m',5,'MAINTENANCE_MODE_%%i','',0,%d,0,'')"), ruleId, EVENT_ALARM_TIMEOUT); | |
1668 | CHK_EXEC(SQLQuery(query)); | |
1669 | _sntprintf(query, 1024, _T("INSERT INTO policy_event_list (rule_id,event_code) VALUES (%d,%d)"), ruleId, EVENT_MAINTENANCE_MODE_ENTERED); | |
1670 | CHK_EXEC(SQLQuery(query)); | |
1671 | ruleId++; | |
1672 | _sntprintf(query, 1024, _T("INSERT INTO event_policy (rule_id,rule_guid,flags,comments,alarm_message,alarm_severity,alarm_key,script,alarm_timeout,alarm_timeout_event,situation_id,situation_instance) VALUES (%d,'20a0f4a5-d90e-4961-ba88-a65b9ee45d07',7944,'Terminate the alarm when the object leaves the maintenance mode','%%m',6,'MAINTENANCE_MODE_%%i','',0,%d,0,'')"), ruleId, EVENT_ALARM_TIMEOUT); | |
1673 | CHK_EXEC(SQLQuery(query)); | |
1674 | _sntprintf(query, 1024, _T("INSERT INTO policy_event_list (rule_id,event_code) VALUES (%d,%d)"), ruleId, EVENT_MAINTENANCE_MODE_LEFT); | |
1675 | CHK_EXEC(SQLQuery(query)); | |
1676 | ruleId++; | |
1677 | } | |
1678 | ||
1679 | if (!IsEventPairInUse(EVENT_AGENT_FAIL, EVENT_AGENT_OK)) | |
1680 | { | |
1681 | _sntprintf(query, 1024, _T("INSERT INTO event_policy (rule_id,rule_guid,flags,comments,alarm_message,alarm_severity,alarm_key,script,alarm_timeout,alarm_timeout_event,situation_id,situation_instance) VALUES (%d,'c6f66840-4758-420f-a27d-7bbf7b66a511',7944,'Generate an alarm if the NetXMS agent on the node stops responding','%%m',5,'AGENT_UNREACHABLE_%%i','',0,%d,0,'')"), ruleId, EVENT_ALARM_TIMEOUT); | |
1682 | CHK_EXEC(SQLQuery(query)); | |
1683 | _sntprintf(query, 1024, _T("INSERT INTO policy_event_list (rule_id,event_code) VALUES (%d,%d)"), ruleId, EVENT_AGENT_FAIL); | |
1684 | CHK_EXEC(SQLQuery(query)); | |
1685 | ruleId++; | |
1686 | _sntprintf(query, 1024, _T("INSERT INTO event_policy (rule_id,rule_guid,flags,comments,alarm_message,alarm_severity,alarm_key,script,alarm_timeout,alarm_timeout_event,situation_id,situation_instance) VALUES (%d,'9fa60260-c2ec-4371-b4e4-f5346b1d8400',7944,'Terminate the alarm if the NetXMS agent on the node start responding again','%%m',6,'AGENT_UNREACHABLE_%%i','',0,%d,0,'')"), ruleId, EVENT_ALARM_TIMEOUT); | |
1687 | CHK_EXEC(SQLQuery(query)); | |
1688 | _sntprintf(query, 1024, _T("INSERT INTO policy_event_list (rule_id,event_code) VALUES (%d,%d)"), ruleId, EVENT_AGENT_OK); | |
1689 | CHK_EXEC(SQLQuery(query)); | |
1690 | ruleId++; | |
1691 | } | |
1692 | ||
1693 | if (!IsEventPairInUse(EVENT_SNMP_FAIL, EVENT_SNMP_OK)) | |
1694 | { | |
1695 | _sntprintf(query, 1024, _T("INSERT INTO event_policy (rule_id,rule_guid,flags,comments,alarm_message,alarm_severity,alarm_key,script,alarm_timeout,alarm_timeout_event,situation_id,situation_instance) VALUES (%d,'20ef861f-b8e4-4e04-898e-e57d13863661',7944,'Generate an alarm if the SNMP agent on the node stops responding','%%m',5,'SNMP_UNREACHABLE_%%i','',0,%d,0,'')"), ruleId, EVENT_ALARM_TIMEOUT); | |
1696 | CHK_EXEC(SQLQuery(query)); | |
1697 | _sntprintf(query, 1024, _T("INSERT INTO policy_event_list (rule_id,event_code) VALUES (%d,%d)"), ruleId, EVENT_SNMP_FAIL); | |
1698 | CHK_EXEC(SQLQuery(query)); | |
1699 | ruleId++; | |
1700 | _sntprintf(query, 1024, _T("INSERT INTO event_policy (rule_id,rule_guid,flags,comments,alarm_message,alarm_severity,alarm_key,script,alarm_timeout,alarm_timeout_event,situation_id,situation_instance) VALUES (%d,'33f6193a-e103-4f5f-8bee-870bbcc08066',7944,'Terminate the alarm if the SNMP agent on the node start responding again','%%m',6,'SNMP_UNREACHABLE_%%i','',0,%d,0,'')"), ruleId, EVENT_ALARM_TIMEOUT); | |
1701 | CHK_EXEC(SQLQuery(query)); | |
1702 | _sntprintf(query, 1024, _T("INSERT INTO policy_event_list (rule_id,event_code) VALUES (%d,%d)"), ruleId, EVENT_SNMP_OK); | |
1703 | CHK_EXEC(SQLQuery(query)); | |
1704 | ruleId++; | |
1705 | } | |
1706 | ||
1707 | CHK_EXEC(SQLQuery(_T("UPDATE event_cfg SET severity='3' WHERE event_code=14 OR event_code=15"))); | |
e4926628 | 1708 | CHK_EXEC(SetSchemaVersion(386)); |
e2a9c5fc VK |
1709 | return TRUE; |
1710 | } | |
1711 | ||
4e7ebbb4 VK |
1712 | /** |
1713 | * Upgrade from V384 to V385 | |
1714 | */ | |
1715 | static BOOL H_UpgradeFromV384(int currVersion, int newVersion) | |
1716 | { | |
1717 | CHK_EXEC(SQLQuery(_T("UPDATE config SET is_visible=1,need_server_restart=0 WHERE var_name='SNMPPorts'"))); | |
e4926628 | 1718 | CHK_EXEC(SetSchemaVersion(385)); |
4e7ebbb4 VK |
1719 | return TRUE; |
1720 | } | |
1721 | ||
aed41472 | 1722 | /** |
7bae90f4 | 1723 | * Upgrade from V383 to V384 |
aed41472 | 1724 | */ |
1725 | static BOOL H_UpgradeFromV383(int currVersion, int newVersion) | |
1726 | { | |
1727 | CHK_EXEC(ConvertStrings(_T("graphs"), _T("graph_id"), _T("config"))); | |
1728 | static TCHAR batch[] = | |
1729 | _T("ALTER TABLE graphs ADD flags integer\n") | |
1730 | _T("ALTER TABLE graphs ADD filters $SQL:TEXT\n") | |
1731 | _T("<END>"); | |
1732 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 1733 | CHK_EXEC(SetSchemaVersion(384)); |
aed41472 | 1734 | return TRUE; |
1735 | } | |
1736 | ||
55f6cb79 VK |
1737 | /** |
1738 | * Upgrade from V382 to V383 | |
1739 | */ | |
1740 | static BOOL H_UpgradeFromV382(int currVersion, int newVersion) | |
1741 | { | |
1742 | CHK_EXEC(ResizeColumn(_T("nodes"), _T("primary_ip"), 48, false)); | |
e4926628 | 1743 | CHK_EXEC(SetSchemaVersion(383)); |
55f6cb79 VK |
1744 | return TRUE; |
1745 | } | |
1746 | ||
83aa5ebd VK |
1747 | /** |
1748 | * Upgrade from V381 to V382 | |
1749 | */ | |
1750 | static BOOL H_UpgradeFromV381(int currVersion, int newVersion) | |
1751 | { | |
7bae90f4 VK |
1752 | CHK_EXEC(CreateLibraryScript(11, _T("Hook::StatusPoll"), _T("/* Available global variables:\r\n * $node - current node, object of 'Node' type\r\n *\r\n * Expected return value:\r\n * none - returned value is ignored\r\n */\r\n"))); |
1753 | CHK_EXEC(CreateLibraryScript(12, _T("Hook::ConfigurationPoll"), _T("/* Available global variables:\r\n * $node - current node, object of 'Node' type\r\n *\r\n * Expected return value:\r\n * none - returned value is ignored\r\n */\r\n"))); | |
1754 | CHK_EXEC(CreateLibraryScript(13, _T("Hook::InstancePoll"), _T("/* Available global variables:\r\n * $node - current node, object of 'Node' type\r\n *\r\n * Expected return value:\r\n * none - returned value is ignored\r\n */\r\n"))); | |
1755 | CHK_EXEC(CreateLibraryScript(14, _T("Hook::TopologyPoll"), _T("/* Available global variables:\r\n * $node - current node, object of 'Node' type\r\n *\r\n * Expected return value:\r\n * none - returned value is ignored\r\n */\r\n"))); | |
1756 | CHK_EXEC(CreateLibraryScript(15, _T("Hook::CreateInterface"), _T("/* Available global variables:\r\n * $node - current node, object of 'Node' type\r\n * $1 - current interface, object of 'Interface' type\r\n *\r\n * Expected return value:\r\n * true/false - boolean - whether interface should be created\r\n */\r\nreturn true;\r\n"))); | |
1757 | CHK_EXEC(CreateLibraryScript(16, _T("Hook::AcceptNewNode"), _T("/* Available global variables:\r\n * $ipAddr - IP address of the node being processed\r\n * $ipNetMask - netmask of the node being processed\r\n * $macAddr - MAC address of the node being processed\r\n * $zoneId - zone ID of the node being processed\r\n *\r\n * Expected return value:\r\n * true/false - boolean - whether node should be created\r\n */\r\nreturn true;\r\n"))); | |
e4926628 | 1758 | CHK_EXEC(SetSchemaVersion(382)); |
83aa5ebd VK |
1759 | return TRUE; |
1760 | } | |
1761 | ||
98ef8e4a VK |
1762 | /** |
1763 | * Upgrade from V380 to V381 | |
1764 | */ | |
1765 | static BOOL H_UpgradeFromV380(int currVersion, int newVersion) | |
1766 | { | |
1767 | static TCHAR batch[] = | |
1768 | _T("ALTER TABLE items ADD guid varchar(36)\n") | |
1769 | _T("ALTER TABLE dc_tables ADD guid varchar(36)\n") | |
1770 | _T("<END>"); | |
1771 | CHK_EXEC(SQLBatch(batch)); | |
50963ced VK |
1772 | CHK_EXEC(GenerateGUID(_T("items"), _T("item_id"), _T("guid"), NULL)); |
1773 | CHK_EXEC(GenerateGUID(_T("dc_tables"), _T("item_id"), _T("guid"), NULL)); | |
e4926628 | 1774 | CHK_EXEC(SetSchemaVersion(381)); |
98ef8e4a VK |
1775 | return TRUE; |
1776 | } | |
1777 | ||
9b4a2a0e VK |
1778 | /** |
1779 | * Upgrade from V379 to V380 | |
1780 | */ | |
1781 | static BOOL H_UpgradeFromV379(int currVersion, int newVersion) | |
1782 | { | |
1783 | static TCHAR batch[] = | |
1784 | _T("UPDATE object_properties SET maint_event_id=0 WHERE maint_event_id IS NULL\n") | |
1785 | _T("UPDATE nodes SET last_agent_comm_time=0 WHERE last_agent_comm_time IS NULL\n") | |
1786 | _T("<END>"); | |
1787 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 1788 | CHK_EXEC(SetSchemaVersion(380)); |
9b4a2a0e VK |
1789 | return TRUE; |
1790 | } | |
1791 | ||
ec5829b2 VK |
1792 | /** |
1793 | * Upgrade from V378 to V379 | |
1794 | */ | |
1795 | static BOOL H_UpgradeFromV378(int currVersion, int newVersion) | |
1796 | { | |
1797 | CHK_EXEC(SQLQuery(_T("DELETE FROM config WHERE var_name='NumberOfDatabaseWriters'"))); | |
e4926628 | 1798 | CHK_EXEC(SetSchemaVersion(379)); |
ec5829b2 VK |
1799 | return TRUE; |
1800 | } | |
1801 | ||
9bd1bace VK |
1802 | /** |
1803 | * Upgrade from V377 to V378 | |
1804 | */ | |
1805 | static BOOL H_UpgradeFromV377(int currVersion, int newVersion) | |
1806 | { | |
1807 | static TCHAR batch[] = | |
1808 | _T("DELETE FROM config WHERE var_name='EnableMultipleDBConnections'\n") | |
1809 | _T("UPDATE config SET var_name='DBConnectionPoolBaseSize' WHERE var_name='ConnectionPoolBaseSize'\n") | |
1810 | _T("UPDATE config SET var_name='DBConnectionPoolMaxSize' WHERE var_name='ConnectionPoolMaxSize'\n") | |
1811 | _T("UPDATE config SET var_name='DBConnectionPoolCooldownTime' WHERE var_name='ConnectionPoolCooldownTime'\n") | |
1812 | _T("UPDATE config SET var_name='DBConnectionPoolMaxLifetime' WHERE var_name='ConnectionPoolMaxLifetime'\n") | |
1813 | _T("<END>"); | |
1814 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 1815 | CHK_EXEC(SetSchemaVersion(378)); |
9bd1bace VK |
1816 | return TRUE; |
1817 | } | |
1818 | ||
9d7771b8 VK |
1819 | /** |
1820 | * Upgrade from V376 to V377 | |
1821 | */ | |
1822 | static BOOL H_UpgradeFromV376(int currVersion, int newVersion) | |
1823 | { | |
1824 | CHK_EXEC(CreateConfigParam(_T("DefaultSubnetMaskIPv4"), _T("24"), _T("Default mask for synthetic IPv4 subnets"), 'I', true, false, false, false)); | |
1825 | CHK_EXEC(CreateConfigParam(_T("DefaultSubnetMaskIPv6"), _T("64"), _T("Default mask for synthetic IPv6 subnets"), 'I', true, false, false, false)); | |
e4926628 | 1826 | CHK_EXEC(SetSchemaVersion(377)); |
9d7771b8 VK |
1827 | return TRUE; |
1828 | } | |
1829 | ||
4e3133ee | 1830 | /** |
1831 | * Upgrade from V375 to V376 | |
1832 | */ | |
1833 | static BOOL H_UpgradeFromV375(int currVersion, int newVersion) | |
1834 | { | |
1835 | static TCHAR batch[] = | |
1836 | _T("ALTER TABLE nodes ADD last_agent_comm_time integer\n") | |
9b4a2a0e | 1837 | _T("UPDATE nodes SET last_agent_comm_time=0\n") |
4e3133ee | 1838 | _T("<END>"); |
1839 | CHK_EXEC(SQLBatch(batch)); | |
1840 | ||
e4926628 | 1841 | CHK_EXEC(SetSchemaVersion(376)); |
4e3133ee | 1842 | return TRUE; |
1843 | } | |
1844 | ||
203cb23c VK |
1845 | /** |
1846 | * Upgrade from V374 to V375 | |
1847 | */ | |
1848 | static BOOL H_UpgradeFromV374(int currVersion, int newVersion) | |
1849 | { | |
1850 | static TCHAR batch[] = | |
1851 | _T("ALTER TABLE object_tools_input_fields ADD sequence_num integer\n") | |
1852 | _T("UPDATE object_tools_input_fields SET sequence_num=-1\n") | |
1853 | _T("<END>"); | |
1854 | CHK_EXEC(SQLBatch(batch)); | |
1855 | ||
e4926628 | 1856 | CHK_EXEC(SetSchemaVersion(375)); |
203cb23c VK |
1857 | return TRUE; |
1858 | } | |
1859 | ||
97afcb6e VK |
1860 | /** |
1861 | * Upgrade from V373 to V374 | |
1862 | */ | |
1863 | static BOOL H_UpgradeFromV373(int currVersion, int newVersion) | |
1864 | { | |
1865 | static TCHAR batch[] = | |
1866 | _T("ALTER TABLE object_properties ADD maint_event_id $SQL:INT64\n") | |
9b4a2a0e | 1867 | _T("UPDATE object_properties SET maint_mode='0',maint_event_id=0\n") |
97afcb6e VK |
1868 | _T("<END>"); |
1869 | CHK_EXEC(SQLBatch(batch)); | |
1870 | ||
3da098f7 | 1871 | CHK_EXEC(CreateEventTemplate(EVENT_MAINTENANCE_MODE_ENTERED, _T("SYS_MAINTENANCE_MODE_ENTERED"), SEVERITY_NORMAL, EF_LOG, NULL, |
97afcb6e VK |
1872 | _T("Entered maintenance mode"), |
1873 | _T("Generated when node, cluster, or mobile device enters maintenance mode."))); | |
1874 | ||
3da098f7 | 1875 | CHK_EXEC(CreateEventTemplate(EVENT_MAINTENANCE_MODE_LEFT, _T("SYS_MAINTENANCE_MODE_LEFT"), SEVERITY_NORMAL, EF_LOG, NULL, |
97afcb6e VK |
1876 | _T("Left maintenance mode"), |
1877 | _T("Generated when node, cluster, or mobile device leaves maintenance mode."))); | |
1878 | ||
e4926628 | 1879 | CHK_EXEC(SetSchemaVersion(374)); |
97afcb6e VK |
1880 | return TRUE; |
1881 | } | |
1882 | ||
b3beb7f4 | 1883 | /** |
1884 | * Upgrade from V372 to V373 | |
1885 | */ | |
1886 | static BOOL H_UpgradeFromV372(int currVersion, int newVersion) | |
1887 | { | |
1888 | CHK_EXEC(SQLQuery(_T("ALTER TABLE scheduled_tasks ADD object_id integer"))); | |
e4926628 | 1889 | CHK_EXEC(SetSchemaVersion(373)); |
b3beb7f4 | 1890 | return TRUE; |
1891 | } | |
1892 | ||
89fd6fa4 VK |
1893 | /** |
1894 | * Upgrade from V371 to V372 | |
1895 | */ | |
1896 | static BOOL H_UpgradeFromV371(int currVersion, int newVersion) | |
1897 | { | |
1898 | static TCHAR batch[] = | |
1899 | _T("ALTER TABLE object_properties ADD maint_mode char(1)\n") | |
1900 | _T("UPDATE object_properties SET maint_mode='0'\n") | |
1901 | _T("<END>"); | |
1902 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 1903 | CHK_EXEC(SetSchemaVersion(372)); |
89fd6fa4 VK |
1904 | return TRUE; |
1905 | } | |
1906 | ||
90e3031f VK |
1907 | /** |
1908 | * Upgrade from V370 to V371 | |
1909 | */ | |
1910 | static BOOL H_UpgradeFromV370(int currVersion, int newVersion) | |
1911 | { | |
1912 | int defaultPollingInterval = ConfigReadInt(_T("DefaultDCIPollingInterval"), 60); | |
1913 | int defaultRetentionTime = ConfigReadInt(_T("DefaultDCIRetentionTime"), 30); | |
1914 | ||
1915 | TCHAR query[256]; | |
1916 | _sntprintf(query, 256, _T("UPDATE items SET polling_interval=0 WHERE polling_interval=%d"), defaultPollingInterval); | |
1917 | CHK_EXEC(SQLQuery(query)); | |
1918 | ||
1919 | _sntprintf(query, 256, _T("UPDATE items SET retention_time=0 WHERE retention_time=%d"), defaultRetentionTime); | |
1920 | CHK_EXEC(SQLQuery(query)); | |
1921 | ||
1922 | _sntprintf(query, 256, _T("UPDATE dc_tables SET polling_interval=0 WHERE polling_interval=%d"), defaultPollingInterval); | |
1923 | CHK_EXEC(SQLQuery(query)); | |
1924 | ||
1925 | _sntprintf(query, 256, _T("UPDATE dc_tables SET retention_time=0 WHERE retention_time=%d"), defaultRetentionTime); | |
1926 | CHK_EXEC(SQLQuery(query)); | |
1927 | ||
e4926628 | 1928 | CHK_EXEC(SetSchemaVersion(371)); |
90e3031f VK |
1929 | return TRUE; |
1930 | } | |
1931 | ||
8bdd26dc VK |
1932 | /** |
1933 | * Upgrade from V369 to V370 | |
1934 | */ | |
1935 | static BOOL H_UpgradeFromV369(int currVersion, int newVersion) | |
1936 | { | |
1937 | CHK_EXEC(CreateTable( | |
1938 | _T("CREATE TABLE dashboard_associations (") | |
1939 | _T(" object_id integer not null,") | |
1940 | _T(" dashboard_id integer not null,") | |
1941 | _T(" PRIMARY KEY(object_id,dashboard_id))"))); | |
e4926628 | 1942 | CHK_EXEC(SetSchemaVersion(370)); |
8bdd26dc VK |
1943 | return TRUE; |
1944 | } | |
1945 | ||
0a145c10 | 1946 | /** |
1947 | * Upgrade from V368 to V369 | |
1948 | */ | |
1949 | static BOOL H_UpgradeFromV368(int currVersion, int newVersion) | |
1950 | { | |
1951 | CHK_EXEC(CreateTable( | |
c6e191d2 | 1952 | _T("CREATE TABLE scheduled_tasks (") |
0a145c10 | 1953 | _T(" id integer not null,") |
1954 | _T(" taskId varchar(255) null,") | |
c6e191d2 | 1955 | _T(" schedule varchar(127) null,") |
0a145c10 | 1956 | _T(" params varchar(1023) null,") |
1957 | _T(" execution_time integer not null,") | |
1958 | _T(" last_execution_time integer not null,") | |
1959 | _T(" flags integer not null,") | |
c6e191d2 | 1960 | _T(" owner integer not null,") |
0a145c10 | 1961 | _T(" PRIMARY KEY(id))"))); |
e4926628 | 1962 | CHK_EXEC(SetSchemaVersion(369)); |
0a145c10 | 1963 | return TRUE; |
1964 | } | |
1965 | ||
de674bb6 VK |
1966 | /** |
1967 | * Upgrade from V367 to V368 | |
1968 | */ | |
1969 | static BOOL H_UpgradeFromV367(int currVersion, int newVersion) | |
1970 | { | |
1971 | static TCHAR batch[] = | |
1972 | _T("ALTER TABLE nodes ADD rack_height integer\n") | |
1973 | _T("UPDATE nodes SET rack_height=1\n") | |
1974 | _T("<END>"); | |
1975 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 1976 | CHK_EXEC(SetSchemaVersion(368)); |
de674bb6 VK |
1977 | return TRUE; |
1978 | } | |
1979 | ||
cf38357f VK |
1980 | /** |
1981 | * Upgrade from V366 to V367 | |
1982 | */ | |
1983 | static BOOL H_UpgradeFromV366(int currVersion, int newVersion) | |
1984 | { | |
cd071c26 | 1985 | CHK_EXEC(CreateConfigParam(_T("TrapSourcesInAllZones"), _T("0"), _T("Search all zones to match trap/syslog source address to node"), 'B', true, true, false, false)); |
cf38357f VK |
1986 | |
1987 | CHK_EXEC(SQLQuery(_T("ALTER TABLE nodes ADD snmp_sys_contact varchar(127)"))); | |
1988 | CHK_EXEC(SQLQuery(_T("ALTER TABLE nodes ADD snmp_sys_location varchar(127)"))); | |
1989 | ||
e4926628 | 1990 | CHK_EXEC(SetSchemaVersion(367)); |
cf38357f VK |
1991 | return TRUE; |
1992 | } | |
1993 | ||
48905317 VK |
1994 | /** |
1995 | * Upgrade from V365 to V366 | |
1996 | */ | |
1997 | static BOOL H_UpgradeFromV365(int currVersion, int newVersion) | |
1998 | { | |
b3643ffe | 1999 | CHK_EXEC(CreateConfigParam(_T("ServerCommandOutputTimeout"), _T("60"), true, false)); |
48905317 | 2000 | |
e4926628 | 2001 | CHK_EXEC(SetSchemaVersion(366)); |
48905317 VK |
2002 | return TRUE; |
2003 | } | |
2004 | ||
d0a2ada6 | 2005 | /** |
2006 | * Upgrade from V364 to V365 | |
2007 | */ | |
2008 | static BOOL H_UpgradeFromV364(int currVersion, int newVersion) | |
2009 | { | |
4e7ebbb4 | 2010 | CHK_EXEC(CreateConfigParam(_T("SNMPPorts"), _T("161"), true, false)); |
e4926628 | 2011 | CHK_EXEC(SetSchemaVersion(365)); |
d0a2ada6 | 2012 | return TRUE; |
2013 | } | |
2014 | ||
3d37f7bf VK |
2015 | /** |
2016 | * Upgrade from V363 to V364 | |
2017 | */ | |
2018 | static BOOL H_UpgradeFromV363(int currVersion, int newVersion) | |
2019 | { | |
2020 | static TCHAR batch[] = | |
2021 | _T("ALTER TABLE interfaces ADD speed $SQL:INT64\n") | |
2022 | _T("ALTER TABLE interfaces ADD iftable_suffix varchar(127)\n") | |
2023 | _T("UPDATE interfaces SET speed=0\n") | |
2024 | _T("<END>"); | |
2025 | CHK_EXEC(SQLBatch(batch)); | |
2026 | ||
e4926628 | 2027 | CHK_EXEC(SetSchemaVersion(364)); |
3d37f7bf VK |
2028 | return TRUE; |
2029 | } | |
2030 | ||
2589cc10 | 2031 | /** |
2032 | * Upgrade from V362 to V363 | |
2033 | */ | |
2034 | static BOOL H_UpgradeFromV362(int currVersion, int newVersion) | |
2035 | { | |
2036 | ResizeColumn(_T("config"), _T("var_value"), 2000, true); | |
e4926628 | 2037 | CHK_EXEC(SetSchemaVersion(363)); |
2589cc10 | 2038 | return TRUE; |
2039 | } | |
2040 | ||
8a1519ce VK |
2041 | /** |
2042 | * Upgrade from V361 to V362 | |
2043 | */ | |
2044 | static BOOL H_UpgradeFromV361(int currVersion, int newVersion) | |
2045 | { | |
2046 | CHK_EXEC(CreateConfigParam(_T("CaseInsensitiveLoginNames"), _T("0"), _T("Enable/disable case insensitive login names"), 'B', true, true, false)); | |
e4926628 | 2047 | CHK_EXEC(SetSchemaVersion(362)); |
8a1519ce VK |
2048 | return TRUE; |
2049 | } | |
2050 | ||
b576249a VK |
2051 | /** |
2052 | * Upgrade from V360 to V361 | |
2053 | */ | |
2054 | static BOOL H_UpgradeFromV360(int currVersion, int newVersion) | |
2055 | { | |
2056 | CHK_EXEC(CreateTable( | |
2057 | _T("CREATE TABLE object_tools_input_fields (") | |
2058 | _T(" tool_id integer not null,") | |
2059 | _T(" name varchar(31) not null,") | |
2060 | _T(" input_type char(1) not null,") | |
2061 | _T(" display_name varchar(127) null,") | |
2062 | _T(" config $SQL:TEXT null,") | |
2063 | _T(" PRIMARY KEY(tool_id,name))"))); | |
2064 | ||
e4926628 | 2065 | CHK_EXEC(SetSchemaVersion(361)); |
b576249a VK |
2066 | return TRUE; |
2067 | } | |
2068 | ||
b2a15edc VK |
2069 | /** |
2070 | * Upgrade from V359 to V360 | |
2071 | */ | |
2072 | static BOOL H_UpgradeFromV359(int currVersion, int newVersion) | |
2073 | { | |
2074 | DB_RESULT hResult = SQLSelect(_T("SELECT tool_id,tool_type,tool_data,confirmation_text FROM object_tools")); | |
2075 | if (hResult != NULL) | |
2076 | { | |
2077 | int count = DBGetNumRows(hResult); | |
2078 | for(int i = 0; i < count; i++) | |
2079 | { | |
2080 | UINT32 id = DBGetFieldULong(hResult, i, 0); | |
2589cc10 | 2081 | |
b2a15edc VK |
2082 | TCHAR *text = DBGetField(hResult, i, 3, NULL, 0); |
2083 | if (text != NULL) | |
2084 | { | |
2085 | ConvertObjectToolMacros(id, text, _T("confirmation_text")); | |
2086 | free(text); | |
2087 | } | |
2589cc10 | 2088 | |
b2a15edc VK |
2089 | int type = DBGetFieldLong(hResult, i, 1); |
2090 | if ((type == 1) || (type == 4) || (type == 5)) | |
2091 | { | |
2092 | text = DBGetField(hResult, i, 2, NULL, 0); | |
2093 | if (text != NULL) | |
2094 | { | |
2095 | ConvertObjectToolMacros(id, text, _T("tool_data")); | |
2096 | free(text); | |
2097 | } | |
2098 | } | |
2099 | } | |
2100 | DBFreeResult(hResult); | |
2101 | } | |
2102 | else | |
2103 | { | |
2104 | if (!g_bIgnoreErrors) | |
2105 | return FALSE; | |
2106 | } | |
e4926628 | 2107 | CHK_EXEC(SetSchemaVersion(360)); |
b2a15edc VK |
2108 | return TRUE; |
2109 | } | |
2110 | ||
7a8aa001 VK |
2111 | /** |
2112 | * Upgrade from V358 to V359 | |
2113 | */ | |
2114 | static BOOL H_UpgradeFromV358(int currVersion, int newVersion) | |
2115 | { | |
2116 | static TCHAR batch[] = | |
2117 | _T("ALTER TABLE network_maps ADD object_display_mode integer\n") | |
2118 | _T("UPDATE network_maps SET object_display_mode=0\n") | |
2119 | _T("<END>"); | |
2120 | CHK_EXEC(SQLBatch(batch)); | |
2121 | ||
e4926628 | 2122 | CHK_EXEC(SetSchemaVersion(359)); |
7a8aa001 VK |
2123 | return TRUE; |
2124 | } | |
2125 | ||
c85c8ef2 VK |
2126 | /** |
2127 | * Upgrade from V357 to V358 | |
2128 | */ | |
2129 | static BOOL H_UpgradeFromV357(int currVersion, int newVersion) | |
2130 | { | |
2131 | static TCHAR batch[] = | |
2132 | _T("ALTER TABLE config ADD data_type char(1) not null default 'S'\n") | |
2133 | _T("ALTER TABLE config ADD is_public char(1) not null default 'N'\n") | |
2134 | _T("ALTER TABLE config ADD description varchar(255)\n") | |
2135 | _T("ALTER TABLE config ADD possible_values $SQL:TEXT\n") | |
2136 | _T("<END>"); | |
2137 | static TCHAR batchOracle[] = | |
2138 | _T("ALTER TABLE config ADD data_type char(1) default 'S' not null\n") | |
2139 | _T("ALTER TABLE config ADD is_public char(1) default 'N' not null\n") | |
2140 | _T("ALTER TABLE config ADD description varchar(255)\n") | |
2141 | _T("ALTER TABLE config ADD possible_values $SQL:TEXT\n") | |
2142 | _T("<END>"); | |
2143 | CHK_EXEC(SQLBatch((g_dbSyntax == DB_SYNTAX_ORACLE) ? batchOracle : batch)); | |
2144 | ||
2145 | CHK_EXEC(CreateConfigParam(_T("DashboardDataExportEnableInterpolation"), _T("1"), _T("Enable/disable data interpolation in dashboard data export"), 'B', true, false, true)); | |
2146 | ||
e4926628 | 2147 | CHK_EXEC(SetSchemaVersion(358)); |
c85c8ef2 VK |
2148 | return TRUE; |
2149 | } | |
2150 | ||
9db92307 | 2151 | /** |
2152 | * Upgrade from V356 to V357 | |
2153 | */ | |
2154 | static BOOL H_UpgradeFromV356(int currVersion, int newVersion) | |
2155 | { | |
2156 | TCHAR comunityString[256]; | |
2157 | comunityString[0] = 0; | |
2158 | DB_RESULT hResult = SQLSelect(_T("SELECT var_value FROM config WHERE var_name='DefaultCommunityString'")); | |
2159 | if (hResult != NULL) | |
2160 | { | |
2161 | if(DBGetNumRows(hResult) > 0) | |
2162 | { | |
2163 | DBGetField(hResult, 0, 0, comunityString, 256); | |
2164 | } | |
2165 | DBFreeResult(hResult); | |
2166 | } | |
2167 | ||
c85c8ef2 | 2168 | if (comunityString[0] != 0) |
9db92307 | 2169 | { |
2170 | DB_RESULT hResult = SQLSelect(_T("SELECT id, community FROM snmp_communities")); | |
2171 | if (hResult != NULL) | |
2172 | { | |
2173 | CHK_EXEC(SQLQuery(_T("DELETE FROM snmp_communities"))); | |
2174 | ||
2175 | TCHAR query[1024]; | |
2176 | _sntprintf(query, 1024, _T("INSERT INTO snmp_communities (id,community) VALUES(%d,'%s')"), 1, comunityString); | |
2177 | CHK_EXEC(SQLQuery(query)); | |
2178 | ||
2179 | int count = DBGetNumRows(hResult); | |
2180 | for(int i = 0; i < count; i++) | |
2181 | { | |
2182 | _sntprintf(query, 1024, _T("INSERT INTO snmp_communities (id,community) VALUES(%d,'%s')"), i + 2, DBGetField(hResult, i, 1, comunityString, 256)); | |
2183 | CHK_EXEC(SQLQuery(query)); | |
2184 | } | |
2185 | } | |
2186 | } | |
2187 | ||
2188 | CHK_EXEC(SQLQuery(_T("DELETE FROM config WHERE var_name='DefaultCommunityString'"))); | |
2189 | ||
e4926628 | 2190 | CHK_EXEC(SetSchemaVersion(357)); |
9db92307 | 2191 | return TRUE; |
2192 | } | |
2193 | ||
e1d2050f VK |
2194 | /** |
2195 | * Upgrade from V355 to V356 | |
2196 | */ | |
2197 | static BOOL H_UpgradeFromV355(int currVersion, int newVersion) | |
2198 | { | |
2199 | static TCHAR batch[] = | |
2200 | _T("DELETE FROM config WHERE var_name='NumberOfBusinessServicePollers'\n") | |
2201 | _T("DELETE FROM config WHERE var_name='NumberOfConditionPollers'\n") | |
2202 | _T("DELETE FROM config WHERE var_name='NumberOfConfigurationPollers'\n") | |
2203 | _T("DELETE FROM config WHERE var_name='NumberOfDiscoveryPollers'\n") | |
2204 | _T("DELETE FROM config WHERE var_name='NumberOfInstancePollers'\n") | |
2205 | _T("DELETE FROM config WHERE var_name='NumberOfRoutingTablePollers'\n") | |
2206 | _T("DELETE FROM config WHERE var_name='NumberOfStatusPollers'\n") | |
2207 | _T("DELETE FROM config WHERE var_name='NumberOfTopologyTablePollers'\n") | |
2208 | _T("<END>"); | |
2209 | CHK_EXEC(SQLBatch(batch)); | |
2210 | ||
c85c8ef2 VK |
2211 | CHK_EXEC(CreateConfigParam(_T("PollerThreadPoolBaseSize"), _T("10"), true, true)); |
2212 | CHK_EXEC(CreateConfigParam(_T("PollerThreadPoolMaxSize"), _T("250"), true, true)); | |
e1d2050f | 2213 | |
e4926628 | 2214 | CHK_EXEC(SetSchemaVersion(356)); |
e1d2050f VK |
2215 | return TRUE; |
2216 | } | |
2217 | ||
9708eff4 VK |
2218 | /** |
2219 | * Upgrade from V354 to V355 | |
2220 | */ | |
2221 | static BOOL H_UpgradeFromV354(int currVersion, int newVersion) | |
2222 | { | |
2223 | static TCHAR batch[] = | |
2224 | _T("ALTER TABLE nodes ADD agent_cache_mode char(1)\n") | |
55d81770 | 2225 | _T("UPDATE nodes SET agent_cache_mode='0'\n") |
e9902466 | 2226 | _T("DELETE FROM config WHERE var_name='ServerID'\n") |
9708eff4 VK |
2227 | _T("<END>"); |
2228 | CHK_EXEC(SQLBatch(batch)); | |
2229 | ||
c85c8ef2 | 2230 | CHK_EXEC(CreateConfigParam(_T("DefaultAgentCacheMode"), _T("2"), true, true)); |
9708eff4 | 2231 | |
e4926628 | 2232 | CHK_EXEC(SetSchemaVersion(355)); |
9708eff4 VK |
2233 | return TRUE; |
2234 | } | |
2235 | ||
981d246a VK |
2236 | /** |
2237 | * Upgrade from V353 to V354 | |
2238 | */ | |
2239 | static BOOL H_UpgradeFromV353(int currVersion, int newVersion) | |
2240 | { | |
2241 | CHK_EXEC(ResizeColumn(_T("users"), _T("password"), 127, false)); | |
e4926628 | 2242 | CHK_EXEC(SetSchemaVersion(354)); |
981d246a VK |
2243 | return TRUE; |
2244 | } | |
2245 | ||
2096c8f0 VK |
2246 | /** |
2247 | * Upgrade from V352 to V353 | |
2248 | */ | |
2249 | static BOOL H_UpgradeFromV352(int currVersion, int newVersion) | |
2250 | { | |
2251 | CHK_EXEC(SQLQuery(_T("ALTER TABLE dci_summary_tables ADD guid varchar(36)"))); | |
50963ced | 2252 | CHK_EXEC(GenerateGUID(_T("dci_summary_tables"), _T("id"), _T("guid"), NULL)); |
e4926628 | 2253 | CHK_EXEC(SetSchemaVersion(353)); |
2096c8f0 VK |
2254 | return TRUE; |
2255 | } | |
2256 | ||
271e3971 VK |
2257 | /** |
2258 | * Upgrade from V351 to V352 | |
2259 | */ | |
2260 | static BOOL H_UpgradeFromV351(int currVersion, int newVersion) | |
2261 | { | |
2262 | CHK_EXEC(SQLQuery(_T("ALTER TABLE object_tools ADD guid varchar(36)"))); | |
50963ced | 2263 | CHK_EXEC(GenerateGUID(_T("object_tools"), _T("tool_id"), _T("guid"), NULL)); |
e4926628 | 2264 | CHK_EXEC(SetSchemaVersion(352)); |
271e3971 VK |
2265 | return TRUE; |
2266 | } | |
2267 | ||
ac58ffe9 VK |
2268 | /** |
2269 | * Upgrade from V350 to V351 | |
2270 | */ | |
2271 | static BOOL H_UpgradeFromV350(int currVersion, int newVersion) | |
2272 | { | |
2273 | static TCHAR batch[] = | |
2274 | _T("ALTER TABLE access_points ADD ap_index integer\n") | |
2275 | _T("UPDATE access_points SET ap_index=0\n") | |
2276 | _T("<END>"); | |
2277 | CHK_EXEC(SQLBatch(batch)); | |
2278 | ||
e4926628 | 2279 | CHK_EXEC(SetSchemaVersion(351)); |
ac58ffe9 VK |
2280 | return TRUE; |
2281 | } | |
2282 | ||
fcf91b2e | 2283 | /** |
2284 | * Upgrade from V349 to V350 | |
2285 | */ | |
2286 | static BOOL H_UpgradeFromV349(int currVersion, int newVersion) | |
2287 | { | |
2288 | switch(g_dbSyntax) | |
2289 | { | |
2290 | case DB_SYNTAX_ORACLE: | |
a8a0793d VK |
2291 | CHK_EXEC(SQLQuery(_T("UPDATE object_properties SET comments = comments || chr(13) || chr(10) || (SELECT description FROM ap_common WHERE ap_common.id = object_properties.object_id) WHERE EXISTS (SELECT description FROM ap_common WHERE ap_common.id = object_properties.object_id AND description IS NOT NULL)"))); |
2292 | break; | |
fcf91b2e | 2293 | case DB_SYNTAX_DB2: |
a8a0793d VK |
2294 | CHK_EXEC(SQLQuery(_T("UPDATE object_properties SET comments = comments || chr(13) || chr(10) || (SELECT description FROM ap_common WHERE ap_common.id = object_properties.object_id) WHERE EXISTS (SELECT description FROM ap_common WHERE ap_common.id = object_properties.object_id AND description IS NOT NULL AND description <> '')"))); |
2295 | break; | |
96e03924 | 2296 | case DB_SYNTAX_MSSQL: |
b69710b9 | 2297 | CHK_EXEC(SQLQuery(_T("UPDATE object_properties SET comments = CAST(comments AS varchar(4000)) + char(13) + char(10) + CAST((SELECT description FROM ap_common WHERE ap_common.id = object_properties.object_id) AS varchar(4000)) WHERE EXISTS (SELECT description FROM ap_common WHERE ap_common.id = object_properties.object_id AND description IS NOT NULL AND datalength(description) <> 0)"))); |
fcf91b2e | 2298 | break; |
2299 | case DB_SYNTAX_PGSQL: | |
a8a0793d | 2300 | CHK_EXEC(SQLQuery(_T("UPDATE object_properties SET comments = comments || '\\015\\012' || (SELECT description FROM ap_common WHERE ap_common.id = object_properties.object_id) WHERE EXISTS (SELECT description FROM ap_common WHERE ap_common.id = object_properties.object_id AND description IS NOT NULL AND description <> '')"))); |
fcf91b2e | 2301 | break; |
2302 | case DB_SYNTAX_SQLITE: | |
a8a0793d | 2303 | CHK_EXEC(SQLQuery(_T("UPDATE object_properties SET comments = comments || char(13,10) || (SELECT description FROM ap_common WHERE ap_common.id = object_properties.object_id) WHERE EXISTS (SELECT description FROM ap_common WHERE ap_common.id = object_properties.object_id AND description IS NOT NULL AND description <> '')"))); |
fcf91b2e | 2304 | break; |
2305 | case DB_SYNTAX_MYSQL: | |
a8a0793d | 2306 | CHK_EXEC(SQLQuery(_T("UPDATE object_properties, ap_common SET object_properties.comments=CONCAT(object_properties.comments, '\\r\\n', ap_common.description) WHERE object_properties.object_id=ap_common.id AND (ap_common.description!='' AND ap_common.description IS NOT NULL)"))); |
fcf91b2e | 2307 | break; |
2308 | default: | |
96e03924 | 2309 | break; |
fcf91b2e | 2310 | } |
2311 | ||
3f543e56 | 2312 | CHK_EXEC(SQLDropColumn(_T("ap_common"), _T("description"))); |
e4926628 | 2313 | CHK_EXEC(SetSchemaVersion(350)); |
fcf91b2e | 2314 | return TRUE; |
2315 | } | |
2316 | ||
b06ae508 VK |
2317 | /** |
2318 | * Upgrade from V348 to V349 | |
2319 | */ | |
2320 | static BOOL H_UpgradeFromV348(int currVersion, int newVersion) | |
2321 | { | |
2322 | CHK_EXEC(SQLQuery(_T("DELETE FROM config WHERE var_name='HouseKeepingInterval'"))); | |
c85c8ef2 | 2323 | CHK_EXEC(CreateConfigParam(_T("HousekeeperStartTime"), _T("02:00"), true, true)); |
e4926628 | 2324 | CHK_EXEC(SetSchemaVersion(349)); |
b06ae508 VK |
2325 | return TRUE; |
2326 | } | |
2327 | ||
c30c0c0f VK |
2328 | /** |
2329 | * Upgrade from V347 to V348 | |
2330 | */ | |
2331 | static BOOL H_UpgradeFromV347(int currVersion, int newVersion) | |
2332 | { | |
3da098f7 | 2333 | CHK_EXEC(CreateEventTemplate(EVENT_IF_IPADDR_ADDED, _T("SYS_IF_IPADDR_ADDED"), SEVERITY_NORMAL, EF_LOG, NULL, |
c30c0c0f VK |
2334 | _T("IP address %3/%4 added to interface \"%2\""), |
2335 | _T("Generated when IP address added to interface.\r\n") | |
2336 | _T("Parameters:\r\n") | |
2337 | _T(" 1) Interface object ID\r\n") | |
2338 | _T(" 2) Interface name\r\n") | |
2339 | _T(" 3) IP address\r\n") | |
2340 | _T(" 4) Network mask\r\n") | |
2341 | _T(" 5) Interface index"))); | |
2342 | ||
3da098f7 | 2343 | CHK_EXEC(CreateEventTemplate(EVENT_IF_IPADDR_DELETED, _T("SYS_IF_IPADDR_DELETED"), SEVERITY_NORMAL, EF_LOG, NULL, |
c30c0c0f VK |
2344 | _T("IP address %3/%4 deleted from interface \"%2\""), |
2345 | _T("Generated when IP address deleted from interface.\r\n") | |
2346 | _T("Parameters:\r\n") | |
2347 | _T(" 1) Interface object ID\r\n") | |
2348 | _T(" 2) Interface name\r\n") | |
2349 | _T(" 3) IP address\r\n") | |
2350 | _T(" 4) Network mask\r\n") | |
2351 | _T(" 5) Interface index"))); | |
2352 | ||
e4926628 | 2353 | CHK_EXEC(SetSchemaVersion(348)); |
c30c0c0f VK |
2354 | return TRUE; |
2355 | } | |
2356 | ||
2357 | /** | |
2358 | * Upgrade from V346 to V347 | |
2359 | */ | |
2360 | static BOOL H_UpgradeFromV346(int currVersion, int newVersion) | |
2361 | { | |
2362 | CHK_EXEC(CreateTable( | |
2363 | _T("CREATE TABLE interface_address_list (") | |
2364 | _T(" iface_id integer not null,") | |
2365 | _T(" ip_addr varchar(48) not null,") | |
2366 | _T(" ip_netmask integer not null,") | |
2367 | _T(" PRIMARY KEY(iface_id,ip_addr))"))); | |
2368 | ||
2369 | DB_RESULT hResult = SQLSelect(_T("SELECT id,ip_addr,ip_netmask FROM interfaces WHERE ip_addr<>'0.0.0.0'")); | |
2370 | if (hResult != NULL) | |
2371 | { | |
2372 | int count = DBGetNumRows(hResult); | |
2373 | for(int i = 0; i < count; i++) | |
2374 | { | |
2375 | TCHAR query[256], addr[64]; | |
2376 | _sntprintf(query, 256, _T("INSERT INTO interface_address_list (iface_id,ip_addr,ip_netmask) VALUES (%d,'%s',%d)"), | |
2377 | DBGetFieldLong(hResult, i, 0), DBGetField(hResult, i, 1, addr, 64), DBGetFieldLong(hResult, i, 2)); | |
2378 | CHK_EXEC(SQLQuery(query)); | |
2379 | } | |
2380 | DBFreeResult(hResult); | |
2381 | } | |
2382 | else | |
2383 | { | |
2384 | if (!g_bIgnoreErrors) | |
2385 | return FALSE; | |
2386 | } | |
2387 | ||
2388 | static TCHAR batch[] = | |
2389 | _T("ALTER TABLE interfaces DROP COLUMN ip_addr\n") | |
2390 | _T("ALTER TABLE interfaces DROP COLUMN ip_netmask\n") | |
2391 | _T("<END>"); | |
2392 | CHK_EXEC(SQLBatch(batch)); | |
2393 | ||
e4926628 | 2394 | CHK_EXEC(SetSchemaVersion(347)); |
c30c0c0f VK |
2395 | return TRUE; |
2396 | } | |
2397 | ||
c75e9ee4 VK |
2398 | /** |
2399 | * Upgrade from V345 to V346 | |
2400 | */ | |
2401 | static BOOL H_UpgradeFromV345(int currVersion, int newVersion) | |
2402 | { | |
b69710b9 VK |
2403 | if (g_dbSyntax == DB_SYNTAX_MSSQL) |
2404 | { | |
2405 | CHK_EXEC(DropPrimaryKey(_T("cluster_sync_subnets"))); | |
2406 | CHK_EXEC(DropPrimaryKey(_T("address_lists"))); | |
2407 | CHK_EXEC(DropPrimaryKey(_T("vpn_connector_networks"))); | |
2408 | } | |
2409 | ||
2410 | CHK_EXEC(ResizeColumn(_T("cluster_sync_subnets"), _T("subnet_addr"), 48, false)); | |
2411 | CHK_EXEC(ResizeColumn(_T("cluster_resources"), _T("ip_addr"), 48, false)); | |
2412 | CHK_EXEC(ResizeColumn(_T("subnets"), _T("ip_addr"), 48, false)); | |
2413 | CHK_EXEC(ResizeColumn(_T("interfaces"), _T("ip_addr"), 48, false)); | |
2414 | CHK_EXEC(ResizeColumn(_T("network_services"), _T("ip_bind_addr"), 48, false)); | |
2415 | CHK_EXEC(ResizeColumn(_T("vpn_connector_networks"), _T("ip_addr"), 48, false)); | |
2416 | CHK_EXEC(ResizeColumn(_T("snmp_trap_log"), _T("ip_addr"), 48, false)); | |
2417 | CHK_EXEC(ResizeColumn(_T("address_lists"), _T("addr1"), 48, false)); | |
2418 | CHK_EXEC(ResizeColumn(_T("address_lists"), _T("addr2"), 48, false)); | |
2419 | CHK_EXEC(ResizeColumn(_T("nodes"), _T("primary_ip"), 48, false)); | |
c75e9ee4 VK |
2420 | |
2421 | CHK_EXEC(ConvertNetMasks(_T("cluster_sync_subnets"), _T("subnet_mask"), _T("cluster_id"))); | |
2422 | CHK_EXEC(ConvertNetMasks(_T("subnets"), _T("ip_netmask"), _T("id"))); | |
2423 | CHK_EXEC(ConvertNetMasks(_T("interfaces"), _T("ip_netmask"), _T("id"))); | |
2424 | CHK_EXEC(ConvertNetMasks(_T("vpn_connector_networks"), _T("ip_netmask"), _T("vpn_id"), _T("ip_addr"))); | |
2425 | ||
ba889094 | 2426 | DB_RESULT hResult = SQLSelect(_T("SELECT community_id,list_type,addr1,addr2 FROM address_lists WHERE addr_type=0")); |
c75e9ee4 VK |
2427 | if (hResult != NULL) |
2428 | { | |
2429 | int count = DBGetNumRows(hResult); | |
2430 | if (count > 0) | |
2431 | { | |
ba889094 | 2432 | CHK_EXEC(SQLQuery(_T("DELETE FROM address_lists WHERE addr_type=0"))); |
c75e9ee4 VK |
2433 | |
2434 | for(int i = 0; i < count; i++) | |
2435 | { | |
2436 | TCHAR query[256], addr[64]; | |
ba889094 | 2437 | _sntprintf(query, 256, _T("INSERT INTO address_lists (addr_type,community_id,list_type,addr1,addr2) VALUES (0,%d,%d,'%s','%d')"), |
c75e9ee4 VK |
2438 | DBGetFieldLong(hResult, i, 0), DBGetFieldLong(hResult, i, 1), DBGetField(hResult, i, 2, addr, 64), |
2439 | BitsInMask(DBGetFieldIPAddr(hResult, i, 3))); | |
2440 | CHK_EXEC(SQLQuery(query)); | |
2441 | } | |
2442 | } | |
2443 | DBFreeResult(hResult); | |
2444 | } | |
2445 | else | |
2446 | { | |
2447 | if (!g_bIgnoreErrors) | |
2448 | return FALSE; | |
2449 | } | |
2450 | ||
b69710b9 VK |
2451 | if (g_dbSyntax == DB_SYNTAX_MSSQL) |
2452 | { | |
2453 | CHK_EXEC(SQLQuery(_T("ALTER TABLE cluster_sync_subnets ADD CONSTRAINT pk_cluster_sync_subnets PRIMARY KEY (cluster_id,subnet_addr)"))); | |
2454 | CHK_EXEC(SQLQuery(_T("ALTER TABLE address_lists ADD CONSTRAINT pk_address_lists PRIMARY KEY (list_type,community_id,addr_type,addr1,addr2)"))); | |
2455 | CHK_EXEC(SQLQuery(_T("ALTER TABLE vpn_connector_networks ADD CONSTRAINT pk_vpn_connector_networks PRIMARY KEY (vpn_id,ip_addr)"))); | |
2456 | } | |
2457 | ||
e4926628 | 2458 | CHK_EXEC(SetSchemaVersion(346)); |
c75e9ee4 VK |
2459 | return TRUE; |
2460 | } | |
2461 | ||
805171de VK |
2462 | /** |
2463 | * Upgrade from V344 to V345 | |
2464 | */ | |
2465 | static BOOL H_UpgradeFromV344(int currVersion, int newVersion) | |
2466 | { | |
2467 | CHK_EXEC(CreateConfigParam(_T("NumberOfInstancePollers"), _T("10"), 1, 1)); | |
2468 | CHK_EXEC(CreateConfigParam(_T("InstancePollingInterval"), _T("600"), 1, 1)); | |
e4926628 | 2469 | CHK_EXEC(SetSchemaVersion(345)); |
805171de VK |
2470 | return TRUE; |
2471 | } | |
2472 | ||
e95680e5 VK |
2473 | /** |
2474 | * Upgrade from V343 to V344 | |
2475 | */ | |
2476 | static BOOL H_UpgradeFromV343(int currVersion, int newVersion) | |
2477 | { | |
c30c0c0f | 2478 | static TCHAR batch[] = |
e95680e5 VK |
2479 | _T("ALTER TABLE interfaces ADD mtu integer\n") |
2480 | _T("ALTER TABLE interfaces ADD alias varchar(255)\n") | |
2481 | _T("UPDATE interfaces SET mtu=0\n") | |
2482 | _T("<END>"); | |
2483 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 2484 | CHK_EXEC(SetSchemaVersion(344)); |
e95680e5 VK |
2485 | return TRUE; |
2486 | } | |
2487 | ||
d140955e VK |
2488 | /** |
2489 | * Upgrade from V342 to V343 | |
2490 | */ | |
2491 | static BOOL H_UpgradeFromV342(int currVersion, int newVersion) | |
2492 | { | |
2493 | if (g_dbSyntax != DB_SYNTAX_MSSQL) | |
2494 | { | |
2495 | CHK_EXEC(SQLQuery(_T("UPDATE metadata SET var_value='CREATE INDEX idx_idata_%d_id_timestamp ON idata_%d(item_id,idata_timestamp DESC)' WHERE var_name='IDataIndexCreationCommand_0'"))); | |
5096f5a5 | 2496 | CHK_EXEC(DBCommit(g_hCoreDB)); // do reindexing outside current transaction |
d140955e | 2497 | ReindexIData(); |
5096f5a5 | 2498 | CHK_EXEC(DBBegin(g_hCoreDB)); |
d140955e | 2499 | } |
e4926628 | 2500 | CHK_EXEC(SetSchemaVersion(343)); |
d140955e VK |
2501 | return TRUE; |
2502 | } | |
2503 | ||
4b70cb26 | 2504 | /** |
2505 | * Upgrade from V341 to V342 | |
2506 | */ | |
2507 | static BOOL H_UpgradeFromV341(int currVersion, int newVersion) | |
2508 | { | |
d140955e | 2509 | CHK_EXEC(SQLQuery(_T("ALTER TABLE object_tools ADD tool_filter $SQL:TEXT"))); |
4b70cb26 | 2510 | DB_RESULT hResult = SQLSelect(_T("SELECT tool_id, matching_oid FROM object_tools")); |
2511 | if (hResult != NULL) | |
2512 | { | |
2513 | int count = DBGetNumRows(hResult); | |
2514 | for(int i = 0; i < count; i++) | |
2515 | { | |
2516 | TCHAR *oid = DBGetField(hResult, i, 1, NULL, 0); | |
2517 | if (oid == NULL || !_tcscmp(oid, _T(" "))) | |
2518 | { | |
2519 | oid = _tcsdup(_T("")); | |
2520 | } | |
2521 | else | |
2522 | { | |
2523 | TCHAR *newConfig = (TCHAR *)malloc((_tcslen(oid) + 512) * sizeof(TCHAR)); | |
2524 | _tcscpy(newConfig, _T("<objectToolFilter>")); | |
2525 | _tcscat(newConfig, _T("<snmpOid>")); | |
2526 | _tcscat(newConfig, oid); | |
2527 | _tcscat(newConfig, _T("</snmpOid>")); | |
2528 | _tcscat(newConfig, _T("</objectToolFilter>")); | |
2529 | ||
2530 | DB_STATEMENT statment = DBPrepare(g_hCoreDB, _T("UPDATE object_tools SET tool_filter=? WHERE tool_id=?")); | |
2531 | if (statment != NULL) | |
2532 | { | |
2533 | DBBind(statment, 1, DB_SQLTYPE_TEXT, newConfig, DB_BIND_STATIC); | |
2534 | DBBind(statment, 2, DB_SQLTYPE_INTEGER, DBGetFieldULong(hResult, i, 0)); | |
2535 | CHK_EXEC(DBExecute(statment)); | |
2536 | DBFreeStatement(statment); | |
2537 | } | |
2538 | else | |
2539 | { | |
2540 | if (!g_bIgnoreErrors) | |
2541 | return FALSE; | |
2542 | } | |
2543 | } | |
2544 | } | |
2545 | } | |
a19fa589 | 2546 | CHK_EXEC(SQLDropColumn(_T("object_tools"), _T("matching_oid"))); //delete old column |
e4926628 | 2547 | CHK_EXEC(SetSchemaVersion(342)); |
4b70cb26 | 2548 | return TRUE; |
2549 | } | |
2550 | ||
56fa1092 VK |
2551 | /** |
2552 | * Upgrade from V340 to V341 | |
2553 | */ | |
2554 | static BOOL H_UpgradeFromV340(int currVersion, int newVersion) | |
2555 | { | |
2556 | static TCHAR batch[] = | |
2557 | _T("ALTER TABLE object_properties ADD country varchar(63)\n") | |
2558 | _T("ALTER TABLE object_properties ADD city varchar(63)\n") | |
2559 | _T("ALTER TABLE object_properties ADD street_address varchar(255)\n") | |
2560 | _T("ALTER TABLE object_properties ADD postcode varchar(31)\n") | |
2561 | _T("<END>"); | |
2562 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 2563 | CHK_EXEC(SetSchemaVersion(341)); |
56fa1092 VK |
2564 | return TRUE; |
2565 | } | |
2566 | ||
b00236dd | 2567 | /** |
2568 | * Upgrade from V339 to V340 | |
2569 | */ | |
2570 | static BOOL H_UpgradeFromV339(int currVersion, int newVersion) | |
2571 | { | |
2572 | CHK_EXEC(CreateConfigParam(_T("LdapPageSize"), _T("1000"), 1, 0)); | |
2573 | CHK_EXEC(SQLQuery(_T("UPDATE config SET var_value='1' WHERE var_name='LdapUserDeleteAction'"))); | |
e4926628 | 2574 | CHK_EXEC(SetSchemaVersion(340)); |
b00236dd | 2575 | return TRUE; |
2576 | } | |
2577 | ||
815638fe VK |
2578 | /** |
2579 | * Upgrade from V338 to V339 | |
2580 | */ | |
2581 | static BOOL H_UpgradeFromV338(int currVersion, int newVersion) | |
2582 | { | |
2583 | CHK_EXEC(CreateConfigParam(_T("EscapeLocalCommands"), _T("0"), 1, 0)); | |
e4926628 | 2584 | CHK_EXEC(SetSchemaVersion(339)); |
815638fe VK |
2585 | return TRUE; |
2586 | } | |
2587 | ||
9208c84b VK |
2588 | /** |
2589 | * Upgrade from V337 to V338 | |
2590 | */ | |
2591 | static BOOL H_UpgradeFromV337(int currVersion, int newVersion) | |
2592 | { | |
2593 | static TCHAR batch[] = | |
2594 | _T("ALTER TABLE nodes ADD icmp_proxy integer\n") | |
2595 | _T("UPDATE nodes SET icmp_proxy=0\n") | |
2596 | _T("<END>"); | |
2597 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 2598 | CHK_EXEC(SetSchemaVersion(338)); |
9208c84b VK |
2599 | return TRUE; |
2600 | } | |
2601 | ||
d368074d VK |
2602 | /** |
2603 | * Upgrade from V336 to V337 | |
2604 | */ | |
2605 | static BOOL H_UpgradeFromV336(int currVersion, int newVersion) | |
2606 | { | |
2607 | CHK_EXEC(CreateConfigParam(_T("SyslogNodeMatchingPolicy"), _T("0"), 1, 1)); | |
e4926628 | 2608 | CHK_EXEC(SetSchemaVersion(337)); |
d368074d VK |
2609 | return TRUE; |
2610 | } | |
2611 | ||
2b01f47c | 2612 | /** |
2613 | * Upgrade from V335 to V336 | |
2614 | */ | |
2615 | static BOOL H_UpgradeFromV335(int currVersion, int newVersion) | |
2616 | { | |
b69710b9 VK |
2617 | CHK_EXEC(ResizeColumn(_T("network_map_links"), _T("connector_name1"), 255, true)); |
2618 | CHK_EXEC(ResizeColumn(_T("network_map_links"), _T("connector_name2"), 255, true)); | |
e4926628 | 2619 | CHK_EXEC(SetSchemaVersion(336)); |
2b01f47c | 2620 | return TRUE; |
2621 | } | |
2622 | ||
b30bb1bc | 2623 | /** |
2624 | * Upgrade from V334 to V335 | |
2625 | */ | |
2626 | static BOOL H_UpgradeFromV334(int currVersion, int newVersion) | |
2627 | { | |
3da098f7 | 2628 | CHK_EXEC(CreateEventTemplate(EVENT_IF_MASK_CHANGED, _T("SYS_IF_MASK_CHANGED"), SEVERITY_NORMAL, EF_LOG, NULL, |
17b15353 VK |
2629 | _T("Interface \"%2\" changed mask from %6 to %4 (IP Addr: %3/%4, IfIndex: %5)"), |
2630 | _T("Generated when when network mask on interface is changed.\r\n") | |
2631 | _T("Parameters:\r\n") | |
2632 | _T(" 1) Interface object ID\r\n") | |
2633 | _T(" 2) Interface name\r\n") | |
2634 | _T(" 3) IP address\r\n") | |
2635 | _T(" 4) New network mask\r\n") | |
2636 | _T(" 5) Interface index\r\n") | |
2637 | _T(" 6) Old network mask"))); | |
e4926628 | 2638 | CHK_EXEC(SetSchemaVersion(335)); |
b30bb1bc | 2639 | return TRUE; |
2640 | } | |
2641 | ||
39e60274 AK |
2642 | /** |
2643 | * Upgrade from V333 to V334 | |
2644 | */ | |
2645 | static BOOL H_UpgradeFromV333(int currVersion, int newVersion) | |
2646 | { | |
2647 | CHK_EXEC(SetColumnNullable(_T("user_groups"), _T("description"))); | |
e4926628 | 2648 | CHK_EXEC(SetSchemaVersion(334)); |
39e60274 AK |
2649 | return TRUE; |
2650 | } | |
2651 | ||
4899db4d | 2652 | /** |
2653 | * Upgrade from V332 to V333 | |
2654 | */ | |
2655 | static BOOL H_UpgradeFromV332(int currVersion, int newVersion) | |
2656 | { | |
2657 | static TCHAR batch[] = | |
2658 | _T("INSERT INTO metadata (var_name,var_value)") | |
2659 | _T(" VALUES ('LocationHistory','CREATE TABLE gps_history_%d (latitude varchar(20), longitude varchar(20), accuracy integer not null, start_timestamp integer not null, end_timestamp integer not null, PRIMARY KEY(start_timestamp))')\n") | |
2660 | _T("<END>"); | |
2661 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 2662 | CHK_EXEC(SetSchemaVersion(333)); |
4899db4d | 2663 | return TRUE; |
2664 | } | |
2665 | ||
a6312bd6 VK |
2666 | /** |
2667 | * Upgrade from V331 to V332 | |
2668 | */ | |
2669 | static BOOL H_UpgradeFromV331(int currVersion, int newVersion) | |
2670 | { | |
2671 | CHK_EXEC(SQLQuery(_T("UPDATE items SET instd_data=instance WHERE node_id=template_id AND instd_method=0"))); | |
e4926628 | 2672 | CHK_EXEC(SetSchemaVersion(332)); |
a6312bd6 VK |
2673 | return TRUE; |
2674 | } | |
2675 | ||
2a964810 VK |
2676 | /** |
2677 | * Upgrade from V330 to V331 | |
2678 | */ | |
2679 | static BOOL H_UpgradeFromV330(int currVersion, int newVersion) | |
2680 | { | |
2681 | if (g_dbSyntax == DB_SYNTAX_ORACLE) | |
2682 | { | |
2683 | CHK_EXEC(SQLQuery(_T("ALTER TABLE audit_log ADD session_id integer DEFAULT 0 NOT NULL"))); | |
2684 | } | |
2685 | else | |
2686 | { | |
2687 | CHK_EXEC(SQLQuery(_T("ALTER TABLE audit_log ADD session_id integer NOT NULL DEFAULT 0"))); | |
2688 | } | |
e4926628 | 2689 | CHK_EXEC(SetSchemaVersion(331)); |
2a964810 VK |
2690 | return TRUE; |
2691 | } | |
2692 | ||
b66098ac VK |
2693 | /** |
2694 | * Upgrade from V329 to V330 | |
2695 | */ | |
2696 | static BOOL H_UpgradeFromV329(int currVersion, int newVersion) | |
2697 | { | |
2698 | CHK_EXEC(CreateConfigParam(_T("AlarmListDisplayLimit"), _T("4096"), 1, 0)); | |
e4926628 | 2699 | CHK_EXEC(SetSchemaVersion(330)); |
b66098ac VK |
2700 | return TRUE; |
2701 | } | |
2702 | ||
4016c0df | 2703 | /** |
2704 | * Upgrade from V328 to V329 | |
2705 | */ | |
2706 | static BOOL H_UpgradeFromV328(int currVersion, int newVersion) | |
2707 | { | |
b6005694 VK |
2708 | CHK_EXEC(SQLQuery(_T("ALTER TABLE items ADD comments $SQL:TEXT"))); |
2709 | CHK_EXEC(SQLQuery(_T("ALTER TABLE dc_tables ADD comments $SQL:TEXT"))); | |
e4926628 | 2710 | CHK_EXEC(SetSchemaVersion(329)); |
4016c0df | 2711 | return TRUE; |
2712 | } | |
2713 | ||
385b1f20 | 2714 | /** |
2715 | * Upgrade from V327 to V328 | |
2716 | */ | |
2717 | static BOOL H_UpgradeFromV327(int currVersion, int newVersion) | |
2718 | { | |
d368074d | 2719 | CHK_EXEC(CreateConfigParam(_T("ResolveDNSToIPOnStatusPoll"), _T("0"), 1, 1)); |
e4926628 | 2720 | CHK_EXEC(SetSchemaVersion(328)); |
385b1f20 | 2721 | return TRUE; |
2722 | } | |
173c189d VK |
2723 | |
2724 | /** | |
2725 | * Upgrade from V326 to V327 | |
2726 | */ | |
2727 | static BOOL H_UpgradeFromV326(int currVersion, int newVersion) | |
2728 | { | |
3fa5e14a VK |
2729 | CHK_EXEC(DropPrimaryKey(_T("network_map_links"))); |
2730 | CHK_EXEC(SQLQuery(_T("CREATE INDEX idx_network_map_links_map_id ON network_map_links(map_id)"))); | |
e4926628 | 2731 | CHK_EXEC(SetSchemaVersion(327)); |
22aaa779 VK |
2732 | return TRUE; |
2733 | } | |
2734 | ||
ade20a86 | 2735 | /** |
2736 | * Upgrade from V325 to V326 | |
2737 | */ | |
2738 | static BOOL H_UpgradeFromV325(int currVersion, int newVersion) | |
2739 | { | |
ade20a86 | 2740 | static TCHAR batch[] = |
2741 | _T("ALTER TABLE network_map_links DROP COLUMN color\n") | |
2742 | _T("ALTER TABLE network_map_links DROP COLUMN status_object\n") | |
2743 | _T("ALTER TABLE network_map_links DROP COLUMN routing\n") | |
2744 | _T("ALTER TABLE network_map_links DROP COLUMN bend_points\n") | |
2745 | _T("<END>"); | |
2746 | CHK_EXEC(SQLBatch(batch)); | |
2747 | ||
c849da55 VK |
2748 | if (g_dbSyntax == DB_SYNTAX_DB2) |
2749 | { | |
2750 | CHK_EXEC(SQLQuery(_T("CALL Sysproc.admin_cmd('REORG TABLE network_map_links')"))); | |
2751 | } | |
2752 | ||
e4926628 | 2753 | CHK_EXEC(SetSchemaVersion(326)); |
ade20a86 | 2754 | return TRUE; |
2755 | } | |
2756 | ||
2757 | /** | |
2758 | * Upgrade from V324 to V325 | |
2759 | */ | |
2760 | static BOOL H_UpgradeFromV324(int currVersion, int newVersion) | |
2761 | { | |
2762 | //move map link configuration to xml | |
2763 | ||
2764 | DB_RESULT hResult = SQLSelect(_T("SELECT map_id, element1, element2, element_data, color, status_object, routing, bend_points FROM network_map_links")); | |
2765 | if (hResult != NULL) | |
2766 | { | |
2767 | int count = DBGetNumRows(hResult); | |
2768 | for(int i = 0; i < count; i++) | |
2769 | { | |
c55ab1c2 VK |
2770 | TCHAR *config = DBGetField(hResult, i, 3, NULL, 0); |
2771 | if (config == NULL) | |
2772 | config = _tcsdup(_T("")); | |
ade20a86 | 2773 | UINT32 color = DBGetFieldULong(hResult, i, 4); |
2774 | UINT32 statusObject = DBGetFieldULong(hResult, i, 5); | |
2775 | UINT32 routing = DBGetFieldULong(hResult, i, 6); | |
2776 | TCHAR bendPoints[1024]; | |
2777 | DBGetField(hResult, i, 7, bendPoints, 1024); | |
2778 | ||
c55ab1c2 | 2779 | TCHAR *newConfig = (TCHAR *)malloc((_tcslen(config) + 4096) * sizeof(TCHAR)); |
ade20a86 | 2780 | _tcscpy(newConfig, _T("<config>")); |
2781 | TCHAR* c1 = _tcsstr(config, _T("<dciList")); | |
2782 | TCHAR* c2 = _tcsstr(config, _T("</dciList>")); | |
2783 | if(c1 != NULL && c2!= NULL) | |
2784 | { | |
2785 | *c2 = 0; | |
2786 | _tcscat(newConfig, c1); | |
2787 | _tcscat(newConfig, _T("</dciList>")); | |
2788 | } | |
2789 | ||
2790 | TCHAR tmp[2048]; | |
2791 | _sntprintf(tmp, 2048, _T("<color>%d</color>"), color), | |
2792 | _tcscat(newConfig, tmp); | |
2793 | ||
c55ab1c2 | 2794 | if (statusObject != 0) |
ade20a86 | 2795 | { |
2796 | _sntprintf(tmp, 2048, _T("<objectStatusList length=\"1\"><long>%d</long></objectStatusList>"), statusObject); | |
2797 | _tcscat(newConfig, tmp); | |
2798 | } | |
2799 | ||
2800 | _sntprintf(tmp, 2048, _T("<routing>%d</routing>"), routing); | |
2801 | _tcscat(newConfig, tmp); | |
2802 | ||
c55ab1c2 | 2803 | if (routing == 3 && bendPoints[0] != 0) |
ade20a86 | 2804 | { |
2805 | count = 1; | |
30b86580 | 2806 | for(size_t j = 0; j < _tcslen(bendPoints); j++) |
ade20a86 | 2807 | { |
c55ab1c2 | 2808 | if (bendPoints[j] == _T(',')) |
ade20a86 | 2809 | count++; |
2810 | } | |
2811 | _sntprintf(tmp, 2048, _T("<bendPoints length=\"%d\">%s</bendPoints>"), count, bendPoints); | |
2812 | _tcscat(newConfig, tmp); | |
2813 | } | |
2814 | _tcscat(newConfig, _T("</config>")); | |
2815 | ||
7833a69f | 2816 | free(config); |
ade20a86 | 2817 | DB_STATEMENT statment = DBPrepare(g_hCoreDB, _T("UPDATE network_map_links SET element_data=? WHERE map_id=? AND element1=? AND element2=?")); |
e196e5d8 VK |
2818 | if (statment != NULL) |
2819 | { | |
2820 | DBBind(statment, 1, DB_SQLTYPE_TEXT, newConfig, DB_BIND_STATIC); | |
2821 | DBBind(statment, 2, DB_SQLTYPE_INTEGER, DBGetFieldULong(hResult, i, 0)); | |
2822 | DBBind(statment, 3, DB_SQLTYPE_INTEGER, DBGetFieldULong(hResult, i, 1)); | |
2823 | DBBind(statment, 4, DB_SQLTYPE_INTEGER, DBGetFieldULong(hResult, i, 2)); | |
2824 | CHK_EXEC(DBExecute(statment)); | |
2825 | DBFreeStatement(statment); | |
2826 | } | |
2827 | else | |
2828 | { | |
2829 | if (!g_bIgnoreErrors) | |
7833a69f | 2830 | return false; |
e196e5d8 | 2831 | } |
7833a69f | 2832 | free(newConfig); |
ade20a86 | 2833 | } |
2834 | DBFreeResult(hResult); | |
2835 | } | |
2836 | ||
e4926628 | 2837 | CHK_EXEC(SetSchemaVersion(325)); |
ade20a86 | 2838 | return TRUE; |
2839 | } | |
2840 | ||
2f1bc68b VK |
2841 | /** |
2842 | * Upgrade from V323 to V324 | |
2843 | */ | |
2844 | static BOOL H_UpgradeFromV323(int currVersion, int newVersion) | |
2845 | { | |
a9f5aa55 | 2846 | if (!MetaDataReadInt(_T("ValidTDataIndex"), 0)) // check if schema is already correct |
2f1bc68b VK |
2847 | { |
2848 | TCHAR query[1024]; | |
ade20a86 | 2849 | _sntprintf(query, 1024, |
66717659 | 2850 | _T("UPDATE metadata SET var_value='CREATE TABLE tdata_records_%%d (record_id %s not null,row_id %s not null,instance varchar(255) null,PRIMARY KEY(row_id),FOREIGN KEY (record_id) REFERENCES tdata_%%d(record_id) ON DELETE CASCADE)' WHERE var_name='TDataTableCreationCommand_1'"), |
2a964810 | 2851 | g_pszSqlType[g_dbSyntax][SQL_TYPE_INT64], g_pszSqlType[g_dbSyntax][SQL_TYPE_INT64]); |
2f1bc68b VK |
2852 | CHK_EXEC(SQLQuery(query)); |
2853 | ||
2854 | RecreateTData(_T("nodes"), true, true); | |
2855 | RecreateTData(_T("clusters"), true, true); | |
2856 | RecreateTData(_T("mobile_devices"), true, true); | |
2857 | } | |
2858 | ||
a9f5aa55 | 2859 | CHK_EXEC(SQLQuery(_T("DELETE FROM metadata WHERE var_name='ValidTDataIndex'"))); |
e4926628 | 2860 | CHK_EXEC(SetSchemaVersion(324)); |
2f1bc68b VK |
2861 | return TRUE; |
2862 | } | |
2863 | ||
c8076b19 VK |
2864 | /** |
2865 | * Upgrade from V322 to V323 | |
2866 | */ | |
2867 | static BOOL H_UpgradeFromV322(int currVersion, int newVersion) | |
2868 | { | |
2869 | CHK_EXEC(CreateConfigParam(_T("ProcessTrapsFromUnmanagedNodes"), _T("0"), 1, 1)); | |
e4926628 | 2870 | CHK_EXEC(SetSchemaVersion(323)); |
c8076b19 VK |
2871 | return TRUE; |
2872 | } | |
2873 | ||
f4d8fe18 | 2874 | /** |
2875 | * Upgrade from V321 to V322 | |
2876 | */ | |
2877 | static BOOL H_UpgradeFromV321(int currVersion, int newVersion) | |
2878 | { | |
2a964810 | 2879 | switch(g_dbSyntax) |
f4d8fe18 | 2880 | { |
2881 | case DB_SYNTAX_DB2: | |
87104c6a VK |
2882 | CHK_EXEC(SQLBatch( |
2883 | _T("ALTER TABLE users ALTER COLUMN system_access SET DATA TYPE $SQL:INT64\n") | |
2884 | _T("ALTER TABLE user_groups ALTER COLUMN system_access SET DATA TYPE $SQL:INT64\n") | |
2885 | _T("<END>"))); | |
f4d8fe18 | 2886 | break; |
2887 | case DB_SYNTAX_MSSQL: | |
87104c6a VK |
2888 | CHK_EXEC(SQLBatch( |
2889 | _T("ALTER TABLE users ALTER COLUMN system_access $SQL:INT64\n") | |
2890 | _T("ALTER TABLE user_groups ALTER COLUMN system_access $SQL:INT64\n") | |
2891 | _T("<END>"))); | |
f4d8fe18 | 2892 | break; |
2893 | case DB_SYNTAX_PGSQL: | |
87104c6a | 2894 | CHK_EXEC(SQLBatch( |
d27fb10d VK |
2895 | _T("ALTER TABLE users ALTER COLUMN system_access TYPE $SQL:INT64\n") |
2896 | _T("ALTER TABLE user_groups ALTER COLUMN system_access TYPE $SQL:INT64\n") | |
87104c6a | 2897 | _T("<END>"))); |
f4d8fe18 | 2898 | break; |
2899 | case DB_SYNTAX_SQLITE: | |
87104c6a VK |
2900 | CHK_EXEC(SQLBatch( |
2901 | _T("CREATE TABLE temp_users AS SELECT * FROM users\n") | |
2902 | _T("DROP TABLE users\n") | |
2903 | _T("CREATE TABLE users (id integer not null, guid varchar(36) not null, name varchar(63) not null, password varchar(48) not null, system_access $SQL:INT64 not null, flags integer not null,") | |
2904 | _T(" full_name varchar(127) null, description varchar(255) null, grace_logins integer not null, auth_method integer not null, cert_mapping_method integer not null, cert_mapping_data $SQL:TEXT null,") | |
2905 | _T(" auth_failures integer not null, last_passwd_change integer not null, min_passwd_length integer not null, disabled_until integer not null, last_login integer not null, password_history $SQL:TEXT null,") | |
2906 | _T(" xmpp_id varchar(127) null, ldap_dn $SQL:TEXT null, PRIMARY KEY(id))\n") | |
2907 | _T("INSERT INTO users SELECT * FROM temp_users\n") | |
2908 | _T("DROP TABLE temp_users\n") | |
2909 | _T("CREATE TABLE temp_user_groups AS SELECT * FROM user_groups\n") | |
2910 | _T("DROP TABLE user_groups\n") | |
2911 | _T("CREATE TABLE user_groups (id integer not null, guid varchar(36) not null, name varchar(63) not null, system_access $SQL:INT64 not null, flags integer not null,") | |
2912 | _T(" description varchar(255) not null, ldap_dn $SQL:TEXT null, PRIMARY KEY(id))\n") | |
2913 | _T("INSERT INTO user_groups SELECT * FROM temp_user_groups\n") | |
2914 | _T("DROP TABLE temp_user_groups\n") | |
2915 | _T("<END>"))); | |
f4d8fe18 | 2916 | break; |
52162395 VK |
2917 | case DB_SYNTAX_ORACLE: |
2918 | // no changes needed | |
2919 | break; | |
f4d8fe18 | 2920 | default: |
87104c6a VK |
2921 | CHK_EXEC(SQLBatch( |
2922 | _T("ALTER TABLE users MODIFY system_access $SQL:INT64\n") | |
2923 | _T("ALTER TABLE user_groups MODIFY system_access $SQL:INT64\n") | |
2924 | _T("<END>"))); | |
f4d8fe18 | 2925 | break; |
2926 | } | |
2927 | ||
e4926628 | 2928 | CHK_EXEC(SetSchemaVersion(322)); |
f4d8fe18 | 2929 | return TRUE; |
2930 | } | |
2931 | ||
2932 | /** | |
d4ce93a2 VK |
2933 | * Upgrade from V320 to V321 |
2934 | */ | |
2935 | static BOOL H_UpgradeFromV320(int currVersion, int newVersion) | |
2936 | { | |
2937 | static TCHAR batch[] = | |
2938 | _T("ALTER TABLE object_tools ADD command_short_name varchar(31)\n") | |
2939 | _T("UPDATE object_tools SET command_short_name='Shutdown' WHERE tool_id=1\n") | |
2940 | _T("UPDATE object_tools SET command_short_name='Restart' WHERE tool_id=2\n") | |
2941 | _T("UPDATE object_tools SET command_short_name='Wakeup' WHERE tool_id=3\n") | |
2942 | _T("<END>"); | |
2943 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 2944 | CHK_EXEC(SetSchemaVersion(321)); |
d4ce93a2 VK |
2945 | return TRUE; |
2946 | } | |
2947 | ||
ac14e3e6 | 2948 | /** |
d4ce93a2 | 2949 | * Upgrade from V319 to V320 |
d9177dd1 | 2950 | */ |
2951 | static BOOL H_UpgradeFromV319(int currVersion, int newVersion) | |
2952 | { | |
6c352bb5 | 2953 | CHK_EXEC(CreateConfigParam(_T("LdapConnectionString"), _T("ldap://localhost:389"), 1, 0)); |
d9177dd1 | 2954 | CHK_EXEC(CreateConfigParam(_T("LdapSyncUser"), _T(""), 1, 0)); |
2955 | CHK_EXEC(CreateConfigParam(_T("LdapSyncUserPassword"), _T(""), 1, 0)); | |
2956 | CHK_EXEC(CreateConfigParam(_T("LdapSearchBase"), _T(""), 1, 0)); | |
2957 | CHK_EXEC(CreateConfigParam(_T("LdapSearchFilter"), _T(""), 1, 0)); | |
2958 | CHK_EXEC(CreateConfigParam(_T("LdapUserDeleteAction"), _T("1"), 1, 0)); | |
f70a8b3c | 2959 | CHK_EXEC(CreateConfigParam(_T("LdapMappingName"), _T(""), 1, 0)); |
d9177dd1 | 2960 | CHK_EXEC(CreateConfigParam(_T("LdapMappingFullName"), _T("displayName"), 1, 0)); |
2575f149 | 2961 | CHK_EXEC(CreateConfigParam(_T("LdapMappingDescription"), _T(""), 1, 0)); |
d9177dd1 | 2962 | CHK_EXEC(CreateConfigParam(_T("LdapGroupClass"), _T(""), 1, 0)); |
2963 | CHK_EXEC(CreateConfigParam(_T("LdapUserClass"), _T(""), 1, 0)); | |
2964 | CHK_EXEC(CreateConfigParam(_T("LdapSyncInterval"), _T("0"), 1, 0)); | |
2965 | ||
2966 | static TCHAR batch[] = | |
2967 | _T("ALTER TABLE users ADD ldap_dn $SQL:TEXT\n") | |
2968 | _T("ALTER TABLE user_groups ADD ldap_dn $SQL:TEXT\n") | |
2969 | _T("<END>"); | |
2970 | CHK_EXEC(SQLBatch(batch)); | |
2971 | ||
e4926628 | 2972 | CHK_EXEC(SetSchemaVersion(320)); |
d9177dd1 | 2973 | return TRUE; |
2974 | } | |
d4ce93a2 | 2975 | |
d9177dd1 | 2976 | /* |
ac14e3e6 VK |
2977 | * Upgrade from V318 to V319 |
2978 | */ | |
2979 | static BOOL H_UpgradeFromV318(int currVersion, int newVersion) | |
2980 | { | |
2981 | static TCHAR batch[] = | |
2982 | _T("ALTER TABLE object_tools ADD icon $SQL:TEXT\n") | |
2983 | _T("ALTER TABLE object_tools ADD command_name varchar(255)\n") | |
2984 | _T("UPDATE object_tools SET flags=74,command_name='Shutdown system',icon='89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000000473424954080808087c086488000002bf49444154388d95933f689c7518c73fbf3f7779efaede995c137369d54123ba4843070b1204c10ed24db182939b90c1c1e2eee05871e8d0d2b98a8ba0c52ee2d0cb622acd99222dd1084d9a18cd3597f7bd6bdebbdffbfbe7701d82e8e0071ebec303dfe7e1e1fb883fea7542aba54c080dac153c261ed1a30540b51a8f359bd9c9e565afedd4943ab6b4f4d56873f38d5014ff6af04f95950aaad5fa7e7d7dfdbcee1d1c3cd95d59395b5a5c7c82ffc1fd4ee7acc9f349fd683090b1db15499ae2013b3f8f1c0e296f6f539c380140796707333747a856296d6ca081d1e1a138cc73a95d8cc28f468834459f3ecd7367cee0b38ccd7bf7787e711180dfaf5ee599850544a3c1760898d5556c51e06314d2c5288be150186b995d58404bc9eef5ebb87e86140229257690b17be33b4a4a3173ea14236b71d60a17a3901684b59652b34952ab31dcda6470f76794c9b0b6c0160665320eefae317ab04552ad529e9ec6c78003292dc861bf2f4408e369fb7b948a8cb2cd7085c115868998936887eb75514a617a3db66eb68505211d30f86b97dde536420844a341b17e8bf8db0a21ed12d23ddcda0ff46f7e4dac24482939b8b386b3060f4207206a457afb16be9f519f7f91f22baf52f9e91bfca7ef00829a4fb1af9fa3fed2cbf8419f6c75054a0a0fc800a025f151cafdcb17514af3ecc79f939fbf40d69c259d9ca1ffd687cc7d7411a5145b573e230e52d0120f68ffd8400ad8b97685c9934f31f9ee07b4de5e227ff37d8c311c4f12aad50afb5f5c62e7da65a400519204408f37108408de471e5cfa04fbe3b74c9d7b8ff2d32f1042805f7e25bdf1257fdeee103c8408528d53afa356c85a42b107d6812920bdd3c16f7448cae3d81a0b837cdc2b1c380f724203445d8ff161767cb66df1afe5380a0d3d05ca8d0f148110c02bb035b013109b1a17747b06baa20d3c84897dc93420feeb0b8f22203603dd19307f037f0665861328b32e0000000049454e44ae426082' WHERE tool_id=1\n") | |
2985 | _T("UPDATE object_tools SET flags=74,command_name='Restart system',icon='89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000000473424954080808087c0864880000029849444154388d85934d8b1c5514869f73eeadaaae6ea77bda388999882241fc5c0e09ae4484c4857b4177fa0b5474256edcfa075cbacbc23f6074a12332a0a2200a2189e8c468a23d93e99e9eaeaaae7beb1e1733f9902c7ce06c0ebc2f2fe7f0ca5fe311fdd71e77d93332922e08b749dcc5fe3bc9f72d5d1fcf861f7dd6f9f295353778ebdd0b71ff977374ad60f7888e1003bbb3379ceb930f4e7fbe7be5a7573da7f65697db17cf2ff2e757fe6e06a00e1141040aab59ebb5dc47076efbdb739cacc63edc9aabee4f64796248efb10dbcf738e750556268e97eff14b937ce6d1607126e55eae33c4956d5f4f72f21ae40d6cfe0bc4755c9f39cd4ccc0d27d7a695ae23c896fe7a645d5482c26340f0d19e639beb9811463c85788610a29c1d11d4284cc416a82848589861a49754bab390fac3f4ba69174f963ba7040d745249f4136033f63efd859769f78933a792c244265ea436d9a9a99e86895bc28b0e90fc03632bd88e463acb787580696f3e0fa299ade09e275a5feed2b09b5898f4ba35bdc40bb6b0034f5357cda4277bec354400d0b0d5d75406a5e42caa751d90596c425e22d00aa48771933a3c99e6230a8d1b241dcd1eb03a4a2c4563600f07615bc622da80510149aefa1b982ef3dc24d7d071b7afc71f0c781d58c83d107e48347d1f62a1a7f44f4d0c0130c4c4196d89fefa1273f215f7d9d4b379fa4dfdf22cb32bc7f99b5f533c45893edbc4fe75a8c0116c05b008b408434fd9a327f031b7d08c73670ee2c65595296259afe20fbe76de2fc9ba39e1cd6c6a7e4b0ae87d5200a4cbea4acce3318bd8865cfe1a283dd9fe9a65f901615a982d400c96360be9eda4ebbfdf0a6ec752f741ac11f1a89db02d9ba5bc8d483ae877587e2f0abdfac2b26b209488fa218b07627d7ff636dc524d52cff0513e53f37235ac3190000000049454e44ae426082' WHERE tool_id=2\n") | |
2986 | _T("UPDATE object_tools SET flags=64,command_name='Wakeup node using Wake-On-LAN',icon='89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000000473424954080808087c086488000000097048597300000dd700000dd70142289b780000001974455874536f667477617265007777772e696e6b73636170652e6f72679bee3c1a0000023649444154388d8d924f48545114c67ff7bd37ff7cf9071bc70a4d47271ca15c848d448185b40a89204890362d8568eb2270d7a2762d5cb7711504d1ae10c195218895a488528e4e06a653d338de7bdfbcf75ac84ce38c901f9ccdb9e7fbce39f77c627ce6872df6dd71f01f781e1d9c00866003215efaf99de7d6763afb1078721262053a800908ed5a5aa9b1e3bb0802a600c0717d3cdf3fae6cccd24a25abb302a80b990c265a009859d941299763249296d6b2a6732468d25a1f24156f00e0cbd62e9b5a71a0dd9a490cad14a570b4266c780cf546797cab1b1317139747435ddcec69266c78385a53c9b1b45265b548d022d51563f45a9c778b69ce35850058de928c0cb4933fd04c7ffece812e9639e5158480865098ebc9181fbfeef07a6e9dc68805c0af8243f45480ab174e33bb9426e7484a9b942710020c3b40e24c236f3facb1bd9b634d3a00d8e100ab992cb7af7421bc225aa9b280a195a414524972054d5f679488e5a394442949d8f4b8d4d14caea09115f55a490cad155a2b9452ecfdcef37e619ddef6287706ba89c76ce2319be1fe4e926d51663e6d90cdeda3d42147ebaa4fcc161da6a61739df52cfe88d8b0ca712f8be871d0e31bb94666a7a916c2e8feb7aff3cd33ef2f4c8612dd3a0a5d1a6bfa78d544f1bbeef33bf9a617e65939fb902c50a328068bd3bb10c1c71a3210401cb24143cbc82d2459c62ad8980154b2b3909bca87e91c09fea642d26ad67f7fb32afe6bebd5958dd1c2c48ddf45f8a10d87591bdcb89b3b3f7063a337f01f30f1c1c580292640000000049454e44ae426082' WHERE tool_id=3\n") | |
2987 | _T("<END>"); | |
2988 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 2989 | CHK_EXEC(SetSchemaVersion(319)); |
ac14e3e6 VK |
2990 | return TRUE; |
2991 | } | |
2992 | ||
56d5289b VK |
2993 | /** |
2994 | * Upgrade from V317 to V318 | |
2995 | */ | |
2996 | static BOOL H_UpgradeFromV317(int currVersion, int newVersion) | |
2997 | { | |
3da098f7 | 2998 | CHK_EXEC(CreateEventTemplate(EVENT_AP_DOWN, _T("SYS_AP_DOWN"), SEVERITY_CRITICAL, EF_LOG, NULL, |
56d5289b VK |
2999 | _T("Access point %2 changed state to DOWN"), |
3000 | _T("Generated when access point state changes to DOWN.\r\n") | |
3001 | _T("Parameters:\r\n") | |
3002 | _T(" 1) Access point object ID\r\n") | |
3003 | _T(" 2) Access point name\r\n") | |
3004 | _T(" 3) Access point MAC address\r\n") | |
3005 | _T(" 4) Access point IP address\r\n") | |
3006 | _T(" 5) Access point vendor name\r\n") | |
3007 | _T(" 6) Access point model\r\n") | |
3008 | _T(" 7) Access point serial number"))); | |
3009 | ||
e4926628 | 3010 | CHK_EXEC(SetSchemaVersion(318)); |
56d5289b VK |
3011 | return TRUE; |
3012 | } | |
3013 | ||
8deadd79 VK |
3014 | /** |
3015 | * Upgrade from V316 to V317 | |
3016 | */ | |
3017 | static BOOL H_UpgradeFromV316(int currVersion, int newVersion) | |
3018 | { | |
3019 | CHK_EXEC(CreateConfigParam(_T("MinViewRefreshInterval"), _T("1000"), 1, 0)); | |
e4926628 | 3020 | CHK_EXEC(SetSchemaVersion(317)); |
8deadd79 VK |
3021 | return TRUE; |
3022 | } | |
3023 | ||
23ed00c4 VK |
3024 | /** |
3025 | * Upgrade from V315 to V316 | |
3026 | */ | |
3027 | static BOOL H_UpgradeFromV315(int currVersion, int newVersion) | |
3028 | { | |
3029 | static TCHAR batch[] = | |
3030 | _T("ALTER TABLE access_points ADD ap_state integer\n") | |
3031 | _T("UPDATE access_points SET ap_state=0\n") | |
3032 | _T("<END>"); | |
3033 | CHK_EXEC(SQLBatch(batch)); | |
3034 | ||
3da098f7 | 3035 | CHK_EXEC(CreateEventTemplate(EVENT_AP_ADOPTED, _T("SYS_AP_ADOPTED"), SEVERITY_NORMAL, EF_LOG, NULL, |
23ed00c4 VK |
3036 | _T("Access point %2 changed state to ADOPTED"), |
3037 | _T("Generated when access point state changes to ADOPTED.\r\n") | |
3038 | _T("Parameters:\r\n") | |
3039 | _T(" 1) Access point object ID\r\n") | |
3040 | _T(" 2) Access point name\r\n") | |
3041 | _T(" 3) Access point MAC address\r\n") | |
3042 | _T(" 4) Access point IP address\r\n") | |
3043 | _T(" 5) Access point vendor name\r\n") | |
3044 | _T(" 6) Access point model\r\n") | |
3045 | _T(" 7) Access point serial number"))); | |
3046 | ||
3da098f7 | 3047 | CHK_EXEC(CreateEventTemplate(EVENT_AP_UNADOPTED, _T("SYS_AP_UNADOPTED"), SEVERITY_MAJOR, EF_LOG, NULL, |
23ed00c4 VK |
3048 | _T("Access point %2 changed state to UNADOPTED"), |
3049 | _T("Generated when access point state changes to UNADOPTED.\r\n") | |
3050 | _T("Parameters:\r\n") | |
3051 | _T(" 1) Access point object ID\r\n") | |
3052 | _T(" 2) Access point name\r\n") | |
3053 | _T(" 3) Access point MAC address\r\n") | |
3054 | _T(" 4) Access point IP address\r\n") | |
3055 | _T(" 5) Access point vendor name\r\n") | |
3056 | _T(" 6) Access point model\r\n") | |
3057 | _T(" 7) Access point serial number"))); | |
3058 | ||
e4926628 | 3059 | CHK_EXEC(SetSchemaVersion(316)); |
23ed00c4 VK |
3060 | return TRUE; |
3061 | } | |
3062 | ||
b2042b58 VK |
3063 | /** |
3064 | * Upgrade from V314 to V315 | |
3065 | */ | |
3066 | static BOOL H_UpgradeFromV314(int currVersion, int newVersion) | |
3067 | { | |
3068 | static TCHAR batch[] = | |
3069 | _T("ALTER TABLE thresholds ADD match_count integer\n") | |
3070 | _T("UPDATE thresholds SET match_count=0 WHERE current_state=0\n") | |
3071 | _T("UPDATE thresholds SET match_count=1 WHERE current_state<>0\n") | |
3072 | _T("<END>"); | |
3073 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 3074 | CHK_EXEC(SetSchemaVersion(315)); |
b2042b58 VK |
3075 | return TRUE; |
3076 | } | |
3077 | ||
2d7ee2e0 | 3078 | /** |
3079 | * Upgrade from V313 to V314 | |
3080 | */ | |
3081 | static BOOL H_UpgradeFromV313(int currVersion, int newVersion) | |
3082 | { | |
b2042b58 | 3083 | // Replace double backslash with single backslash in all "file download" (code 7) object tools |
2d7ee2e0 | 3084 | DB_RESULT hResult = SQLSelect(_T("SELECT tool_id, tool_data FROM object_tools WHERE tool_type=7")); |
3085 | if (hResult != NULL) | |
3086 | { | |
3087 | int count = DBGetNumRows(hResult); | |
3088 | for(int i = 0; i < count; i++) | |
3089 | { | |
3090 | TCHAR* toolData = DBGetField(hResult, i, 1, NULL, 0); | |
3091 | TranslateStr(toolData, _T("\\\\"), _T("\\")); | |
3092 | ||
3093 | DB_STATEMENT statment = DBPrepare(g_hCoreDB, _T("UPDATE object_tools SET tool_data=? WHERE tool_id=?")); | |
3094 | if (statment == NULL) | |
3095 | return FALSE; | |
3096 | DBBind(statment, 1, DB_SQLTYPE_TEXT, toolData, DB_BIND_DYNAMIC); | |
3097 | DBBind(statment, 2, DB_SQLTYPE_INTEGER, DBGetFieldULong(hResult, i, 0)); | |
3098 | if(!DBExecute(statment)) | |
3099 | return FALSE; | |
3100 | DBFreeStatement(statment); | |
3101 | } | |
3102 | DBFreeResult(hResult); | |
3103 | } | |
3104 | ||
e4926628 | 3105 | CHK_EXEC(SetSchemaVersion(314)); |
2d7ee2e0 | 3106 | return TRUE; |
3107 | } | |
3108 | ||
3109 | /** | |
3110 | * Upgrade from V312 to V313 | |
3111 | */ | |
3112 | static BOOL H_UpgradeFromV312(int currVersion, int newVersion) | |
3113 | { | |
4dfa78b6 VK |
3114 | CHK_EXEC(SetColumnNullable(_T("object_tools"), _T("tool_name"))); |
3115 | CHK_EXEC(SetColumnNullable(_T("object_tools"), _T("tool_data"))); | |
3116 | CHK_EXEC(SetColumnNullable(_T("object_tools"), _T("description"))); | |
3117 | CHK_EXEC(SetColumnNullable(_T("object_tools"), _T("confirmation_text"))); | |
3118 | CHK_EXEC(SetColumnNullable(_T("object_tools"), _T("matching_oid"))); | |
3119 | CHK_EXEC(SetColumnNullable(_T("object_tools_table_columns"), _T("col_name"))); | |
2d7ee2e0 | 3120 | CHK_EXEC(ConvertStrings(_T("object_tools"), _T("tool_id"), _T("tool_name"))); |
3121 | CHK_EXEC(ConvertStrings(_T("object_tools"), _T("tool_id"), _T("tool_data"))); | |
3122 | CHK_EXEC(ConvertStrings(_T("object_tools"), _T("tool_id"), _T("description"))); | |
3123 | CHK_EXEC(ConvertStrings(_T("object_tools"), _T("tool_id"), _T("confirmation_text"))); | |
3124 | CHK_EXEC(ConvertStrings(_T("object_tools"), _T("tool_id"), _T("matching_oid"))); | |
3125 | CHK_EXEC(ConvertStrings(_T("object_tools_table_columns"), _T("tool_id"), _T("col_number"), _T("col_name"), false)); | |
e4926628 | 3126 | CHK_EXEC(SetSchemaVersion(313)); |
2d7ee2e0 | 3127 | return TRUE; |
3128 | } | |
3129 | ||
6498e05a VK |
3130 | /** |
3131 | * Upgrade from V311 to V312 | |
3132 | */ | |
3133 | static BOOL H_UpgradeFromV311(int currVersion, int newVersion) | |
3134 | { | |
3135 | CHK_EXEC(CreateConfigParam(_T("EnableReportingServer"), _T("0"), 1, 1)); | |
3136 | CHK_EXEC(CreateConfigParam(_T("ReportingServerHostname"), _T("localhost"), 1, 1)); | |
3137 | CHK_EXEC(CreateConfigParam(_T("ReportingServerPort"), _T("4710"), 1, 1)); | |
e4926628 | 3138 | CHK_EXEC(SetSchemaVersion(312)); |
6498e05a VK |
3139 | return TRUE; |
3140 | } | |
3141 | ||
9262b092 VK |
3142 | /** |
3143 | * Upgrade from V310 to V311 | |
3144 | */ | |
3145 | static BOOL H_UpgradeFromV310(int currVersion, int newVersion) | |
3146 | { | |
3147 | IntegerArray<UINT32> deleteList; | |
3148 | ||
3149 | // reports | |
3150 | DB_RESULT hResult = SQLSelect(_T("SELECT id FROM reports")); | |
3151 | if (hResult != NULL) | |
3152 | { | |
3153 | int count = DBGetNumRows(hResult); | |
3154 | for(int i = 0; i < count; i++) | |
3155 | deleteList.add(DBGetFieldULong(hResult, i, 0)); | |
3156 | DBFreeResult(hResult); | |
3157 | } | |
3158 | ||
3159 | // report groups | |
3160 | hResult = SQLSelect(_T("SELECT id FROM containers WHERE object_class=25")); | |
3161 | if (hResult != NULL) | |
3162 | { | |
3163 | int count = DBGetNumRows(hResult); | |
3164 | for(int i = 0; i < count; i++) | |
3165 | deleteList.add(DBGetFieldULong(hResult, i, 0)); | |
3166 | DBFreeResult(hResult); | |
3167 | } | |
3168 | ||
3169 | for(int i = 0; i < deleteList.size(); i++) | |
3170 | { | |
3171 | TCHAR query[256]; | |
3172 | ||
3173 | _sntprintf(query, 256, _T("DELETE FROM object_properties WHERE object_id=%d"), deleteList.get(i)); | |
3174 | CHK_EXEC(SQLQuery(query)); | |
3175 | ||
3176 | _sntprintf(query, 256, _T("DELETE FROM object_custom_attributes WHERE object_id=%d"), deleteList.get(i)); | |
3177 | CHK_EXEC(SQLQuery(query)); | |
3178 | ||
3179 | _sntprintf(query, 256, _T("DELETE FROM acl WHERE object_id=%d"), deleteList.get(i)); | |
3180 | CHK_EXEC(SQLQuery(query)); | |
3181 | ||
3182 | _sntprintf(query, 256, _T("DELETE FROM container_members WHERE object_id=%d OR container_id=%d"), deleteList.get(i), deleteList.get(i)); | |
3183 | CHK_EXEC(SQLQuery(query)); | |
3184 | } | |
3185 | ||
3186 | static TCHAR batch[] = | |
3187 | _T("DROP TABLE reports\n") | |
3188 | _T("DROP TABLE report_results\n") | |
3189 | _T("DELETE FROM containers WHERE object_class=25\n") | |
3190 | _T("DELETE FROM object_properties WHERE object_id=8\n") | |
3191 | _T("<END>"); | |
3192 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 3193 | CHK_EXEC(SetSchemaVersion(311)); |
9262b092 VK |
3194 | return TRUE; |
3195 | } | |
3196 | ||
32745683 VK |
3197 | /** |
3198 | * Upgrade from V309 to V310 | |
3199 | */ | |
3200 | static BOOL H_UpgradeFromV309(int currVersion, int newVersion) | |
3201 | { | |
3202 | static TCHAR batch[] = | |
3203 | _T("ALTER TABLE interfaces ADD peer_proto integer\n") | |
3204 | _T("UPDATE interfaces SET peer_proto=0\n") | |
3205 | _T("<END>"); | |
3206 | CHK_EXEC(SQLBatch(batch)); | |
e4926628 | 3207 | CHK_EXEC(SetSchemaVersion(310)); |
32745683 VK |
3208 | return TRUE; |
3209 | } | |
3210 | ||
34a320ad VK |
3211 | /** |
3212 | * Upgrade from V308 to V309 | |
3213 | */ | |
3214 | static BOOL H_UpgradeFromV308(int currVersion, int newVersion) | |
3215 | { | |
3216 | CHK_EXEC(CreateConfigParam(_T("HelpDeskLink"), _T("none"), 1, 1)); | |
e4926628 | 3217 | CHK_EXEC(SetSchemaVersion(309)); |
34a320ad VK |
3218 | return TRUE; |
3219 | } | |
3220 | ||
2ab9314f | 3221 | /** |
3222 | * Upgrade from V307 to V308 | |