location history table deleted on object delete (issue #1278)
authorVictor Kirhenshtein <victor@netxms.org>
Tue, 30 Aug 2016 06:01:26 +0000 (09:01 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Tue, 30 Aug 2016 06:01:26 +0000 (09:01 +0300)
ChangeLog
src/server/core/netobj.cpp
src/server/include/nms_objects.h

index 74fa918..553041c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -27,7 +27,7 @@
        - New editors for Agent Config Policy and Log Parser Policy. 
        - DCI summary tables with empty menu path not shown in object context menu
        - Fixed glitches in table value view
-- Fixed issues: #92, #568, #851, #906, #909, #942, #959, #987, #992, #999, #1006, #1051, #1096, #1100, #1159, #1187, #1191, #1230, #1237, #1245, #1254, #1261, #1263, #1273, #1275, #1277
+- Fixed issues: #92, #568, #851, #906, #909, #942, #959, #987, #992, #999, #1006, #1051, #1096, #1100, #1159, #1187, #1191, #1230, #1237, #1245, #1254, #1261, #1263, #1273, #1275, #1277, #1278
 
 
 *
index 45bf631..8ea6fe8 100644 (file)
@@ -188,6 +188,13 @@ bool NetObj::deleteFromDatabase(DB_HANDLE hdb)
       success = DeleteObjectAlarms(m_id, hdb);
    }
 
+   if (success && isLocationTableExists(hdb))
+   {
+      TCHAR query[256];
+      _sntprintf(query, 256, _T("DROP TABLE gps_history_%d"), m_id);
+      success = DBQuery(hdb, query);
+   }
+
    // Delete module data
    if (success && (m_moduleData != NULL))
    {
@@ -1898,7 +1905,7 @@ void NetObj::addLocationToHistory()
    UINT32 startTimestamp;
    bool isSamePlace;
    DB_RESULT hResult;
-   if (!isLocationTableExists())
+   if (!isLocationTableExists(hdb))
    {
       DbgPrintf(4, _T("NetObj::addLocationToHistory: Geolocation history table will be created for object %s [%d]"), m_name, m_id);
       if (!createLocationHistoryTable(hdb))
@@ -1989,17 +1996,15 @@ onFail:
 /**
  * Check if given data table exist
  */
-bool NetObj::isLocationTableExists()
+bool NetObj::isLocationTableExists(DB_HANDLE hdb)
 {
    TCHAR table[256];
    _sntprintf(table, 256, _T("gps_history_%d"), m_id);
-   DB_HANDLE hdb = DBConnectionPoolAcquireConnection();
    int rc = DBIsTableExist(hdb, table);
    if (rc == DBIsTableExist_Failure)
    {
       _tprintf(_T("WARNING: call to DBIsTableExist(\"%s\") failed\n"), table);
    }
-   DBConnectionPoolReleaseConnection(hdb);
    return rc != DBIsTableExist_NotFound;
 }
 
index bcf15e6..bbf5c8f 100644 (file)
@@ -521,7 +521,7 @@ protected:
    virtual UINT32 modifyFromMessageInternal(NXCPMessage *msg);
 
    void addLocationToHistory();
-   bool isLocationTableExists();
+   bool isLocationTableExists(DB_HANDLE hdb);
    bool createLocationHistoryTable(DB_HANDLE hdb);
 
 public: