Skip to content

incorrect result when execute "select ...(subquery) from ..." #737

@yexiaoli88

Description

@yexiaoli88
  • dble version:5.6.29-dble-9.9.9.9-c51d005-20180927104851
  • preconditions :
create table a_test(id int, name varchar(20));
create table a_order(id int, name varchar(20));

insert into a_test values(1,'a'),(2,'b'),(5,null);
insert into a_order values(1,1),(2,2),(3,null);
  • configs:

schema.xml

        <table name="a_test" primaryKey="id" dataNode="dn1,dn2,dn3,dn4" rule="mod-long" />
        <table name="a_order" primaryKey="id" dataNode="dn1,dn2,dn3,dn4" rule="mod-long" />

  • steps:
    step1. query in dble
mysql> select *, (select name from a_order where id=8) from a_test order by id;
+------+------+-------------------------------------------+
| id   | name | ( SELECT name FROM a_order WHERE id = 8 ) |
+------+------+-------------------------------------------+
|    1 | a    |                                         0 |
|    2 | b    |                                         0 |
|    5 | NULL |                                         0 |
+------+------+-------------------------------------------+
3 rows in set (0.05 sec)

mysql> select *, (select name from a_order where id=3) from a_test order by id;
+------+------+-------------------------------------------+
| id   | name | ( SELECT name FROM a_order WHERE id = 3 ) |
+------+------+-------------------------------------------+
|    1 | a    |                                         0 |
|    2 | b    |                                         0 |
|    5 | NULL |                                         0 |
+------+------+-------------------------------------------+
3 rows in set (0.01 sec)

step 2 query in mysql

mysql> select *, (select name from a_order where id=8) from a_test order by id;
+------+------+---------------------------------------+
| id   | name | (select name from a_order where id=8) |
+------+------+---------------------------------------+
|    1 | a    | NULL                                  |
|    2 | b    | NULL                                  |
|    5 | NULL | NULL                                  |
+------+------+---------------------------------------+
3 rows in set (0.00 sec)

mysql> select *, (select name from a_order where id=3) from a_test order by id;
+------+------+---------------------------------------+
| id   | name | (select name from a_order where id=3) |
+------+------+---------------------------------------+
|    1 | a    | NULL                                  |
|    2 | b    | NULL                                  |
|    5 | NULL | NULL                                  |
+------+------+---------------------------------------+
3 rows in set (0.00 sec)

  • expect result:
    1. step1 should get null as value of column 3th
  • real result:
    1. step1 got "0" as value of colummn 3th
  • supplements:
    1.

/label ~BUG

Metadata

Metadata

Assignees

Labels

complex-queryresolveproblem has been fixed by developerverifiedissue's resolve was verified by tester

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions