blob: d67e4c25983493a899b7b122cffe6bea87f06df9 [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.
*/
#ifndef COMMON_GLOBAL_H
#define COMMON_GLOBAL_H
#include <string>
#include <vector>
#include "common/allocator/byte_stream.h"
#include "common/config/config.h"
using namespace error_info;
namespace common {
extern ConfigValue g_config_value_;
extern ColumnSchema g_time_column_schema;
FORCE_INLINE int set_global_time_data_type(uint8_t data_type) {
ASSERT(data_type >= BOOLEAN && data_type <= STRING);
if (data_type != INT64) {
return E_NOT_SUPPORT;
}
g_config_value_.time_data_type_ = static_cast<TSDataType>(data_type);
return E_OK;
}
FORCE_INLINE int set_global_time_encoding(uint8_t encoding) {
ASSERT(encoding >= PLAIN && encoding <= FREQ);
if (encoding != TS_2DIFF && encoding != PLAIN) {
return E_NOT_SUPPORT;
}
g_config_value_.time_encoding_type_ = static_cast<TSEncoding>(encoding);
return E_OK;
}
FORCE_INLINE int set_global_time_compression(uint8_t compression) {
ASSERT(compression >= UNCOMPRESSED && compression <= LZ4);
if (compression != UNCOMPRESSED && compression != LZ4) {
return E_NOT_SUPPORT;
}
g_config_value_.time_compress_type_ =
static_cast<CompressionType>(compression);
return E_OK;
}
FORCE_INLINE int set_datatype_encoding(uint8_t data_type, uint8_t encoding) {
auto dtype = static_cast<TSDataType>(data_type);
ASSERT(dtype >= BOOLEAN && dtype <= STRING);
auto encoding_type = static_cast<TSEncoding>(encoding);
ASSERT(encoding >= PLAIN && encoding <= FREQ);
switch (dtype) {
case BOOLEAN:
if (encoding_type != PLAIN) {
return E_NOT_SUPPORT;
}
g_config_value_.boolean_encoding_type_ = encoding_type;
break;
case INT32:
if (encoding_type != PLAIN && encoding_type != TS_2DIFF &&
encoding_type != GORILLA) {
return E_NOT_SUPPORT;
}
g_config_value_.int32_encoding_type_ = encoding_type;
break;
case INT64:
if (encoding_type != PLAIN && encoding_type != TS_2DIFF &&
encoding_type != GORILLA) {
return E_NOT_SUPPORT;
}
g_config_value_.int64_encoding_type_ = encoding_type;
break;
case STRING:
if (encoding_type != PLAIN) {
return E_NOT_SUPPORT;
}
g_config_value_.string_encoding_type_ = encoding_type;
break;
case FLOAT:
if (encoding_type != PLAIN && encoding_type != TS_2DIFF &&
encoding_type != GORILLA) {
return E_NOT_SUPPORT;
}
g_config_value_.float_encoding_type_ = encoding_type;
break;
case DOUBLE:
if (encoding_type != PLAIN && encoding_type != TS_2DIFF &&
encoding_type != GORILLA) {
return E_NOT_SUPPORT;
}
g_config_value_.double_encoding_type_ = encoding_type;
break;
default:
break;
}
return E_OK;
}
FORCE_INLINE int set_global_compression(uint8_t compression) {
ASSERT(compression >= UNCOMPRESSED && compression <= LZ4);
if (compression != UNCOMPRESSED && compression != LZ4) {
return E_NOT_SUPPORT;
}
g_config_value_.default_compression_type_ =
static_cast<CompressionType>(compression);
return E_OK;
}
extern int init_common();
extern bool is_timestamp_column_name(const char *time_col_name);
extern void cols_to_json(ByteStream *byte_stream,
std::vector<common::ColumnSchema> &ret_ts_list);
extern void print_backtrace();
} // namespace common
#endif // COMMON_GLOBAL_H