changed DB versions to allow room for additional upgrades in stable 2.1 branch; fixed...
authorVictor Kirhenshtein <victor@netxms.org>
Wed, 30 Aug 2017 13:16:40 +0000 (16:16 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Wed, 30 Aug 2017 13:16:40 +0000 (16:16 +0300)
include/netxmsdb.h
sql/setup.in
src/server/tools/nxdbmgr/upgrade.cpp

index b94ded4..4d9f284 100644 (file)
@@ -23,6 +23,6 @@
 #ifndef _netxmsdb_h
 #define _netxmsdb_h
 
-#define DB_FORMAT_VERSION   459
+#define DB_FORMAT_VERSION   501
 
 #endif
index e3d3162..889564e 100644 (file)
@@ -54,7 +54,7 @@ INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_rest
 INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('DeleteAlarmsOfDeletedObject','1','1',1,0,'B','Enable/disable automatic alarm removal of an object when it is deleted.');
 INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('DeleteEmptySubnets','0','0',1,1,'B','Enable/disable automatic deletion of subnet objects without any nodes within.');
 INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('DeleteEventsOfDeletedObject','1','1',1,0,'B','Enable/disable automatic event removal of an object when it is deleted.');
-INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('DeleteUnreachableNodesPeriod','0','0',1,1,'B','Delete nodes which were unreachable for a number of days specified by this parameter.');
+INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('DeleteUnreachableNodesPeriod','0','0',1,0,'I','Delete nodes which were unreachable for a number of days specified by this parameter.');
 INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('DiscoveryFilter','none','none',1,0,'S','');
 INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('DiscoveryFilterFlags','0','0',1,0,'I','');
 INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('DiscoveryPollingInterval','900','900',1,1,'I','Interval in seconds between passive network discovery polls.');
@@ -120,6 +120,7 @@ INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_rest
 INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('LdapUserUniqueId','','',1,0,'S','');
 INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('LockTimeout','60000','60000',1,1,'I','');
 INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('LogAllSNMPTraps','0','0',1,1,'B','Log all SNMP traps.');
+INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('LongRunningQueryThreshold','0','0',1,1,'I','Threshold in milliseconds to report long running SQL queries (0 to disable)');
 INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('MailEncoding','utf8','utf8',1,0,'S','Encoding for e-mails generated by NetXMS server.');
 INSERT INTO config (var_name,var_value,default_value,is_visible,data_type,need_server_restart,description) VALUES ('MessageOfTheDay','','',1,'S',0,'Message to be shown when a user logs into the console.');
 INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,data_type,description) VALUES ('MinPasswordLength','0','0',1,0,'I','Default minimum password length for a NetXMS user. The default applied only if per-user setting is not defined.');
index 9c8b306..f96f4c3 100644 (file)
@@ -115,7 +115,7 @@ static bool IsConfigurationVariableExist(const TCHAR *name)
 }
 
 /**
- * Create configuration parameter if it doesn`t exist (unless bForceUpdate set to true)
+ * Create configuration parameter if it doesn't exist (unless forceUpdate set to true)
  */
 bool CreateConfigParam(const TCHAR *name, const TCHAR *value, const TCHAR *description, char dataType, bool isVisible, bool needRestart, bool isPublic, bool forceUpdate)
 {
@@ -123,10 +123,18 @@ bool CreateConfigParam(const TCHAR *name, const TCHAR *value, const TCHAR *descr
    TCHAR szQuery[3024];
    if (!IsConfigurationVariableExist(name))
    {
-      _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)"),
-                 (const TCHAR *)DBPrepareString(g_hCoreDB, name, 63),
-                 (const TCHAR *)DBPrepareString(g_hCoreDB, value, 2000), isVisible ? 1 : 0, needRestart ? 1 : 0,
-                 isPublic ? _T('Y') : _T('N'), dataType, (const TCHAR *)DBPrepareString(g_hCoreDB, description, 255));
+      if (DBGetSchemaVersion(g_hCoreDB) >= 454)
+         _sntprintf(szQuery, 3024, _T("INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart,is_public,data_type,description) VALUES (%s,%s,%s,%d,%d,'%c','%c',%s)"),
+                    (const TCHAR *)DBPrepareString(g_hCoreDB, name, 63),
+                    (const TCHAR *)DBPrepareString(g_hCoreDB, value, 2000),
+                    (const TCHAR *)DBPrepareString(g_hCoreDB, value, 2000),
+                    isVisible ? 1 : 0, needRestart ? 1 : 0,
+                    isPublic ? _T('Y') : _T('N'), dataType, (const TCHAR *)DBPrepareString(g_hCoreDB, description, 255));
+      else
+         _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)"),
+                    (const TCHAR *)DBPrepareString(g_hCoreDB, name, 63),
+                    (const TCHAR *)DBPrepareString(g_hCoreDB, value, 2000), isVisible ? 1 : 0, needRestart ? 1 : 0,
+                    isPublic ? _T('Y') : _T('N'), dataType, (const TCHAR *)DBPrepareString(g_hCoreDB, description, 255));
       success = SQLQuery(szQuery);
    }
        else if (forceUpdate)
