Skip to content

Query statements with 2 subqueries can cause thread insecurities #917

@FlyingMao

Description

@FlyingMao
  • dble version:
    5.6.1-dble-9.9.9.9-61be3b260ee1a279e672e56805508c3cd115a639-20190102095816
  • preconditions :
drop table if exists test_shard;
create table test_shard (id int(11) primary key,R_bit bit(64),R_NAME varchar(50),R_COMMENT varchar(50));
insert into test_shard (id,R_bit,R_NAME,R_COMMENT) values (1,b'0001', 'a','test001'),(2,b'0010', 'a string','test002'),(3,b'0011', '1','test001'),(4,b'1010', '1','test001');
  • configs:

schema.xml

<schema name="mytest" sqlMaxLimit="100" dataNode="dn5">
           <table name="test_shard" dataNode="dn1,dn2,dn3,dn4" rule="hash-four"/>
</schema>

rule.xml

tableRule name="hash-four">
        <rule>
            <columns>id</columns>
            <algorithm>four-long</algorithm>
        </rule>
    </tableRule>
<function name="four-long" class="Hash">
		<property name="partitionCount">4</property>
		<property name="partitionLength">1</property>
	</function>

server.xml



  • steps:
    step1. Run the following python script
import MySQLdb
conn=MySQLdb.connect('10.186.65.63','test','test','mytest',8066,autocommit=True)
cur=conn.cursor()
def my_insert():
    for i in range(0,100):
        cur.execute("select * from test_shard where HEX(R_bit) not like (select '%A%') escape (select '%')")
        rs = cur.fetchone()
my_insert()
  • expect result:
    1. execute successed
  • real result:
    1. The python script will hang or give an error:2013, 'Lost connection to MySQL server during query'
  • supplements:
    1.dble log:
    关键log.txt

/label ~BUG

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions