This is an automated email from the ASF dual-hosted git repository. colinlee pushed a commit to branch fix_release in repository https://gitbox.apache.org/repos/asf/tsfile.git
commit 561a11240b6bc074b2f6e7b07d83026ae4e6fa75 Author: ColinLee <[email protected]> AuthorDate: Wed Dec 10 09:36:48 2025 +0800 tmp code. --- python/tests/test_write_and_read.py | 8 ++++++-- python/tsfile/tsfile_cpp.pxd | 1 + python/tsfile/tsfile_py_cpp.pyx | 3 ++- python/tsfile/tsfile_reader.pyx | 7 +++---- python/tsfile/utils.py | 4 ++-- 5 files changed, 14 insertions(+), 9 deletions(-) diff --git a/python/tests/test_write_and_read.py b/python/tests/test_write_and_read.py index 819a50a4..1bdeea7b 100644 --- a/python/tests/test_write_and_read.py +++ b/python/tests/test_write_and_read.py @@ -44,6 +44,7 @@ def test_row_record_write_and_read(): writer.register_timeseries("root.device1", TimeseriesSchema("level5", TSDataType.TEXT)) writer.register_timeseries("root.device1", TimeseriesSchema("level6", TSDataType.BLOB)) writer.register_timeseries("root.device1", TimeseriesSchema("level7", TSDataType.DATE)) + writer.register_timeseries("root.device1", TimeseriesSchema("level8", TSDataType.TIMESTAMP)) max_row_num = 10 @@ -55,7 +56,8 @@ def test_row_record_write_and_read(): Field("level4", f"string_value_{i}", TSDataType.STRING), Field("level5", f"text_value_{i}", TSDataType.TEXT), Field("level6", f"blob_data_{i}".encode('utf-8'), TSDataType.BLOB), - Field("level7", i, TSDataType.DATE)]) + Field("level7", i, TSDataType.DATE), + Field("level8", i, TSDataType.TIMESTAMP)]) writer.write_row_record(row) writer.close() @@ -63,10 +65,11 @@ def test_row_record_write_and_read(): reader = TsFileReader("record_write_and_read.tsfile") result = reader.query_timeseries( "root.device1", - ["level1", "level2", "level3", "level4", "level5", "level6", "level7"], + ["level1", "level2", "level3", "level4", "level5", "level6", "level7", "level8"], 0, 100, ) + assert len(reader.get_active_query_result()) == 1 for row_num in range(max_row_num): @@ -79,6 +82,7 @@ def test_row_record_write_and_read(): assert result.get_value_by_index(6) == f"text_value_{row_num}" assert result.get_value_by_index(7) == f"blob_data_{row_num}" assert result.get_value_by_index(8) == row_num + assert result.get_value_by_index(9) == row_num assert not result.next() assert len(reader.get_active_query_result()) == 1 diff --git a/python/tsfile/tsfile_cpp.pxd b/python/tsfile/tsfile_cpp.pxd index a2f621d4..52dd5225 100644 --- a/python/tsfile/tsfile_cpp.pxd +++ b/python/tsfile/tsfile_cpp.pxd @@ -42,6 +42,7 @@ cdef extern from "./tsfile_cwrapper.h": TS_DATATYPE_DOUBLE = 4 TS_DATATYPE_TEXT = 5 TS_DATATYPE_VECTOR = 6 + TS_DATATYPE_TIMESTAMP = 8 TS_DATATYPE_DATE = 9 TS_DATATYPE_BLOB = 10 TS_DATATYPE_STRING = 11 diff --git a/python/tsfile/tsfile_py_cpp.pyx b/python/tsfile/tsfile_py_cpp.pyx index 10441041..b88b469c 100644 --- a/python/tsfile/tsfile_py_cpp.pyx +++ b/python/tsfile/tsfile_py_cpp.pyx @@ -100,7 +100,8 @@ cdef dict TS_DATA_TYPE_MAP = { TSDataTypePy.DATE: TSDataType.TS_DATATYPE_DATE, TSDataTypePy.TEXT: TSDataType.TS_DATATYPE_TEXT, TSDataTypePy.STRING: TSDataType.TS_DATATYPE_STRING, - TSDataTypePy.BLOB: TSDataType.TS_DATATYPE_BLOB + TSDataTypePy.BLOB: TSDataType.TS_DATATYPE_BLOB, + TSDataTypePy.TIMESTAMP: TSDataType.TS_DATATYPE_TIMESTAMP } cdef dict TS_ENCODING_MAP = { diff --git a/python/tsfile/tsfile_reader.pyx b/python/tsfile/tsfile_reader.pyx index 3b961639..977f80d1 100644 --- a/python/tsfile/tsfile_reader.pyx +++ b/python/tsfile/tsfile_reader.pyx @@ -292,7 +292,7 @@ cdef class TsFileReaderPy: pyresult.init_c(result, table_name) self.activate_result_set_list.add(pyresult) return pyresult - + def query_table_on_tree(self, column_names : List[str], start_time : int = INT64_MIN, end_time : int = INT64_MAX) -> ResultSetPy: """ @@ -300,9 +300,8 @@ cdef class TsFileReaderPy: :return: query result handler. """ cdef ResultSet result; - result = tsfile_reader_query_table_on_tree_c(self.reader, - [column_name.lower() for column_name in column_names], start_time, - end_time) + ## No need to convert column names to lowercase, as measurement names in the tree model are case-sensitive. + result = tsfile_reader_query_table_on_tree_c(self.reader, column_names, start_time, end_time) pyresult = ResultSetPy(self, True) pyresult.init_c(result, "root") self.activate_result_set_list.add(pyresult) diff --git a/python/tsfile/utils.py b/python/tsfile/utils.py index 1d6f1afc..68548cbe 100644 --- a/python/tsfile/utils.py +++ b/python/tsfile/utils.py @@ -51,7 +51,7 @@ def to_dataframe(file_path: str, if _table_name is None: _table_name, columns = next(iter(table_schema.items())) else: - if _table_name not in table_schema: + if _table_name.lower() not in table_schema: raise TableNotExistError(_table_name) columns = table_schema[_table_name] @@ -59,7 +59,7 @@ def to_dataframe(file_path: str, if _column_names is not None: for column in _column_names: - if column not in column_names_in_file: + if column.lower() not in column_names_in_file: raise ColumnNotExistError(column) else: _column_names = column_names_in_file
