fix: the precision of delete statement
This commit is contained in:
parent
d551075bba
commit
1ed3149c39
|
@ -645,6 +645,10 @@ static bool isSelectStmt(SNode* pCurrStmt) {
|
|||
return NULL != pCurrStmt && QUERY_NODE_SELECT_STMT == nodeType(pCurrStmt);
|
||||
}
|
||||
|
||||
static bool isDeleteStmt(SNode* pCurrStmt) {
|
||||
return NULL != pCurrStmt && QUERY_NODE_DELETE_STMT == nodeType(pCurrStmt);
|
||||
}
|
||||
|
||||
static bool isSetOperator(SNode* pCurrStmt) {
|
||||
return NULL != pCurrStmt && QUERY_NODE_SET_OPERATOR == nodeType(pCurrStmt);
|
||||
}
|
||||
|
@ -669,6 +673,9 @@ static uint8_t getPrecisionFromCurrStmt(SNode* pCurrStmt, uint8_t defaultVal) {
|
|||
if (NULL != pCurrStmt && QUERY_NODE_CREATE_STREAM_STMT == nodeType(pCurrStmt)) {
|
||||
return getPrecisionFromCurrStmt(((SCreateStreamStmt*)pCurrStmt)->pQuery, defaultVal);
|
||||
}
|
||||
if (isDeleteStmt(pCurrStmt)) {
|
||||
return ((SDeleteStmt*)pCurrStmt)->precision;
|
||||
}
|
||||
return defaultVal;
|
||||
}
|
||||
|
||||
|
@ -3741,6 +3748,7 @@ static int32_t translateDelete(STranslateContext* pCxt, SDeleteStmt* pDelete) {
|
|||
pCxt->pCurrStmt = (SNode*)pDelete;
|
||||
int32_t code = translateFrom(pCxt, pDelete->pFromTable);
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
pDelete->precision = ((STableNode*)pDelete->pFromTable)->precision;
|
||||
code = translateDeleteWhere(pCxt, pDelete);
|
||||
}
|
||||
pCxt->currClause = SQL_CLAUSE_SELECT;
|
||||
|
|
|
@ -463,7 +463,7 @@ int32_t sclInitParamList(SScalarParam **pParams, SNodeList *pParamList, SScalarC
|
|||
sclError("calloc %d failed", (int32_t)((*paramNum) * sizeof(SScalarParam)));
|
||||
SCL_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
||||
}
|
||||
|
||||
|
||||
if (pParamList) {
|
||||
SNode *tnode = NULL;
|
||||
int32_t i = 0;
|
||||
|
|
|
@ -0,0 +1,161 @@
|
|||
system sh/stop_dnodes.sh
|
||||
system sh/deploy.sh -n dnode1 -i 1
|
||||
system sh/exec.sh -n dnode1 -s start
|
||||
sql connect
|
||||
|
||||
print =============== create database with different precision
|
||||
sql create database d0 keep 365000
|
||||
sql create database d1 keep 365000 precision 'ms'
|
||||
sql create database d2 keep 365000 precision 'us'
|
||||
sql create database d3 keep 50000 precision 'ns'
|
||||
|
||||
sql select * from information_schema.ins_databases
|
||||
if $rows != 6 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print $data00 $data01 $data02
|
||||
|
||||
|
||||
sql create table if not exists d0.stb (ts timestamp, c1 int, c2 float, c3 double) tags (t1 int unsigned)
|
||||
sql create table if not exists d1.stb (ts timestamp, c1 int, c2 float, c3 double) tags (t1 int unsigned)
|
||||
sql create table if not exists d2.stb (ts timestamp, c1 int, c2 float, c3 double) tags (t1 int unsigned)
|
||||
sql create table if not exists d3.stb (ts timestamp, c1 int, c2 float, c3 double) tags (t1 int unsigned)
|
||||
sql create table if not exists d0.ntb (ts timestamp, c1 int, c2 float, c3 double)
|
||||
sql create table if not exists d1.ntb (ts timestamp, c1 int, c2 float, c3 double)
|
||||
sql create table if not exists d2.ntb (ts timestamp, c1 int, c2 float, c3 double)
|
||||
sql create table if not exists d3.ntb (ts timestamp, c1 int, c2 float, c3 double)
|
||||
|
||||
sql create table d0.ct1 using d0.stb tags(1000)
|
||||
sql create table d1.ct1 using d1.stb tags(1000)
|
||||
sql create table d2.ct1 using d2.stb tags(1000)
|
||||
sql create table d3.ct1 using d3.stb tags(1000)
|
||||
sql create table d0.ct2 using d0.stb tags(1000)
|
||||
sql create table d1.ct2 using d1.stb tags(1000)
|
||||
sql create table d2.ct2 using d2.stb tags(1000)
|
||||
sql create table d3.ct2 using d3.stb tags(1000)
|
||||
|
||||
|
||||
sql insert into d0.ct1 values(now+0s, 10, 2.0, 3.0)
|
||||
sql insert into d1.ct1 values(now+0s, 10, 2.0, 3.0)
|
||||
sql insert into d2.ct1 values(now+0s, 10, 2.0, 3.0)
|
||||
sql insert into d3.ct1 values(now+0s, 10, 2.0, 3.0)
|
||||
sql insert into d0.ct2 values(now+0s, 10, 2.0, 3.0)
|
||||
sql insert into d1.ct2 values(now+0s, 10, 2.0, 3.0)
|
||||
sql insert into d2.ct2 values(now+0s, 10, 2.0, 3.0)
|
||||
sql insert into d3.ct2 values(now+0s, 10, 2.0, 3.0)
|
||||
sql insert into d0.ntb values(now+0s, 10, 2.0, 3.0)
|
||||
sql insert into d1.ntb values(now+0s, 10, 2.0, 3.0)
|
||||
sql insert into d2.ntb values(now+0s, 10, 2.0, 3.0)
|
||||
sql insert into d3.ntb values(now+0s, 10, 2.0, 3.0)
|
||||
|
||||
|
||||
print =============== query data from super table
|
||||
sql select count(*) from d0.stb
|
||||
if $data00 != 2 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d1.stb
|
||||
if $data00 != 2 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d2.stb
|
||||
if $data00 != 2 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d3.stb
|
||||
if $data00 != 2 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print =============== delete from child table
|
||||
sql delete from d0.ct1 where ts < now()
|
||||
sql delete from d1.ct1 where ts < now()
|
||||
sql delete from d2.ct1 where ts < now()
|
||||
sql delete from d3.ct1 where ts < now()
|
||||
|
||||
|
||||
print =============== query data from super table
|
||||
sql select count(*) from d0.stb
|
||||
if $data00 != 1 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d1.stb
|
||||
if $data00 != 1 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d2.stb
|
||||
if $data00 != 1 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d3.stb
|
||||
if $data00 != 1 then
|
||||
return -1
|
||||
endi
|
||||
print =============== query data from normal table
|
||||
sql select count(*) from d0.ntb
|
||||
if $data00 != 1 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d1.ntb
|
||||
if $data00 != 1 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d2.ntb
|
||||
if $data00 != 1 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d3.ntb
|
||||
if $data00 != 1 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print =============== delete from super table
|
||||
sql delete from d0.stb where ts < now()
|
||||
sql delete from d1.stb where ts < now()
|
||||
sql delete from d2.stb where ts < now()
|
||||
sql delete from d3.stb where ts < now()
|
||||
|
||||
print =============== query data from super table
|
||||
sql select count(*) from d0.stb
|
||||
if $data00 != 0 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d1.stb
|
||||
if $data00 != 0 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d2.stb
|
||||
if $data00 != 0 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d3.stb
|
||||
if $data00 != 0 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print =============== delete from normal table
|
||||
sql delete from d0.ntb where ts < now()
|
||||
sql delete from d1.ntb where ts < now()
|
||||
sql delete from d2.ntb where ts < now()
|
||||
sql delete from d3.ntb where ts < now()
|
||||
|
||||
print =============== query data from normal table
|
||||
sql select count(*) from d0.ntb
|
||||
if $data00 != 0 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d1.ntb
|
||||
if $data00 != 0 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d2.ntb
|
||||
if $data00 != 0 then
|
||||
return -1
|
||||
endi
|
||||
sql select count(*) from d3.ntb
|
||||
if $data00 != 0 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
|
@ -114,6 +114,7 @@ run tsim/insert/basic1.sim
|
|||
run tsim/insert/commit-merge0.sim
|
||||
run tsim/insert/basic0.sim
|
||||
run tsim/insert/update0.sim
|
||||
run tsim/insert/delete0.sim
|
||||
run tsim/insert/backquote.sim
|
||||
run tsim/insert/null.sim
|
||||
run tsim/catalog/alterInCurrent.sim
|
||||
|
|
Loading…
Reference in New Issue