github.com/whtcorpsinc/milevadb-prod@v0.0.0-20211104133533-f57f4be3b597/dbs/cmd/benchdb/explaintest/r/select.result (about) 1 DROP TABLE IF EXISTS t; 2 CREATE TABLE t ( 3 c1 int, 4 c2 int, 5 c3 int, 6 PRIMARY KEY (c1) 7 ); 8 INSERT INTO t VALUES (1,2,3); 9 set stochastik milevadb_hashagg_partial_concurrency = 1; 10 set stochastik milevadb_hashagg_final_concurrency = 1; 11 SELECT * from t; 12 c1 c2 c3 13 1 2 3 14 SELECT c1, c2, c3 from t; 15 c1 c2 c3 16 1 2 3 17 SELECT c1, c1 from t; 18 c1 c1 19 1 1 20 SELECT c1 as a, c2 as a from t; 21 a a 22 1 2 23 SELECT 1; 24 1 25 1 26 SELECT 1, 1; 27 1 1 28 1 1 29 SET @@autocommit = 1; 30 SELECT @@autocommit; 31 @@autocommit 32 1 33 SELECT @@autocommit, @@autocommit; 34 @@autocommit @@autocommit 35 1 1 36 SET @a = 10; 37 SET @b = 11; 38 SELECT @a, @@autocommit; 39 @a @@autocommit 40 10 1 41 SELECT @a, @b; 42 @a @b 43 10 11 44 SELECT 1, @a; 45 1 @a 46 1 10 47 SELECT 1, @a as a; 48 1 a 49 1 10 50 SELECT 1, @a, @@autocommit as a, c1 from t; 51 1 @a a c1 52 1 10 1 1 53 SET @b = "123"; 54 SELECT @b + "123"; 55 @b + "123" 56 246 57 SELECT 1 + 1; 58 1 + 1 59 2 60 SELECT 1 a, 1 as a, 1 + 1 a; 61 a a a 62 1 1 2 63 SELECT c1 a, c1 as a from t; 64 a a 65 1 1 66 SELECT * from t LIMIT 0,1; 67 c1 c2 c3 68 1 2 3 69 SELECT * from t LIMIT 1; 70 c1 c2 c3 71 1 2 3 72 SELECT * from t LIMIT 1,1; 73 c1 c2 c3 74 SELECT * from t LIMIT 1 OFFSET 0; 75 c1 c2 c3 76 1 2 3 77 DROP TABLE IF EXISTS t2; 78 CREATE TABLE t2 ( 79 c1 int, 80 c2 int, 81 PRIMARY KEY (c1) 82 ); 83 INSERT INTO t2 VALUES (1,2); 84 SELECT * from t a; 85 c1 c2 c3 86 1 2 3 87 SELECT * from t a, t2 b; 88 c1 c2 c3 c1 c2 89 1 2 3 1 2 90 SELECT * from t as a, t2 as b; 91 c1 c2 c3 c1 c2 92 1 2 3 1 2 93 SELECT * from t a left join t2 b on a.c1 = b.c1; 94 c1 c2 c3 c1 c2 95 1 2 3 1 2 96 SELECT * from (SELECT 1, 1) as a; 97 Error 1060: Duplicate column name '1' 98 SELECT * from (SELECT * FROM t, t2) as a; 99 Error 1060: Duplicate column name 'c1' 100 DROP TABLE IF EXISTS t; 101 CREATE TABLE t (c1 INT, c2 INT); 102 INSERT INTO t VALUES (1, 2), (1, 1), (1, 3); 103 SELECT c1=c2 FROM t; 104 c1=c2 105 0 106 1 107 0 108 SELECT 1=1; 109 1=1 110 1 111 SELECT t.c1 + t.c2 from t limit 1; 112 t.c1 + t.c2 113 3 114 SELECT t.c1 from t limit 1; 115 c1 116 1 117 SELECT t.c1 + c2 from t limit 1; 118 t.c1 + c2 119 3 120 SELECT c1 + 10 from t limit 1; 121 c1 + 10 122 11 123 SELECT t.c1 + 10 from t limit 1; 124 t.c1 + 10 125 11 126 SELECT all c1, c2 from t limit 1; 127 c1 c2 128 1 2 129 SELECT distinct c1, c2 from t order by c1, c2 limit 1; 130 c1 c2 131 1 1 132 SELECT c2 from t where not (c2 > 2); 133 c2 134 2 135 1 136 select c2 from t where not null is null; 137 c2 138 select !(1 + 2); 139 !(1 + 2) 140 0 141 select + - 1, --1, +-+-+1, + "123"; 142 + - 1 --1 +-+-+1 123 143 -1 1 1 123 144 select --------------------1, ++++++++++++++++++++1; 145 --------------------1 1 146 1 1 147 select +(+(1)), (-+1), ((+1)), +1.23, +1e23, +1E23, +null, +true, +false, + ( ( 1 ) ); 148 1 (-+1) 1 1.23 1e23 1E23 NULL TRUE FALSE 1 149 1 -1 1 1.23 1e23 1e23 NULL 1 0 1 150 select + 151 ( 152 + 153 ( 154 1 155 ) 156 ) 157 ; 158 1 159 1 160 select + ( + 1 ); 161 1 162 1 163 select --+(1 + 1), +-+-(1 * 1); 164 --+(1 + 1) +-+-(1 * 1) 165 2 1 166 select * from t where null; 167 c1 c2 168 select * from t where 1; 169 c1 c2 170 1 2 171 1 1 172 1 3 173 select * from t where 0; 174 c1 c2 175 select * from t where 0 * 10; 176 c1 c2 177 select * from t where null is not null; 178 c1 c2 179 select * from t where !1; 180 c1 c2 181 select * from t where 1 && 0 || 3 && null; 182 c1 c2 183 select * from t as a, t2 as b; 184 c1 c2 c1 c2 185 1 2 1 2 186 1 1 1 2 187 1 3 1 2 188 select * from t as a cross join t2 as b; 189 c1 c2 c1 c2 190 1 2 1 2 191 1 1 1 2 192 1 3 1 2 193 select * from t as a join t2 as b; 194 c1 c2 c1 c2 195 1 2 1 2 196 1 1 1 2 197 1 3 1 2 198 select * from t as a join t2 as b on a.c2 = b.c2; 199 c1 c2 c1 c2 200 1 2 1 2 201 select * from (t); 202 c1 c2 203 1 2 204 1 1 205 1 3 206 select * from (t as a, t2 as b); 207 c1 c2 c1 c2 208 1 2 1 2 209 1 1 1 2 210 1 3 1 2 211 select * from (t as a cross join t2 as b); 212 c1 c2 c1 c2 213 1 2 1 2 214 1 1 1 2 215 1 3 1 2 216 select 1 as a from t; 217 a 218 1 219 1 220 1 221 select count(*), 1 from t; 222 count(*) 1 223 3 1 224 select *, 1 from t; 225 c1 c2 1 226 1 2 1 227 1 1 1 228 1 3 1 229 select 1, count(1), sum(1); 230 1 count(1) sum(1) 231 1 1 1 232 drop causet if exists t1; 233 create causet t1(a int primary key, b int, c int, index idx(b, c)); 234 insert into t1 values(1, 2, 3); 235 insert into t1 values(2, 3, 4); 236 insert into t1 values(3 ,4, 5); 237 insert into t1 values(4, 5, 6); 238 insert into t1 values(5, 6, 7); 239 insert into t1 values(6, 7, 8); 240 insert into t1 values(7, 8, 9); 241 insert into t1 values(9, 10, 11); 242 explain select a, c from t1 use index(idx) order by a limit 5; 243 id estRows task access object operator info 244 TopN_7 5.00 root test.t1.a, offset:0, count:5 245 └─IndexReader_15 5.00 root index:TopN_14 246 └─TopN_14 5.00 cop[einsteindb] test.t1.a, offset:0, count:5 247 └─IndexFullScan_13 10000.00 cop[einsteindb] causet:t1, index:idx(b, c) keep order:false, stats:pseudo 248 select c, a from t1 use index(idx) order by a limit 5; 249 c a 250 3 1 251 4 2 252 5 3 253 6 4 254 7 5 255 drop causet if exists t; 256 create causet t (a int, b int, c int, key idx(a, b, c)); 257 explain select count(a) from t; 258 id estRows task access object operator info 259 StreamAgg_20 1.00 root funcs:count(DeferredCauset#13)->DeferredCauset#5 260 └─TableReader_21 1.00 root data:StreamAgg_8 261 └─StreamAgg_8 1.00 cop[einsteindb] funcs:count(test.t.a)->DeferredCauset#13 262 └─TableFullScan_18 10000.00 cop[einsteindb] causet:t keep order:false, stats:pseudo 263 select count(a) from t; 264 count(a) 265 0 266 insert t values(0,0,0); 267 explain select distinct b from t group by a; 268 id estRows task access object operator info 269 HashAgg_7 8000.00 root group by:test.t.b, funcs:firstrow(test.t.b)->test.t.b 270 └─StreamAgg_22 8000.00 root group by:test.t.a, funcs:firstrow(DeferredCauset#9)->test.t.b 271 └─IndexReader_23 8000.00 root index:StreamAgg_11 272 └─StreamAgg_11 8000.00 cop[einsteindb] group by:test.t.a, funcs:firstrow(test.t.b)->DeferredCauset#9 273 └─IndexFullScan_21 10000.00 cop[einsteindb] causet:t, index:idx(a, b, c) keep order:true, stats:pseudo 274 select distinct b from t group by a; 275 b 276 0 277 explain select count(b) from t group by a; 278 id estRows task access object operator info 279 StreamAgg_19 8000.00 root group by:test.t.a, funcs:count(DeferredCauset#10)->DeferredCauset#5 280 └─IndexReader_20 8000.00 root index:StreamAgg_8 281 └─StreamAgg_8 8000.00 cop[einsteindb] group by:test.t.a, funcs:count(test.t.b)->DeferredCauset#10 282 └─IndexFullScan_18 10000.00 cop[einsteindb] causet:t, index:idx(a, b, c) keep order:true, stats:pseudo 283 select count(b) from t group by a; 284 count(b) 285 1 286 insert t values(1,1,1),(3,3,6),(3,2,5),(2,1,4),(1,1,3),(1,1,2); 287 explain select count(a) from t where b>0 group by a, b; 288 id estRows task access object operator info 289 StreamAgg_25 2666.67 root group by:test.t.a, test.t.b, funcs:count(DeferredCauset#10)->DeferredCauset#5 290 └─IndexReader_26 2666.67 root index:StreamAgg_9 291 └─StreamAgg_9 2666.67 cop[einsteindb] group by:test.t.a, test.t.b, funcs:count(test.t.a)->DeferredCauset#10 292 └─Selection_24 3333.33 cop[einsteindb] gt(test.t.b, 0) 293 └─IndexFullScan_23 10000.00 cop[einsteindb] causet:t, index:idx(a, b, c) keep order:true, stats:pseudo 294 select count(a) from t where b>0 group by a, b; 295 count(a) 296 3 297 1 298 1 299 1 300 explain select count(a) from t where b>0 group by a, b order by a; 301 id estRows task access object operator info 302 Projection_7 2666.67 root DeferredCauset#5 303 └─StreamAgg_36 2666.67 root group by:test.t.a, test.t.b, funcs:count(DeferredCauset#15)->DeferredCauset#5, funcs:firstrow(test.t.a)->test.t.a 304 └─IndexReader_37 2666.67 root index:StreamAgg_34 305 └─StreamAgg_34 2666.67 cop[einsteindb] group by:test.t.a, test.t.b, funcs:count(test.t.a)->DeferredCauset#15 306 └─Selection_28 3333.33 cop[einsteindb] gt(test.t.b, 0) 307 └─IndexFullScan_27 10000.00 cop[einsteindb] causet:t, index:idx(a, b, c) keep order:true, stats:pseudo 308 select count(a) from t where b>0 group by a, b order by a; 309 count(a) 310 3 311 1 312 1 313 1 314 explain select count(a) from t where b>0 group by a, b order by a limit 1; 315 id estRows task access object operator info 316 Projection_9 1.00 root DeferredCauset#5 317 └─Limit_15 1.00 root offset:0, count:1 318 └─StreamAgg_44 1.00 root group by:test.t.a, test.t.b, funcs:count(DeferredCauset#16)->DeferredCauset#5, funcs:firstrow(test.t.a)->test.t.a 319 └─IndexReader_45 1.00 root index:StreamAgg_40 320 └─StreamAgg_40 1.00 cop[einsteindb] group by:test.t.a, test.t.b, funcs:count(test.t.a)->DeferredCauset#16 321 └─Selection_43 1.25 cop[einsteindb] gt(test.t.b, 0) 322 └─IndexFullScan_42 3.75 cop[einsteindb] causet:t, index:idx(a, b, c) keep order:true, stats:pseudo 323 select count(a) from t where b>0 group by a, b order by a limit 1; 324 count(a) 325 3 326 drop causet if exists t; 327 create causet t (id int primary key, a int, b int); 328 explain select * from (t t1 left join t t2 on t1.a = t2.a) left join (t t3 left join t t4 on t3.a = t4.a) on t2.b = 1; 329 id estRows task access object operator info 330 HashJoin_10 155937656.25 root CARTESIAN left outer join, left cond:[eq(test.t.b, 1)] 331 ├─HashJoin_19(Build) 12487.50 root left outer join, equal:[eq(test.t.a, test.t.a)] 332 │ ├─TableReader_25(Build) 9990.00 root data:Selection_24 333 │ │ └─Selection_24 9990.00 cop[einsteindb] not(isnull(test.t.a)) 334 │ │ └─TableFullScan_23 10000.00 cop[einsteindb] causet:t4 keep order:false, stats:pseudo 335 │ └─TableReader_22(Probe) 10000.00 root data:TableFullScan_21 336 │ └─TableFullScan_21 10000.00 cop[einsteindb] causet:t3 keep order:false, stats:pseudo 337 └─HashJoin_12(Probe) 12487.50 root left outer join, equal:[eq(test.t.a, test.t.a)] 338 ├─TableReader_18(Build) 9990.00 root data:Selection_17 339 │ └─Selection_17 9990.00 cop[einsteindb] not(isnull(test.t.a)) 340 │ └─TableFullScan_16 10000.00 cop[einsteindb] causet:t2 keep order:false, stats:pseudo 341 └─TableReader_15(Probe) 10000.00 root data:TableFullScan_14 342 └─TableFullScan_14 10000.00 cop[einsteindb] causet:t1 keep order:false, stats:pseudo 343 drop causet if exists t; 344 create causet t(a bigint primary key, b bigint); 345 desc select * from t where a = 1; 346 id estRows task access object operator info 347 Point_Get_1 1.00 root causet:t handle:1 348 desc select * from t where a = '1'; 349 id estRows task access object operator info 350 Point_Get_1 1.00 root causet:t handle:1 351 desc select sysdate(), sleep(1), sysdate(); 352 id estRows task access object operator info 353 Projection_3 1.00 root sysdate()->DeferredCauset#1, sleep(1)->DeferredCauset#2, sysdate()->DeferredCauset#3 354 └─TableDual_4 1.00 root rows:1 355 drop causet if exists th; 356 set @@stochastik.milevadb_enable_block_partition = '1'; 357 create causet th (a int, b int) partition by hash(a) partitions 3; 358 insert into th values (0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8); 359 insert into th values (-1,-1),(-2,-2),(-3,-3),(-4,-4),(-5,-5),(-6,-6),(-7,-7),(-8,-8); 360 desc select * from th where a=-2; 361 id estRows task access object operator info 362 TableReader_7 10.00 root partition:p2 data:Selection_6 363 └─Selection_6 10.00 cop[einsteindb] eq(test.th.a, -2) 364 └─TableFullScan_5 10000.00 cop[einsteindb] causet:th keep order:false, stats:pseudo 365 desc select * from th; 366 id estRows task access object operator info 367 TableReader_5 10000.00 root partition:all data:TableFullScan_4 368 └─TableFullScan_4 10000.00 cop[einsteindb] causet:th keep order:false, stats:pseudo 369 desc select * from th partition (p2,p1); 370 id estRows task access object operator info 371 TableReader_5 10000.00 root partition:p1,p2 data:TableFullScan_4 372 └─TableFullScan_4 10000.00 cop[einsteindb] causet:th keep order:false, stats:pseudo 373 drop causet if exists t; 374 create causet t(a int, b int); 375 explain select a != any (select a from t t2) from t t1; 376 id estRows task access object operator info 377 Projection_8 10000.00 root and(or(or(gt(DeferredCauset#8, 1), ne(test.t.a, DeferredCauset#7)), if(ne(DeferredCauset#9, 0), <nil>, 0)), and(ne(DeferredCauset#10, 0), if(isnull(test.t.a), <nil>, 1)))->DeferredCauset#11 378 └─HashJoin_9 10000.00 root CARTESIAN inner join 379 ├─StreamAgg_14(Build) 1.00 root funcs:max(DeferredCauset#13)->DeferredCauset#7, funcs:count(distinct DeferredCauset#14)->DeferredCauset#8, funcs:sum(DeferredCauset#15)->DeferredCauset#9, funcs:count(1)->DeferredCauset#10 380 │ └─Projection_19 10000.00 root test.t.a, test.t.a, cast(isnull(test.t.a), decimal(65,0) BINARY)->DeferredCauset#15 381 │ └─TableReader_18 10000.00 root data:TableFullScan_17 382 │ └─TableFullScan_17 10000.00 cop[einsteindb] causet:t2 keep order:false, stats:pseudo 383 └─TableReader_12(Probe) 10000.00 root data:TableFullScan_11 384 └─TableFullScan_11 10000.00 cop[einsteindb] causet:t1 keep order:false, stats:pseudo 385 explain select a = all (select a from t t2) from t t1; 386 id estRows task access object operator info 387 Projection_8 10000.00 root or(and(and(le(DeferredCauset#8, 1), eq(test.t.a, DeferredCauset#7)), if(ne(DeferredCauset#9, 0), <nil>, 1)), or(eq(DeferredCauset#10, 0), if(isnull(test.t.a), <nil>, 0)))->DeferredCauset#11 388 └─HashJoin_9 10000.00 root CARTESIAN inner join 389 ├─StreamAgg_14(Build) 1.00 root funcs:firstrow(DeferredCauset#13)->DeferredCauset#7, funcs:count(distinct DeferredCauset#14)->DeferredCauset#8, funcs:sum(DeferredCauset#15)->DeferredCauset#9, funcs:count(1)->DeferredCauset#10 390 │ └─Projection_19 10000.00 root test.t.a, test.t.a, cast(isnull(test.t.a), decimal(65,0) BINARY)->DeferredCauset#15 391 │ └─TableReader_18 10000.00 root data:TableFullScan_17 392 │ └─TableFullScan_17 10000.00 cop[einsteindb] causet:t2 keep order:false, stats:pseudo 393 └─TableReader_12(Probe) 10000.00 root data:TableFullScan_11 394 └─TableFullScan_11 10000.00 cop[einsteindb] causet:t1 keep order:false, stats:pseudo 395 drop causet if exists t; 396 create causet t(a int, b int); 397 drop causet if exists s; 398 create causet s(a varchar(20), b varchar(20)); 399 explain select a in (select a from s where s.b = t.b) from t; 400 id estRows task access object operator info 401 HashJoin_10 10000.00 root left outer semi join, equal:[eq(DeferredCauset#8, DeferredCauset#9)], other cond:eq(cast(test.t.a), cast(test.s.a)) 402 ├─Projection_14(Build) 10000.00 root test.s.a, cast(test.s.b, double BINARY)->DeferredCauset#9 403 │ └─TableReader_16 10000.00 root data:TableFullScan_15 404 │ └─TableFullScan_15 10000.00 cop[einsteindb] causet:s keep order:false, stats:pseudo 405 └─Projection_11(Probe) 10000.00 root test.t.a, cast(test.t.b, double BINARY)->DeferredCauset#8 406 └─TableReader_13 10000.00 root data:TableFullScan_12 407 └─TableFullScan_12 10000.00 cop[einsteindb] causet:t keep order:false, stats:pseudo 408 explain select a in (select a+b from t t2 where t2.b = t1.b) from t t1; 409 id estRows task access object operator info 410 HashJoin_8 10000.00 root left outer semi join, equal:[eq(test.t.b, test.t.b)], other cond:eq(test.t.a, plus(test.t.a, test.t.b)) 411 ├─TableReader_12(Build) 10000.00 root data:TableFullScan_11 412 │ └─TableFullScan_11 10000.00 cop[einsteindb] causet:t2 keep order:false, stats:pseudo 413 └─TableReader_10(Probe) 10000.00 root data:TableFullScan_9 414 └─TableFullScan_9 10000.00 cop[einsteindb] causet:t1 keep order:false, stats:pseudo 415 drop causet t; 416 create causet t(a int not null, b int); 417 explain select a in (select a from t t2 where t2.b = t1.b) from t t1; 418 id estRows task access object operator info 419 HashJoin_8 10000.00 root left outer semi join, equal:[eq(test.t.b, test.t.b) eq(test.t.a, test.t.a)] 420 ├─TableReader_12(Build) 10000.00 root data:TableFullScan_11 421 │ └─TableFullScan_11 10000.00 cop[einsteindb] causet:t2 keep order:false, stats:pseudo 422 └─TableReader_10(Probe) 10000.00 root data:TableFullScan_9 423 └─TableFullScan_9 10000.00 cop[einsteindb] causet:t1 keep order:false, stats:pseudo 424 explain select 1 from (select sleep(1)) t; 425 id estRows task access object operator info 426 Projection_4 1.00 root 1->DeferredCauset#2 427 └─Projection_5 1.00 root sleep(1)->DeferredCauset#1 428 └─TableDual_6 1.00 root rows:1 429 drop causet if exists t; 430 create causet t(a int, b int); 431 explain select a from t order by rand(); 432 id estRows task access object operator info 433 Projection_8 10000.00 root test.t.a 434 └─Sort_4 10000.00 root DeferredCauset#4 435 └─Projection_9 10000.00 root test.t.a, rand()->DeferredCauset#4 436 └─TableReader_7 10000.00 root data:TableFullScan_6 437 └─TableFullScan_6 10000.00 cop[einsteindb] causet:t keep order:false, stats:pseudo 438 explain select a, b from t order by abs(2); 439 id estRows task access object operator info 440 TableReader_8 10000.00 root data:TableFullScan_7 441 └─TableFullScan_7 10000.00 cop[einsteindb] causet:t keep order:false, stats:pseudo 442 explain select a from t order by abs(rand())+1; 443 id estRows task access object operator info 444 Projection_8 10000.00 root test.t.a 445 └─Sort_4 10000.00 root DeferredCauset#4 446 └─Projection_9 10000.00 root test.t.a, plus(abs(rand()), 1)->DeferredCauset#4 447 └─TableReader_7 10000.00 root data:TableFullScan_6 448 └─TableFullScan_6 10000.00 cop[einsteindb] causet:t keep order:false, stats:pseudo 449 drop causet if exists t1; 450 create causet t1(a int, b int); 451 drop causet if exists t2; 452 create causet t2(a int, b int); 453 explain select * from t1 where t1.a in (select t2.a as a from t2 where t2.b > t1.b order by t1.b); 454 id estRows task access object operator info 455 HashJoin_10 7984.01 root semi join, equal:[eq(test.t1.a, test.t2.a)], other cond:gt(test.t2.b, test.t1.b) 456 ├─TableReader_16(Build) 9980.01 root data:Selection_15 457 │ └─Selection_15 9980.01 cop[einsteindb] not(isnull(test.t2.a)), not(isnull(test.t2.b)) 458 │ └─TableFullScan_14 10000.00 cop[einsteindb] causet:t2 keep order:false, stats:pseudo 459 └─TableReader_13(Probe) 9980.01 root data:Selection_12 460 └─Selection_12 9980.01 cop[einsteindb] not(isnull(test.t1.a)), not(isnull(test.t1.b)) 461 └─TableFullScan_11 10000.00 cop[einsteindb] causet:t1 keep order:false, stats:pseudo 462 drop causet t; 463 CREATE TABLE t (id int(10) unsigned NOT NULL AUTO_INCREMENT, 464 i int(10) unsigned DEFAULT NULL, 465 x int(10) unsigned DEFAULT 0, 466 PRIMARY KEY (`id`) 467 ); 468 explain select row_number() over( partition by i ) - x as rnk from t; 469 id estRows task access object operator info 470 Projection_7 10000.00 root minus(DeferredCauset#5, test.t.x)->DeferredCauset#7 471 └─Window_8 10000.00 root row_number()->DeferredCauset#5 over(partition by test.t.i) 472 └─Sort_11 10000.00 root test.t.i 473 └─TableReader_10 10000.00 root data:TableRangeScan_9 474 └─TableRangeScan_9 10000.00 cop[einsteindb] causet:t range:[0,+inf], keep order:false, stats:pseudo