fix: calander interval and sliding issue
This commit is contained in:
parent
9b81f536a1
commit
5e2c5b8894
|
@ -5401,7 +5401,7 @@ static int32_t translateFill(STranslateContext* pCxt, SSelectStmt* pSelect, SInt
|
||||||
return checkFill(pCxt, (SFillNode*)pInterval->pFill, (SValueNode*)pInterval->pInterval, false);
|
return checkFill(pCxt, (SFillNode*)pInterval->pFill, (SValueNode*)pInterval->pInterval, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t getMonthsFromTimeVal(int64_t val, int32_t fromPrecision, char unit, int64_t* pMonth) {
|
static int32_t getMonthsFromTimeVal(int64_t val, int32_t fromPrecision, char unit, double* pMonth) {
|
||||||
int64_t days = -1;
|
int64_t days = -1;
|
||||||
int32_t code = convertTimeFromPrecisionToUnit(val, fromPrecision, 'd', &days);
|
int32_t code = convertTimeFromPrecisionToUnit(val, fromPrecision, 'd', &days);
|
||||||
if (TSDB_CODE_SUCCESS != code) {
|
if (TSDB_CODE_SUCCESS != code) {
|
||||||
|
@ -5416,7 +5416,7 @@ static int32_t getMonthsFromTimeVal(int64_t val, int32_t fromPrecision, char uni
|
||||||
case 'h':
|
case 'h':
|
||||||
case 'd':
|
case 'd':
|
||||||
case 'w':
|
case 'w':
|
||||||
*pMonth = days / 28;
|
*pMonth = days / 28.0;
|
||||||
return code;
|
return code;
|
||||||
case 'n':
|
case 'n':
|
||||||
*pMonth = val;
|
*pMonth = val;
|
||||||
|
@ -5499,7 +5499,7 @@ static int32_t checkIntervalWindow(STranslateContext* pCxt, SIntervalWindowNode*
|
||||||
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INTER_OFFSET_TOO_BIG);
|
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INTER_OFFSET_TOO_BIG);
|
||||||
}
|
}
|
||||||
if (!fixed) {
|
if (!fixed) {
|
||||||
int64_t offsetMonth = 0, intervalMonth = 0;
|
double offsetMonth = 0, intervalMonth = 0;
|
||||||
int32_t code = getMonthsFromTimeVal(pOffset->datum.i, precision, pOffset->unit, &offsetMonth);
|
int32_t code = getMonthsFromTimeVal(pOffset->datum.i, precision, pOffset->unit, &offsetMonth);
|
||||||
if (TSDB_CODE_SUCCESS != code) {
|
if (TSDB_CODE_SUCCESS != code) {
|
||||||
return code;
|
return code;
|
||||||
|
@ -5530,7 +5530,21 @@ static int32_t checkIntervalWindow(STranslateContext* pCxt, SIntervalWindowNode*
|
||||||
(pInter->datum.i / pSliding->datum.i > INTERVAL_SLIDING_FACTOR)) {
|
(pInter->datum.i / pSliding->datum.i > INTERVAL_SLIDING_FACTOR)) {
|
||||||
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INTER_SLIDING_TOO_SMALL);
|
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INTER_SLIDING_TOO_SMALL);
|
||||||
}
|
}
|
||||||
if (pSliding->datum.i > pInter->datum.i) {
|
if (valInter) {
|
||||||
|
double slidingMonth = 0, intervalMonth = 0;
|
||||||
|
int32_t code = getMonthsFromTimeVal(pSliding->datum.i, precision, pSliding->unit, &slidingMonth);
|
||||||
|
if (TSDB_CODE_SUCCESS != code) {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
code = getMonthsFromTimeVal(pInter->datum.i, precision, pInter->unit, &intervalMonth);
|
||||||
|
if (TSDB_CODE_SUCCESS != code) {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
if (slidingMonth > intervalMonth) {
|
||||||
|
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INTER_SLIDING_TOO_BIG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!valInter && pSliding->datum.i > pInter->datum.i) {
|
||||||
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INTER_SLIDING_TOO_BIG);
|
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INTER_SLIDING_TOO_BIG);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -276,6 +276,10 @@ sql insert into t6 values ("2024-03-01 14:34:07.051", 66);
|
||||||
|
|
||||||
sleep 300
|
sleep 300
|
||||||
|
|
||||||
|
sql select _wstart, count(*) from stb interval(1n) sliding(1d);
|
||||||
|
sql select _wstart, count(*) from stb interval(1n) sliding(28d);
|
||||||
|
sql_error select _wstart, count(*) from stb interval(1n) sliding(29d);
|
||||||
|
|
||||||
sql select _wstart, count(*) from (select * from stb partition by tbname) interval(2s);
|
sql select _wstart, count(*) from (select * from stb partition by tbname) interval(2s);
|
||||||
|
|
||||||
print $data00,$data01
|
print $data00,$data01
|
||||||
|
|
Loading…
Reference in New Issue