@@ -39,6 +39,9 @@ lf.testing.perf.SelectBenchmark = function(db, dataGenerator) {
39
39
/** @private {!hr.db.schema.Job} */
40
40
this . j_ = this . db_ . getSchema ( ) . getJob ( ) ;
41
41
42
+ /** @private {!hr.db.schema.CrossColumnTable} */
43
+ this . cct_ = this . db_ . getSchema ( ) . getCrossColumnTable ( ) ;
44
+
42
45
/** @private {!lf.testing.hrSchema.MockDataGenerator} */
43
46
this . dataGenerator_ = dataGenerator ;
44
47
@@ -161,7 +164,23 @@ lf.testing.perf.SelectBenchmark.prototype.insertSampleData = function() {
161
164
values ( this . dataGenerator_ . sampleJobs ) .
162
165
exec ( ) ;
163
166
164
- return goog . Promise . all ( [ insertJobs , insertEmployees ] ) ;
167
+ var crossColumnTableRows = [ ] ;
168
+ for ( var i = 0 ; i < 200 ; i ++ ) {
169
+ for ( var j = 0 ; j < 200 ; j ++ ) {
170
+ crossColumnTableRows . push ( this . cct_ . createRow (
171
+ /** @type {!hr.db.row.CrossColumnTableType } */ ( {
172
+ integer1 : i ,
173
+ integer2 : j
174
+ } ) ) ) ;
175
+ }
176
+ }
177
+ var insertCrossColumnTable = this . db_ .
178
+ insert ( ) . into ( this . cct_ ) .
179
+ values ( crossColumnTableRows ) .
180
+ exec ( ) ;
181
+
182
+ return goog . Promise . all ( [
183
+ insertJobs , insertEmployees , insertCrossColumnTable ] ) ;
165
184
} ;
166
185
167
186
@@ -456,6 +475,38 @@ lf.testing.perf.SelectBenchmark.prototype.verifyOrderByIndexed =
456
475
} ;
457
476
458
477
478
+ /** @return {!IThenable } */
479
+ lf . testing . perf . SelectBenchmark . prototype . queryOrderByIndexedCrossColumn =
480
+ function ( ) {
481
+ return this . db_ .
482
+ select ( ) .
483
+ from ( this . cct_ ) .
484
+ orderBy ( this . cct_ . integer1 , lf . Order . ASC ) .
485
+ orderBy ( this . cct_ . integer2 , lf . Order . DESC ) .
486
+ exec ( ) ;
487
+ } ;
488
+
489
+
490
+ /**
491
+ * @param {!Array.<!Object> } results
492
+ * @return {!IThenable<boolean> }
493
+ */
494
+ lf . testing . perf . SelectBenchmark . prototype . verifyOrderByIndexedCrossColumn =
495
+ function ( results ) {
496
+ assertEquals ( 200 * 200 , results . length ) ;
497
+ var objCounter = 0 ;
498
+ for ( var i = 0 ; i < 200 ; i ++ ) {
499
+ for ( var j = 199 ; j >= 0 ; j -- ) {
500
+ assertEquals ( i , results [ objCounter ] [ 'integer1' ] ) ;
501
+ assertEquals ( j , results [ objCounter ] [ 'integer2' ] ) ;
502
+ objCounter ++ ;
503
+ }
504
+ }
505
+
506
+ return goog . Promise . resolve ( true ) ;
507
+ } ;
508
+
509
+
459
510
/** @return {!IThenable } */
460
511
lf . testing . perf . SelectBenchmark . prototype . queryOrderByNonIndexed =
461
512
function ( ) {
0 commit comments