blob: f59bac7c170d2c7ba7f4dd2d8048f0b5bac69e2e [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.tajo.engine.query;
import org.apache.tajo.QueryTestCaseBase;
import org.apache.tajo.TajoConstants;
import org.junit.Test;
import java.sql.ResultSet;
public class TestTableSubQuery extends QueryTestCaseBase {
public TestTableSubQuery() {
super(TajoConstants.DEFAULT_DATABASE_NAME);
}
@Test
public final void testTableSubquery1() throws Exception {
ResultSet res = executeQuery();
assertResultSet(res);
cleanupQuery(res);
}
@Test
public final void testGroupBySubQuery() throws Exception {
ResultSet res = executeQuery();
assertResultSet(res);
cleanupQuery(res);
}
@Test
public final void testJoinSubQuery() throws Exception {
ResultSet res = executeQuery();
assertResultSet(res);
cleanupQuery(res);
}
@Test
public final void testJoinSubQuery2() throws Exception {
ResultSet res = executeQuery();
assertResultSet(res);
cleanupQuery(res);
}
@Test
public final void testGroupbySubqueryWithJson() throws Exception {
ResultSet res = executeJsonQuery();
assertResultSet(res);
cleanupQuery(res);
}
@Test
public final void testJoinSubqueryWithJson() throws Exception {
/*
SELECT
A.n_regionkey, B.r_regionkey, A.n_name, B.r_name
FROM
(SELECT * FROM nation WHERE n_name LIKE 'A%') A
JOIN region B ON A.n_regionkey=B.r_regionkey;
*/
ResultSet res = executeJsonQuery();
assertResultSet(res);
cleanupQuery(res);
}
@Test
@Option(sort = true)
@SimpleTest(
queries = @QuerySpec("" +
"select \n" +
" o_custkey, cnt \n" +
"from \n" +
" ( \n" +
" select \n" +
" o_custkey, cnt, row_number() over (partition by o_custkey order by cnt desc) ranking \n" +
" from \n" +
" (\n" +
" select \n" +
" o_custkey, l_suppkey, count(*) cnt\n" +
" from \n" +
" orders, lineitem\n" +
" where \n" +
" l_orderkey = o_orderkey\n" +
" group by \n" +
" o_custkey, l_suppkey\n" +
" having cnt > 0\n" +
" ) t\n" +
" ) t2 \n" +
"where \n" +
" ranking = 1;"
)
)
public void testMultipleSubqueriesWithAggregation() throws Exception {
runSimpleTests();
}
}