blob: 7e18943b75de3c3cbde37b64c5f23e27b407234a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ignite.yardstick.jdbc;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.internal.IgniteEx;
import org.yardstickframework.BenchmarkConfiguration;
/**
* Creates SELECT queries and arguments for those queries. Uses data model defined in {@link
* JdbcUtils#fillData(BenchmarkConfiguration, IgniteEx, long, CacheAtomicityMode)}
*/
public enum SelectCommand {
/**
* Creates SELECT query that has primary key field in the WHERE clause.
*/
BY_PRIMARY_KEY {
/** {@inheritDoc} */
@Override public String selectOne() {
return "SELECT id, val FROM test_long WHERE id = ?;";
}
/** {@inheritDoc} */
@Override public String selectRange() {
return "SELECT id, val FROM test_long WHERE id BETWEEN ? AND ?;";
}
/** {@inheritDoc} */
@Override public long fieldByPK(long pk) {
// This command uses PK value itself.
return pk;
}
},
/**
* Creates SELECT query that has value field in the WHERE clause.
*/
BY_VALUE {
/** {@inheritDoc} */
@Override public String selectOne() {
return "SELECT id, val FROM test_long WHERE val = ?;";
}
/** {@inheritDoc} */
@Override public String selectRange() {
return "SELECT id, val FROM test_long WHERE val BETWEEN ? AND ?;";
}
/** {@inheritDoc} */
@Override public long fieldByPK(long pk) {
// data model defines that value is generated as id (PK) field plus one.
return pk + 1;
}
};
/**
* Create SELECT query that returns one row and has one parameter - field value for WHERE clause.
*/
public abstract String selectOne();
/**
* Create SELECT query that returns number of rows. This query has 2 parameters - min and max value for BETWEEN
* operator from WHERE clause.
*/
public abstract String selectRange();
/**
* Gets field value by primary key. Field can be PK itself or val field depending on type of this Select.
* Implementation of this method is based on how {@link JdbcUtils#fillData(BenchmarkConfiguration, IgniteEx, long,
* CacheAtomicityMode)} generates data.
*
* @param pk primary key for what to compute field value.
* @return field value.
*/
public abstract long fieldByPK(long pk);
}