@@ -147,9 +155,16 @@ bool CreateConfigParam(const TCHAR *name, const TCHAR *value, bool isVisible, bo
    TCHAR szQuery[3024];
    if (!IsConfigurationVariableExist(name))
    {
-      _sntprintf(szQuery, 3024, _T("INSERT INTO config (var_name,var_value,is_visible,need_server_restart) VALUES (%s,%s,%d,%d)"),
-                 (const TCHAR *)DBPrepareString(g_hCoreDB, name, 63),
-                 (const TCHAR *)DBPrepareString(g_hCoreDB, value, 2000), isVisible ? 1 : 0, needRestart ? 1 : 0);
+      if (DBGetSchemaVersion(g_hCoreDB) >= 454)
+         _sntprintf(szQuery, 3024, _T("INSERT INTO config (var_name,var_value,default_value,is_visible,need_server_restart) VALUES (%s,%s,%s,%d,%d)"),
+                    (const TCHAR *)DBPrepareString(g_hCoreDB, name, 63),
+                    (const TCHAR *)DBPrepareString(g_hCoreDB, value, 2000),
+                    (const TCHAR *)DBPrepareString(g_hCoreDB, value, 2000),
+                    isVisible ? 1 : 0, needRestart ? 1 : 0);
+      else
+         _sntprintf(szQuery, 3024, _T("INSERT INTO config (var_name,var_value,is_visible,need_server_restart) VALUES (%s,%s,%d,%d)"),
+                    (const TCHAR *)DBPrepareString(g_hCoreDB, name, 63),
+                    (const TCHAR *)DBPrepareString(g_hCoreDB, value, 2000), isVisible ? 1 : 0, needRestart ? 1 : 0);
       success = SQLQuery(szQuery);
    }
        else if (forceUpdate)
@@ -585,9 +600,9 @@ static bool SetSchemaVersion(int version)
 }
 
 /**
- * Upgrade from V458 to V459
+ * Upgrade from V500 to V501
  */
-static BOOL H_UpgradeFromV458(int currVersion, int newVersion)
+static BOOL H_UpgradeFromV500(int currVersion, int newVersion)
 {
    static const TCHAR *batch =
             _T("ALTER TABLE users ADD created integer null\n")
@@ -599,14 +614,14 @@ static BOOL H_UpgradeFromV458(int currVersion, int newVersion)
    CHK_EXEC(DBSetNotNullConstraint(g_hCoreDB, _T("users"), _T("created")));
    CHK_EXEC(DBSetNotNullConstraint(g_hCoreDB, _T("user_groups"), _T("created")));
 
-   CHK_EXEC(SetSchemaVersion(459));
+   CHK_EXEC(SetSchemaVersion(501));
    return TRUE;
 }
 
 /**
- * Upgrade from V457 to V458
+ * Upgrade from V458 to V500
  */
-static BOOL H_UpgradeFromV457(int currVersion, int newVersion)
+static BOOL H_UpgradeFromV458(int currVersion, int newVersion)
 {
    CHK_EXEC(CreateTable(
       _T("CREATE TABLE sensors (")
@@ -631,6 +646,17 @@ static BOOL H_UpgradeFromV457(int currVersion, int newVersion)
       _T("  runtime_flags integer null,")
       _T("PRIMARY KEY(id))")));
 
+   CHK_EXEC(SetSchemaVersion(500));
+   return TRUE;
+}
+
+/**
+ * Upgrade from V457 to V458
+ */
+static BOOL H_UpgradeFromV457(int currVersion, int newVersion)
+{
+   CHK_EXEC(SQLQuery(_T("UPDATE config SET data_type='I',need_server_restart=0 WHERE var_name='DeleteUnreachableNodesPeriod'")));
+   CHK_EXEC(CreateConfigParam(_T("LongRunningQueryThreshold"), _T("0"), _T("Threshold in milliseconds to report long running SQL queries (0 to disable)"), 'I', true, true, false, false));
    CHK_EXEC(SetSchemaVersion(458));
    return TRUE;
 }
@@ -11926,7 +11952,8 @@ static struct
    { 455, 456, H_UpgradeFromV455 },
    { 456, 457, H_UpgradeFromV456 },
    { 457, 458, H_UpgradeFromV457 },
-   { 458, 459, H_UpgradeFromV458 },
+   { 458, 500, H_UpgradeFromV458 },
+   { 500, 501, H_UpgradeFromV500 },
    { 0, 0, NULL }
 };