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  }