From 2f354c2174190e4ebfc5b67f758d228fd94285ea Mon Sep 17 00:00:00 2001 From: Tao Liu Date: Sat, 6 Jun 2020 06:08:27 +0000 Subject: [PATCH] [TD-530] fix query result leaks bug --- src/connector/python/linux/python2/taos/cinterface.py | 2 +- src/connector/python/linux/python2/taos/cursor.py | 5 +++-- src/connector/python/linux/python3/taos/cinterface.py | 2 +- src/connector/python/linux/python3/taos/cursor.py | 6 ++++-- src/connector/python/windows/python2/taos/cinterface.py | 2 +- src/connector/python/windows/python2/taos/cursor.py | 5 +++-- src/connector/python/windows/python3/taos/cinterface.py | 2 +- src/connector/python/windows/python3/taos/cursor.py | 5 +++-- 8 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/connector/python/linux/python2/taos/cinterface.py b/src/connector/python/linux/python2/taos/cinterface.py index e25dad5a73..10df10b31f 100644 --- a/src/connector/python/linux/python2/taos/cinterface.py +++ b/src/connector/python/linux/python2/taos/cinterface.py @@ -413,5 +413,5 @@ if __name__ == '__main__': print(data) - cinter.freeresult(result) + cinter.freeResult(result) cinter.close(conn) \ No newline at end of file diff --git a/src/connector/python/linux/python2/taos/cursor.py b/src/connector/python/linux/python2/taos/cursor.py index 75aa7f69d8..77d517d272 100644 --- a/src/connector/python/linux/python2/taos/cursor.py +++ b/src/connector/python/linux/python2/taos/cursor.py @@ -109,7 +109,6 @@ class TDengineCursor(object): # TODO : change the exception raised here raise ProgrammingError("Cursor is not connected") - self._connection.clear_result_set() self._reset_result() stmt = operation @@ -202,7 +201,7 @@ class TDengineCursor(object): for i in range(len(self._fields)): buffer[i].extend(block[i]) - self._connection.clear_result_set() + self._reset_result() return list(map(tuple, zip(*buffer))) @@ -222,6 +221,8 @@ class TDengineCursor(object): """ self._description = None self._rowcount = -1 + if self._result is not None: + CTaosInterface.freeResult(self._result) self._result = None self._fields = None self._block = None diff --git a/src/connector/python/linux/python3/taos/cinterface.py b/src/connector/python/linux/python3/taos/cinterface.py index be0226447d..c3c8a4603a 100644 --- a/src/connector/python/linux/python3/taos/cinterface.py +++ b/src/connector/python/linux/python3/taos/cinterface.py @@ -413,5 +413,5 @@ if __name__ == '__main__': print(data) - cinter.freeresult(result) + cinter.freeResult(result) cinter.close(conn) \ No newline at end of file diff --git a/src/connector/python/linux/python3/taos/cursor.py b/src/connector/python/linux/python3/taos/cursor.py index 3baca89462..41feaf93b8 100644 --- a/src/connector/python/linux/python3/taos/cursor.py +++ b/src/connector/python/linux/python3/taos/cursor.py @@ -111,7 +111,6 @@ class TDengineCursor(object): # TODO : change the exception raised here raise ProgrammingError("Cursor is not connected") - self._connection.clear_result_set() self._reset_result() stmt = operation @@ -204,7 +203,7 @@ class TDengineCursor(object): for i in range(len(self._fields)): buffer[i].extend(block[i]) - self._connection.clear_result_set() + self._reset_result() return list(map(tuple, zip(*buffer))) @@ -224,6 +223,8 @@ class TDengineCursor(object): """ self._description = None self._rowcount = -1 + if self._result is not None: + CTaosInterface.freeResult(self._result) self._result = None self._fields = None self._block = None @@ -240,3 +241,4 @@ class TDengineCursor(object): (ele['name'], ele['type'], None, None, None, None, False)) return self._result + diff --git a/src/connector/python/windows/python2/taos/cinterface.py b/src/connector/python/windows/python2/taos/cinterface.py index 0b446253b7..06ade4fc35 100644 --- a/src/connector/python/windows/python2/taos/cinterface.py +++ b/src/connector/python/windows/python2/taos/cinterface.py @@ -413,5 +413,5 @@ if __name__ == '__main__': print(data) - cinter.freeresult(result) + cinter.freeResult(result) cinter.close(conn) \ No newline at end of file diff --git a/src/connector/python/windows/python2/taos/cursor.py b/src/connector/python/windows/python2/taos/cursor.py index 6af82e72de..183c42a291 100644 --- a/src/connector/python/windows/python2/taos/cursor.py +++ b/src/connector/python/windows/python2/taos/cursor.py @@ -102,7 +102,6 @@ class TDengineCursor(object): # TODO : change the exception raised here raise ProgrammingError("Cursor is not connected") - self._connection.clear_result_set() self._reset_result() stmt = operation @@ -149,7 +148,7 @@ class TDengineCursor(object): for i in range(len(self._fields)): buffer[i].extend(block[i]) - self._connection.clear_result_set() + self._reset_result() return list(map(tuple, zip(*buffer))) @@ -171,6 +170,8 @@ class TDengineCursor(object): """ self._description = None self._rowcount = -1 + if self._result is not None: + CTaosInterface.freeResult(self._result) self._result = None self._fields = None self._block = None diff --git a/src/connector/python/windows/python3/taos/cinterface.py b/src/connector/python/windows/python3/taos/cinterface.py index 864a2f5ecb..c6218fe9d4 100644 --- a/src/connector/python/windows/python3/taos/cinterface.py +++ b/src/connector/python/windows/python3/taos/cinterface.py @@ -413,5 +413,5 @@ if __name__ == '__main__': print(data) - cinter.freeresult(result) + cinter.freeResult(result) cinter.close(conn) \ No newline at end of file diff --git a/src/connector/python/windows/python3/taos/cursor.py b/src/connector/python/windows/python3/taos/cursor.py index 0ee8af4ed0..ddf6d0b315 100644 --- a/src/connector/python/windows/python3/taos/cursor.py +++ b/src/connector/python/windows/python3/taos/cursor.py @@ -102,7 +102,6 @@ class TDengineCursor(object): # TODO : change the exception raised here raise ProgrammingError("Cursor is not connected") - self._connection.clear_result_set() self._reset_result() stmt = operation @@ -149,7 +148,7 @@ class TDengineCursor(object): for i in range(len(self._fields)): buffer[i].extend(block[i]) - self._connection.clear_result_set() + self._reset_result() return list(map(tuple, zip(*buffer))) @@ -171,6 +170,8 @@ class TDengineCursor(object): """ self._description = None self._rowcount = -1 + if self._result is not None: + CTaosInterface.freeResult(self._result) self._result = None self._fields = None self._block = None -- GitLab