blob: b71931d3bdfc6d6c6ef9fcd6de74be449664aaee [file] [view]
<!--
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.
-->
# Interface Definitions - Java
## Write Interface
### ITsFileWriter
Used to write data to tsfile
```Java
interface ITsFileWriter extends AutoCloseable {
// Write data
void write(Tablet tablet);
// Close Write
void close();
}
```
### TsFileWriterBuilder
Used to construct ITsFileWriter
```Java
class TsFileWriterBuilder {
// Build ITsFileWriter object
public ITsFileWriter build();
// target file
public TsFileWriterBuilder file(File file);
// Used to construct table structures
public TsFileWriterBuilder tableSchema(TableSchema schema);
// Used to limit the memory size of objects
public TsFileWriterBuilder memoryThreshold(long memoryThreshold);
}
```
### TableSchema
Describe the data structure of the table schema
```Java
class TableSchema {
// Constructor function
public TableSchema(String tableName, List<ColumnSchema> columnSchemaList);
}
class ColumnSchema {
// Constructor function
public ColumnSchema(String columnName, TSDataType dataType, ColumnCategory columnCategory);
// Get column names
public String getColumnName();
// Get the data type of the column
public TSDataType getDataType();
// Get column category
public Tablet.ColumnCategory getColumnCategory();
}
class ColumnSchemaBuilder {
// Build ColumnSchema object
public ColumnSchema build();
// Column Name
public ColumnSchemaBuilder name(String columnName);
// The data type of the column
public ColumnSchemaBuilder dataType(TSDataType columnType);
// Column category
public ColumnSchemaBuilder category(ColumnCategory columnCategory);
// Supported types
enum TSDataType {
BOOLEAN,
INT32,
INT64,
FLOAT,
DOUBLE,
TIMESTAMP,
TEXT,
DATE,
BLOB,
STRING;
}
// Supported column categories
enum ColumnCategory {
TAG,
FIELD
}
}
```
### Tablet
Write column memory structure
```Java
class Tablet {
// Constructor function
public Tablet(List<String> columnNameList, List<TSDataType> dataTypeList);
public Tablet(List<String> columnNameList, List<TSDataType> dataTypeList, int maxRowNum);
// Interface for adding timestamps
void addTimestamp(int rowIndex, long timestamp);
// Interface for adding values
// Add values based on column names
void addValue(int rowIndex, String columnName, int val);
void addValue(int rowIndex, String columnName, long val);
void addValue(int rowIndex, String columnName, float val);
void addValue(int rowIndex, String columnName, double val);
void addValue(int rowIndex, String columnName, boolean val);
void addValue(int rowIndex, String columnName, String val);
void addValue(int rowIndex, String columnName, byte[] val);
void addValue(int rowIndex, String columnName, LocalDate val);
// Add values based on index position
void addValue(int rowIndex, int columnIndex, int val);
void addValue(int rowIndex, int columnIndex, long val);
void addValue(int rowIndex, int columnIndex, float val);
void addValue(int rowIndex, int columnIndex, double val);
void addValue(int rowIndex, int columnIndex, boolean val);
void addValue(int rowIndex, int columnIndex, String val);
void addValue(int rowIndex, int columnIndex, byte[] val);
void addValue(int rowIndex, int columnIndex, LocalDate val);
}
```
## Read Interface
### ITsFileReader
Used to query data in tsfile
```Java
interface ITsFileReader extends AutoCloseable {
// Used to execute queries and return results
ResultSet query(String tableName, List<String> columnNames, long startTime, long endTime);
// Used to execute queries and return results
ResultSet query(String tableName, List<String> columnNames, long startTime, long endTime, Filter tagFilter);
// Return the schema of the table named tableName in tsfile
Optional<TableSchema> getTableSchemas(String tableName);
// Retrieve schema information for all tables in the tsfile
List<TableSchema> getAllTableSchema();
// Close query
void close();
}
```
### TsFileReaderBuilder
Used to construct ITsFileReader
```Java
class TsFileReaderBuilder {
// Build ITsFileReader object
public ITsFileReader build();
// target file
public TsFileReaderBuilder file(File file);
}
```
### ResultSet
The result set of the query
```Java
interface ResultSet extends AutoCloseable {
// Move the cursor to the next row and return whether there is still data
boolean next();
// Get the value of the current row and a certain column
int getInt(String columnName);
int getInt(int columnIndex);
long getLong(String columnName);
long getLong(int columnIndex);
float getFloat(String columnName);
float getFloat(int columnIndex);
double getDouble(String columnName);
double getDouble(int columnIndex);
boolean getBoolean(String columnName);
boolean getBoolean(int columnIndex);
String getString(String columnName);
String getString(int columnIndex);
LocalDate getDate(String columnName);
LocalDate getDate(int columnIndex);
byte[] getBinary(String columnName);
byte[] getBinary(int columnIndex);
// Determine whether a column is NULL in the current row
boolean isNull(String columnName);
boolean isNull(int columnIndex);
// Close the current result set
void close();
// Obtain the header of the result set
ResultSetMetadata getMetadata();
}
```
### ResultSetMetadata
Used to obtain metadata for the result set
```Java
interface ResultSetMetadata {
// Obtain the column name of the Nth column in the result set
String getColumnName(int columnIndex);
// Obtain the data type of the Nth column in the result set
TSDataType getColumnType(int columnIndex);
}
```
### Filter
#### TagFilterBuilder
Used to construct tag-based filters for querying data
```java
class TagFilterBuilder {
// Constructor function
public TagFilterBuilder(TableSchema tableSchema);
// Equal to filter
public Filter eq(String columnName, Object value);
// Not equal to filter
public Filter neq(String columnName, Object value);
// Less than filter
public Filter lt(String columnName, Object value);
// Less than or equal to filter
public Filter lteq(String columnName, Object value);
// Greater than filter
public Filter gt(String columnName, Object value);
// Greater than or equal to filter
public Filter gteq(String columnName, Object value);
// Between and filter (inclusive)
public Filter betweenAnd(String columnName, Object value1, Object value2);
// Not between and filter
public Filter notBetweenAnd(String columnName, Object value1, Object value2);
// Regular expression filter
public Filter regExp(String columnName, String pattern);
// Not regular expression filter
public Filter notRegExp(String columnName, String pattern);
// LIKE pattern filter
public Filter like(String columnName, String pattern);
// NOT LIKE pattern filter
public Filter notLike(String columnName, String pattern);
// Logical AND filter
public Filter and(Filter left, Filter right);
// Logical OR filter
public Filter or(Filter left, Filter right);
// Logical NOT filter
public Filter not(Filter value);
}
```