blob: c2429ab1f2f939e7240d858e8413cc620fb36d1d [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.phoenix.end2end;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import org.apache.phoenix.util.PropertiesUtil;
import org.junit.Test;
public class MinMaxAggregateFunctionIT extends ParallelStatsDisabledIT {
private static final String TABLE_NAME = generateUniqueName();
@Test
public void testMinMaxAggregateFunctions() throws SQLException {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(getUrl(), props);
conn.setAutoCommit(false);
try {
conn.prepareStatement(
"create table " + TABLE_NAME + "("
+ "VAL1 integer not null, "
+ "VAL2 char(2), "
+ "VAL3 varchar, "
+ "VAL4 varchar "
+ "constraint PK primary key (VAL1))").execute();
conn.commit();
conn.prepareStatement("upsert into " + TABLE_NAME + " values (0, '00', '00', '0')").execute();
conn.prepareStatement("upsert into " + TABLE_NAME + " values (1, '01', '01', '1')").execute();
conn.prepareStatement("upsert into " + TABLE_NAME + " values (2, '02', '02', '2')").execute();
conn.commit();
ResultSet rs = conn.prepareStatement("select min(VAL2) from " + TABLE_NAME).executeQuery();
assertTrue(rs.next());
assertEquals("00", rs.getString(1));
rs = conn.prepareStatement("select min(VAL3) from " + TABLE_NAME).executeQuery();
assertTrue(rs.next());
assertEquals("00", rs.getString(1));
rs = conn.prepareStatement("select max(VAL2)from " + TABLE_NAME).executeQuery();
assertTrue(rs.next());
assertEquals("02", rs.getString(1));
rs = conn.prepareStatement("select max(VAL3)from " + TABLE_NAME).executeQuery();
assertTrue(rs.next());
assertEquals("02", rs.getString(1));
rs =
conn.prepareStatement(
"select min(VAL1), min(VAL2), min(VAL3), min(VAL4) from " + TABLE_NAME).executeQuery();
assertTrue(rs.next());
assertEquals(0, rs.getInt(1));
assertEquals("00", rs.getString(2));
assertEquals("00", rs.getString(3));
assertEquals("0", rs.getString(4));
rs =
conn.prepareStatement(
"select max(VAL1), max(VAL2), max(VAL3), max(VAL4) from " + TABLE_NAME).executeQuery();
assertTrue(rs.next());
assertEquals(2, rs.getInt(1));
assertEquals("02", rs.getString(2));
assertEquals("02", rs.getString(3));
assertEquals("2", rs.getString(4));
} finally {
conn.close();
}
}
}