Skip to content

Incorrect result on select contains stddev() #844

@FlyingMao

Description

@FlyingMao
  • dble version:
    5.6.29-dble-9.9.9.9-f97fea2-20181119022134
  • preconditions :
    no
  • configs:

schema.xml

<!DOCTYPE dble:schema SYSTEM "schema.dtd">
<dble:schema xmlns:dble="http://dble.cloud/">
    <schema name="mytest" sqlMaxLimit="100" dataNode="dn1">
        <table name="test_shard" dataNode="dn1,dn2,dn3,dn4" rule="mod-long"/>       
    </schema>
    <schema name="test" sqlMaxLimit="100" dataNode="dn1">
        <table name="test_db1" dataNode="dn1,dn2,dn3,dn4" rule="mod-long" primaryKey="id"/>
        <table name="test_db2" dataNode="dn1,dn2,dn3,dn4" rule="mod-long" primaryKey="id"/>
    </schema>
    <dataNode name="dn1" dataHost="10.186.24.45" database="db1"/>
    <dataNode name="dn2" dataHost="10.186.24.46" database="db1"/>
    <dataNode name="dn3" dataHost="10.186.24.45" database="db2"/>
    <dataNode name="dn4" dataHost="10.186.24.46" database="db2"/>
    <dataHost balance="0" maxCon="1000" minCon="10" name="10.186.24.45" switchType="2" slaveThreshold="100">
        <heartbeat>show slave status</heartbeat>
        <writeHost host="hostM1" url="10.186.24.45:3306" password="test" user="test">
        </writeHost>
    </dataHost>
    <dataHost balance="0" maxCon="1000" minCon="10" name="10.186.24.46" switchType="2" slaveThreshold="100">
        <heartbeat>show slave status</heartbeat>
        <writeHost host="hostW1" url="10.186.24.46:3306" password="test" user="test"/>
    </dataHost>
</dble:schema>

rule.xml

<!DOCTYPE dble:rule SYSTEM "rule.dtd">
<dble:rule xmlns:dble="http://dble.cloud/">
    <tableRule name="mod-long">
        <rule>
            <columns>id</columns>
            <algorithm>sharding</algorithm>
        </rule>
    </tableRule
    <function name="sharding" class="Hash">
        <property name="partitionCount">4</property>
        <property name="partitionLength">1</property>
    </function>
</dble:rule>

server.xml

<!DOCTYPE dble:server SYSTEM "server.dtd">
<dble:server xmlns:dble="http://dble.cloud/">
    <system>
        <property name="useGlobleTableCheck">1</property>
        <property name="dataNodeHeartbeatPeriod">60000</property>
        <property name="sqlExecuteTimeout">1000</property>
        <property name="recordTxn">1</property>
        <property name="xaRecoveryLogBaseDir">/opt/dble/tmlogs/</property>
        <property name="xaRecoveryLogBaseName">xalog</property>
        <property name="xaSessionCheckPeriod">2000</property>
        <property name="xaLogCleanPeriod">100000</property>
        <property name="processors">1</property>
        <property name="processorExecutor">4</property>
        <property name="sequnceHandlerType">2</property>
    </system>
    <firewall/>
    <user name="test">
        <property name="password">test</property>
        <property name="schemas">mytest,test</property>
         <property name="maxCon">0</property>
    </user>
    <user name="root">
        <property name="password">123456</property>
        <property name="manager">true</property>
    </user>
</dble:server>
  • steps:
    step1. prepare number on dble
drop table if exists test_shard;
CREATE TABLE test_shard(`id` int(10) unsigned NOT NULL,`k` int(10) unsigned NOT NULL DEFAULT '0',`c` char(120),`pad` int(11) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY (`k`))DEFAULT CHARSET=UTF8;
insert into test_shard values(1,1,'id1',1),(2,2,'id2',2),(3,3,'id3',3),(4,4,'id4',4),(5,5,'id5',1),(6,6,'id6',2),(7,7,'id7',3),(8,8,'$id8$',4),(9,9,'test',3),(10,10,'中',3),(11,11,'i_',4),(12,12,'_g',5),(13,13,'y_u',6),(14,14,'20%',14),(15,15,'a_1',15),(16,16,16,-1),(0,0,0,0),(17,17,'new*\n*line',17),(18,18,'a',18);
insert into test_shard(id,k,pad) values(19,19,19);

step2. execute select in dble

mysql> select stddev(pad) from test_shard;
  • expect result:
    1.
mysql> select stddev(pad) from test_shard;
+-------------------+
| stddev(pad)       |
+-------------------+
| 6.302975487815258 |
+-------------------+
1 row in set (0.00 sec)
  • real result:
    1.
mysql> select stddev(pad) from test_shard;
+-------------------+
| STDDEV(pad)       |
+-------------------+
| 2.477968016279029 |
+-------------------+
1 row in set (0.02 sec)

  • supplements:
    1.

for tester:
suggest autotest position: sqls/select/select.sql(reference line:27)

/label ~BUG

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions