Merge pull request #16563 from taosdata/enh/3.0_planner_optimize
enh: add the queryPlannerTrace parameter to control the debug output of the planner
This commit is contained in:
commit
a083c636fe
|
@ -89,11 +89,12 @@ extern uint16_t tsTelemPort;
|
||||||
|
|
||||||
// query buffer management
|
// query buffer management
|
||||||
extern int32_t tsQueryBufferSize; // maximum allowed usage buffer size in MB for each data node during query processing
|
extern int32_t tsQueryBufferSize; // maximum allowed usage buffer size in MB for each data node during query processing
|
||||||
extern int64_t tsQueryBufferSizeBytes; // maximum allowed usage buffer size in byte for each data node
|
extern int64_t tsQueryBufferSizeBytes; // maximum allowed usage buffer size in byte for each data node
|
||||||
|
|
||||||
// query client
|
// query client
|
||||||
extern int32_t tsQueryPolicy;
|
extern int32_t tsQueryPolicy;
|
||||||
extern int32_t tsQuerySmaOptimize;
|
extern int32_t tsQuerySmaOptimize;
|
||||||
|
extern bool tsQueryPlannerTrace;
|
||||||
|
|
||||||
// client
|
// client
|
||||||
extern int32_t tsMinSlidingTime;
|
extern int32_t tsMinSlidingTime;
|
||||||
|
@ -147,7 +148,7 @@ struct SConfig *taosGetCfg();
|
||||||
void taosSetAllDebugFlag(int32_t flag, bool rewrite);
|
void taosSetAllDebugFlag(int32_t flag, bool rewrite);
|
||||||
void taosSetDebugFlag(int32_t *pFlagPtr, const char *flagName, int32_t flagVal, bool rewrite);
|
void taosSetDebugFlag(int32_t *pFlagPtr, const char *flagName, int32_t flagVal, bool rewrite);
|
||||||
int32_t taosSetCfg(SConfig *pCfg, char *name);
|
int32_t taosSetCfg(SConfig *pCfg, char *name);
|
||||||
void taosLocalCfgForbiddenToChange(char* name, bool* forbidden);
|
void taosLocalCfgForbiddenToChange(char *name, bool *forbidden);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,6 +91,7 @@ bool tsSmlDataFormat =
|
||||||
// query
|
// query
|
||||||
int32_t tsQueryPolicy = 1;
|
int32_t tsQueryPolicy = 1;
|
||||||
int32_t tsQuerySmaOptimize = 0;
|
int32_t tsQuerySmaOptimize = 0;
|
||||||
|
bool tsQueryPlannerTrace = false;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* denote if the server needs to compress response message at the application layer to client, including query rsp,
|
* denote if the server needs to compress response message at the application layer to client, including query rsp,
|
||||||
|
@ -286,6 +287,7 @@ static int32_t taosAddClientCfg(SConfig *pCfg) {
|
||||||
if (cfgAddInt32(pCfg, "compressColData", tsCompressColData, -1, 100000000, 1) != 0) return -1;
|
if (cfgAddInt32(pCfg, "compressColData", tsCompressColData, -1, 100000000, 1) != 0) return -1;
|
||||||
if (cfgAddInt32(pCfg, "queryPolicy", tsQueryPolicy, 1, 3, 1) != 0) return -1;
|
if (cfgAddInt32(pCfg, "queryPolicy", tsQueryPolicy, 1, 3, 1) != 0) return -1;
|
||||||
if (cfgAddInt32(pCfg, "querySmaOptimize", tsQuerySmaOptimize, 0, 1, 1) != 0) return -1;
|
if (cfgAddInt32(pCfg, "querySmaOptimize", tsQuerySmaOptimize, 0, 1, 1) != 0) return -1;
|
||||||
|
if (cfgAddBool(pCfg, "queryPlannerTrace", tsQueryPlannerTrace, true) != 0) return -1;
|
||||||
if (cfgAddString(pCfg, "smlChildTableName", "", 1) != 0) return -1;
|
if (cfgAddString(pCfg, "smlChildTableName", "", 1) != 0) return -1;
|
||||||
if (cfgAddString(pCfg, "smlTagName", tsSmlTagName, 1) != 0) return -1;
|
if (cfgAddString(pCfg, "smlTagName", tsSmlTagName, 1) != 0) return -1;
|
||||||
if (cfgAddBool(pCfg, "smlDataFormat", tsSmlDataFormat, 1) != 0) return -1;
|
if (cfgAddBool(pCfg, "smlDataFormat", tsSmlDataFormat, 1) != 0) return -1;
|
||||||
|
@ -429,9 +431,9 @@ static int32_t taosAddServerCfg(SConfig *pCfg) {
|
||||||
|
|
||||||
static int32_t taosUpdateServerCfg(SConfig *pCfg) {
|
static int32_t taosUpdateServerCfg(SConfig *pCfg) {
|
||||||
SConfigItem *pItem;
|
SConfigItem *pItem;
|
||||||
ECfgSrcType stype;
|
ECfgSrcType stype;
|
||||||
int32_t numOfCores;
|
int32_t numOfCores;
|
||||||
int64_t totalMemoryKB;
|
int64_t totalMemoryKB;
|
||||||
|
|
||||||
pItem = cfgGetItem(tsCfg, "numOfCores");
|
pItem = cfgGetItem(tsCfg, "numOfCores");
|
||||||
if (pItem == NULL) {
|
if (pItem == NULL) {
|
||||||
|
@ -572,7 +574,6 @@ static int32_t taosUpdateServerCfg(SConfig *pCfg) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void taosSetClientLogCfg(SConfig *pCfg) {
|
static void taosSetClientLogCfg(SConfig *pCfg) {
|
||||||
SConfigItem *pItem = cfgGetItem(pCfg, "logDir");
|
SConfigItem *pItem = cfgGetItem(pCfg, "logDir");
|
||||||
tstrncpy(tsLogDir, cfgGetItem(pCfg, "logDir")->str, PATH_MAX);
|
tstrncpy(tsLogDir, cfgGetItem(pCfg, "logDir")->str, PATH_MAX);
|
||||||
|
@ -643,6 +644,7 @@ static int32_t taosSetClientCfg(SConfig *pCfg) {
|
||||||
tsNumOfTaskQueueThreads = cfgGetItem(pCfg, "numOfTaskQueueThreads")->i32;
|
tsNumOfTaskQueueThreads = cfgGetItem(pCfg, "numOfTaskQueueThreads")->i32;
|
||||||
tsQueryPolicy = cfgGetItem(pCfg, "queryPolicy")->i32;
|
tsQueryPolicy = cfgGetItem(pCfg, "queryPolicy")->i32;
|
||||||
tsQuerySmaOptimize = cfgGetItem(pCfg, "querySmaOptimize")->i32;
|
tsQuerySmaOptimize = cfgGetItem(pCfg, "querySmaOptimize")->i32;
|
||||||
|
tsQueryPlannerTrace = cfgGetItem(pCfg, "queryPlannerTrace")->bval;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -972,6 +974,8 @@ int32_t taosSetCfg(SConfig *pCfg, char *name) {
|
||||||
tsQnodeShmSize = cfgGetItem(pCfg, "qnodeShmSize")->i32;
|
tsQnodeShmSize = cfgGetItem(pCfg, "qnodeShmSize")->i32;
|
||||||
} else if (strcasecmp("qDebugFlag", name) == 0) {
|
} else if (strcasecmp("qDebugFlag", name) == 0) {
|
||||||
qDebugFlag = cfgGetItem(pCfg, "qDebugFlag")->i32;
|
qDebugFlag = cfgGetItem(pCfg, "qDebugFlag")->i32;
|
||||||
|
} else if (strcasecmp("queryPlannerTrace", name) == 0) {
|
||||||
|
tsQueryPlannerTrace = cfgGetItem(pCfg, "queryPlannerTrace")->bval;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1241,16 +1245,14 @@ void taosCfgDynamicOptions(const char *option, const char *value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *options[] = {
|
const char *options[] = {
|
||||||
"dDebugFlag", "vDebugFlag", "mDebugFlag", "wDebugFlag", "sDebugFlag", "tsdbDebugFlag",
|
"dDebugFlag", "vDebugFlag", "mDebugFlag", "wDebugFlag", "sDebugFlag", "tsdbDebugFlag", "tqDebugFlag",
|
||||||
"tqDebugFlag", "fsDebugFlag", "udfDebugFlag", "smaDebugFlag", "idxDebugFlag", "tdbDebugFlag",
|
"fsDebugFlag", "udfDebugFlag", "smaDebugFlag", "idxDebugFlag", "tdbDebugFlag", "tmrDebugFlag", "uDebugFlag",
|
||||||
"tmrDebugFlag", "uDebugFlag", "smaDebugFlag", "rpcDebugFlag", "qDebugFlag", "metaDebugFlag",
|
"smaDebugFlag", "rpcDebugFlag", "qDebugFlag", "metaDebugFlag", "jniDebugFlag",
|
||||||
"jniDebugFlag",
|
|
||||||
};
|
};
|
||||||
int32_t *optionVars[] = {
|
int32_t *optionVars[] = {
|
||||||
&dDebugFlag, &vDebugFlag, &mDebugFlag, &wDebugFlag, &sDebugFlag, &tsdbDebugFlag,
|
&dDebugFlag, &vDebugFlag, &mDebugFlag, &wDebugFlag, &sDebugFlag, &tsdbDebugFlag, &tqDebugFlag,
|
||||||
&tqDebugFlag, &fsDebugFlag, &udfDebugFlag, &smaDebugFlag, &idxDebugFlag, &tdbDebugFlag,
|
&fsDebugFlag, &udfDebugFlag, &smaDebugFlag, &idxDebugFlag, &tdbDebugFlag, &tmrDebugFlag, &uDebugFlag,
|
||||||
&tmrDebugFlag, &uDebugFlag, &smaDebugFlag, &rpcDebugFlag, &qDebugFlag, &metaDebugFlag,
|
&smaDebugFlag, &rpcDebugFlag, &qDebugFlag, &metaDebugFlag, &jniDebugFlag,
|
||||||
&jniDebugFlag,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int32_t optionSize = tListLen(options);
|
int32_t optionSize = tListLen(options);
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include "filter.h"
|
#include "filter.h"
|
||||||
#include "functionMgt.h"
|
#include "functionMgt.h"
|
||||||
#include "planInt.h"
|
#include "planInt.h"
|
||||||
|
#include "tglobal.h"
|
||||||
#include "ttime.h"
|
#include "ttime.h"
|
||||||
|
|
||||||
#define OPTIMIZE_FLAG_MASK(n) (1 << n)
|
#define OPTIMIZE_FLAG_MASK(n) (1 << n)
|
||||||
|
@ -2410,7 +2411,7 @@ static const SOptimizeRule optimizeRuleSet[] = {
|
||||||
static const int32_t optimizeRuleNum = (sizeof(optimizeRuleSet) / sizeof(SOptimizeRule));
|
static const int32_t optimizeRuleNum = (sizeof(optimizeRuleSet) / sizeof(SOptimizeRule));
|
||||||
|
|
||||||
static void dumpLogicSubplan(const char* pRuleName, SLogicSubplan* pSubplan) {
|
static void dumpLogicSubplan(const char* pRuleName, SLogicSubplan* pSubplan) {
|
||||||
if (0 == (qDebugFlag & DEBUG_DEBUG)) {
|
if (!tsQueryPlannerTrace) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char* pStr = NULL;
|
char* pStr = NULL;
|
||||||
|
|
|
@ -1427,7 +1427,7 @@ static const SSplitRule splitRuleSet[] = {
|
||||||
static const int32_t splitRuleNum = (sizeof(splitRuleSet) / sizeof(SSplitRule));
|
static const int32_t splitRuleNum = (sizeof(splitRuleSet) / sizeof(SSplitRule));
|
||||||
|
|
||||||
static void dumpLogicSubplan(const char* pRuleName, SLogicSubplan* pSubplan) {
|
static void dumpLogicSubplan(const char* pRuleName, SLogicSubplan* pSubplan) {
|
||||||
if (0 == (qDebugFlag & DEBUG_DEBUG)) {
|
if (!tsQueryPlannerTrace) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char* pStr = NULL;
|
char* pStr = NULL;
|
||||||
|
|
|
@ -17,9 +17,10 @@
|
||||||
|
|
||||||
#include "planInt.h"
|
#include "planInt.h"
|
||||||
#include "scalar.h"
|
#include "scalar.h"
|
||||||
|
#include "tglobal.h"
|
||||||
|
|
||||||
static void dumpQueryPlan(SQueryPlan* pPlan) {
|
static void dumpQueryPlan(SQueryPlan* pPlan) {
|
||||||
if (0 == (qDebugFlag & DEBUG_DEBUG)) {
|
if (!tsQueryPlannerTrace) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char* pStr = NULL;
|
char* pStr = NULL;
|
||||||
|
|
Loading…
Reference in New Issue