taosdata / TDengine

High-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios
https://tdengine.com
GNU Affero General Public License v3.0
23.22k stars 4.84k forks source link

long varchar tag makes taosd no response, assert fatal found in taosd.log #23635

Open raygift opened 10 months ago

raygift commented 10 months ago

Bug Description A clear and concise description of what the bug is.

When insert million record into stable, with a stream insert related data into another stable ,both stable include a long varchar(4098) TAG,then after a few time, tdengine 3.1.2 will abort ,and tdengine 3.2.0 will no response for select dmls;

looking for reason in taosd.log, a assert error can be found like this

WechatIMG517

To Reproduce Steps to reproduce the behavior:

  1. First create stalbe and stream using the follower sqls:
    
    create stable if not exists stable_t1(ts timestamp, v double) TAGS(sss varchar(4098));

create stream if not exists stream_s1 INTO s_stable_t2 TAGS(sss varchar(4098)) SUBTABLE(concat()) AS select _wstart as wstart, avg(v) as avg_v, tbname FROM stable_t1 PARTITION BY sss, tbname as tname INTERVAL(1m);



2. then execute insert into stalbe_t1 value () for millions times;
3. then execute select count(*) from stable_t1; or other select dml, query will hang and no data response

**Expected Behavior**
select and insert can be exec all the time

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Environment (please complete the following information):**
 - OS: CentOS 7.9
 - DOCKER, host memory 256G, CPU 96Core, current Disk Space 500GB
 - TDengine Version 3.2.0/3.1.2

**Additional Context**

if there a limit on TAGS when creating stream? when create stream using the sql above
`create stream if not exists stream_s1 INTO s_stable_t2 TAGS(sss varchar(4098)) ....`,the TAGS type cannot be varchar(10240), and 4098 is the max number i tested, is it an official limitation?
yu285 commented 9 months ago

l will check on this