| /* |
| * 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(); |
| } |
| } |
| } |