query.h 5.8 KB
Newer Older
D
dapan1121 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/*
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
 *
 * 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 <http://www.gnu.org/licenses/>.
 */

D
dapan1121 已提交
16 17
#ifndef _TD_QUERY_H_
#define _TD_QUERY_H_
D
dapan1121 已提交
18 19 20 21 22

#ifdef __cplusplus
extern "C" {
#endif

D
dapan1121 已提交
23
#include "tarray.h"
24
#include "thash.h"
25
#include "tlog.h"
H
Haojun Liao 已提交
26
#include "tmsg.h"
D
dapan1121 已提交
27

D
dapan1121 已提交
28
enum {
D
dapan1121 已提交
29
  JOB_TASK_STATUS_NULL = 0,
D
dapan1121 已提交
30 31
  JOB_TASK_STATUS_NOT_START = 1,
  JOB_TASK_STATUS_EXECUTING,
D
dapan1121 已提交
32
  JOB_TASK_STATUS_PARTIAL_SUCCEED,
D
dapan1121 已提交
33 34 35
  JOB_TASK_STATUS_SUCCEED,
  JOB_TASK_STATUS_FAILED,
  JOB_TASK_STATUS_CANCELLING,
D
dapan1121 已提交
36 37
  JOB_TASK_STATUS_CANCELLED,
  JOB_TASK_STATUS_DROPPING,
D
dapan1121 已提交
38 39
};

D
dapan1121 已提交
40 41 42 43 44
enum {
  TASK_TYPE_PERSISTENT = 1,
  TASK_TYPE_TEMP,
};

D
dapan1121 已提交
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
typedef struct STableComInfo {
  uint8_t numOfTags;      // the number of tags in schema
  uint8_t precision;      // the number of precision
  int16_t numOfColumns;   // the number of columns
  int32_t rowSize;        // row size of the schema
} STableComInfo;

/*
 * ASSERT(sizeof(SCTableMeta) == 24)
 * ASSERT(tableType == TSDB_CHILD_TABLE)
 * The cached child table meta info. For each child table, 24 bytes are required to keep the essential table info.
 */
typedef struct SCTableMeta {
  int32_t  vgId:24;
  int8_t   tableType;
  uint64_t uid;
  uint64_t suid;
} SCTableMeta;

/*
 * Note that the first 24 bytes of STableMeta are identical to SCTableMeta, it is safe to cast a STableMeta to be a SCTableMeta.
 */
typedef struct STableMeta {
  //BEGIN: KEEP THIS PART SAME WITH SCTableMeta
  int32_t        vgId:24;
  int8_t         tableType;
  uint64_t       uid;
  uint64_t       suid;
  //END: KEEP THIS PART SAME WITH SCTableMeta
  
  // if the table is TSDB_CHILD_TABLE, the following information is acquired from the corresponding super table meta info
  int16_t        sversion;
  int16_t        tversion;
  STableComInfo  tableInfo;
  SSchema        schema[];
} STableMeta;

D
dapan1121 已提交
82
typedef struct SDBVgInfo {
83 84
  int32_t   vgVersion;  
  int8_t    hashMethod;
D
dapan1121 已提交
85
  SHashObj *vgHash;  //key:vgId, value:SVgroupInfo
D
dapan1121 已提交
86
} SDBVgInfo;
D
dapan1121 已提交
87 88

typedef struct SUseDbOutput {
D
dapan1121 已提交
89
  char           db[TSDB_DB_FNAME_LEN];
D
dapan1121 已提交
90
  uint64_t       dbId;
D
dapan1121 已提交
91
  SDBVgInfo     *dbVgroup;
D
dapan1121 已提交
92 93
} SUseDbOutput;

D
dapan1121 已提交
94
enum {
D
dapan1121 已提交
95
  META_TYPE_NULL_TABLE = 1,
D
dapan1121 已提交
96 97
  META_TYPE_CTABLE,
  META_TYPE_TABLE,
D
dapan1121 已提交
98
  META_TYPE_BOTH_TABLE
D
dapan1121 已提交
99 100
};

D
dapan1121 已提交
101

D
dapan1121 已提交
102
typedef struct STableMetaOutput {
D
dapan1121 已提交
103
  int32_t     metaType;
D
dapan1121 已提交
104
  uint64_t    dbId;
D
dapan1121 已提交
105 106 107
  char        dbFName[TSDB_DB_FNAME_LEN];
  char        ctbName[TSDB_TABLE_NAME_LEN];
  char        tbName[TSDB_TABLE_NAME_LEN];
D
dapan1121 已提交
108 109 110
  SCTableMeta ctbMeta;
  STableMeta *tbMeta;
} STableMetaOutput;
D
dapan1121 已提交
111

L
Liu Jicong 已提交
112 113 114
typedef struct SDataBuf {
  void     *pData;
  uint32_t  len;
dengyihao's avatar
dengyihao 已提交
115
  void     *handle;
L
Liu Jicong 已提交
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
} SDataBuf;

typedef int32_t (*__async_send_cb_fn_t)(void* param, const SDataBuf* pMsg, int32_t code);
typedef int32_t (*__async_exec_fn_t)(void* param);

typedef struct SMsgSendInfo {
  __async_send_cb_fn_t fp;        //async callback function
  void     *param;
  uint64_t  requestId;
  uint64_t  requestObjRefId;
  int32_t   msgType;
  SDataBuf  msgInfo;
} SMsgSendInfo;

typedef struct SQueryNodeAddr {
  int32_t nodeId;  // vgId or qnodeId
H
Haojun Liao 已提交
132
  SEpSet  epset;
L
Liu Jicong 已提交
133 134
} SQueryNodeAddr;

D
dapan1121 已提交
135 136 137 138
typedef struct SQueryNodeStat {
  double tableNum; //table number in million
} SQueryNodeStat;

L
Liu Jicong 已提交
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
int32_t initTaskQueue();
int32_t cleanupTaskQueue();

/**
 *
 * @param execFn      The asynchronously execution function
 * @param execParam   The parameters of the execFn
 * @param code        The response code during execution the execFn
 * @return
 */
int32_t taosAsyncExec(__async_exec_fn_t execFn, void* execParam, int32_t* code);

/**
 * Asynchronously send message to server, after the response received, the callback will be incured.
 *
 * @param pTransporter
 * @param epSet
 * @param pTransporterId
 * @param pInfo
 * @return
 */
int32_t asyncSendMsgToServer(void *pTransporter, SEpSet* epSet, int64_t* pTransporterId, const SMsgSendInfo* pInfo);

X
Xiaoyu Wang 已提交
162 163
int32_t queryBuildUseDbOutput(SUseDbOutput *pOut, SUseDbRsp *usedbRsp);

164
void initQueryModuleMsgHandle();
D
dapan1121 已提交
165

L
Liu Jicong 已提交
166 167 168
const SSchema* tGetTbnameColumnSchema();
bool tIsValidSchema(struct SSchema* pSchema, int32_t numOfCols, int32_t numOfTags);

D
dapan1121 已提交
169 170
int32_t queryCreateTableMetaFromMsg(STableMetaRsp* msg, bool isSuperTable, STableMeta **pMeta);

H
Hongze Cheng 已提交
171 172
extern int32_t (*queryBuildMsg[TDMT_MAX])(void* input, char **msg, int32_t msgSize, int32_t *msgLen);
extern int32_t (*queryProcessMsgRsp[TDMT_MAX])(void* output, char *msg, int32_t msgSize);
173

L
Liu Jicong 已提交
174

D
dapan1121 已提交
175
#define SET_META_TYPE_NULL(t) (t) = META_TYPE_NULL_TABLE
D
dapan1121 已提交
176 177 178 179
#define SET_META_TYPE_CTABLE(t) (t) = META_TYPE_CTABLE
#define SET_META_TYPE_TABLE(t) (t) = META_TYPE_TABLE
#define SET_META_TYPE_BOTH_TABLE(t) (t) = META_TYPE_BOTH_TABLE

180 181 182 183 184 185 186 187
#define qFatal(...)  do { if (qDebugFlag & DEBUG_FATAL) { taosPrintLog("QRY FATAL ", qDebugFlag, __VA_ARGS__); }} while(0)
#define qError(...)  do { if (qDebugFlag & DEBUG_ERROR) { taosPrintLog("QRY ERROR ", qDebugFlag, __VA_ARGS__); }} while(0)
#define qWarn(...)   do { if (qDebugFlag & DEBUG_WARN)  { taosPrintLog("QRY WARN ", qDebugFlag, __VA_ARGS__); }}  while(0)
#define qInfo(...)   do { if (qDebugFlag & DEBUG_INFO)  { taosPrintLog("QRY ", qDebugFlag, __VA_ARGS__); }} while(0)
#define qDebug(...)  do { if (qDebugFlag & DEBUG_DEBUG) { taosPrintLog("QRY ", qDebugFlag, __VA_ARGS__); }} while(0)
#define qTrace(...)  do { if (qDebugFlag & DEBUG_TRACE) { taosPrintLog("QRY ", qDebugFlag, __VA_ARGS__); }} while(0)
#define qDebugL(...) do { if (qDebugFlag & DEBUG_DEBUG) { taosPrintLongString("QRY ", qDebugFlag, __VA_ARGS__); }} while(0)

D
dapan1121 已提交
188 189 190 191 192

#ifdef __cplusplus
}
#endif

D
dapan1121 已提交
193
#endif /*_TD_QUERY_H_*/