Skip to content
This repository was archived by the owner on Jan 10, 2023. It is now read-only.

Commit f9703b4

Browse files
committed
Adding perf regression test for cross-column OrderByIndex.
------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=88581532
1 parent fa5e6f8 commit f9703b4

File tree

3 files changed

+68
-1
lines changed

3 files changed

+68
-1
lines changed

perf/lf_perf_test.js

+4
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,10 @@ function selectRunner(name, db) {
297297
'SelectOrderByNonIndexed',
298298
selectBenchmark.queryOrderByNonIndexed.bind(selectBenchmark),
299299
selectBenchmark.verifyOrderByNonIndexed.bind(selectBenchmark));
300+
benchmarkRunner.schedule(
301+
'SelectOrderByIndexedCrossColumn',
302+
selectBenchmark.queryOrderByIndexedCrossColumn.bind(selectBenchmark),
303+
selectBenchmark.verifyOrderByIndexedCrossColumn.bind(selectBenchmark));
300304
benchmarkRunner.schedule(
301305
'SelectLimitSkipIndexed',
302306
selectBenchmark.queryLimitSkipIndexed.bind(selectBenchmark),

testing/hr_schema/hr_schema.yaml

+12
Original file line numberDiff line numberDiff line change
@@ -157,3 +157,15 @@ table:
157157
unique:
158158
uq_constraint:
159159
column: [integer, string2]
160+
161+
CrossColumnTable:
162+
column:
163+
integer1: integer
164+
integer2: integer
165+
index:
166+
idx_ascDesc:
167+
column:
168+
- name: integer1
169+
order: asc
170+
- name: integer2
171+
order: desc

testing/perf/select_benchmark.js

+52-1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ lf.testing.perf.SelectBenchmark = function(db, dataGenerator) {
3939
/** @private {!hr.db.schema.Job} */
4040
this.j_ = this.db_.getSchema().getJob();
4141

42+
/** @private {!hr.db.schema.CrossColumnTable} */
43+
this.cct_ = this.db_.getSchema().getCrossColumnTable();
44+
4245
/** @private {!lf.testing.hrSchema.MockDataGenerator} */
4346
this.dataGenerator_ = dataGenerator;
4447

@@ -161,7 +164,23 @@ lf.testing.perf.SelectBenchmark.prototype.insertSampleData = function() {
161164
values(this.dataGenerator_.sampleJobs).
162165
exec();
163166

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]);
165184
};
166185

167186

@@ -456,6 +475,38 @@ lf.testing.perf.SelectBenchmark.prototype.verifyOrderByIndexed =
456475
};
457476

458477

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+
459510
/** @return {!IThenable} */
460511
lf.testing.perf.SelectBenchmark.prototype.queryOrderByNonIndexed =
461512
function() {

0 commit comments

Comments
 (0)