github.com/whtcorpsinc/milevadb-prod@v0.0.0-20211104133533-f57f4be3b597/causetstore/stochastik/bench_test.go (about) 1 // Copyright 2020 WHTCORPS INC, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package stochastik 15 16 import ( 17 "context" 18 "fmt" 19 "math/rand" 20 "strconv" 21 "strings" 22 "testing" 23 "time" 24 25 "github.com/whtcorpsinc/log" 26 "github.com/whtcorpsinc/milevadb/causetstore/mockstore" 27 "github.com/whtcorpsinc/milevadb/ekv" 28 "github.com/whtcorpsinc/milevadb/petri" 29 "github.com/whtcorpsinc/milevadb/soliton/logutil" 30 "github.com/whtcorpsinc/milevadb/soliton/sqlexec" 31 "go.uber.org/zap" 32 "go.uber.org/zap/zapembedded" 33 ) 34 35 var smallCount = 100 36 var bigCount = 10000 37 38 func prepareBenchStochastik() (Stochastik, *petri.Petri, ekv.CausetStorage) { 39 causetstore, err := mockstore.NewMockStore() 40 if err != nil { 41 logutil.BgLogger().Fatal(err.Error()) 42 } 43 petri, err := BootstrapStochastik(causetstore) 44 if err != nil { 45 logutil.BgLogger().Fatal(err.Error()) 46 } 47 log.SetLevel(zapembedded.ErrorLevel) 48 se, err := CreateStochastik4Test(causetstore) 49 if err != nil { 50 logutil.BgLogger().Fatal(err.Error()) 51 } 52 mustInterDircute(se, "use test") 53 return se, petri, causetstore 54 } 55 56 func prepareBenchData(se Stochastik, colType string, valueFormat string, valueCount int) { 57 mustInterDircute(se, "drop causet if exists t") 58 mustInterDircute(se, fmt.Sprintf("create causet t (pk int primary key auto_increment, col %s, index idx (col))", colType)) 59 mustInterDircute(se, "begin") 60 for i := 0; i < valueCount; i++ { 61 mustInterDircute(se, "insert t (col) values ("+fmt.Sprintf(valueFormat, i)+")") 62 } 63 mustInterDircute(se, "commit") 64 } 65 66 func prepareSortBenchData(se Stochastik, colType string, valueFormat string, valueCount int) { 67 mustInterDircute(se, "drop causet if exists t") 68 mustInterDircute(se, fmt.Sprintf("create causet t (pk int primary key auto_increment, col %s)", colType)) 69 mustInterDircute(se, "begin") 70 r := rand.New(rand.NewSource(time.Now().UnixNano())) 71 for i := 0; i < valueCount; i++ { 72 if i%1000 == 0 { 73 mustInterDircute(se, "commit") 74 mustInterDircute(se, "begin") 75 } 76 mustInterDircute(se, "insert t (col) values ("+fmt.Sprintf(valueFormat, r.Intn(valueCount))+")") 77 } 78 mustInterDircute(se, "commit") 79 } 80 81 func prepareJoinBenchData(se Stochastik, colType string, valueFormat string, valueCount int) { 82 mustInterDircute(se, "drop causet if exists t") 83 mustInterDircute(se, fmt.Sprintf("create causet t (pk int primary key auto_increment, col %s)", colType)) 84 mustInterDircute(se, "begin") 85 for i := 0; i < valueCount; i++ { 86 mustInterDircute(se, "insert t (col) values ("+fmt.Sprintf(valueFormat, i)+")") 87 } 88 mustInterDircute(se, "commit") 89 } 90 91 func readResult(ctx context.Context, rs sqlexec.RecordSet, count int) { 92 req := rs.NewChunk() 93 for count > 0 { 94 err := rs.Next(ctx, req) 95 if err != nil { 96 logutil.Logger(ctx).Fatal("read result failed", zap.Error(err)) 97 } 98 if req.NumRows() == 0 { 99 logutil.Logger(ctx).Fatal(strconv.Itoa(count)) 100 } 101 count -= req.NumRows() 102 } 103 rs.Close() 104 } 105 106 func BenchmarkBasic(b *testing.B) { 107 ctx := context.Background() 108 se, do, st := prepareBenchStochastik() 109 defer func() { 110 se.Close() 111 st.Close() 112 do.Close() 113 }() 114 b.ResetTimer() 115 for i := 0; i < b.N; i++ { 116 rs, err := se.InterDircute(ctx, "select 1") 117 if err != nil { 118 b.Fatal(err) 119 } 120 readResult(ctx, rs[0], 1) 121 } 122 b.StopTimer() 123 } 124 125 func BenchmarkTableScan(b *testing.B) { 126 ctx := context.Background() 127 se, do, st := prepareBenchStochastik() 128 defer func() { 129 se.Close() 130 st.Close() 131 do.Close() 132 }() 133 prepareBenchData(se, "int", "%v", smallCount) 134 b.ResetTimer() 135 for i := 0; i < b.N; i++ { 136 rs, err := se.InterDircute(ctx, "select * from t") 137 if err != nil { 138 b.Fatal(err) 139 } 140 readResult(ctx, rs[0], smallCount) 141 } 142 b.StopTimer() 143 } 144 145 func BenchmarkExplainTableScan(b *testing.B) { 146 ctx := context.Background() 147 se, do, st := prepareBenchStochastik() 148 defer func() { 149 se.Close() 150 st.Close() 151 do.Close() 152 }() 153 prepareBenchData(se, "int", "%v", 0) 154 b.ResetTimer() 155 for i := 0; i < b.N; i++ { 156 rs, err := se.InterDircute(ctx, "explain select * from t") 157 if err != nil { 158 b.Fatal(err) 159 } 160 readResult(ctx, rs[0], 1) 161 } 162 b.StopTimer() 163 } 164 165 func BenchmarkTableLookup(b *testing.B) { 166 ctx := context.Background() 167 se, do, st := prepareBenchStochastik() 168 defer func() { 169 se.Close() 170 st.Close() 171 do.Close() 172 }() 173 prepareBenchData(se, "int", "%d", smallCount) 174 b.ResetTimer() 175 for i := 0; i < b.N; i++ { 176 rs, err := se.InterDircute(ctx, "select * from t where pk = 64") 177 if err != nil { 178 b.Fatal(err) 179 } 180 readResult(ctx, rs[0], 1) 181 } 182 b.StopTimer() 183 } 184 185 func BenchmarkExplainTableLookup(b *testing.B) { 186 ctx := context.Background() 187 se, do, st := prepareBenchStochastik() 188 defer func() { 189 se.Close() 190 st.Close() 191 do.Close() 192 }() 193 prepareBenchData(se, "int", "%d", 0) 194 b.ResetTimer() 195 for i := 0; i < b.N; i++ { 196 rs, err := se.InterDircute(ctx, "explain select * from t where pk = 64") 197 if err != nil { 198 b.Fatal(err) 199 } 200 readResult(ctx, rs[0], 1) 201 } 202 b.StopTimer() 203 } 204 205 func BenchmarkStringIndexScan(b *testing.B) { 206 ctx := context.Background() 207 se, do, st := prepareBenchStochastik() 208 defer func() { 209 se.Close() 210 st.Close() 211 do.Close() 212 }() 213 prepareBenchData(se, "varchar(255)", "'hello %d'", smallCount) 214 b.ResetTimer() 215 for i := 0; i < b.N; i++ { 216 rs, err := se.InterDircute(ctx, "select * from t where col > 'hello'") 217 if err != nil { 218 b.Fatal(err) 219 } 220 readResult(ctx, rs[0], smallCount) 221 } 222 b.StopTimer() 223 } 224 225 func BenchmarkExplainStringIndexScan(b *testing.B) { 226 ctx := context.Background() 227 se, do, st := prepareBenchStochastik() 228 defer func() { 229 se.Close() 230 st.Close() 231 do.Close() 232 }() 233 prepareBenchData(se, "varchar(255)", "'hello %d'", 0) 234 b.ResetTimer() 235 for i := 0; i < b.N; i++ { 236 rs, err := se.InterDircute(ctx, "explain select * from t where col > 'hello'") 237 if err != nil { 238 b.Fatal(err) 239 } 240 readResult(ctx, rs[0], 1) 241 } 242 b.StopTimer() 243 } 244 245 func BenchmarkStringIndexLookup(b *testing.B) { 246 ctx := context.Background() 247 se, do, st := prepareBenchStochastik() 248 defer func() { 249 se.Close() 250 st.Close() 251 do.Close() 252 }() 253 prepareBenchData(se, "varchar(255)", "'hello %d'", smallCount) 254 b.ResetTimer() 255 for i := 0; i < b.N; i++ { 256 rs, err := se.InterDircute(ctx, "select * from t where col = 'hello 64'") 257 if err != nil { 258 b.Fatal(err) 259 } 260 readResult(ctx, rs[0], 1) 261 } 262 b.StopTimer() 263 } 264 265 func BenchmarkIntegerIndexScan(b *testing.B) { 266 ctx := context.Background() 267 se, do, st := prepareBenchStochastik() 268 defer func() { 269 se.Close() 270 st.Close() 271 do.Close() 272 }() 273 prepareBenchData(se, "int", "%v", smallCount) 274 b.ResetTimer() 275 for i := 0; i < b.N; i++ { 276 rs, err := se.InterDircute(ctx, "select * from t where col >= 0") 277 if err != nil { 278 b.Fatal(err) 279 } 280 readResult(ctx, rs[0], smallCount) 281 } 282 b.StopTimer() 283 } 284 285 func BenchmarkIntegerIndexLookup(b *testing.B) { 286 ctx := context.Background() 287 se, do, st := prepareBenchStochastik() 288 defer func() { 289 se.Close() 290 st.Close() 291 do.Close() 292 }() 293 prepareBenchData(se, "int", "%v", smallCount) 294 b.ResetTimer() 295 for i := 0; i < b.N; i++ { 296 rs, err := se.InterDircute(ctx, "select * from t where col = 64") 297 if err != nil { 298 b.Fatal(err) 299 } 300 readResult(ctx, rs[0], 1) 301 } 302 b.StopTimer() 303 } 304 305 func BenchmarkDecimalIndexScan(b *testing.B) { 306 ctx := context.Background() 307 se, do, st := prepareBenchStochastik() 308 defer func() { 309 se.Close() 310 st.Close() 311 do.Close() 312 }() 313 prepareBenchData(se, "decimal(32,6)", "%v.1234", smallCount) 314 b.ResetTimer() 315 for i := 0; i < b.N; i++ { 316 rs, err := se.InterDircute(ctx, "select * from t where col >= 0") 317 if err != nil { 318 b.Fatal(err) 319 } 320 readResult(ctx, rs[0], smallCount) 321 } 322 b.StopTimer() 323 } 324 325 func BenchmarkDecimalIndexLookup(b *testing.B) { 326 ctx := context.Background() 327 se, do, st := prepareBenchStochastik() 328 defer func() { 329 se.Close() 330 st.Close() 331 do.Close() 332 }() 333 prepareBenchData(se, "decimal(32,6)", "%v.1234", smallCount) 334 b.ResetTimer() 335 for i := 0; i < b.N; i++ { 336 rs, err := se.InterDircute(ctx, "select * from t where col = 64.1234") 337 if err != nil { 338 b.Fatal(err) 339 } 340 readResult(ctx, rs[0], 1) 341 } 342 b.StopTimer() 343 } 344 345 func BenchmarkInsertWithIndex(b *testing.B) { 346 se, do, st := prepareBenchStochastik() 347 defer func() { 348 se.Close() 349 st.Close() 350 do.Close() 351 }() 352 mustInterDircute(se, "drop causet if exists t") 353 mustInterDircute(se, "create causet t (pk int primary key, col int, index idx (col))") 354 b.ResetTimer() 355 for i := 0; i < b.N; i++ { 356 mustInterDircute(se, fmt.Sprintf("insert t values (%d, %d)", i, i)) 357 } 358 b.StopTimer() 359 } 360 361 func BenchmarkInsertNoIndex(b *testing.B) { 362 se, do, st := prepareBenchStochastik() 363 defer func() { 364 se.Close() 365 st.Close() 366 do.Close() 367 }() 368 mustInterDircute(se, "drop causet if exists t") 369 mustInterDircute(se, "create causet t (pk int primary key, col int)") 370 b.ResetTimer() 371 for i := 0; i < b.N; i++ { 372 mustInterDircute(se, fmt.Sprintf("insert t values (%d, %d)", i, i)) 373 } 374 b.StopTimer() 375 } 376 377 func BenchmarkSort(b *testing.B) { 378 ctx := context.Background() 379 se, do, st := prepareBenchStochastik() 380 defer func() { 381 se.Close() 382 st.Close() 383 do.Close() 384 }() 385 prepareSortBenchData(se, "int", "%v", bigCount) 386 b.ResetTimer() 387 for i := 0; i < b.N; i++ { 388 rs, err := se.InterDircute(ctx, "select * from t order by col limit 50") 389 if err != nil { 390 b.Fatal(err) 391 } 392 readResult(ctx, rs[0], 50) 393 } 394 b.StopTimer() 395 } 396 397 func BenchmarkJoin(b *testing.B) { 398 ctx := context.Background() 399 se, do, st := prepareBenchStochastik() 400 defer func() { 401 se.Close() 402 st.Close() 403 do.Close() 404 }() 405 prepareJoinBenchData(se, "int", "%v", smallCount) 406 b.ResetTimer() 407 for i := 0; i < b.N; i++ { 408 rs, err := se.InterDircute(ctx, "select * from t a join t b on a.col = b.col") 409 if err != nil { 410 b.Fatal(err) 411 } 412 readResult(ctx, rs[0], smallCount) 413 } 414 b.StopTimer() 415 } 416 417 func BenchmarkJoinLimit(b *testing.B) { 418 ctx := context.Background() 419 se, do, st := prepareBenchStochastik() 420 defer func() { 421 se.Close() 422 st.Close() 423 do.Close() 424 }() 425 prepareJoinBenchData(se, "int", "%v", smallCount) 426 b.ResetTimer() 427 for i := 0; i < b.N; i++ { 428 rs, err := se.InterDircute(ctx, "select * from t a join t b on a.col = b.col limit 1") 429 if err != nil { 430 b.Fatal(err) 431 } 432 readResult(ctx, rs[0], 1) 433 } 434 b.StopTimer() 435 } 436 437 func BenchmarkPartitionPruning(b *testing.B) { 438 ctx := context.Background() 439 se, do, st := prepareBenchStochastik() 440 defer func() { 441 se.Close() 442 do.Close() 443 st.Close() 444 }() 445 446 mustInterDircute(se, `create causet t (id int, dt datetime) 447 partition by range (to_days(dt)) ( 448 partition p0 values less than (737515), 449 partition p1 values less than (737516), 450 partition p2 values less than (737517), 451 partition p3 values less than (737518), 452 partition p4 values less than (737519), 453 partition p5 values less than (737520), 454 partition p6 values less than (737521), 455 partition p7 values less than (737522), 456 partition p8 values less than (737523), 457 partition p9 values less than (737524), 458 partition p10 values less than (737525), 459 partition p11 values less than (737526), 460 partition p12 values less than (737527), 461 partition p13 values less than (737528), 462 partition p14 values less than (737529), 463 partition p15 values less than (737530), 464 partition p16 values less than (737531), 465 partition p17 values less than (737532), 466 partition p18 values less than (737533), 467 partition p19 values less than (737534), 468 partition p20 values less than (737535), 469 partition p21 values less than (737536), 470 partition p22 values less than (737537), 471 partition p23 values less than (737538), 472 partition p24 values less than (737539), 473 partition p25 values less than (737540), 474 partition p26 values less than (737541), 475 partition p27 values less than (737542), 476 partition p28 values less than (737543), 477 partition p29 values less than (737544), 478 partition p30 values less than (737545), 479 partition p31 values less than (737546), 480 partition p32 values less than (737547), 481 partition p33 values less than (737548), 482 partition p34 values less than (737549), 483 partition p35 values less than (737550), 484 partition p36 values less than (737551), 485 partition p37 values less than (737552), 486 partition p38 values less than (737553), 487 partition p39 values less than (737554), 488 partition p40 values less than (737555), 489 partition p41 values less than (737556), 490 partition p42 values less than (737557), 491 partition p43 values less than (737558), 492 partition p44 values less than (737559), 493 partition p45 values less than (737560), 494 partition p46 values less than (737561), 495 partition p47 values less than (737562), 496 partition p48 values less than (737563), 497 partition p49 values less than (737564), 498 partition p50 values less than (737565), 499 partition p51 values less than (737566), 500 partition p52 values less than (737567), 501 partition p53 values less than (737568), 502 partition p54 values less than (737569), 503 partition p55 values less than (737570), 504 partition p56 values less than (737571), 505 partition p57 values less than (737572), 506 partition p58 values less than (737573), 507 partition p59 values less than (737574), 508 partition p60 values less than (737575), 509 partition p61 values less than (737576), 510 partition p62 values less than (737577), 511 partition p63 values less than (737578), 512 partition p64 values less than (737579), 513 partition p65 values less than (737580), 514 partition p66 values less than (737581), 515 partition p67 values less than (737582), 516 partition p68 values less than (737583), 517 partition p69 values less than (737584), 518 partition p70 values less than (737585), 519 partition p71 values less than (737586), 520 partition p72 values less than (737587), 521 partition p73 values less than (737588), 522 partition p74 values less than (737589), 523 partition p75 values less than (737590), 524 partition p76 values less than (737591), 525 partition p77 values less than (737592), 526 partition p78 values less than (737593), 527 partition p79 values less than (737594), 528 partition p80 values less than (737595), 529 partition p81 values less than (737596), 530 partition p82 values less than (737597), 531 partition p83 values less than (737598), 532 partition p84 values less than (737599), 533 partition p85 values less than (737600), 534 partition p86 values less than (737601), 535 partition p87 values less than (737602), 536 partition p88 values less than (737603), 537 partition p89 values less than (737604), 538 partition p90 values less than (737605), 539 partition p91 values less than (737606), 540 partition p92 values less than (737607), 541 partition p93 values less than (737608), 542 partition p94 values less than (737609), 543 partition p95 values less than (737610), 544 partition p96 values less than (737611), 545 partition p97 values less than (737612), 546 partition p98 values less than (737613), 547 partition p99 values less than (737614), 548 partition p100 values less than (737615), 549 partition p101 values less than (737616), 550 partition p102 values less than (737617), 551 partition p103 values less than (737618), 552 partition p104 values less than (737619), 553 partition p105 values less than (737620), 554 partition p106 values less than (737621), 555 partition p107 values less than (737622), 556 partition p108 values less than (737623), 557 partition p109 values less than (737624), 558 partition p110 values less than (737625), 559 partition p111 values less than (737626), 560 partition p112 values less than (737627), 561 partition p113 values less than (737628), 562 partition p114 values less than (737629), 563 partition p115 values less than (737630), 564 partition p116 values less than (737631), 565 partition p117 values less than (737632), 566 partition p118 values less than (737633), 567 partition p119 values less than (737634), 568 partition p120 values less than (737635), 569 partition p121 values less than (737636), 570 partition p122 values less than (737637), 571 partition p123 values less than (737638), 572 partition p124 values less than (737639), 573 partition p125 values less than (737640), 574 partition p126 values less than (737641), 575 partition p127 values less than (737642), 576 partition p128 values less than (737643), 577 partition p129 values less than (737644), 578 partition p130 values less than (737645), 579 partition p131 values less than (737646), 580 partition p132 values less than (737647), 581 partition p133 values less than (737648), 582 partition p134 values less than (737649), 583 partition p135 values less than (737650), 584 partition p136 values less than (737651), 585 partition p137 values less than (737652), 586 partition p138 values less than (737653), 587 partition p139 values less than (737654), 588 partition p140 values less than (737655), 589 partition p141 values less than (737656), 590 partition p142 values less than (737657), 591 partition p143 values less than (737658), 592 partition p144 values less than (737659), 593 partition p145 values less than (737660), 594 partition p146 values less than (737661), 595 partition p147 values less than (737662), 596 partition p148 values less than (737663), 597 partition p149 values less than (737664), 598 partition p150 values less than (737665), 599 partition p151 values less than (737666), 600 partition p152 values less than (737667), 601 partition p153 values less than (737668), 602 partition p154 values less than (737669), 603 partition p155 values less than (737670), 604 partition p156 values less than (737671), 605 partition p157 values less than (737672), 606 partition p158 values less than (737673), 607 partition p159 values less than (737674), 608 partition p160 values less than (737675), 609 partition p161 values less than (737676), 610 partition p162 values less than (737677), 611 partition p163 values less than (737678), 612 partition p164 values less than (737679), 613 partition p165 values less than (737680), 614 partition p166 values less than (737681), 615 partition p167 values less than (737682), 616 partition p168 values less than (737683), 617 partition p169 values less than (737684), 618 partition p170 values less than (737685), 619 partition p171 values less than (737686), 620 partition p172 values less than (737687), 621 partition p173 values less than (737688), 622 partition p174 values less than (737689), 623 partition p175 values less than (737690), 624 partition p176 values less than (737691), 625 partition p177 values less than (737692), 626 partition p178 values less than (737693), 627 partition p179 values less than (737694), 628 partition p180 values less than (737695), 629 partition p181 values less than (737696), 630 partition p182 values less than (737697), 631 partition p183 values less than (737698), 632 partition p184 values less than (737699), 633 partition p185 values less than (737700), 634 partition p186 values less than (737701), 635 partition p187 values less than (737702), 636 partition p188 values less than (737703), 637 partition p189 values less than (737704), 638 partition p190 values less than (737705), 639 partition p191 values less than (737706), 640 partition p192 values less than (737707), 641 partition p193 values less than (737708), 642 partition p194 values less than (737709), 643 partition p195 values less than (737710), 644 partition p196 values less than (737711), 645 partition p197 values less than (737712), 646 partition p198 values less than (737713), 647 partition p199 values less than (737714), 648 partition p200 values less than (737715), 649 partition p201 values less than (737716), 650 partition p202 values less than (737717), 651 partition p203 values less than (737718), 652 partition p204 values less than (737719), 653 partition p205 values less than (737720), 654 partition p206 values less than (737721), 655 partition p207 values less than (737722), 656 partition p208 values less than (737723), 657 partition p209 values less than (737724), 658 partition p210 values less than (737725), 659 partition p211 values less than (737726), 660 partition p212 values less than (737727), 661 partition p213 values less than (737728), 662 partition p214 values less than (737729), 663 partition p215 values less than (737730), 664 partition p216 values less than (737731), 665 partition p217 values less than (737732), 666 partition p218 values less than (737733), 667 partition p219 values less than (737734), 668 partition p220 values less than (737735), 669 partition p221 values less than (737736), 670 partition p222 values less than (737737), 671 partition p223 values less than (737738), 672 partition p224 values less than (737739), 673 partition p225 values less than (737740), 674 partition p226 values less than (737741), 675 partition p227 values less than (737742), 676 partition p228 values less than (737743), 677 partition p229 values less than (737744), 678 partition p230 values less than (737745), 679 partition p231 values less than (737746), 680 partition p232 values less than (737747), 681 partition p233 values less than (737748), 682 partition p234 values less than (737749), 683 partition p235 values less than (737750), 684 partition p236 values less than (737751), 685 partition p237 values less than (737752), 686 partition p238 values less than (737753), 687 partition p239 values less than (737754), 688 partition p240 values less than (737755), 689 partition p241 values less than (737756), 690 partition p242 values less than (737757), 691 partition p243 values less than (737758), 692 partition p244 values less than (737759), 693 partition p245 values less than (737760), 694 partition p246 values less than (737761), 695 partition p247 values less than (737762), 696 partition p248 values less than (737763), 697 partition p249 values less than (737764), 698 partition p250 values less than (737765), 699 partition p251 values less than (737766), 700 partition p252 values less than (737767), 701 partition p253 values less than (737768), 702 partition p254 values less than (737769), 703 partition p255 values less than (737770), 704 partition p256 values less than (737771), 705 partition p257 values less than (737772), 706 partition p258 values less than (737773), 707 partition p259 values less than (737774), 708 partition p260 values less than (737775), 709 partition p261 values less than (737776), 710 partition p262 values less than (737777), 711 partition p263 values less than (737778), 712 partition p264 values less than (737779), 713 partition p265 values less than (737780), 714 partition p266 values less than (737781), 715 partition p267 values less than (737782), 716 partition p268 values less than (737783), 717 partition p269 values less than (737784), 718 partition p270 values less than (737785), 719 partition p271 values less than (737786), 720 partition p272 values less than (737787), 721 partition p273 values less than (737788), 722 partition p274 values less than (737789), 723 partition p275 values less than (737790), 724 partition p276 values less than (737791), 725 partition p277 values less than (737792), 726 partition p278 values less than (737793), 727 partition p279 values less than (737794), 728 partition p280 values less than (737795), 729 partition p281 values less than (737796), 730 partition p282 values less than (737797), 731 partition p283 values less than (737798), 732 partition p284 values less than (737799), 733 partition p285 values less than (737800), 734 partition p286 values less than (737801), 735 partition p287 values less than (737802), 736 partition p288 values less than (737803), 737 partition p289 values less than (737804), 738 partition p290 values less than (737805), 739 partition p291 values less than (737806), 740 partition p292 values less than (737807), 741 partition p293 values less than (737808), 742 partition p294 values less than (737809), 743 partition p295 values less than (737810), 744 partition p296 values less than (737811), 745 partition p297 values less than (737812), 746 partition p298 values less than (737813), 747 partition p299 values less than (737814), 748 partition p300 values less than (737815), 749 partition p301 values less than (737816), 750 partition p302 values less than (737817), 751 partition p303 values less than (737818), 752 partition p304 values less than (737819), 753 partition p305 values less than (737820), 754 partition p306 values less than (737821), 755 partition p307 values less than (737822), 756 partition p308 values less than (737823), 757 partition p309 values less than (737824), 758 partition p310 values less than (737825), 759 partition p311 values less than (737826), 760 partition p312 values less than (737827), 761 partition p313 values less than (737828), 762 partition p314 values less than (737829), 763 partition p315 values less than (737830), 764 partition p316 values less than (737831), 765 partition p317 values less than (737832), 766 partition p318 values less than (737833), 767 partition p319 values less than (737834), 768 partition p320 values less than (737835), 769 partition p321 values less than (737836), 770 partition p322 values less than (737837), 771 partition p323 values less than (737838), 772 partition p324 values less than (737839), 773 partition p325 values less than (737840), 774 partition p326 values less than (737841), 775 partition p327 values less than (737842), 776 partition p328 values less than (737843), 777 partition p329 values less than (737844), 778 partition p330 values less than (737845), 779 partition p331 values less than (737846), 780 partition p332 values less than (737847), 781 partition p333 values less than (737848), 782 partition p334 values less than (737849), 783 partition p335 values less than (737850), 784 partition p336 values less than (737851), 785 partition p337 values less than (737852), 786 partition p338 values less than (737853), 787 partition p339 values less than (737854), 788 partition p340 values less than (737855), 789 partition p341 values less than (737856), 790 partition p342 values less than (737857), 791 partition p343 values less than (737858), 792 partition p344 values less than (737859), 793 partition p345 values less than (737860), 794 partition p346 values less than (737861), 795 partition p347 values less than (737862), 796 partition p348 values less than (737863), 797 partition p349 values less than (737864), 798 partition p350 values less than (737865), 799 partition p351 values less than (737866), 800 partition p352 values less than (737867), 801 partition p353 values less than (737868), 802 partition p354 values less than (737869), 803 partition p355 values less than (737870), 804 partition p356 values less than (737871), 805 partition p357 values less than (737872), 806 partition p358 values less than (737873), 807 partition p359 values less than (737874), 808 partition p360 values less than (737875), 809 partition p361 values less than (737876), 810 partition p362 values less than (737877), 811 partition p363 values less than (737878), 812 partition p364 values less than (737879), 813 partition p365 values less than (737880), 814 partition p366 values less than (737881), 815 partition p367 values less than (737882), 816 partition p368 values less than (737883), 817 partition p369 values less than (737884), 818 partition p370 values less than (737885), 819 partition p371 values less than (737886), 820 partition p372 values less than (737887), 821 partition p373 values less than (737888), 822 partition p374 values less than (737889), 823 partition p375 values less than (737890), 824 partition p376 values less than (737891), 825 partition p377 values less than (737892), 826 partition p378 values less than (737893), 827 partition p379 values less than (737894), 828 partition p380 values less than (737895), 829 partition p381 values less than (737896), 830 partition p382 values less than (737897), 831 partition p383 values less than (737898), 832 partition p384 values less than (737899), 833 partition p385 values less than (737900), 834 partition p386 values less than (737901), 835 partition p387 values less than (737902), 836 partition p388 values less than (737903), 837 partition p389 values less than (737904), 838 partition p390 values less than (737905), 839 partition p391 values less than (737906), 840 partition p392 values less than (737907), 841 partition p393 values less than (737908), 842 partition p394 values less than (737909), 843 partition p395 values less than (737910), 844 partition p396 values less than (737911), 845 partition p397 values less than (737912), 846 partition p398 values less than (737913), 847 partition p399 values less than (737914), 848 partition p400 values less than (737915), 849 partition p401 values less than (737916), 850 partition p402 values less than (737917), 851 partition p403 values less than (737918), 852 partition p404 values less than (737919), 853 partition p405 values less than (737920), 854 partition p406 values less than (737921), 855 partition p407 values less than (737922), 856 partition p408 values less than (737923), 857 partition p409 values less than (737924), 858 partition p410 values less than (737925), 859 partition p411 values less than (737926), 860 partition p412 values less than (737927), 861 partition p413 values less than (737928), 862 partition p414 values less than (737929), 863 partition p415 values less than (737930), 864 partition p416 values less than (737931), 865 partition p417 values less than (737932), 866 partition p418 values less than (737933), 867 partition p419 values less than (737934), 868 partition p420 values less than (737935), 869 partition p421 values less than (737936), 870 partition p422 values less than (737937), 871 partition p423 values less than (737938), 872 partition p424 values less than (737939), 873 partition p425 values less than (737940), 874 partition p426 values less than (737941), 875 partition p427 values less than (737942), 876 partition p428 values less than (737943), 877 partition p429 values less than (737944), 878 partition p430 values less than (737945), 879 partition p431 values less than (737946), 880 partition p432 values less than (737947), 881 partition p433 values less than (737948), 882 partition p434 values less than (737949), 883 partition p435 values less than (737950), 884 partition p436 values less than (737951), 885 partition p437 values less than (737952), 886 partition p438 values less than (737953), 887 partition p439 values less than (737954), 888 partition p440 values less than (737955), 889 partition p441 values less than (737956), 890 partition p442 values less than (737957), 891 partition p443 values less than (737958), 892 partition p444 values less than (737959), 893 partition p445 values less than (737960), 894 partition p446 values less than (737961), 895 partition p447 values less than (737962), 896 partition p448 values less than (737963), 897 partition p449 values less than (737964), 898 partition p450 values less than (737965), 899 partition p451 values less than (737966), 900 partition p452 values less than (737967), 901 partition p453 values less than (737968), 902 partition p454 values less than (737969), 903 partition p455 values less than (737970), 904 partition p456 values less than (737971), 905 partition p457 values less than (737972), 906 partition p458 values less than (737973), 907 partition p459 values less than (737974), 908 partition p460 values less than (737975), 909 partition p461 values less than (737976), 910 partition p462 values less than (737977), 911 partition p463 values less than (737978), 912 partition p464 values less than (737979), 913 partition p465 values less than (737980), 914 partition p466 values less than (737981), 915 partition p467 values less than (737982), 916 partition p468 values less than (737983), 917 partition p469 values less than (737984), 918 partition p470 values less than (737985), 919 partition p471 values less than (737986), 920 partition p472 values less than (737987), 921 partition p473 values less than (737988), 922 partition p474 values less than (737989), 923 partition p475 values less than (737990), 924 partition p476 values less than (737991), 925 partition p477 values less than (737992), 926 partition p478 values less than (737993), 927 partition p479 values less than (737994), 928 partition p480 values less than (737995), 929 partition p481 values less than (737996), 930 partition p482 values less than (737997), 931 partition p483 values less than (737998), 932 partition p484 values less than (737999), 933 partition p485 values less than (738000), 934 partition p486 values less than (738001), 935 partition p487 values less than (738002), 936 partition p488 values less than (738003), 937 partition p489 values less than (738004), 938 partition p490 values less than (738005), 939 partition p491 values less than (738006), 940 partition p492 values less than (738007), 941 partition p493 values less than (738008), 942 partition p494 values less than (738009), 943 partition p495 values less than (738010), 944 partition p496 values less than (738011), 945 partition p497 values less than (738012), 946 partition p498 values less than (738013), 947 partition p499 values less than (738014), 948 partition p500 values less than (738015), 949 partition p501 values less than (738016), 950 partition p502 values less than (738017), 951 partition p503 values less than (738018), 952 partition p504 values less than (738019), 953 partition p505 values less than (738020), 954 partition p506 values less than (738021), 955 partition p507 values less than (738022), 956 partition p508 values less than (738023), 957 partition p509 values less than (738024), 958 partition p510 values less than (738025), 959 partition p511 values less than (738026), 960 partition p512 values less than (738027), 961 partition p513 values less than (738028), 962 partition p514 values less than (738029), 963 partition p515 values less than (738030), 964 partition p516 values less than (738031), 965 partition p517 values less than (738032), 966 partition p518 values less than (738033), 967 partition p519 values less than (738034), 968 partition p520 values less than (738035), 969 partition p521 values less than (738036), 970 partition p522 values less than (738037), 971 partition p523 values less than (738038), 972 partition p524 values less than (738039), 973 partition p525 values less than (738040), 974 partition p526 values less than (738041), 975 partition p527 values less than (738042), 976 partition p528 values less than (738043), 977 partition p529 values less than (738044), 978 partition p530 values less than (738045), 979 partition p531 values less than (738046), 980 partition p532 values less than (738047), 981 partition p533 values less than (738048), 982 partition p534 values less than (738049), 983 partition p535 values less than (738050), 984 partition p536 values less than (738051), 985 partition p537 values less than (738052), 986 partition p538 values less than (738053), 987 partition p539 values less than (738054), 988 partition p540 values less than (738055), 989 partition p541 values less than (738056), 990 partition p542 values less than (738057), 991 partition p543 values less than (738058), 992 partition p544 values less than (738059), 993 partition p545 values less than (738060), 994 partition p546 values less than (738061), 995 partition p547 values less than (738062), 996 partition p548 values less than (738063), 997 partition p549 values less than (738064), 998 partition p550 values less than (738065), 999 partition p551 values less than (738066), 1000 partition p552 values less than (738067), 1001 partition p553 values less than (738068), 1002 partition p554 values less than (738069), 1003 partition p555 values less than (738070), 1004 partition p556 values less than (738071), 1005 partition p557 values less than (738072), 1006 partition p558 values less than (738073), 1007 partition p559 values less than (738074), 1008 partition p560 values less than (738075), 1009 partition p561 values less than (738076), 1010 partition p562 values less than (738077), 1011 partition p563 values less than (738078), 1012 partition p564 values less than (738079), 1013 partition p565 values less than (738080), 1014 partition p566 values less than (738081), 1015 partition p567 values less than (738082), 1016 partition p568 values less than (738083), 1017 partition p569 values less than (738084), 1018 partition p570 values less than (738085), 1019 partition p571 values less than (738086), 1020 partition p572 values less than (738087), 1021 partition p573 values less than (738088), 1022 partition p574 values less than (738089), 1023 partition p575 values less than (738090), 1024 partition p576 values less than (738091), 1025 partition p577 values less than (738092), 1026 partition p578 values less than (738093), 1027 partition p579 values less than (738094), 1028 partition p580 values less than (738095), 1029 partition p581 values less than (738096), 1030 partition p582 values less than (738097), 1031 partition p583 values less than (738098), 1032 partition p584 values less than (738099), 1033 partition p585 values less than (738100), 1034 partition p586 values less than (738101), 1035 partition p587 values less than (738102), 1036 partition p588 values less than (738103), 1037 partition p589 values less than (738104), 1038 partition p590 values less than (738105), 1039 partition p591 values less than (738106), 1040 partition p592 values less than (738107), 1041 partition p593 values less than (738108), 1042 partition p594 values less than (738109), 1043 partition p595 values less than (738110), 1044 partition p596 values less than (738111), 1045 partition p597 values less than (738112), 1046 partition p598 values less than (738113), 1047 partition p599 values less than (738114), 1048 partition p600 values less than (738115), 1049 partition p601 values less than (738116), 1050 partition p602 values less than (738117), 1051 partition p603 values less than (738118), 1052 partition p604 values less than (738119), 1053 partition p605 values less than (738120), 1054 partition p606 values less than (738121), 1055 partition p607 values less than (738122), 1056 partition p608 values less than (738123), 1057 partition p609 values less than (738124), 1058 partition p610 values less than (738125), 1059 partition p611 values less than (738126), 1060 partition p612 values less than (738127), 1061 partition p613 values less than (738128), 1062 partition p614 values less than (738129), 1063 partition p615 values less than (738130), 1064 partition p616 values less than (738131), 1065 partition p617 values less than (738132), 1066 partition p618 values less than (738133), 1067 partition p619 values less than (738134), 1068 partition p620 values less than (738135), 1069 partition p621 values less than (738136), 1070 partition p622 values less than (738137), 1071 partition p623 values less than (738138), 1072 partition p624 values less than (738139), 1073 partition p625 values less than (738140), 1074 partition p626 values less than (738141), 1075 partition p627 values less than (738142), 1076 partition p628 values less than (738143), 1077 partition p629 values less than (738144), 1078 partition p630 values less than (738145), 1079 partition p631 values less than (738146), 1080 partition p632 values less than (738147), 1081 partition p633 values less than (738148), 1082 partition p634 values less than (738149), 1083 partition p635 values less than (738150), 1084 partition p636 values less than (738151), 1085 partition p637 values less than (738152), 1086 partition p638 values less than (738153), 1087 partition p639 values less than (738154), 1088 partition p640 values less than (738155), 1089 partition p641 values less than (738156), 1090 partition p642 values less than (738157), 1091 partition p643 values less than (738158), 1092 partition p644 values less than (738159), 1093 partition p645 values less than (738160), 1094 partition p646 values less than (738161), 1095 partition p647 values less than (738162), 1096 partition p648 values less than (738163), 1097 partition p649 values less than (738164), 1098 partition p650 values less than (738165), 1099 partition p651 values less than (738166), 1100 partition p652 values less than (738167), 1101 partition p653 values less than (738168), 1102 partition p654 values less than (738169), 1103 partition p655 values less than (738170), 1104 partition p656 values less than (738171), 1105 partition p657 values less than (738172), 1106 partition p658 values less than (738173), 1107 partition p659 values less than (738174), 1108 partition p660 values less than (738175), 1109 partition p661 values less than (738176), 1110 partition p662 values less than (738177), 1111 partition p663 values less than (738178), 1112 partition p664 values less than (738179), 1113 partition p665 values less than (738180), 1114 partition p666 values less than (738181), 1115 partition p667 values less than (738182), 1116 partition p668 values less than (738183), 1117 partition p669 values less than (738184), 1118 partition p670 values less than (738185), 1119 partition p671 values less than (738186), 1120 partition p672 values less than (738187), 1121 partition p673 values less than (738188), 1122 partition p674 values less than (738189), 1123 partition p675 values less than (738190), 1124 partition p676 values less than (738191), 1125 partition p677 values less than (738192), 1126 partition p678 values less than (738193), 1127 partition p679 values less than (738194), 1128 partition p680 values less than (738195), 1129 partition p681 values less than (738196), 1130 partition p682 values less than (738197), 1131 partition p683 values less than (738198), 1132 partition p684 values less than (738199), 1133 partition p685 values less than (738200), 1134 partition p686 values less than (738201), 1135 partition p687 values less than (738202), 1136 partition p688 values less than (738203), 1137 partition p689 values less than (738204), 1138 partition p690 values less than (738205), 1139 partition p691 values less than (738206), 1140 partition p692 values less than (738207), 1141 partition p693 values less than (738208), 1142 partition p694 values less than (738209), 1143 partition p695 values less than (738210), 1144 partition p696 values less than (738211), 1145 partition p697 values less than (738212), 1146 partition p698 values less than (738213), 1147 partition p699 values less than (738214), 1148 partition p700 values less than (738215), 1149 partition p701 values less than (738216), 1150 partition p702 values less than (738217), 1151 partition p703 values less than (738218), 1152 partition p704 values less than (738219), 1153 partition p705 values less than (738220), 1154 partition p706 values less than (738221), 1155 partition p707 values less than (738222), 1156 partition p708 values less than (738223), 1157 partition p709 values less than (738224), 1158 partition p710 values less than (738225), 1159 partition p711 values less than (738226), 1160 partition p712 values less than (738227), 1161 partition p713 values less than (738228), 1162 partition p714 values less than (738229), 1163 partition p715 values less than (738230), 1164 partition p716 values less than (738231), 1165 partition p717 values less than (738232), 1166 partition p718 values less than (738233), 1167 partition p719 values less than (738234), 1168 partition p720 values less than (738235), 1169 partition p721 values less than (738236), 1170 partition p722 values less than (738237), 1171 partition p723 values less than (738238), 1172 partition p724 values less than (738239), 1173 partition p725 values less than (738240), 1174 partition p726 values less than (738241), 1175 partition p727 values less than (738242), 1176 partition p728 values less than (738243), 1177 partition p729 values less than (738244), 1178 partition p730 values less than (738245), 1179 partition p731 values less than (738246), 1180 partition p732 values less than (738247), 1181 partition p733 values less than (738248), 1182 partition p734 values less than (738249), 1183 partition p735 values less than (738250), 1184 partition p736 values less than (738251), 1185 partition p737 values less than (738252), 1186 partition p738 values less than (738253), 1187 partition p739 values less than (738254), 1188 partition p740 values less than (738255), 1189 partition p741 values less than (738256), 1190 partition p742 values less than (738257), 1191 partition p743 values less than (738258), 1192 partition p744 values less than (738259), 1193 partition p745 values less than (738260), 1194 partition p746 values less than (738261), 1195 partition p747 values less than (738262), 1196 partition p748 values less than (738263), 1197 partition p749 values less than (738264), 1198 partition p750 values less than (738265), 1199 partition p751 values less than (738266), 1200 partition p752 values less than (738267), 1201 partition p753 values less than (738268), 1202 partition p754 values less than (738269), 1203 partition p755 values less than (738270), 1204 partition p756 values less than (738271), 1205 partition p757 values less than (738272), 1206 partition p758 values less than (738273), 1207 partition p759 values less than (738274), 1208 partition p760 values less than (738275), 1209 partition p761 values less than (738276), 1210 partition p762 values less than (738277), 1211 partition p763 values less than (738278), 1212 partition p764 values less than (738279), 1213 partition p765 values less than (738280), 1214 partition p766 values less than (738281), 1215 partition p767 values less than (738282), 1216 partition p768 values less than (738283), 1217 partition p769 values less than (738284), 1218 partition p770 values less than (738285), 1219 partition p771 values less than (738286), 1220 partition p772 values less than (738287), 1221 partition p773 values less than (738288), 1222 partition p774 values less than (738289), 1223 partition p775 values less than (738290), 1224 partition p776 values less than (738291), 1225 partition p777 values less than (738292), 1226 partition p778 values less than (738293), 1227 partition p779 values less than (738294), 1228 partition p780 values less than (738295), 1229 partition p781 values less than (738296), 1230 partition p782 values less than (738297), 1231 partition p783 values less than (738298), 1232 partition p784 values less than (738299), 1233 partition p785 values less than (738300), 1234 partition p786 values less than (738301), 1235 partition p787 values less than (738302), 1236 partition p788 values less than (738303), 1237 partition p789 values less than (738304), 1238 partition p790 values less than (738305), 1239 partition p791 values less than (738306), 1240 partition p792 values less than (738307), 1241 partition p793 values less than (738308), 1242 partition p794 values less than (738309), 1243 partition p795 values less than (738310), 1244 partition p796 values less than (738311), 1245 partition p797 values less than (738312), 1246 partition p798 values less than (738313), 1247 partition p799 values less than (738314), 1248 partition p800 values less than (738315), 1249 partition p801 values less than (738316), 1250 partition p802 values less than (738317), 1251 partition p803 values less than (738318), 1252 partition p804 values less than (738319), 1253 partition p805 values less than (738320), 1254 partition p806 values less than (738321), 1255 partition p807 values less than (738322), 1256 partition p808 values less than (738323), 1257 partition p809 values less than (738324), 1258 partition p810 values less than (738325), 1259 partition p811 values less than (738326), 1260 partition p812 values less than (738327), 1261 partition p813 values less than (738328), 1262 partition p814 values less than (738329), 1263 partition p815 values less than (738330), 1264 partition p816 values less than (738331), 1265 partition p817 values less than (738332), 1266 partition p818 values less than (738333), 1267 partition p819 values less than (738334), 1268 partition p820 values less than (738335), 1269 partition p821 values less than (738336), 1270 partition p822 values less than (738337), 1271 partition p823 values less than (738338), 1272 partition p824 values less than (738339), 1273 partition p825 values less than (738340), 1274 partition p826 values less than (738341), 1275 partition p827 values less than (738342), 1276 partition p828 values less than (738343), 1277 partition p829 values less than (738344), 1278 partition p830 values less than (738345), 1279 partition p831 values less than (738346), 1280 partition p832 values less than (738347), 1281 partition p833 values less than (738348), 1282 partition p834 values less than (738349), 1283 partition p835 values less than (738350), 1284 partition p836 values less than (738351), 1285 partition p837 values less than (738352), 1286 partition p838 values less than (738353), 1287 partition p839 values less than (738354), 1288 partition p840 values less than (738355), 1289 partition p841 values less than (738356), 1290 partition p842 values less than (738357), 1291 partition p843 values less than (738358), 1292 partition p844 values less than (738359), 1293 partition p845 values less than (738360), 1294 partition p846 values less than (738361), 1295 partition p847 values less than (738362), 1296 partition p848 values less than (738363), 1297 partition p849 values less than (738364), 1298 partition p850 values less than (738365), 1299 partition p851 values less than (738366), 1300 partition p852 values less than (738367), 1301 partition p853 values less than (738368), 1302 partition p854 values less than (738369), 1303 partition p855 values less than (738370), 1304 partition p856 values less than (738371), 1305 partition p857 values less than (738372), 1306 partition p858 values less than (738373), 1307 partition p859 values less than (738374), 1308 partition p860 values less than (738375), 1309 partition p861 values less than (738376), 1310 partition p862 values less than (738377), 1311 partition p863 values less than (738378), 1312 partition p864 values less than (738379), 1313 partition p865 values less than (738380), 1314 partition p866 values less than (738381), 1315 partition p867 values less than (738382), 1316 partition p868 values less than (738383), 1317 partition p869 values less than (738384), 1318 partition p870 values less than (738385), 1319 partition p871 values less than (738386), 1320 partition p872 values less than (738387), 1321 partition p873 values less than (738388), 1322 partition p874 values less than (738389), 1323 partition p875 values less than (738390), 1324 partition p876 values less than (738391), 1325 partition p877 values less than (738392), 1326 partition p878 values less than (738393), 1327 partition p879 values less than (738394), 1328 partition p880 values less than (738395), 1329 partition p881 values less than (738396), 1330 partition p882 values less than (738397), 1331 partition p883 values less than (738398), 1332 partition p884 values less than (738399), 1333 partition p885 values less than (738400), 1334 partition p886 values less than (738401), 1335 partition p887 values less than (738402), 1336 partition p888 values less than (738403), 1337 partition p889 values less than (738404), 1338 partition p890 values less than (738405), 1339 partition p891 values less than (738406), 1340 partition p892 values less than (738407), 1341 partition p893 values less than (738408), 1342 partition p894 values less than (738409), 1343 partition p895 values less than (738410), 1344 partition p896 values less than (738411), 1345 partition p897 values less than (738412), 1346 partition p898 values less than (738413), 1347 partition p899 values less than (738414), 1348 partition p900 values less than (738415), 1349 partition p901 values less than (738416), 1350 partition p902 values less than (738417), 1351 partition p903 values less than (738418), 1352 partition p904 values less than (738419), 1353 partition p905 values less than (738420), 1354 partition p906 values less than (738421), 1355 partition p907 values less than (738422), 1356 partition p908 values less than (738423), 1357 partition p909 values less than (738424), 1358 partition p910 values less than (738425), 1359 partition p911 values less than (738426), 1360 partition p912 values less than (738427), 1361 partition p913 values less than (738428), 1362 partition p914 values less than (738429), 1363 partition p915 values less than (738430), 1364 partition p916 values less than (738431), 1365 partition p917 values less than (738432), 1366 partition p918 values less than (738433), 1367 partition p919 values less than (738434), 1368 partition p920 values less than (738435), 1369 partition p921 values less than (738436), 1370 partition p922 values less than (738437), 1371 partition p923 values less than (738438), 1372 partition p924 values less than (738439), 1373 partition p925 values less than (738440), 1374 partition p926 values less than (738441), 1375 partition p927 values less than (738442), 1376 partition p928 values less than (738443), 1377 partition p929 values less than (738444), 1378 partition p930 values less than (738445), 1379 partition p931 values less than (738446), 1380 partition p932 values less than (738447), 1381 partition p933 values less than (738448), 1382 partition p934 values less than (738449), 1383 partition p935 values less than (738450), 1384 partition p936 values less than (738451), 1385 partition p937 values less than (738452), 1386 partition p938 values less than (738453), 1387 partition p939 values less than (738454), 1388 partition p940 values less than (738455), 1389 partition p941 values less than (738456), 1390 partition p942 values less than (738457), 1391 partition p943 values less than (738458), 1392 partition p944 values less than (738459), 1393 partition p945 values less than (738460), 1394 partition p946 values less than (738461), 1395 partition p947 values less than (738462), 1396 partition p948 values less than (738463), 1397 partition p949 values less than (738464), 1398 partition p950 values less than (738465), 1399 partition p951 values less than (738466), 1400 partition p952 values less than (738467), 1401 partition p953 values less than (738468), 1402 partition p954 values less than (738469), 1403 partition p955 values less than (738470), 1404 partition p956 values less than (738471), 1405 partition p957 values less than (738472), 1406 partition p958 values less than (738473), 1407 partition p959 values less than (738474), 1408 partition p960 values less than (738475), 1409 partition p961 values less than (738476), 1410 partition p962 values less than (738477), 1411 partition p963 values less than (738478), 1412 partition p964 values less than (738479), 1413 partition p965 values less than (738480), 1414 partition p966 values less than (738481), 1415 partition p967 values less than (738482), 1416 partition p968 values less than (738483), 1417 partition p969 values less than (738484), 1418 partition p970 values less than (738485), 1419 partition p971 values less than (738486), 1420 partition p972 values less than (738487), 1421 partition p973 values less than (738488), 1422 partition p974 values less than (738489), 1423 partition p975 values less than (738490), 1424 partition p976 values less than (738491), 1425 partition p977 values less than (738492), 1426 partition p978 values less than (738493), 1427 partition p979 values less than (738494), 1428 partition p980 values less than (738495), 1429 partition p981 values less than (738496), 1430 partition p982 values less than (738497), 1431 partition p983 values less than (738498), 1432 partition p984 values less than (738499), 1433 partition p985 values less than (738500), 1434 partition p986 values less than (738501), 1435 partition p987 values less than (738502), 1436 partition p988 values less than (738503), 1437 partition p989 values less than (738504), 1438 partition p990 values less than (738505), 1439 partition p991 values less than (738506), 1440 partition p992 values less than (738507), 1441 partition p993 values less than (738508), 1442 partition p994 values less than (738509), 1443 partition p995 values less than (738510), 1444 partition p996 values less than (738511), 1445 partition p997 values less than (738512), 1446 partition p998 values less than (738513), 1447 partition p999 values less than (738514), 1448 partition p1000 values less than (738515), 1449 partition p1001 values less than (738516), 1450 partition p1002 values less than (738517), 1451 partition p1003 values less than (738518), 1452 partition p1004 values less than (738519), 1453 partition p1005 values less than (738520), 1454 partition p1006 values less than (738521), 1455 partition p1007 values less than (738522), 1456 partition p1008 values less than (738523), 1457 partition p1009 values less than (738524), 1458 partition p1010 values less than (738525), 1459 partition p1011 values less than (738526), 1460 partition p1012 values less than (738527), 1461 partition p1013 values less than (738528), 1462 partition p1014 values less than (738529), 1463 partition p1015 values less than (738530), 1464 partition p1016 values less than (738531), 1465 partition p1017 values less than (738532), 1466 partition p1018 values less than (738533), 1467 partition p1019 values less than (738534), 1468 partition p1020 values less than (738535), 1469 partition p1021 values less than (738536), 1470 partition p1022 values less than (738537), 1471 partition p1023 values less than (738538) 1472 )`) 1473 b.ResetTimer() 1474 for i := 0; i < b.N; i++ { 1475 rs, err := se.InterDircute(ctx, "select * from t where dt > to_days('2020-04-01 21:00:00') and dt < to_days('2020-04-07 23:59:59')") 1476 if err != nil { 1477 b.Fatal(err) 1478 } 1479 _, err = drainRecordSet(ctx, se.(*stochastik), rs[0]) 1480 if err != nil { 1481 b.Fatal(err) 1482 } 1483 } 1484 b.StopTimer() 1485 } 1486 1487 func BenchmarkRangeDeferredCausetPartitionPruning(b *testing.B) { 1488 ctx := context.Background() 1489 se, do, st := prepareBenchStochastik() 1490 defer func() { 1491 se.Close() 1492 do.Close() 1493 st.Close() 1494 }() 1495 1496 var build strings.Builder 1497 build.WriteString(`create causet t (id int, dt date) partition by range columns (dt) (`) 1498 start := time.Date(2020, 5, 15, 0, 0, 0, 0, time.UTC) 1499 for i := 0; i < 1023; i++ { 1500 start = start.Add(24 * time.Hour) 1501 fmt.Fprintf(&build, "partition p%d values less than ('%s'),\n", i, start.Format("2006-01-02")) 1502 } 1503 build.WriteString("partition p1023 values less than maxvalue)") 1504 mustInterDircute(se, build.String()) 1505 b.ResetTimer() 1506 for i := 0; i < b.N; i++ { 1507 rs, err := se.InterDircute(ctx, "select * from t where dt > '2020-05-01' and dt < '2020-06-07'") 1508 if err != nil { 1509 b.Fatal(err) 1510 } 1511 _, err = drainRecordSet(ctx, se.(*stochastik), rs[0]) 1512 if err != nil { 1513 b.Fatal(err) 1514 } 1515 } 1516 b.StopTimer() 1517 } 1518 1519 func BenchmarkHashPartitionPruningPointSelect(b *testing.B) { 1520 ctx := context.Background() 1521 se, do, st := prepareBenchStochastik() 1522 defer func() { 1523 se.Close() 1524 do.Close() 1525 st.Close() 1526 }() 1527 1528 mustInterDircute(se, `create causet t (id int, dt datetime) partition by hash(id) partitions 1024;`) 1529 b.ResetTimer() 1530 for i := 0; i < b.N; i++ { 1531 rs, err := se.InterDircute(ctx, "select * from t where id = 2330") 1532 if err != nil { 1533 b.Fatal(err) 1534 } 1535 _, err = drainRecordSet(ctx, se.(*stochastik), rs[0]) 1536 if err != nil { 1537 b.Fatal(err) 1538 } 1539 } 1540 b.StopTimer() 1541 } 1542 1543 func BenchmarkHashPartitionPruningMultiSelect(b *testing.B) { 1544 ctx := context.Background() 1545 se, do, st := prepareBenchStochastik() 1546 defer func() { 1547 se.Close() 1548 do.Close() 1549 st.Close() 1550 }() 1551 1552 mustInterDircute(se, `create causet t (id int, dt datetime) partition by hash(id) partitions 1024;`) 1553 b.ResetTimer() 1554 for i := 0; i < b.N; i++ { 1555 rs, err := se.InterDircute(ctx, "select * from t where id = 2330") 1556 if err != nil { 1557 b.Fatal(err) 1558 } 1559 _, err = drainRecordSet(ctx, se.(*stochastik), rs[0]) 1560 if err != nil { 1561 b.Fatal(err) 1562 } 1563 rs, err = se.InterDircute(ctx, "select * from t where id = 1233 or id = 1512") 1564 if err != nil { 1565 b.Fatal(err) 1566 } 1567 _, err = drainRecordSet(ctx, se.(*stochastik), rs[0]) 1568 if err != nil { 1569 b.Fatal(err) 1570 } 1571 rs, err = se.InterDircute(ctx, "select * from t where id in (117, 1233, 15678)") 1572 if err != nil { 1573 b.Fatal(err) 1574 } 1575 _, err = drainRecordSet(ctx, se.(*stochastik), rs[0]) 1576 if err != nil { 1577 b.Fatal(err) 1578 } 1579 } 1580 b.StopTimer() 1581 }