# Copyright 2023 PingCAP, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

mysql> drop table if exists test.t
mysql> create table test.t (id int, i64 bigint, u64 bigint unsigned, f64 double, d18 decimal(18, 6), d65 decimal(65, 20))

# null values are not explicitly inserted here, since default value for each column is null.
# as a result, test.t has many nulls.

mysql> insert into test.t set id = 1, i64 = 0
mysql> insert into test.t set id = 2, i64 = 5
mysql> insert into test.t set id = 3, i64 = -5
mysql> insert into test.t set id = 4, i64 = 3
mysql> insert into test.t set id = 5, i64 = -3
mysql> insert into test.t set id = 6, i64 = 9223372036854775807
mysql> insert into test.t set id = 7, i64 = -9223372036854775808

mysql> insert into test.t set id = 8, u64 = 0
mysql> insert into test.t set id = 9, u64 = 5
mysql> insert into test.t set id = 10, u64 = 3
mysql> insert into test.t set id = 11, u64 = 18446744073709551615

mysql> insert into test.t set id = 12, f64 = 0
mysql> insert into test.t set id = 13, f64 = 1.1
mysql> insert into test.t set id = 14, f64 = -1.1
mysql> insert into test.t set id = 15, f64 = 1.3
mysql> insert into test.t set id = 16, f64 = -1.3

# 70 decimal digits
mysql> insert into test.t set id = 17, f64 = 1234567890123456789012345678901234567890123456789012345678901234567890
mysql> insert into test.t set id = 18, f64 = 3e-308

mysql> insert into test.t set id = 19, d18 = 0
mysql> insert into test.t set id = 20, d18 = 1.1
mysql> insert into test.t set id = 21, d18 = -1.1
mysql> insert into test.t set id = 22, d18 = 1.3
mysql> insert into test.t set id = 23, d18 = -1.3
mysql> insert into test.t set id = 24, d18 = 999999999999.999999
mysql> insert into test.t set id = 25, d18 = -999999999999.999999

mysql> insert into test.t set id = 26, d18 = 0
mysql> insert into test.t set id = 27, d18 = 1.1
mysql> insert into test.t set id = 28, d18 = -1.1
mysql> insert into test.t set id = 29, d18 = 1.3
mysql> insert into test.t set id = 30, d18 = -1.3
mysql> insert into test.t set id = 31, d18 = 999999999999.999999
mysql> insert into test.t set id = 32, d18 = -999999999999.999999

mysql> insert into test.t set id = 33, d65 = 0
mysql> insert into test.t set id = 34, d65 = 1.1
mysql> insert into test.t set id = 35, d65 = -1.1
mysql> insert into test.t set id = 36, d65 = 1.3
mysql> insert into test.t set id = 37, d65 = -1.3
mysql> insert into test.t set id = 38, d65 = 999999999999999999999999999999999999999999999.99999999999999999999
mysql> insert into test.t set id = 39, d65 = -999999999999999999999999999999999999999999999.99999999999999999999

# pre-join test.t into test.t0 to speed up queries.
mysql> drop table if exists test.t0
mysql> create table test.t0 (id_a int, i64_a bigint, u64_a bigint unsigned, f64_a double, d18_a decimal(18, 6), d65_a decimal(65, 20), id_b int, i64_b bigint, u64_b bigint unsigned, f64_b double, d18_b decimal(18, 6), d65_b decimal(65, 20))
mysql> alter table test.t0 set tiflash replica 1
mysql> insert into test.t0 select * from test.t as a cross join test.t as b
func> wait_table test t0

# all queries are automatically generated by the following Python 3 script:
#
# import subprocess
#
# def execute(sql):
#     proc = subprocess.run(['mysql', ...], input=sql.encode('ascii'), stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
#     return proc.stdout
#
# fields = ['i64', 'u64', 'f64', 'd18', 'd65']
#
# for x in fields:
#     for y in fields:
#         sql = f'select id_a, id_b, sum({x}_a % {y}_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b'
#         print(f'mysql> set @@session.tidb_isolation_read_engines="tiflash"; {sql}')
#         print(execute(sql).decode('ascii'))

