/* * Copyright (c) 2021 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_TSCPARSELINE_H #define TDENGINE_TSCPARSELINE_H #ifdef __cplusplus extern "C" { #endif #define SML_TIMESTAMP_SECOND_DIGITS 10 #define SML_TIMESTAMP_MILLI_SECOND_DIGITS 13 typedef struct { char* key; uint8_t type; int16_t length; char* value; uint32_t fieldSchemaIdx; } TAOS_SML_KV; typedef struct { char* stableName; char* childTableName; TAOS_SML_KV* tags; int32_t tagNum; // first kv must be timestamp TAOS_SML_KV* fields; int32_t fieldNum; uint32_t schemaIdx; } TAOS_SML_DATA_POINT; typedef enum { SML_TIME_STAMP_NOW, SML_TIME_STAMP_HOURS, SML_TIME_STAMP_MINUTES, SML_TIME_STAMP_SECONDS, SML_TIME_STAMP_MILLI_SECONDS, SML_TIME_STAMP_MICRO_SECONDS, SML_TIME_STAMP_NANO_SECONDS, SML_TIME_STAMP_NOT_CONFIGURED } SMLTimeStampType; typedef enum { SML_LINE_PROTOCOL = 0, SML_TELNET_PROTOCOL = 1, SML_JSON_PROTOCOL = 2, } SMLProtocolType; typedef struct { uint64_t id; SMLProtocolType protocol; SMLTimeStampType tsType; SHashObj* smlDataToSchema; int64_t affectedRows; } SSmlLinesInfo; int tscSmlInsert(TAOS* taos, TAOS_SML_DATA_POINT* points, int numPoint, SSmlLinesInfo* info); bool checkDuplicateKey(char *key, SHashObj *pHash, SSmlLinesInfo* info); bool isValidInteger(char *str); bool isValidFloat(char *str); int32_t isValidChildTableName(const char *pTbName, int16_t len, SSmlLinesInfo* info); bool convertSmlValueType(TAOS_SML_KV *pVal, char *value, uint16_t len, SSmlLinesInfo* info, bool isTag); int32_t convertSmlTimeStamp(TAOS_SML_KV *pVal, char *value, uint16_t len, SSmlLinesInfo* info); void destroySmlDataPoint(TAOS_SML_DATA_POINT* point); int taos_insert_sml_lines(TAOS* taos, char* lines[], int numLines, SMLProtocolType protocol, SMLTimeStampType tsType); int taos_insert_telnet_lines(TAOS* taos, char* lines[], int numLines, SMLProtocolType protocol, SMLTimeStampType tsType); int taos_insert_json_payload(TAOS* taos, char* payload, SMLProtocolType protocol, SMLTimeStampType tsType); #ifdef __cplusplus } #endif #endif // TDENGINE_TSCPARSELINE_H