From 722abe2f43945f44675d935f422a85b75527105f Mon Sep 17 00:00:00 2001 From: hzcheng Date: Tue, 10 Mar 2020 03:37:25 +0000 Subject: [PATCH] adjust code --- src/CMakeLists.txt | 3 +- src/common/CMakeLists.txt | 7 ++- src/{util => common}/src/ttypes.c | 5 +- src/inc/taosdef.h | 90 +++++++++++++++++++++++++++---- src/util/CMakeLists.txt | 6 +-- src/util/inc/tskiplist.h | 2 +- src/util/inc/ttypes.h | 74 ------------------------- src/util/inc/tutil.h | 23 -------- src/util/src/tcompression.c | 1 - src/util/src/tutil.c | 2 +- 10 files changed, 93 insertions(+), 120 deletions(-) rename src/{util => common}/src/ttypes.c (99%) delete mode 100644 src/util/inc/ttypes.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 43cac4a688..fb94ef7580 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,8 +6,7 @@ ADD_SUBDIRECTORY(os) ADD_SUBDIRECTORY(thirdparty) ADD_SUBDIRECTORY(common) - -# ADD_SUBDIRECTORY(util) +ADD_SUBDIRECTORY(util) # ADD_SUBDIRECTORY(rpc) # ADD_SUBDIRECTORY(client) # ADD_SUBDIRECTORY(kit) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index f13af5a5b0..5c5366c53f 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -1,4 +1,9 @@ aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SOURCE_LIST) add_library(common ${SOURCE_LIST}) -target_include_directories(common PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/inc) \ No newline at end of file +target_include_directories( + common + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/inc + PUBLIC ${CMAKE_SOURCE_DIR}/src/inc + PUBLIC ${CMAKE_SOURCE_DIR}/src/os/linux/inc + ) \ No newline at end of file diff --git a/src/util/src/ttypes.c b/src/common/src/ttypes.c similarity index 99% rename from src/util/src/ttypes.c rename to src/common/src/ttypes.c index 5fd679dccf..0d4ca30e35 100644 --- a/src/util/src/ttypes.c +++ b/src/common/src/ttypes.c @@ -12,12 +12,11 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ -#include "ttypes.h" #include "os.h" -#include "taos.h" + #include "taosdef.h" #include "ttokendef.h" -#include "tutil.h" +// #include "tutil.h" tDataTypeDescriptor tDataTypeDesc[11] = { {TSDB_DATA_TYPE_NULL, 6, 1, "NOTYPE"}, diff --git a/src/inc/taosdef.h b/src/inc/taosdef.h index 7a8cd28428..8147f6b9bc 100644 --- a/src/inc/taosdef.h +++ b/src/inc/taosdef.h @@ -21,7 +21,7 @@ extern "C" { #endif #include -#include "tglobalcfg.h" +#include #define TSDB__packed @@ -31,6 +31,42 @@ extern "C" { #define TSKEY int64_t #endif +// Data type definition +#define TSDB_DATA_TYPE_NULL 0 // 1 bytes +#define TSDB_DATA_TYPE_BOOL 1 // 1 bytes +#define TSDB_DATA_TYPE_TINYINT 2 // 1 byte +#define TSDB_DATA_TYPE_SMALLINT 3 // 2 bytes +#define TSDB_DATA_TYPE_INT 4 // 4 bytes +#define TSDB_DATA_TYPE_BIGINT 5 // 8 bytes +#define TSDB_DATA_TYPE_FLOAT 6 // 4 bytes +#define TSDB_DATA_TYPE_DOUBLE 7 // 8 bytes +#define TSDB_DATA_TYPE_BINARY 8 // string +#define TSDB_DATA_TYPE_TIMESTAMP 9 // 8 bytes +#define TSDB_DATA_TYPE_NCHAR 10 // unicode string + +// Bytes for each type. +#define CHAR_BYTES sizeof(char) +#define SHORT_BYTES sizeof(short) +#define INT_BYTES sizeof(int) +#define LONG_BYTES sizeof(int64_t) +#define FLOAT_BYTES sizeof(float) +#define DOUBLE_BYTES sizeof(double) + +// NULL definition +#define TSDB_DATA_BOOL_NULL 0x02 +#define TSDB_DATA_TINYINT_NULL 0x80 +#define TSDB_DATA_SMALLINT_NULL 0x8000 +#define TSDB_DATA_INT_NULL 0x80000000 +#define TSDB_DATA_BIGINT_NULL 0x8000000000000000L + +#define TSDB_DATA_FLOAT_NULL 0x7FF00000 // it is an NAN +#define TSDB_DATA_DOUBLE_NULL 0x7FFFFF0000000000L // an NAN +#define TSDB_DATA_NCHAR_NULL 0xFFFFFFFF +#define TSDB_DATA_BINARY_NULL 0xFF + +#define TSDB_DATA_NULL_STR "NULL" +#define TSDB_DATA_NULL_STR_L "null" + #define TSDB_TRUE 1 #define TSDB_FALSE 0 #define TSDB_OK 0 @@ -44,16 +80,6 @@ extern "C" { #define TSDB_TIME_PRECISION_MILLI_STR "ms" #define TSDB_TIME_PRECISION_MICRO_STR "us" -#define TSDB_DATA_TYPE_BOOL 1 // 1 bytes -#define TSDB_DATA_TYPE_TINYINT 2 // 1 byte -#define TSDB_DATA_TYPE_SMALLINT 3 // 2 bytes -#define TSDB_DATA_TYPE_INT 4 // 4 bytes -#define TSDB_DATA_TYPE_BIGINT 5 // 8 bytes -#define TSDB_DATA_TYPE_FLOAT 6 // 4 bytes -#define TSDB_DATA_TYPE_DOUBLE 7 // 8 bytes -#define TSDB_DATA_TYPE_BINARY 8 // string -#define TSDB_DATA_TYPE_TIMESTAMP 9 // 8 bytes -#define TSDB_DATA_TYPE_NCHAR 10 // unicode string #define TSDB_KEYSIZE sizeof(TSKEY) @@ -64,6 +90,48 @@ extern "C" { #endif //#define TSDB_CHAR_TERMINATED_SPACE 1 +#define GET_INT8_VAL(x) (*(int8_t *)(x)) +#define GET_INT16_VAL(x) (*(int16_t *)(x)) +#define GET_INT32_VAL(x) (*(int32_t *)(x)) +#define GET_INT64_VAL(x) (*(int64_t *)(x)) +#ifdef _TD_ARM_32_ + #define GET_FLOAT_VAL(x) taos_align_get_float(x) + #define GET_DOUBLE_VAL(x) taos_align_get_double(x) + + float taos_align_get_float(const char* pBuf); + double taos_align_get_double(const char* pBuf); + + //#define __float_align_declear() float __underlyFloat = 0.0; + //#define __float_align_declear() + //#define GET_FLOAT_VAL_ALIGN(x) (*(int32_t*)&(__underlyFloat) = *(int32_t*)(x); __underlyFloat); + // notes: src must be float or double type variable !!! + #define SET_FLOAT_VAL_ALIGN(dst, src) (*(int32_t*) dst = *(int32_t*)src); + #define SET_DOUBLE_VAL_ALIGN(dst, src) (*(int64_t*) dst = *(int64_t*)src); +#else + #define GET_FLOAT_VAL(x) (*(float *)(x)) + #define GET_DOUBLE_VAL(x) (*(double *)(x)) +#endif + +typedef struct tDataTypeDescriptor { + int16_t nType; + int16_t nameLen; + int32_t nSize; + char * aName; +} tDataTypeDescriptor; + +extern tDataTypeDescriptor tDataTypeDesc[11]; +#define POINTER_BYTES sizeof(void *) // 8 by default assert(sizeof(ptrdiff_t) == sizseof(void*) + +bool isValidDataType(int32_t type, int32_t length); +bool isNull(const char *val, int32_t type); + +void setNull(char *val, int32_t type, int32_t bytes); +void setNullN(char *val, int32_t type, int32_t bytes, int32_t numOfElems); + +void assignVal(char *val, const char *src, int32_t len, int32_t type); +void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size); + +// TODO: check if below is necessary #define TSDB_RELATION_INVALID 0 #define TSDB_RELATION_LESS 1 #define TSDB_RELATION_LARGE 2 diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index 9cca2f2db1..67ecf39f1b 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -8,7 +8,7 @@ INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/util/inc) IF ((TD_LINUX_64) OR (TD_LINUX_32 AND TD_ARM)) AUX_SOURCE_DIRECTORY(src SRC) ADD_LIBRARY(tutil ${SRC}) - TARGET_LINK_LIBRARIES(tutil pthread os m rt) + TARGET_LINK_LIBRARIES(tutil thirdparty pthread os m rt) IF (TD_CLUSTER) ADD_DEFINITIONS(-DUSE_LIBICONV) TARGET_LINK_LIBRARIES(tutil iconv) @@ -68,7 +68,7 @@ ELSEIF (TD_WINDOWS_64) LIST(APPEND SRC ./src/tutil.c) LIST(APPEND SRC ./src/version.c) ADD_LIBRARY(tutil ${SRC}) - TARGET_LINK_LIBRARIES(tutil iconv regex pthread os winmm IPHLPAPI ws2_32) + TARGET_LINK_LIBRARIES(tutil thirdparty iconv regex pthread os winmm IPHLPAPI ws2_32) ELSEIF(TD_DARWIN_64) ADD_DEFINITIONS(-DUSE_LIBICONV) LIST(APPEND SRC ./src/hash.c) @@ -105,7 +105,7 @@ ELSEIF(TD_DARWIN_64) LIST(APPEND SRC ./src/version.c) LIST(APPEND SRC ./src/hash.c) ADD_LIBRARY(tutil ${SRC}) - TARGET_LINK_LIBRARIES(tutil iconv pthread os) + TARGET_LINK_LIBRARIES(tutil thirdparty iconv pthread os) ENDIF() #IF (TD_CLUSTER) diff --git a/src/util/inc/tskiplist.h b/src/util/inc/tskiplist.h index ecdbc38a05..2ebb9bf5f2 100644 --- a/src/util/inc/tskiplist.h +++ b/src/util/inc/tskiplist.h @@ -21,7 +21,7 @@ extern "C" { #endif #include "os.h" -#include "ttypes.h" +#include "taosdef.h" #include "tarray.h" /* diff --git a/src/util/inc/ttypes.h b/src/util/inc/ttypes.h deleted file mode 100644 index a099f3fa7c..0000000000 --- a/src/util/inc/ttypes.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#ifndef TDENGINE_TTYPES_H -#define TDENGINE_TTYPES_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include "tstoken.h" - -// Bytes for each type. -#define CHAR_BYTES sizeof(char) -#define SHORT_BYTES sizeof(short) -#define INT_BYTES sizeof(int) -#define LONG_BYTES sizeof(int64_t) -#define FLOAT_BYTES sizeof(float) -#define DOUBLE_BYTES sizeof(double) - -#define POINTER_BYTES sizeof(void *) // 8 by default assert(sizeof(ptrdiff_t) == sizseof(void*) - -#define TSDB_DATA_BOOL_NULL 0x02 -#define TSDB_DATA_TINYINT_NULL 0x80 -#define TSDB_DATA_SMALLINT_NULL 0x8000 -#define TSDB_DATA_INT_NULL 0x80000000 -#define TSDB_DATA_BIGINT_NULL 0x8000000000000000L - -#define TSDB_DATA_FLOAT_NULL 0x7FF00000 // it is an NAN -#define TSDB_DATA_DOUBLE_NULL 0x7FFFFF0000000000L // an NAN -#define TSDB_DATA_NCHAR_NULL 0xFFFFFFFF -#define TSDB_DATA_BINARY_NULL 0xFF - -#define TSDB_DATA_NULL_STR "NULL" -#define TSDB_DATA_NULL_STR_L "null" - -typedef struct tDataTypeDescriptor { - int16_t nType; - int16_t nameLen; - int32_t nSize; - char * aName; -} tDataTypeDescriptor; - -extern tDataTypeDescriptor tDataTypeDesc[11]; - -bool isValidDataType(int32_t type, int32_t length); -bool isNull(const char *val, int32_t type); - -void setNull(char *val, int32_t type, int32_t bytes); -void setNullN(char *val, int32_t type, int32_t bytes, int32_t numOfElems); - -void assignVal(char *val, const char *src, int32_t len, int32_t type); -void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size); - -#ifdef __cplusplus -} -#endif - -#endif // TDENGINE_TTYPES_H diff --git a/src/util/inc/tutil.h b/src/util/inc/tutil.h index 04b2b32f69..cb311ed193 100644 --- a/src/util/inc/tutil.h +++ b/src/util/inc/tutil.h @@ -93,29 +93,6 @@ extern "C" { } \ } while (0) -#define GET_INT8_VAL(x) (*(int8_t *)(x)) -#define GET_INT16_VAL(x) (*(int16_t *)(x)) -#define GET_INT32_VAL(x) (*(int32_t *)(x)) -#define GET_INT64_VAL(x) (*(int64_t *)(x)) - -#ifdef _TD_ARM_32_ - #define GET_FLOAT_VAL(x) taos_align_get_float(x) - #define GET_DOUBLE_VAL(x) taos_align_get_double(x) - - float taos_align_get_float(const char* pBuf); - double taos_align_get_double(const char* pBuf); - - //#define __float_align_declear() float __underlyFloat = 0.0; - //#define __float_align_declear() - //#define GET_FLOAT_VAL_ALIGN(x) (*(int32_t*)&(__underlyFloat) = *(int32_t*)(x); __underlyFloat); - // notes: src must be float or double type variable !!! - #define SET_FLOAT_VAL_ALIGN(dst, src) (*(int32_t*) dst = *(int32_t*)src); - #define SET_DOUBLE_VAL_ALIGN(dst, src) (*(int64_t*) dst = *(int64_t*)src); -#else - #define GET_FLOAT_VAL(x) (*(float *)(x)) - #define GET_DOUBLE_VAL(x) (*(double *)(x)) -#endif - #define ALIGN_NUM(n, align) (((n) + ((align)-1)) & (~((align)-1))) // align to 8bytes diff --git a/src/util/src/tcompression.c b/src/util/src/tcompression.c index 1592a47c15..24a53b3fe4 100644 --- a/src/util/src/tcompression.c +++ b/src/util/src/tcompression.c @@ -51,7 +51,6 @@ #include "lz4.h" #include "tscompression.h" #include "taosdef.h" -#include "ttypes.h" const int TEST_NUMBER = 1; #define is_bigendian() ((*(char *)&TEST_NUMBER) == 0) diff --git a/src/util/src/tutil.c b/src/util/src/tutil.c index efe1defa57..d5e67adff6 100644 --- a/src/util/src/tutil.c +++ b/src/util/src/tutil.c @@ -22,7 +22,7 @@ #include "tcrc32c.h" #include "tglobalcfg.h" #include "ttime.h" -#include "ttypes.h" +#include "taosdef.h" #include "tutil.h" #include "tlog.h" #include "taoserror.h" -- GitLab