This is an automated email from the ASF dual-hosted git repository.

colinlee pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/develop by this push:
     new e2557e54 fix lower case in python.
e2557e54 is described below

commit e2557e54d2e2660d9ac8b727807db44272d2a25a
Author: ColinLee <[email protected]>
AuthorDate: Tue Apr 8 22:23:58 2025 +0800

    fix lower case in python.
---
 python/tests/test_write_and_read.py | 26 ++++++++++++++++++++++++++
 python/tsfile/schema.py             |  4 ++--
 python/tsfile/tablet.py             |  8 ++++----
 python/tsfile/tsfile_reader.pyx     | 23 ++++++++++-------------
 4 files changed, 42 insertions(+), 19 deletions(-)

diff --git a/python/tests/test_write_and_read.py 
b/python/tests/test_write_and_read.py
index 30013057..817c3f67 100644
--- a/python/tests/test_write_and_read.py
+++ b/python/tests/test_write_and_read.py
@@ -181,3 +181,29 @@ def test_query_result_detach_from_reader():
     finally:
         if os.path.exists("query_result_detach_from_reader.tsfile"):
             os.remove("query_result_detach_from_reader.tsfile")
+
+
+def test_lower_case_name():
+    if os.path.exists("lower_case_name.tsfile"):
+        os.remove("lower_case_name.tsfile")
+    table = TableSchema("tEst_Table",
+                        [ColumnSchema("Device", TSDataType.STRING, 
ColumnCategory.TAG),
+                         ColumnSchema("vAlue", TSDataType.DOUBLE, 
ColumnCategory.FIELD)])
+    with TsFileTableWriter("lower_case_name.tsfile", table) as writer:
+        tablet = Tablet(["device", "VALUE"], [TSDataType.STRING, 
TSDataType.DOUBLE])
+        for i in range(100):
+            tablet.add_timestamp(i, i)
+            tablet.add_value_by_name("device", i, "device" + str(i))
+            tablet.add_value_by_name("valuE", i,  i * 1.1)
+
+        writer.write_table(tablet)
+
+    with TsFileReader("lower_case_name.tsfile") as reader:
+        result = reader.query_table("test_Table", ["DEvice", "value"], 0, 100)
+        while result.next():
+            print(result.get_value_by_name("DEVICE"))
+            data_frame = result.read_data_frame(max_row_num=130)
+            assert data_frame.shape == (100, 3)
+            assert data_frame["value"].sum() == 5445.0
+
+
diff --git a/python/tsfile/schema.py b/python/tsfile/schema.py
index 65189b70..62d5d754 100644
--- a/python/tsfile/schema.py
+++ b/python/tsfile/schema.py
@@ -74,7 +74,7 @@ class ColumnSchema:
     data_type = None
 
     def __init__(self, column_name: str, data_type: TSDataType, category: 
ColumnCategory = ColumnCategory.FIELD):
-        self.column_name = column_name
+        self.column_name = column_name.lower()
         self.data_type = data_type
         self.category = category
 
@@ -97,7 +97,7 @@ class TableSchema:
     columns = None
 
     def __init__(self, table_name: str, columns: List[ColumnSchema]):
-        self.table_name = table_name
+        self.table_name = table_name.lower()
         self.columns = columns
 
     def get_table_name(self):
diff --git a/python/tsfile/tablet.py b/python/tsfile/tablet.py
index 6fb76ea2..2935db09 100644
--- a/python/tsfile/tablet.py
+++ b/python/tsfile/tablet.py
@@ -46,7 +46,7 @@ class Tablet(object):
             [None for _ in range(max_row_num)] for _ in 
range(len(column_name_list))
         ]
         self.target_name = None
-        self.column_name_list = column_name_list
+        self.column_name_list = [column_name.lower() for column_name in 
column_name_list]
         self.type_list = type_list
         self.max_row_num = max_row_num
 
@@ -85,9 +85,9 @@ class Tablet(object):
     def get_max_row_num(self):
         return self.max_row_num
 
-    def add_column(self, column_name: str, column_type: TSDataType):
+    def add_column(self, column_name: str, data_type: TSDataType):
         self.column_name_list.append(column_name)
-        self.type_list.append(column_type)
+        self.type_list.append(data_type)
 
     def remove_column(self, column_name: str):
         ind = self.column_name_list.index(column_name)
@@ -112,7 +112,7 @@ class Tablet(object):
 
     def add_value_by_name(self, column_name: str, row_index: int, value: 
Union[int, float, bool, str, bytes]):
         try:
-            col_index = self.column_name_list.index(column_name)
+            col_index = self.column_name_list.index(column_name.lower())
         except ValueError:
             raise ValueError(f"Column '{column_name}' does not exist") from 
None
 
diff --git a/python/tsfile/tsfile_reader.pyx b/python/tsfile/tsfile_reader.pyx
index 716f8f02..f9106be5 100644
--- a/python/tsfile/tsfile_reader.pyx
+++ b/python/tsfile/tsfile_reader.pyx
@@ -19,19 +19,15 @@
 #cython: language_level=3
 
 import weakref
-import pandas as pd
-from pandas import DataFrame
-
-from .tsfile_cpp cimport *
-from .tsfile_py_cpp cimport *
+from typing import List
 
-from libc.stdlib cimport free
+import pandas as pd
 from libc.stdint cimport INT64_MIN, INT64_MAX
-cimport cython
-
-from typing import List
+from libc.stdlib cimport free
 
 from tsfile.schema import TSDataType as TSDataTypePy
+from .tsfile_cpp cimport *
+from .tsfile_py_cpp cimport *
 
 cdef class ResultSetPy:
     """
@@ -190,10 +186,10 @@ cdef class ResultSetPy:
         Get value by name from query result set.
         """
         self.check_result_set_invalid()
-        if tsfile_result_set_is_null_by_name_c(self.result, column_name):
+        if tsfile_result_set_is_null_by_name_c(self.result, 
column_name.lower()):
             return None
         # get index in metadata, metadata ind from 0.
-        ind = self.metadata.get_column_name_index(column_name, self.is_tree)
+        ind = self.metadata.get_column_name_index(column_name.lower(), 
self.is_tree)
         return self.get_value_by_index(ind)
 
     def get_metadata(self):
@@ -288,7 +284,9 @@ cdef class TsFileReaderPy:
         :return: query result handler.
         """
         cdef ResultSet result;
-        result = tsfile_reader_query_table_c(self.reader, table_name, 
column_names, start_time, end_time)
+        result = tsfile_reader_query_table_c(self.reader, table_name.lower(),
+                                             [column_name.lower() for 
column_name in column_names], start_time,
+                                             end_time)
         pyresult = ResultSetPy(self)
         pyresult.init_c(result, table_name)
         self.activate_result_set_list.add(pyresult)
@@ -326,7 +324,6 @@ cdef class TsFileReaderPy:
         """
         return get_all_table_schema(self.reader)
 
-
     def close(self):
         """
         Close TsFile Reader, if reader has result sets, invalid them.

Reply via email to