blob: b65585cce4cad9053c4340c70f44625c569e362a [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
#cython: language_level=3
from libc.stdint cimport uint32_t, int32_t, int64_t
ctypedef int32_t ErrorCode
# import symbols from tsfile_cwrapper.h
cdef extern from "./tsfile_cwrapper.h":
# common
ctypedef int64_t timestamp
# reader and writer etc
ctypedef void * TsFileReader
ctypedef void * TsFileWriter
ctypedef void * Tablet
ctypedef void * TsRecord
ctypedef void * ResultSet
# enum types
ctypedef enum TSDataType:
TS_DATATYPE_BOOLEAN = 0
TS_DATATYPE_INT32 = 1
TS_DATATYPE_INT64 = 2
TS_DATATYPE_FLOAT = 3
TS_DATATYPE_DOUBLE = 4
TS_DATATYPE_TEXT = 5
TS_DATATYPE_VECTOR = 6
TS_DATATYPE_STRING = 11
TS_DATATYPE_NULL_TYPE = 254
TS_DATATYPE_INVALID = 255
ctypedef enum TSEncoding:
TS_ENCODING_PLAIN = 0,
TS_ENCODING_DICTIONARY = 1,
TS_ENCODING_RLE = 2,
TS_ENCODING_DIFF = 3,
TS_ENCODING_TS_2DIFF = 4,
TS_ENCODING_BITMAP = 5,
TS_ENCODING_GORILLA_V1 = 6,
TS_ENCODING_REGULAR = 7,
TS_ENCODING_GORILLA = 8,
TS_ENCODING_ZIGZAG = 9,
TS_ENCODING_FREQ = 10,
TS_ENCODING_INVALID = 255
ctypedef enum CompressionType:
TS_COMPRESSION_UNCOMPRESSED = 0,
TS_COMPRESSION_SNAPPY = 1,
TS_COMPRESSION_GZIP = 2,
TS_COMPRESSION_LZO = 3,
TS_COMPRESSION_SDT = 4,
TS_COMPRESSION_PAA = 5,
TS_COMPRESSION_PLA = 6,
TS_COMPRESSION_LZ4 = 7,
TS_COMPRESSION_INVALID = 255
ctypedef enum ColumnCategory:
TAG = 0,
FIELD = 1
# struct types
ctypedef struct ColumnSchema:
char * column_name
TSDataType data_type
ColumnCategory column_category
ctypedef struct TableSchema:
char * table_name
ColumnSchema * column_schemas
int column_num
ctypedef struct TimeseriesSchema:
char * timeseries_name
TSDataType data_type
TSEncoding encoding
CompressionType compression
ctypedef struct DeviceSchema:
char * device_name
TimeseriesSchema * timeseries_schema
int timeseries_num
ctypedef struct ResultSetMetaData:
char** column_names
TSDataType * data_types
int column_num
# Function Declarations
# reader:new and close
TsFileReader tsfile_reader_new(const char * pathname, ErrorCode * err_code);
ErrorCode tsfile_reader_close(TsFileReader reader)
# writer: new and close
TsFileWriter _tsfile_writer_new(const char * pathname, ErrorCode * err_code);
ErrorCode _tsfile_writer_close(TsFileWriter writer);
# writer : register table, device and timeseries
ErrorCode _tsfile_writer_register_table(TsFileWriter writer, TableSchema * schema);
ErrorCode _tsfile_writer_register_timeseries(TsFileWriter writer,
const char * device_id,
const TimeseriesSchema * schema);
ErrorCode _tsfile_writer_register_device(TsFileWriter writer,
const DeviceSchema * device_schema);
# writer : write tablet data and flush
ErrorCode _tsfile_writer_write_tablet(TsFileWriter writer, Tablet tablet);
ErrorCode _tsfile_writer_write_table(TsFileWriter writer, Tablet tablet);
ErrorCode _tsfile_writer_write_ts_record(TsFileWriter writer, TsRecord record);
# tablet : new and add timestamp/value into tablet
Tablet _tablet_new_with_target_name(const char * device_id,
char** column_name_list,
TSDataType * data_types,
int column_num, int max_rows);
Tablet tablet_new(const char** column_names, TSDataType * data_types, int column_num, uint32_t max_rows);
ErrorCode tablet_add_timestamp(Tablet tablet, uint32_t row_index, int64_t timestamp);
ErrorCode tablet_add_value_by_index_int64_t(Tablet tablet, uint32_t row_index, uint32_t column_index,
int64_t value);
ErrorCode tablet_add_value_by_index_int32_t(Tablet tablet, uint32_t row_index, uint32_t column_index,
int32_t value);
ErrorCode tablet_add_value_by_index_double(Tablet tablet, uint32_t row_index, uint32_t column_index, double value);
ErrorCode tablet_add_value_by_index_float(Tablet tablet, uint32_t row_index, uint32_t column_index, float value);
ErrorCode tablet_add_value_by_index_bool(Tablet tablet, uint32_t row_index, uint32_t column_index, bint value);
ErrorCode tablet_add_value_by_index_string(Tablet tablet, uint32_t row_index,
uint32_t column_index, const char * value);
void free_tablet(Tablet * tablet);
# row_record
TsRecord _ts_record_new(const char * device_id, int64_t timestamp, int timeseries_num);
ErrorCode _insert_data_into_ts_record_by_name_int32_t(TsRecord data, const char *measurement_name,
const int32_t value);
ErrorCode _insert_data_into_ts_record_by_name_int64_t(TsRecord data, const char *measurement_name,
const int64_t value);
ErrorCode _insert_data_into_ts_record_by_name_float(TsRecord data, const char *measurement_name, const float value);
ErrorCode _insert_data_into_ts_record_by_name_double(TsRecord data, const char *measurement_name,
const double value);
ErrorCode _insert_data_into_ts_record_by_name_bool(TsRecord data, const char *measurement_name, const bint value);
void _free_tsfile_ts_record(TsRecord * record);
ErrorCode _tablet_set_batch_data(Tablet tablet, uint32_t col_index, const void* data, char* mask);
ErrorCode _tablet_set_batch_str(Tablet tablet, uint32_t col_index, const char** data);
ErrorCode _tablet_set_batch_timestamp(Tablet tablet, int64_t* timestamp, uint32_t max_row_num);
# resulSet : query data from tsfile reader
ResultSet tsfile_query_table(TsFileReader reader,
const char * table_name,
const char** columns, uint32_t column_num,
int64_t start_time, int64_t end_time, ErrorCode *err_code)
ResultSet _tsfile_reader_query_device(TsFileReader reader,
const char *device_name,
char ** sensor_name, uint32_t sensor_num,
int64_t start_time, int64_t end_time, ErrorCode *err_code)
TableSchema tsfile_reader_get_table_schema(TsFileReader reader,
const char * table_name);
TableSchema * tsfile_reader_get_all_table_schemas(TsFileReader reader,
uint32_t * size);
# resultSet : get data from resultSet
bint tsfile_result_set_next(ResultSet result_set, ErrorCode * err_code);
bint tsfile_result_set_is_null_by_index(ResultSet result_set, uint32_t column_index);
bint tsfile_result_set_is_null_by_name(ResultSet result_set, const char * column_name);
void free_tsfile_result_set(ResultSet * result_set);
int32_t tsfile_result_set_get_value_by_index_int32_t(ResultSet result_set, uint32_t column_index);
int64_t tsfile_result_set_get_value_by_index_int64_t(ResultSet result_set, uint32_t column_index);
bint tsfile_result_set_get_value_by_index_bool(ResultSet result_set, uint32_t column_index);
float tsfile_result_set_get_value_by_index_float(ResultSet result_set, uint32_t column_index);
double tsfile_result_set_get_value_by_index_double(ResultSet result_set, uint32_t column_index);
char * tsfile_result_set_get_value_by_index_string(ResultSet result_set, uint32_t column_index);
ResultSetMetaData tsfile_result_set_get_metadata(ResultSet result_set);
void free_result_set_meta_data(ResultSetMetaData result_set_meta_data);