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.