# NOTE: we only filter out null results in queries.
# if some results are expected to be null but evaluated to be non-null, for example, the ids of rows will be wrong.

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(i64_a % i64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+---------------------+
| id_a | id_b | v                   |
+------+------+---------------------+
|    1 |    2 |                   0 |
|    1 |    3 |                   0 |
|    1 |    4 |                   0 |
|    1 |    5 |                   0 |
|    1 |    6 |                   0 |
|    1 |    7 |                   0 |
|    2 |    2 |                   0 |
|    2 |    3 |                   0 |
|    2 |    4 |                   2 |
|    2 |    5 |                   2 |
|    2 |    6 |                   5 |
|    2 |    7 |                   5 |
|    3 |    2 |                   0 |
|    3 |    3 |                   0 |
|    3 |    4 |                  -2 |
|    3 |    5 |                  -2 |
|    3 |    6 |                  -5 |
|    3 |    7 |                  -5 |
|    4 |    2 |                   3 |
|    4 |    3 |                   3 |
|    4 |    4 |                   0 |
|    4 |    5 |                   0 |
|    4 |    6 |                   3 |
|    4 |    7 |                   3 |
|    5 |    2 |                  -3 |
|    5 |    3 |                  -3 |
|    5 |    4 |                   0 |
|    5 |    5 |                   0 |
|    5 |    6 |                  -3 |
|    5 |    7 |                  -3 |
|    6 |    2 |                   2 |
|    6 |    3 |                   2 |
|    6 |    4 |                   1 |
|    6 |    5 |                   1 |
|    6 |    6 |                   0 |
|    6 |    7 | 9223372036854775807 |
|    7 |    2 |                  -3 |
|    7 |    3 |                  -3 |
|    7 |    4 |                  -2 |
|    7 |    5 |                  -2 |
|    7 |    6 |                  -1 |
|    7 |    7 |                   0 |
+------+------+---------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(i64_a % u64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+----------------------+
| id_a | id_b | v                    |
+------+------+----------------------+
|    1 |    9 |                    0 |
|    1 |   10 |                    0 |
|    1 |   11 |                    0 |
|    2 |    9 |                    0 |
|    2 |   10 |                    2 |
|    2 |   11 |                    5 |
|    3 |    9 |                    0 |
|    3 |   10 |                   -2 |
|    3 |   11 |                   -5 |
|    4 |    9 |                    3 |
|    4 |   10 |                    0 |
|    4 |   11 |                    3 |
|    5 |    9 |                   -3 |
|    5 |   10 |                    0 |
|    5 |   11 |                   -3 |
|    6 |    9 |                    2 |
|    6 |   10 |                    1 |
|    6 |   11 |  9223372036854775807 |
|    7 |    9 |                   -3 |
|    7 |   10 |                   -2 |
|    7 |   11 | -9223372036854775808 |
+------+------+----------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(i64_a % f64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+--------------------------+
| id_a | id_b | v                        |
+------+------+--------------------------+
|    1 |   13 |                        0 |
|    1 |   14 |                        0 |
|    1 |   15 |                        0 |
|    1 |   16 |                        0 |
|    1 |   17 |                        0 |
|    1 |   18 |                        0 |
|    2 |   13 |       0.5999999999999996 |
|    2 |   14 |       0.5999999999999996 |
|    2 |   15 |       1.0999999999999999 |
|    2 |   16 |       1.0999999999999999 |
|    2 |   17 |                        5 |
|    2 |   18 |  2.1284678556589843e-308 |
|    3 |   13 |      -0.5999999999999996 |
|    3 |   14 |      -0.5999999999999996 |
|    3 |   15 |      -1.0999999999999999 |
|    3 |   16 |      -1.0999999999999999 |
|    3 |   17 |                       -5 |
|    3 |   18 | -2.1284678556589843e-308 |
|    4 |   13 |       0.7999999999999998 |
|    4 |   14 |       0.7999999999999998 |
|    4 |   15 |       0.3999999999999999 |
|    4 |   16 |       0.3999999999999999 |
|    4 |   17 |                        3 |
|    4 |   18 |  1.2770807133953906e-308 |
|    5 |   13 |      -0.7999999999999998 |
|    5 |   14 |      -0.7999999999999998 |
|    5 |   15 |      -0.3999999999999999 |
|    5 |   16 |      -0.3999999999999999 |
|    5 |   17 |                       -3 |
|    5 |   18 | -1.2770807133953906e-308 |
|    6 |   13 |       0.2727272727273329 |
|    6 |   14 |       0.2727272727273329 |
|    6 |   15 |       1.0230769230769339 |
|    6 |   16 |       1.0230769230769339 |
|    6 |   17 |     9.223372036854776e18 |
|    6 |   18 |   1.258235491368017e-308 |
|    7 |   13 |      -0.2727272727273329 |
|    7 |   14 |      -0.2727272727273329 |
|    7 |   15 |      -1.0230769230769339 |
|    7 |   16 |      -1.0230769230769339 |
|    7 |   17 |    -9.223372036854776e18 |
|    7 |   18 |  -1.258235491368017e-308 |
+------+------+--------------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(i64_a % d18_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+---------------------+
| id_a | id_b | v                   |
+------+------+---------------------+
|    1 |   20 |            0.000000 |
|    1 |   21 |            0.000000 |
|    1 |   22 |            0.000000 |
|    1 |   23 |            0.000000 |
|    1 |   24 |            0.000000 |
|    1 |   25 |            0.000000 |
|    1 |   27 |            0.000000 |
|    1 |   28 |            0.000000 |
|    1 |   29 |            0.000000 |
|    1 |   30 |            0.000000 |
|    1 |   31 |            0.000000 |
|    1 |   32 |            0.000000 |
|    2 |   20 |            0.600000 |
|    2 |   21 |            0.600000 |
|    2 |   22 |            1.100000 |
|    2 |   23 |            1.100000 |
|    2 |   24 |            5.000000 |
|    2 |   25 |            5.000000 |
|    2 |   27 |            0.600000 |
|    2 |   28 |            0.600000 |
|    2 |   29 |            1.100000 |
|    2 |   30 |            1.100000 |
|    2 |   31 |            5.000000 |
|    2 |   32 |            5.000000 |
|    3 |   20 |           -0.600000 |
|    3 |   21 |           -0.600000 |
|    3 |   22 |           -1.100000 |
|    3 |   23 |           -1.100000 |
|    3 |   24 |           -5.000000 |
|    3 |   25 |           -5.000000 |
|    3 |   27 |           -0.600000 |
|    3 |   28 |           -0.600000 |
|    3 |   29 |           -1.100000 |
|    3 |   30 |           -1.100000 |
|    3 |   31 |           -5.000000 |
|    3 |   32 |           -5.000000 |
|    4 |   20 |            0.800000 |
|    4 |   21 |            0.800000 |
|    4 |   22 |            0.400000 |
|    4 |   23 |            0.400000 |
|    4 |   24 |            3.000000 |
|    4 |   25 |            3.000000 |
|    4 |   27 |            0.800000 |
|    4 |   28 |            0.800000 |
|    4 |   29 |            0.400000 |
|    4 |   30 |            0.400000 |
|    4 |   31 |            3.000000 |
|    4 |   32 |            3.000000 |
|    5 |   20 |           -0.800000 |
|    5 |   21 |           -0.800000 |
|    5 |   22 |           -0.400000 |
|    5 |   23 |           -0.400000 |
|    5 |   24 |           -3.000000 |
|    5 |   25 |           -3.000000 |
|    5 |   27 |           -0.800000 |
|    5 |   28 |           -0.800000 |
|    5 |   29 |           -0.400000 |
|    5 |   30 |           -0.400000 |
|    5 |   31 |           -3.000000 |
|    5 |   32 |           -3.000000 |
|    6 |   20 |            0.400000 |
|    6 |   21 |            0.400000 |
|    6 |   22 |            0.500000 |
|    6 |   23 |            0.500000 |
|    6 |   24 |  36854775816.223372 |
|    6 |   25 |  36854775816.223372 |
|    6 |   27 |            0.400000 |
|    6 |   28 |            0.400000 |
|    6 |   29 |            0.500000 |
|    6 |   30 |            0.500000 |
|    6 |   31 |  36854775816.223372 |
|    6 |   32 |  36854775816.223372 |
|    7 |   20 |           -0.300000 |
|    7 |   21 |           -0.300000 |
|    7 |   22 |           -0.200000 |
|    7 |   23 |           -0.200000 |
|    7 |   24 | -36854775817.223372 |
|    7 |   25 | -36854775817.223372 |
|    7 |   27 |           -0.300000 |
|    7 |   28 |           -0.300000 |
|    7 |   29 |           -0.200000 |
|    7 |   30 |           -0.200000 |
|    7 |   31 | -36854775817.223372 |
|    7 |   32 | -36854775817.223372 |
+------+------+---------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(i64_a % d65_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+-------------------------------------------+
| id_a | id_b | v                                         |
+------+------+-------------------------------------------+
|    1 |   34 |                    0.00000000000000000000 |
|    1 |   35 |                    0.00000000000000000000 |
|    1 |   36 |                    0.00000000000000000000 |
|    1 |   37 |                    0.00000000000000000000 |
|    1 |   38 |                    0.00000000000000000000 |
|    1 |   39 |                    0.00000000000000000000 |
|    2 |   34 |                    0.60000000000000000000 |
|    2 |   35 |                    0.60000000000000000000 |
|    2 |   36 |                    1.10000000000000000000 |
|    2 |   37 |                    1.10000000000000000000 |
|    2 |   38 |                    5.00000000000000000000 |
|    2 |   39 |                    5.00000000000000000000 |
|    3 |   34 |                   -0.60000000000000000000 |
|    3 |   35 |                   -0.60000000000000000000 |
|    3 |   36 |                   -1.10000000000000000000 |
|    3 |   37 |                   -1.10000000000000000000 |
|    3 |   38 |                   -5.00000000000000000000 |
|    3 |   39 |                   -5.00000000000000000000 |
|    4 |   34 |                    0.80000000000000000000 |
|    4 |   35 |                    0.80000000000000000000 |
|    4 |   36 |                    0.40000000000000000000 |
|    4 |   37 |                    0.40000000000000000000 |
|    4 |   38 |                    3.00000000000000000000 |
|    4 |   39 |                    3.00000000000000000000 |
|    5 |   34 |                   -0.80000000000000000000 |
|    5 |   35 |                   -0.80000000000000000000 |
|    5 |   36 |                   -0.40000000000000000000 |
|    5 |   37 |                   -0.40000000000000000000 |
|    5 |   38 |                   -3.00000000000000000000 |
|    5 |   39 |                   -3.00000000000000000000 |
|    6 |   34 |                    0.40000000000000000000 |
|    6 |   35 |                    0.40000000000000000000 |
|    6 |   36 |                    0.50000000000000000000 |
|    6 |   37 |                    0.50000000000000000000 |
|    6 |   38 |  9223372036854775807.00000000000000000000 |
|    6 |   39 |  9223372036854775807.00000000000000000000 |
|    7 |   34 |                   -0.30000000000000000000 |
|    7 |   35 |                   -0.30000000000000000000 |
|    7 |   36 |                   -0.20000000000000000000 |
|    7 |   37 |                   -0.20000000000000000000 |
|    7 |   38 | -9223372036854775808.00000000000000000000 |
|    7 |   39 | -9223372036854775808.00000000000000000000 |
+------+------+-------------------------------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(u64_a % i64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+---------------------+
| id_a | id_b | v                   |
+------+------+---------------------+
|    8 |    2 |                   0 |
|    8 |    3 |                   0 |
|    8 |    4 |                   0 |
|    8 |    5 |                   0 |
|    8 |    6 |                   0 |
|    8 |    7 |                   0 |
|    9 |    2 |                   0 |
|    9 |    3 |                   0 |
|    9 |    4 |                   2 |
|    9 |    5 |                   2 |
|    9 |    6 |                   5 |
|    9 |    7 |                   5 |
|   10 |    2 |                   3 |
|   10 |    3 |                   3 |
|   10 |    4 |                   0 |
|   10 |    5 |                   0 |
|   10 |    6 |                   3 |
|   10 |    7 |                   3 |
|   11 |    2 |                   0 |
|   11 |    3 |                   0 |
|   11 |    4 |                   0 |
|   11 |    5 |                   0 |
|   11 |    6 |                   1 |
|   11 |    7 | 9223372036854775807 |
+------+------+---------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(u64_a % u64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+------+
| id_a | id_b | v    |
+------+------+------+
|    8 |    9 |    0 |
|    8 |   10 |    0 |
|    8 |   11 |    0 |
|    9 |    9 |    0 |
|    9 |   10 |    2 |
|    9 |   11 |    5 |
|   10 |    9 |    3 |
|   10 |   10 |    0 |
|   10 |   11 |    3 |
|   11 |    9 |    0 |
|   11 |   10 |    0 |
|   11 |   11 |    0 |
+------+------+------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(u64_a % f64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+-------------------------+
| id_a | id_b | v                       |
+------+------+-------------------------+
|    8 |   13 |                       0 |
|    8 |   14 |                       0 |
|    8 |   15 |                       0 |
|    8 |   16 |                       0 |
|    8 |   17 |                       0 |
|    8 |   18 |                       0 |
|    9 |   13 |      0.5999999999999996 |
|    9 |   14 |      0.5999999999999996 |
|    9 |   15 |      1.0999999999999999 |
|    9 |   16 |      1.0999999999999999 |
|    9 |   17 |                       5 |
|    9 |   18 | 2.1284678556589843e-308 |
|   10 |   13 |      0.7999999999999998 |
|   10 |   14 |      0.7999999999999998 |
|   10 |   15 |      0.3999999999999999 |
|   10 |   16 |      0.3999999999999999 |
|   10 |   17 |                       3 |
|   10 |   18 | 1.2770807133953906e-308 |
|   11 |   13 |      0.5454545454546658 |
|   11 |   14 |      0.5454545454546658 |
|   11 |   15 |      0.7461538461538677 |
|   11 |   16 |      0.7461538461538677 |
|   11 |   17 |   1.8446744073709552e19 |
|   11 |   18 |  2.516470982736034e-308 |
+------+------+-------------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(u64_a % d18_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+--------------------+
| id_a | id_b | v                  |
+------+------+--------------------+
|    8 |   20 |           0.000000 |
|    8 |   21 |           0.000000 |
|    8 |   22 |           0.000000 |
|    8 |   23 |           0.000000 |
|    8 |   24 |           0.000000 |
|    8 |   25 |           0.000000 |
|    8 |   27 |           0.000000 |
|    8 |   28 |           0.000000 |
|    8 |   29 |           0.000000 |
|    8 |   30 |           0.000000 |
|    8 |   31 |           0.000000 |
|    8 |   32 |           0.000000 |
|    9 |   20 |           0.600000 |
|    9 |   21 |           0.600000 |
|    9 |   22 |           1.100000 |
|    9 |   23 |           1.100000 |
|    9 |   24 |           5.000000 |
|    9 |   25 |           5.000000 |
|    9 |   27 |           0.600000 |
|    9 |   28 |           0.600000 |
|    9 |   29 |           1.100000 |
|    9 |   30 |           1.100000 |
|    9 |   31 |           5.000000 |
|    9 |   32 |           5.000000 |
|   10 |   20 |           0.800000 |
|   10 |   21 |           0.800000 |
|   10 |   22 |           0.400000 |
|   10 |   23 |           0.400000 |
|   10 |   24 |           3.000000 |
|   10 |   25 |           3.000000 |
|   10 |   27 |           0.800000 |
|   10 |   28 |           0.800000 |
|   10 |   29 |           0.400000 |
|   10 |   30 |           0.400000 |
|   10 |   31 |           3.000000 |
|   10 |   32 |           3.000000 |
|   11 |   20 |           0.700000 |
|   11 |   21 |           0.700000 |
|   11 |   22 |           0.700000 |
|   11 |   23 |           0.700000 |
|   11 |   24 | 73709551633.446744 |
|   11 |   25 | 73709551633.446744 |
|   11 |   27 |           0.700000 |
|   11 |   28 |           0.700000 |
|   11 |   29 |           0.700000 |
|   11 |   30 |           0.700000 |
|   11 |   31 | 73709551633.446744 |
|   11 |   32 | 73709551633.446744 |
+------+------+--------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(u64_a % d65_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+-------------------------------------------+
| id_a | id_b | v                                         |
+------+------+-------------------------------------------+
|    8 |   34 |                    0.00000000000000000000 |
|    8 |   35 |                    0.00000000000000000000 |
|    8 |   36 |                    0.00000000000000000000 |
|    8 |   37 |                    0.00000000000000000000 |
|    8 |   38 |                    0.00000000000000000000 |
|    8 |   39 |                    0.00000000000000000000 |
|    9 |   34 |                    0.60000000000000000000 |
|    9 |   35 |                    0.60000000000000000000 |
|    9 |   36 |                    1.10000000000000000000 |
|    9 |   37 |                    1.10000000000000000000 |
|    9 |   38 |                    5.00000000000000000000 |
|    9 |   39 |                    5.00000000000000000000 |
|   10 |   34 |                    0.80000000000000000000 |
|   10 |   35 |                    0.80000000000000000000 |
|   10 |   36 |                    0.40000000000000000000 |
|   10 |   37 |                    0.40000000000000000000 |
|   10 |   38 |                    3.00000000000000000000 |
|   10 |   39 |                    3.00000000000000000000 |
|   11 |   34 |                    0.70000000000000000000 |
|   11 |   35 |                    0.70000000000000000000 |
|   11 |   36 |                    0.70000000000000000000 |
|   11 |   37 |                    0.70000000000000000000 |
|   11 |   38 | 18446744073709551615.00000000000000000000 |
|   11 |   39 | 18446744073709551615.00000000000000000000 |
+------+------+-------------------------------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(f64_a % i64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+--------+
| id_a | id_b | v      |
+------+------+--------+
|   12 |    2 |      0 |
|   12 |    3 |      0 |
|   12 |    4 |      0 |
|   12 |    5 |      0 |
|   12 |    6 |      0 |
|   12 |    7 |      0 |
|   13 |    2 |    1.1 |
|   13 |    3 |    1.1 |
|   13 |    4 |    1.1 |
|   13 |    5 |    1.1 |
|   13 |    6 |    1.1 |
|   13 |    7 |    1.1 |
|   14 |    2 |   -1.1 |
|   14 |    3 |   -1.1 |
|   14 |    4 |   -1.1 |
|   14 |    5 |   -1.1 |
|   14 |    6 |   -1.1 |
|   14 |    7 |   -1.1 |
|   15 |    2 |    1.3 |
|   15 |    3 |    1.3 |
|   15 |    4 |    1.3 |
|   15 |    5 |    1.3 |
|   15 |    6 |    1.3 |
|   15 |    7 |    1.3 |
|   16 |    2 |   -1.3 |
|   16 |    3 |   -1.3 |
|   16 |    4 |   -1.3 |
|   16 |    5 |   -1.3 |
|   16 |    6 |   -1.3 |
|   16 |    7 |   -1.3 |
|   17 |    2 |      1 |
|   17 |    3 |      1 |
|   17 |    4 |      1 |
|   17 |    5 |      1 |
|   17 |    6 |      0 |
|   17 |    7 |      0 |
|   18 |    2 | 3e-308 |
|   18 |    3 | 3e-308 |
|   18 |    4 | 3e-308 |
|   18 |    5 | 3e-308 |
|   18 |    6 | 3e-308 |
|   18 |    7 | 3e-308 |
+------+------+--------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(f64_a % u64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+--------+
| id_a | id_b | v      |
+------+------+--------+
|   12 |    9 |      0 |
|   12 |   10 |      0 |
|   12 |   11 |      0 |
|   13 |    9 |    1.1 |
|   13 |   10 |    1.1 |
|   13 |   11 |    1.1 |
|   14 |    9 |   -1.1 |
|   14 |   10 |   -1.1 |
|   14 |   11 |   -1.1 |
|   15 |    9 |    1.3 |
|   15 |   10 |    1.3 |
|   15 |   11 |    1.3 |
|   16 |    9 |   -1.3 |
|   16 |   10 |   -1.3 |
|   16 |   11 |   -1.3 |
|   17 |    9 |      1 |
|   17 |   10 |      1 |
|   17 |   11 |      0 |
|   18 |    9 | 3e-308 |
|   18 |   10 | 3e-308 |
|   18 |   11 | 3e-308 |
+------+------+--------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(f64_a % f64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+-------------------------+
| id_a | id_b | v                       |
+------+------+-------------------------+
|   12 |   13 |                       0 |
|   12 |   14 |                       0 |
|   12 |   15 |                       0 |
|   12 |   16 |                       0 |
|   12 |   17 |                       0 |
|   12 |   18 |                       0 |
|   13 |   13 |                       0 |
|   13 |   14 |                       0 |
|   13 |   15 |                     1.1 |
|   13 |   16 |                     1.1 |
|   13 |   17 |                     1.1 |
|   13 |   18 |   6.47175315876513e-309 |
|   14 |   13 |                       0 |
|   14 |   14 |                       0 |
|   14 |   15 |                    -1.1 |
|   14 |   16 |                    -1.1 |
|   14 |   17 |                    -1.1 |
|   14 |   18 |  -6.47175315876513e-309 |
|   15 |   13 |     0.19999999999999996 |
|   15 |   14 |     0.19999999999999996 |
|   15 |   15 |                       0 |
|   15 |   16 |                       0 |
|   15 |   17 |                     1.3 |
|   15 |   18 |  2.142857836287104e-308 |
|   16 |   13 |    -0.19999999999999996 |
|   16 |   14 |    -0.19999999999999996 |
|   16 |   15 |                       0 |
|   16 |   16 |                       0 |
|   16 |   17 |                    -1.3 |
|   16 |   18 | -2.142857836287104e-308 |
|   17 |   13 |      1.0816050479200516 |
|   17 |   14 |      1.0816050479200516 |
|   17 |   15 |      1.1055621728638556 |
|   17 |   16 |      1.1055621728638556 |
|   17 |   17 |                       0 |
|   17 |   18 | 1.2469414698257877e-308 |
|   18 |   13 |                  3e-308 |
|   18 |   14 |                  3e-308 |
|   18 |   15 |                  3e-308 |
|   18 |   16 |                  3e-308 |
|   18 |   17 |                  3e-308 |
|   18 |   18 |                       0 |
+------+------+-------------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(f64_a % d18_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+----------------------+
| id_a | id_b | v                    |
+------+------+----------------------+
|   12 |   20 |                    0 |
|   12 |   21 |                    0 |
|   12 |   22 |                    0 |
|   12 |   23 |                    0 |
|   12 |   24 |                    0 |
|   12 |   25 |                    0 |
|   12 |   27 |                    0 |
|   12 |   28 |                    0 |
|   12 |   29 |                    0 |
|   12 |   30 |                    0 |
|   12 |   31 |                    0 |
|   12 |   32 |                    0 |
|   13 |   20 |                    0 |
|   13 |   21 |                    0 |
|   13 |   22 |                  1.1 |
|   13 |   23 |                  1.1 |
|   13 |   24 |                  1.1 |
|   13 |   25 |                  1.1 |
|   13 |   27 |                    0 |
|   13 |   28 |                    0 |
|   13 |   29 |                  1.1 |
|   13 |   30 |                  1.1 |
|   13 |   31 |                  1.1 |
|   13 |   32 |                  1.1 |
|   14 |   20 |                    0 |
|   14 |   21 |                    0 |
|   14 |   22 |                 -1.1 |
|   14 |   23 |                 -1.1 |
|   14 |   24 |                 -1.1 |
|   14 |   25 |                 -1.1 |
|   14 |   27 |                    0 |
|   14 |   28 |                    0 |
|   14 |   29 |                 -1.1 |
|   14 |   30 |                 -1.1 |
|   14 |   31 |                 -1.1 |
|   14 |   32 |                 -1.1 |
|   15 |   20 |  0.19999999999999996 |
|   15 |   21 |  0.19999999999999996 |
|   15 |   22 |                    0 |
|   15 |   23 |                    0 |
|   15 |   24 |                  1.3 |
|   15 |   25 |                  1.3 |
|   15 |   27 |  0.19999999999999996 |
|   15 |   28 |  0.19999999999999996 |
|   15 |   29 |                    0 |
|   15 |   30 |                    0 |
|   15 |   31 |                  1.3 |
|   15 |   32 |                  1.3 |
|   16 |   20 | -0.19999999999999996 |
|   16 |   21 | -0.19999999999999996 |
|   16 |   22 |                    0 |
|   16 |   23 |                    0 |
|   16 |   24 |                 -1.3 |
|   16 |   25 |                 -1.3 |
|   16 |   27 | -0.19999999999999996 |
|   16 |   28 | -0.19999999999999996 |
|   16 |   29 |                    0 |
|   16 |   30 |                    0 |
|   16 |   31 |                 -1.3 |
|   16 |   32 |                 -1.3 |
|   17 |   20 |   1.0816050479200516 |
|   17 |   21 |   1.0816050479200516 |
|   17 |   22 |   1.1055621728638556 |
|   17 |   23 |   1.1055621728638556 |
|   17 |   24 |         527851544576 |
|   17 |   25 |         527851544576 |
|   17 |   27 |   1.0816050479200516 |
|   17 |   28 |   1.0816050479200516 |
|   17 |   29 |   1.1055621728638556 |
|   17 |   30 |   1.1055621728638556 |
|   17 |   31 |         527851544576 |
|   17 |   32 |         527851544576 |
|   18 |   20 |               3e-308 |
|   18 |   21 |               3e-308 |
|   18 |   22 |               3e-308 |
|   18 |   23 |               3e-308 |
|   18 |   24 |               3e-308 |
|   18 |   25 |               3e-308 |
|   18 |   27 |               3e-308 |
|   18 |   28 |               3e-308 |
|   18 |   29 |               3e-308 |
|   18 |   30 |               3e-308 |
|   18 |   31 |               3e-308 |
|   18 |   32 |               3e-308 |
+------+------+----------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(f64_a % d65_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+-----------------------+
| id_a | id_b | v                     |
+------+------+-----------------------+
|   12 |   34 |                     0 |
|   12 |   35 |                     0 |
|   12 |   36 |                     0 |
|   12 |   37 |                     0 |
|   12 |   38 |                     0 |
|   12 |   39 |                     0 |
|   13 |   34 |                     0 |
|   13 |   35 |                     0 |
|   13 |   36 |                   1.1 |
|   13 |   37 |                   1.1 |
|   13 |   38 |                   1.1 |
|   13 |   39 |                   1.1 |
|   14 |   34 |                     0 |
|   14 |   35 |                     0 |
|   14 |   36 |                  -1.1 |
|   14 |   37 |                  -1.1 |
|   14 |   38 |                  -1.1 |
|   14 |   39 |                  -1.1 |
|   15 |   34 |   0.19999999999999996 |
|   15 |   35 |   0.19999999999999996 |
|   15 |   36 |                     0 |
|   15 |   37 |                     0 |
|   15 |   38 |                   1.3 |
|   15 |   39 |                   1.3 |
|   16 |   34 |  -0.19999999999999996 |
|   16 |   35 |  -0.19999999999999996 |
|   16 |   36 |                     0 |
|   16 |   37 |                     0 |
|   16 |   38 |                  -1.3 |
|   16 |   39 |                  -1.3 |
|   17 |   34 |    1.0816050479200516 |
|   17 |   35 |    1.0816050479200516 |
|   17 |   36 |    1.1055621728638556 |
|   17 |   37 |    1.1055621728638556 |
|   17 |   38 | 3.1137148315537132e44 |
|   17 |   39 | 3.1137148315537132e44 |
|   18 |   34 |                3e-308 |
|   18 |   35 |                3e-308 |
|   18 |   36 |                3e-308 |
|   18 |   37 |                3e-308 |
|   18 |   38 |                3e-308 |
|   18 |   39 |                3e-308 |
+------+------+-----------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(d18_a % i64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+----------------------+
| id_a | id_b | v                    |
+------+------+----------------------+
|   19 |    2 |             0.000000 |
|   19 |    3 |             0.000000 |
|   19 |    4 |             0.000000 |
|   19 |    5 |             0.000000 |
|   19 |    6 |             0.000000 |
|   19 |    7 |             0.000000 |
|   20 |    2 |             1.100000 |
|   20 |    3 |             1.100000 |
|   20 |    4 |             1.100000 |
|   20 |    5 |             1.100000 |
|   20 |    6 |             1.100000 |
|   20 |    7 |             1.100000 |
|   21 |    2 |            -1.100000 |
|   21 |    3 |            -1.100000 |
|   21 |    4 |            -1.100000 |
|   21 |    5 |            -1.100000 |
|   21 |    6 |            -1.100000 |
|   21 |    7 |            -1.100000 |
|   22 |    2 |             1.300000 |
|   22 |    3 |             1.300000 |
|   22 |    4 |             1.300000 |
|   22 |    5 |             1.300000 |
|   22 |    6 |             1.300000 |
|   22 |    7 |             1.300000 |
|   23 |    2 |            -1.300000 |
|   23 |    3 |            -1.300000 |
|   23 |    4 |            -1.300000 |
|   23 |    5 |            -1.300000 |
|   23 |    6 |            -1.300000 |
|   23 |    7 |            -1.300000 |
|   24 |    2 |             4.999999 |
|   24 |    3 |             4.999999 |
|   24 |    4 |             0.999999 |
|   24 |    5 |             0.999999 |
|   24 |    6 |  999999999999.999999 |
|   24 |    7 |  999999999999.999999 |
|   25 |    2 |            -4.999999 |
|   25 |    3 |            -4.999999 |
|   25 |    4 |            -0.999999 |
|   25 |    5 |            -0.999999 |
|   25 |    6 | -999999999999.999999 |
|   25 |    7 | -999999999999.999999 |
|   26 |    2 |             0.000000 |
|   26 |    3 |             0.000000 |
|   26 |    4 |             0.000000 |
|   26 |    5 |             0.000000 |
|   26 |    6 |             0.000000 |
|   26 |    7 |             0.000000 |
|   27 |    2 |             1.100000 |
|   27 |    3 |             1.100000 |
|   27 |    4 |             1.100000 |
|   27 |    5 |             1.100000 |
|   27 |    6 |             1.100000 |
|   27 |    7 |             1.100000 |
|   28 |    2 |            -1.100000 |
|   28 |    3 |            -1.100000 |
|   28 |    4 |            -1.100000 |
|   28 |    5 |            -1.100000 |
|   28 |    6 |            -1.100000 |
|   28 |    7 |            -1.100000 |
|   29 |    2 |             1.300000 |
|   29 |    3 |             1.300000 |
|   29 |    4 |             1.300000 |
|   29 |    5 |             1.300000 |
|   29 |    6 |             1.300000 |
|   29 |    7 |             1.300000 |
|   30 |    2 |            -1.300000 |
|   30 |    3 |            -1.300000 |
|   30 |    4 |            -1.300000 |
|   30 |    5 |            -1.300000 |
|   30 |    6 |            -1.300000 |
|   30 |    7 |            -1.300000 |
|   31 |    2 |             4.999999 |
|   31 |    3 |             4.999999 |
|   31 |    4 |             0.999999 |
|   31 |    5 |             0.999999 |
|   31 |    6 |  999999999999.999999 |
|   31 |    7 |  999999999999.999999 |
|   32 |    2 |            -4.999999 |
|   32 |    3 |            -4.999999 |
|   32 |    4 |            -0.999999 |
|   32 |    5 |            -0.999999 |
|   32 |    6 | -999999999999.999999 |
|   32 |    7 | -999999999999.999999 |
+------+------+----------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(d18_a % u64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+----------------------+
| id_a | id_b | v                    |
+------+------+----------------------+
|   19 |    9 |             0.000000 |
|   19 |   10 |             0.000000 |
|   19 |   11 |             0.000000 |
|   20 |    9 |             1.100000 |
|   20 |   10 |             1.100000 |
|   20 |   11 |             1.100000 |
|   21 |    9 |            -1.100000 |
|   21 |   10 |            -1.100000 |
|   21 |   11 |            -1.100000 |
|   22 |    9 |             1.300000 |
|   22 |   10 |             1.300000 |
|   22 |   11 |             1.300000 |
|   23 |    9 |            -1.300000 |
|   23 |   10 |            -1.300000 |
|   23 |   11 |            -1.300000 |
|   24 |    9 |             4.999999 |
|   24 |   10 |             0.999999 |
|   24 |   11 |  999999999999.999999 |
|   25 |    9 |            -4.999999 |
|   25 |   10 |            -0.999999 |
|   25 |   11 | -999999999999.999999 |
|   26 |    9 |             0.000000 |
|   26 |   10 |             0.000000 |
|   26 |   11 |             0.000000 |
|   27 |    9 |             1.100000 |
|   27 |   10 |             1.100000 |
|   27 |   11 |             1.100000 |
|   28 |    9 |            -1.100000 |
|   28 |   10 |            -1.100000 |
|   28 |   11 |            -1.100000 |
|   29 |    9 |             1.300000 |
|   29 |   10 |             1.300000 |
|   29 |   11 |             1.300000 |
|   30 |    9 |            -1.300000 |
|   30 |   10 |            -1.300000 |
|   30 |   11 |            -1.300000 |
|   31 |    9 |             4.999999 |
|   31 |   10 |             0.999999 |
|   31 |   11 |  999999999999.999999 |
|   32 |    9 |            -4.999999 |
|   32 |   10 |            -0.999999 |
|   32 |   11 | -999999999999.999999 |
+------+------+----------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(d18_a % f64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+--------------------------+
| id_a | id_b | v                        |
+------+------+--------------------------+
|   19 |   13 |                        0 |
|   19 |   14 |                        0 |
|   19 |   15 |                        0 |
|   19 |   16 |                        0 |
|   19 |   17 |                        0 |
|   19 |   18 |                        0 |
|   20 |   13 |                        0 |
|   20 |   14 |                        0 |
|   20 |   15 |                      1.1 |
|   20 |   16 |                      1.1 |
|   20 |   17 |                      1.1 |
|   20 |   18 |    6.47175315876513e-309 |
|   21 |   13 |                        0 |
|   21 |   14 |                        0 |
|   21 |   15 |                     -1.1 |
|   21 |   16 |                     -1.1 |
|   21 |   17 |                     -1.1 |
|   21 |   18 |   -6.47175315876513e-309 |
|   22 |   13 |      0.19999999999999996 |
|   22 |   14 |      0.19999999999999996 |
|   22 |   15 |                        0 |
|   22 |   16 |                        0 |
|   22 |   17 |                      1.3 |
|   22 |   18 |   2.142857836287104e-308 |
|   23 |   13 |     -0.19999999999999996 |
|   23 |   14 |     -0.19999999999999996 |
|   23 |   15 |                        0 |
|   23 |   16 |                        0 |
|   23 |   17 |                     -1.3 |
|   23 |   18 |  -2.142857836287104e-308 |
|   24 |   13 |       0.9999192565073001 |
|   24 |   14 |       0.9999192565073001 |
|   24 |   15 |         0.99996583929155 |
|   24 |   16 |         0.99996583929155 |
|   24 |   17 |            1000000000000 |
|   24 |   18 |  2.7968335538198364e-308 |
|   25 |   13 |      -0.9999192565073001 |
|   25 |   14 |      -0.9999192565073001 |
|   25 |   15 |        -0.99996583929155 |
|   25 |   16 |        -0.99996583929155 |
|   25 |   17 |           -1000000000000 |
|   25 |   18 | -2.7968335538198364e-308 |
|   26 |   13 |                        0 |
|   26 |   14 |                        0 |
|   26 |   15 |                        0 |
|   26 |   16 |                        0 |
|   26 |   17 |                        0 |
|   26 |   18 |                        0 |
|   27 |   13 |                        0 |
|   27 |   14 |                        0 |
|   27 |   15 |                      1.1 |
|   27 |   16 |                      1.1 |
|   27 |   17 |                      1.1 |
|   27 |   18 |    6.47175315876513e-309 |
|   28 |   13 |                        0 |
|   28 |   14 |                        0 |
|   28 |   15 |                     -1.1 |
|   28 |   16 |                     -1.1 |
|   28 |   17 |                     -1.1 |
|   28 |   18 |   -6.47175315876513e-309 |
|   29 |   13 |      0.19999999999999996 |
|   29 |   14 |      0.19999999999999996 |
|   29 |   15 |                        0 |
|   29 |   16 |                        0 |
|   29 |   17 |                      1.3 |
|   29 |   18 |   2.142857836287104e-308 |
|   30 |   13 |     -0.19999999999999996 |
|   30 |   14 |     -0.19999999999999996 |
|   30 |   15 |                        0 |
|   30 |   16 |                        0 |
|   30 |   17 |                     -1.3 |
|   30 |   18 |  -2.142857836287104e-308 |
|   31 |   13 |       0.9999192565073001 |
|   31 |   14 |       0.9999192565073001 |
|   31 |   15 |         0.99996583929155 |
|   31 |   16 |         0.99996583929155 |
|   31 |   17 |            1000000000000 |
|   31 |   18 |  2.7968335538198364e-308 |
|   32 |   13 |      -0.9999192565073001 |
|   32 |   14 |      -0.9999192565073001 |
|   32 |   15 |        -0.99996583929155 |
|   32 |   16 |        -0.99996583929155 |
|   32 |   17 |           -1000000000000 |
|   32 |   18 | -2.7968335538198364e-308 |
+------+------+--------------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(d18_a % d18_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+-----------+
| id_a | id_b | v         |
+------+------+-----------+
|   19 |   20 |  0.000000 |
|   19 |   21 |  0.000000 |
|   19 |   22 |  0.000000 |
|   19 |   23 |  0.000000 |
|   19 |   24 |  0.000000 |
|   19 |   25 |  0.000000 |
|   19 |   27 |  0.000000 |
|   19 |   28 |  0.000000 |
|   19 |   29 |  0.000000 |
|   19 |   30 |  0.000000 |
|   19 |   31 |  0.000000 |
|   19 |   32 |  0.000000 |
|   20 |   20 |  0.000000 |
|   20 |   21 |  0.000000 |
|   20 |   22 |  1.100000 |
|   20 |   23 |  1.100000 |
|   20 |   24 |  1.100000 |
|   20 |   25 |  1.100000 |
|   20 |   27 |  0.000000 |
|   20 |   28 |  0.000000 |
|   20 |   29 |  1.100000 |
|   20 |   30 |  1.100000 |
|   20 |   31 |  1.100000 |
|   20 |   32 |  1.100000 |
|   21 |   20 |  0.000000 |
|   21 |   21 |  0.000000 |
|   21 |   22 | -1.100000 |
|   21 |   23 | -1.100000 |
|   21 |   24 | -1.100000 |
|   21 |   25 | -1.100000 |
|   21 |   27 |  0.000000 |
|   21 |   28 |  0.000000 |
|   21 |   29 | -1.100000 |
|   21 |   30 | -1.100000 |
|   21 |   31 | -1.100000 |
|   21 |   32 | -1.100000 |
|   22 |   20 |  0.200000 |
|   22 |   21 |  0.200000 |
|   22 |   22 |  0.000000 |
|   22 |   23 |  0.000000 |
|   22 |   24 |  1.300000 |
|   22 |   25 |  1.300000 |
|   22 |   27 |  0.200000 |
|   22 |   28 |  0.200000 |
|   22 |   29 |  0.000000 |
|   22 |   30 |  0.000000 |
|   22 |   31 |  1.300000 |
|   22 |   32 |  1.300000 |
|   23 |   20 | -0.200000 |
|   23 |   21 | -0.200000 |
|   23 |   22 |  0.000000 |
|   23 |   23 |  0.000000 |
|   23 |   24 | -1.300000 |
|   23 |   25 | -1.300000 |
|   23 |   27 | -0.200000 |
|   23 |   28 | -0.200000 |
|   23 |   29 |  0.000000 |
|   23 |   30 |  0.000000 |
|   23 |   31 | -1.300000 |
|   23 |   32 | -1.300000 |
|   24 |   20 |  0.999999 |
|   24 |   21 |  0.999999 |
|   24 |   22 |  0.999999 |
|   24 |   23 |  0.999999 |
|   24 |   24 |  0.000000 |
|   24 |   25 |  0.000000 |
|   24 |   27 |  0.999999 |
|   24 |   28 |  0.999999 |
|   24 |   29 |  0.999999 |
|   24 |   30 |  0.999999 |
|   24 |   31 |  0.000000 |
|   24 |   32 |  0.000000 |
|   25 |   20 | -0.999999 |
|   25 |   21 | -0.999999 |
|   25 |   22 | -0.999999 |
|   25 |   23 | -0.999999 |
|   25 |   24 |  0.000000 |
|   25 |   25 |  0.000000 |
|   25 |   27 | -0.999999 |
|   25 |   28 | -0.999999 |
|   25 |   29 | -0.999999 |
|   25 |   30 | -0.999999 |
|   25 |   31 |  0.000000 |
|   25 |   32 |  0.000000 |
|   26 |   20 |  0.000000 |
|   26 |   21 |  0.000000 |
|   26 |   22 |  0.000000 |
|   26 |   23 |  0.000000 |
|   26 |   24 |  0.000000 |
|   26 |   25 |  0.000000 |
|   26 |   27 |  0.000000 |
|   26 |   28 |  0.000000 |
|   26 |   29 |  0.000000 |
|   26 |   30 |  0.000000 |
|   26 |   31 |  0.000000 |
|   26 |   32 |  0.000000 |
|   27 |   20 |  0.000000 |
|   27 |   21 |  0.000000 |
|   27 |   22 |  1.100000 |
|   27 |   23 |  1.100000 |
|   27 |   24 |  1.100000 |
|   27 |   25 |  1.100000 |
|   27 |   27 |  0.000000 |
|   27 |   28 |  0.000000 |
|   27 |   29 |  1.100000 |
|   27 |   30 |  1.100000 |
|   27 |   31 |  1.100000 |
|   27 |   32 |  1.100000 |
|   28 |   20 |  0.000000 |
|   28 |   21 |  0.000000 |
|   28 |   22 | -1.100000 |
|   28 |   23 | -1.100000 |
|   28 |   24 | -1.100000 |
|   28 |   25 | -1.100000 |
|   28 |   27 |  0.000000 |
|   28 |   28 |  0.000000 |
|   28 |   29 | -1.100000 |
|   28 |   30 | -1.100000 |
|   28 |   31 | -1.100000 |
|   28 |   32 | -1.100000 |
|   29 |   20 |  0.200000 |
|   29 |   21 |  0.200000 |
|   29 |   22 |  0.000000 |
|   29 |   23 |  0.000000 |
|   29 |   24 |  1.300000 |
|   29 |   25 |  1.300000 |
|   29 |   27 |  0.200000 |
|   29 |   28 |  0.200000 |
|   29 |   29 |  0.000000 |
|   29 |   30 |  0.000000 |
|   29 |   31 |  1.300000 |
|   29 |   32 |  1.300000 |
|   30 |   20 | -0.200000 |
|   30 |   21 | -0.200000 |
|   30 |   22 |  0.000000 |
|   30 |   23 |  0.000000 |
|   30 |   24 | -1.300000 |
|   30 |   25 | -1.300000 |
|   30 |   27 | -0.200000 |
|   30 |   28 | -0.200000 |
|   30 |   29 |  0.000000 |
|   30 |   30 |  0.000000 |
|   30 |   31 | -1.300000 |
|   30 |   32 | -1.300000 |
|   31 |   20 |  0.999999 |
|   31 |   21 |  0.999999 |
|   31 |   22 |  0.999999 |
|   31 |   23 |  0.999999 |
|   31 |   24 |  0.000000 |
|   31 |   25 |  0.000000 |
|   31 |   27 |  0.999999 |
|   31 |   28 |  0.999999 |
|   31 |   29 |  0.999999 |
|   31 |   30 |  0.999999 |
|   31 |   31 |  0.000000 |
|   31 |   32 |  0.000000 |
|   32 |   20 | -0.999999 |
|   32 |   21 | -0.999999 |
|   32 |   22 | -0.999999 |
|   32 |   23 | -0.999999 |
|   32 |   24 |  0.000000 |
|   32 |   25 |  0.000000 |
|   32 |   27 | -0.999999 |
|   32 |   28 | -0.999999 |
|   32 |   29 | -0.999999 |
|   32 |   30 | -0.999999 |
|   32 |   31 |  0.000000 |
|   32 |   32 |  0.000000 |
+------+------+-----------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(d18_a % d65_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+------------------------------------+
| id_a | id_b | v                                  |
+------+------+------------------------------------+
|   19 |   34 |             0.00000000000000000000 |
|   19 |   35 |             0.00000000000000000000 |
|   19 |   36 |             0.00000000000000000000 |
|   19 |   37 |             0.00000000000000000000 |
|   19 |   38 |             0.00000000000000000000 |
|   19 |   39 |             0.00000000000000000000 |
|   20 |   34 |             0.00000000000000000000 |
|   20 |   35 |             0.00000000000000000000 |
|   20 |   36 |             1.10000000000000000000 |
|   20 |   37 |             1.10000000000000000000 |
|   20 |   38 |             1.10000000000000000000 |
|   20 |   39 |             1.10000000000000000000 |
|   21 |   34 |             0.00000000000000000000 |
|   21 |   35 |             0.00000000000000000000 |
|   21 |   36 |            -1.10000000000000000000 |
|   21 |   37 |            -1.10000000000000000000 |
|   21 |   38 |            -1.10000000000000000000 |
|   21 |   39 |            -1.10000000000000000000 |
|   22 |   34 |             0.20000000000000000000 |
|   22 |   35 |             0.20000000000000000000 |
|   22 |   36 |             0.00000000000000000000 |
|   22 |   37 |             0.00000000000000000000 |
|   22 |   38 |             1.30000000000000000000 |
|   22 |   39 |             1.30000000000000000000 |
|   23 |   34 |            -0.20000000000000000000 |
|   23 |   35 |            -0.20000000000000000000 |
|   23 |   36 |             0.00000000000000000000 |
|   23 |   37 |             0.00000000000000000000 |
|   23 |   38 |            -1.30000000000000000000 |
|   23 |   39 |            -1.30000000000000000000 |
|   24 |   34 |             0.99999900000000000000 |
|   24 |   35 |             0.99999900000000000000 |
|   24 |   36 |             0.99999900000000000000 |
|   24 |   37 |             0.99999900000000000000 |
|   24 |   38 |  999999999999.99999900000000000000 |
|   24 |   39 |  999999999999.99999900000000000000 |
|   25 |   34 |            -0.99999900000000000000 |
|   25 |   35 |            -0.99999900000000000000 |
|   25 |   36 |            -0.99999900000000000000 |
|   25 |   37 |            -0.99999900000000000000 |
|   25 |   38 | -999999999999.99999900000000000000 |
|   25 |   39 | -999999999999.99999900000000000000 |
|   26 |   34 |             0.00000000000000000000 |
|   26 |   35 |             0.00000000000000000000 |
|   26 |   36 |             0.00000000000000000000 |
|   26 |   37 |             0.00000000000000000000 |
|   26 |   38 |             0.00000000000000000000 |
|   26 |   39 |             0.00000000000000000000 |
|   27 |   34 |             0.00000000000000000000 |
|   27 |   35 |             0.00000000000000000000 |
|   27 |   36 |             1.10000000000000000000 |
|   27 |   37 |             1.10000000000000000000 |
|   27 |   38 |             1.10000000000000000000 |
|   27 |   39 |             1.10000000000000000000 |
|   28 |   34 |             0.00000000000000000000 |
|   28 |   35 |             0.00000000000000000000 |
|   28 |   36 |            -1.10000000000000000000 |
|   28 |   37 |            -1.10000000000000000000 |
|   28 |   38 |            -1.10000000000000000000 |
|   28 |   39 |            -1.10000000000000000000 |
|   29 |   34 |             0.20000000000000000000 |
|   29 |   35 |             0.20000000000000000000 |
|   29 |   36 |             0.00000000000000000000 |
|   29 |   37 |             0.00000000000000000000 |
|   29 |   38 |             1.30000000000000000000 |
|   29 |   39 |             1.30000000000000000000 |
|   30 |   34 |            -0.20000000000000000000 |
|   30 |   35 |            -0.20000000000000000000 |
|   30 |   36 |             0.00000000000000000000 |
|   30 |   37 |             0.00000000000000000000 |
|   30 |   38 |            -1.30000000000000000000 |
|   30 |   39 |            -1.30000000000000000000 |
|   31 |   34 |             0.99999900000000000000 |
|   31 |   35 |             0.99999900000000000000 |
|   31 |   36 |             0.99999900000000000000 |
|   31 |   37 |             0.99999900000000000000 |
|   31 |   38 |  999999999999.99999900000000000000 |
|   31 |   39 |  999999999999.99999900000000000000 |
|   32 |   34 |            -0.99999900000000000000 |
|   32 |   35 |            -0.99999900000000000000 |
|   32 |   36 |            -0.99999900000000000000 |
|   32 |   37 |            -0.99999900000000000000 |
|   32 |   38 | -999999999999.99999900000000000000 |
|   32 |   39 | -999999999999.99999900000000000000 |
+------+------+------------------------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(d65_a % i64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+-------------------------------------------+
| id_a | id_b | v                                         |
+------+------+-------------------------------------------+
|   33 |    2 |                    0.00000000000000000000 |
|   33 |    3 |                    0.00000000000000000000 |
|   33 |    4 |                    0.00000000000000000000 |
|   33 |    5 |                    0.00000000000000000000 |
|   33 |    6 |                    0.00000000000000000000 |
|   33 |    7 |                    0.00000000000000000000 |
|   34 |    2 |                    1.10000000000000000000 |
|   34 |    3 |                    1.10000000000000000000 |
|   34 |    4 |                    1.10000000000000000000 |
|   34 |    5 |                    1.10000000000000000000 |
|   34 |    6 |                    1.10000000000000000000 |
|   34 |    7 |                    1.10000000000000000000 |
|   35 |    2 |                   -1.10000000000000000000 |
|   35 |    3 |                   -1.10000000000000000000 |
|   35 |    4 |                   -1.10000000000000000000 |
|   35 |    5 |                   -1.10000000000000000000 |
|   35 |    6 |                   -1.10000000000000000000 |
|   35 |    7 |                   -1.10000000000000000000 |
|   36 |    2 |                    1.30000000000000000000 |
|   36 |    3 |                    1.30000000000000000000 |
|   36 |    4 |                    1.30000000000000000000 |
|   36 |    5 |                    1.30000000000000000000 |
|   36 |    6 |                    1.30000000000000000000 |
|   36 |    7 |                    1.30000000000000000000 |
|   37 |    2 |                   -1.30000000000000000000 |
|   37 |    3 |                   -1.30000000000000000000 |
|   37 |    4 |                   -1.30000000000000000000 |
|   37 |    5 |                   -1.30000000000000000000 |
|   37 |    6 |                   -1.30000000000000000000 |
|   37 |    7 |                   -1.30000000000000000000 |
|   38 |    2 |                    4.99999999999999999999 |
|   38 |    3 |                    4.99999999999999999999 |
|   38 |    4 |                    0.99999999999999999999 |
|   38 |    5 |                    0.99999999999999999999 |
|   38 |    6 |  5489908259997495038.99999999999999999999 |
|   38 |    7 |   802379605485813759.99999999999999999999 |
|   39 |    2 |                   -4.99999999999999999999 |
|   39 |    3 |                   -4.99999999999999999999 |
|   39 |    4 |                   -0.99999999999999999999 |
|   39 |    5 |                   -0.99999999999999999999 |
|   39 |    6 | -5489908259997495038.99999999999999999999 |
|   39 |    7 |  -802379605485813759.99999999999999999999 |
+------+------+-------------------------------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(d65_a % u64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+--------------------------------------------+
| id_a | id_b | v                                          |
+------+------+--------------------------------------------+
|   33 |    9 |                     0.00000000000000000000 |
|   33 |   10 |                     0.00000000000000000000 |
|   33 |   11 |                     0.00000000000000000000 |
|   34 |    9 |                     1.10000000000000000000 |
|   34 |   10 |                     1.10000000000000000000 |
|   34 |   11 |                     1.10000000000000000000 |
|   35 |    9 |                    -1.10000000000000000000 |
|   35 |   10 |                    -1.10000000000000000000 |
|   35 |   11 |                    -1.10000000000000000000 |
|   36 |    9 |                     1.30000000000000000000 |
|   36 |   10 |                     1.30000000000000000000 |
|   36 |   11 |                     1.30000000000000000000 |
|   37 |    9 |                    -1.30000000000000000000 |
|   37 |   10 |                    -1.30000000000000000000 |
|   37 |   11 |                    -1.30000000000000000000 |
|   38 |    9 |                     4.99999999999999999999 |
|   38 |   10 |                     0.99999999999999999999 |
|   38 |   11 |  16981201988020879374.99999999999999999999 |
|   39 |    9 |                    -4.99999999999999999999 |
|   39 |   10 |                    -0.99999999999999999999 |
|   39 |   11 | -16981201988020879374.99999999999999999999 |
+------+------+--------------------------------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(d65_a % f64_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+--------------------------+
| id_a | id_b | v                        |
+------+------+--------------------------+
|   33 |   13 |                        0 |
|   33 |   14 |                        0 |
|   33 |   15 |                        0 |
|   33 |   16 |                        0 |
|   33 |   17 |                        0 |
|   33 |   18 |                        0 |
|   34 |   13 |                        0 |
|   34 |   14 |                        0 |
|   34 |   15 |                      1.1 |
|   34 |   16 |                      1.1 |
|   34 |   17 |                      1.1 |
|   34 |   18 |    6.47175315876513e-309 |
|   35 |   13 |                        0 |
|   35 |   14 |                        0 |
|   35 |   15 |                     -1.1 |
|   35 |   16 |                     -1.1 |
|   35 |   17 |                     -1.1 |
|   35 |   18 |   -6.47175315876513e-309 |
|   36 |   13 |      0.19999999999999996 |
|   36 |   14 |      0.19999999999999996 |
|   36 |   15 |                        0 |
|   36 |   16 |                        0 |
|   36 |   17 |                      1.3 |
|   36 |   18 |   2.142857836287104e-308 |
|   37 |   13 |     -0.19999999999999996 |
|   37 |   14 |     -0.19999999999999996 |
|   37 |   15 |                        0 |
|   37 |   16 |                        0 |
|   37 |   17 |                     -1.3 |
|   37 |   18 |  -2.142857836287104e-308 |
|   38 |   13 |       0.1362504513657683 |
|   38 |   14 |       0.1362504513657683 |
|   38 |   15 |       0.5688210827701319 |
|   38 |   16 |       0.5688210827701319 |
|   38 |   17 |                     1e45 |
|   38 |   18 |  1.4241984164224353e-308 |
|   39 |   13 |      -0.1362504513657683 |
|   39 |   14 |      -0.1362504513657683 |
|   39 |   15 |      -0.5688210827701319 |
|   39 |   16 |      -0.5688210827701319 |
|   39 |   17 |                    -1e45 |
|   39 |   18 | -1.4241984164224353e-308 |
+------+------+--------------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(d65_a % d18_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+---------------------------------+
| id_a | id_b | v                               |
+------+------+---------------------------------+
|   33 |   20 |          0.00000000000000000000 |
|   33 |   21 |          0.00000000000000000000 |
|   33 |   22 |          0.00000000000000000000 |
|   33 |   23 |          0.00000000000000000000 |
|   33 |   24 |          0.00000000000000000000 |
|   33 |   25 |          0.00000000000000000000 |
|   33 |   27 |          0.00000000000000000000 |
|   33 |   28 |          0.00000000000000000000 |
|   33 |   29 |          0.00000000000000000000 |
|   33 |   30 |          0.00000000000000000000 |
|   33 |   31 |          0.00000000000000000000 |
|   33 |   32 |          0.00000000000000000000 |
|   34 |   20 |          0.00000000000000000000 |
|   34 |   21 |          0.00000000000000000000 |
|   34 |   22 |          1.10000000000000000000 |
|   34 |   23 |          1.10000000000000000000 |
|   34 |   24 |          1.10000000000000000000 |
|   34 |   25 |          1.10000000000000000000 |
|   34 |   27 |          0.00000000000000000000 |
|   34 |   28 |          0.00000000000000000000 |
|   34 |   29 |          1.10000000000000000000 |
|   34 |   30 |          1.10000000000000000000 |
|   34 |   31 |          1.10000000000000000000 |
|   34 |   32 |          1.10000000000000000000 |
|   35 |   20 |          0.00000000000000000000 |
|   35 |   21 |          0.00000000000000000000 |
|   35 |   22 |         -1.10000000000000000000 |
|   35 |   23 |         -1.10000000000000000000 |
|   35 |   24 |         -1.10000000000000000000 |
|   35 |   25 |         -1.10000000000000000000 |
|   35 |   27 |          0.00000000000000000000 |
|   35 |   28 |          0.00000000000000000000 |
|   35 |   29 |         -1.10000000000000000000 |
|   35 |   30 |         -1.10000000000000000000 |
|   35 |   31 |         -1.10000000000000000000 |
|   35 |   32 |         -1.10000000000000000000 |
|   36 |   20 |          0.20000000000000000000 |
|   36 |   21 |          0.20000000000000000000 |
|   36 |   22 |          0.00000000000000000000 |
|   36 |   23 |          0.00000000000000000000 |
|   36 |   24 |          1.30000000000000000000 |
|   36 |   25 |          1.30000000000000000000 |
|   36 |   27 |          0.20000000000000000000 |
|   36 |   28 |          0.20000000000000000000 |
|   36 |   29 |          0.00000000000000000000 |
|   36 |   30 |          0.00000000000000000000 |
|   36 |   31 |          1.30000000000000000000 |
|   36 |   32 |          1.30000000000000000000 |
|   37 |   20 |         -0.20000000000000000000 |
|   37 |   21 |         -0.20000000000000000000 |
|   37 |   22 |          0.00000000000000000000 |
|   37 |   23 |          0.00000000000000000000 |
|   37 |   24 |         -1.30000000000000000000 |
|   37 |   25 |         -1.30000000000000000000 |
|   37 |   27 |         -0.20000000000000000000 |
|   37 |   28 |         -0.20000000000000000000 |
|   37 |   29 |          0.00000000000000000000 |
|   37 |   30 |          0.00000000000000000000 |
|   37 |   31 |         -1.30000000000000000000 |
|   37 |   32 |         -1.30000000000000000000 |
|   38 |   20 |          0.09999999999999999999 |
|   38 |   21 |          0.09999999999999999999 |
|   38 |   22 |          0.29999999999999999999 |
|   38 |   23 |          0.29999999999999999999 |
|   38 |   24 |  999999999.99999999999999999999 |
|   38 |   25 |  999999999.99999999999999999999 |
|   38 |   27 |          0.09999999999999999999 |
|   38 |   28 |          0.09999999999999999999 |
|   38 |   29 |          0.29999999999999999999 |
|   38 |   30 |          0.29999999999999999999 |
|   38 |   31 |  999999999.99999999999999999999 |
|   38 |   32 |  999999999.99999999999999999999 |
|   39 |   20 |         -0.09999999999999999999 |
|   39 |   21 |         -0.09999999999999999999 |
|   39 |   22 |         -0.29999999999999999999 |
|   39 |   23 |         -0.29999999999999999999 |
|   39 |   24 | -999999999.99999999999999999999 |
|   39 |   25 | -999999999.99999999999999999999 |
|   39 |   27 |         -0.09999999999999999999 |
|   39 |   28 |         -0.09999999999999999999 |
|   39 |   29 |         -0.29999999999999999999 |
|   39 |   30 |         -0.29999999999999999999 |
|   39 |   31 | -999999999.99999999999999999999 |
|   39 |   32 | -999999999.99999999999999999999 |
+------+------+---------------------------------+

mysql> set @@session.tidb_isolation_read_engines="tiflash"; select id_a, id_b, sum(d65_a % d65_b) as v from test.t0 group by id_a, id_b having v is not null order by id_a, id_b
+------+------+-------------------------+
| id_a | id_b | v                       |
+------+------+-------------------------+
|   33 |   34 |  0.00000000000000000000 |
|   33 |   35 |  0.00000000000000000000 |
|   33 |   36 |  0.00000000000000000000 |
|   33 |   37 |  0.00000000000000000000 |
|   33 |   38 |  0.00000000000000000000 |
|   33 |   39 |  0.00000000000000000000 |
|   34 |   34 |  0.00000000000000000000 |
|   34 |   35 |  0.00000000000000000000 |
|   34 |   36 |  1.10000000000000000000 |
|   34 |   37 |  1.10000000000000000000 |
|   34 |   38 |  1.10000000000000000000 |
|   34 |   39 |  1.10000000000000000000 |
|   35 |   34 |  0.00000000000000000000 |
|   35 |   35 |  0.00000000000000000000 |
|   35 |   36 | -1.10000000000000000000 |
|   35 |   37 | -1.10000000000000000000 |
|   35 |   38 | -1.10000000000000000000 |
|   35 |   39 | -1.10000000000000000000 |
|   36 |   34 |  0.20000000000000000000 |
|   36 |   35 |  0.20000000000000000000 |
|   36 |   36 |  0.00000000000000000000 |
|   36 |   37 |  0.00000000000000000000 |
|   36 |   38 |  1.30000000000000000000 |
|   36 |   39 |  1.30000000000000000000 |
|   37 |   34 | -0.20000000000000000000 |
|   37 |   35 | -0.20000000000000000000 |
|   37 |   36 |  0.00000000000000000000 |
|   37 |   37 |  0.00000000000000000000 |
|   37 |   38 | -1.30000000000000000000 |
|   37 |   39 | -1.30000000000000000000 |
|   38 |   34 |  0.09999999999999999999 |
|   38 |   35 |  0.09999999999999999999 |
|   38 |   36 |  0.29999999999999999999 |
|   38 |   37 |  0.29999999999999999999 |
|   38 |   38 |  0.00000000000000000000 |
|   38 |   39 |  0.00000000000000000000 |
|   39 |   34 | -0.09999999999999999999 |
|   39 |   35 | -0.09999999999999999999 |
|   39 |   36 | -0.29999999999999999999 |
|   39 |   37 | -0.29999999999999999999 |
|   39 |   38 |  0.00000000000000000000 |
|   39 |   39 |  0.00000000000000000000 |
+------+------+-------------------------+
