blob: 97020377d9e1d4e7d6979c4ff1c478bb82e2a81e [file] [log] [blame]
/*
* Copyright (c) 2005, 2020 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2015 SAP. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// SAP - initial API and implementation
package org.eclipse.persistence.testing.tests.wdf.jpa1.query;
import org.eclipse.persistence.testing.framework.wdf.Skip;
import org.eclipse.persistence.testing.framework.wdf.ToBeInvestigated;
import org.junit.Test;
public class TestGroupByOrderByHaving extends QueryTest {
@Test
@ToBeInvestigated
public void testOrderBy0() {
/* 0 */assertInvalidQuery("SELECT c FROM City c order by c.type");
}
@Test
public void testOrderBy1() {
/* 1 */assertValidQuery("SELECT c FROM City c order by c.id");
}
@Test
public void testOrderBy2() {
/* 2 */assertInvalidQuery("SELECT c FROM City c order by c.cops");
}
@Test
public void testOrderBy3() {
/* 3 */assertInvalidQuery("SELECT c, max(c.id) FROM City c order by c.id");
}
@Test
@ToBeInvestigated
public void testOrderBy4() {
/* 4 */assertInvalidQuery("SELECT c, new org.eclipse.persistence.testing.models.wdf.jpa1.jpql.Holder(c.id) FROM City c order by c.id");
}
@Test
@ToBeInvestigated
public void testOrderBy5() {
/* 5 */assertInvalidQuery("select c, p.string from Person p, Cop c order by p.integer");
}
@Test
public void testOrderBy6() {
/* 6 */assertValidQuery("select c, p from Person p, Cop c order by p.integer");
}
@Test
public void testOrderBy7() {
/* 7 */assertValidQuery("select c.partner, p from Person p, Cop c order by c.partner.id");
}
@Test
public void testOrderBy8() {
assertValidQuery("select c, p from Person p, Cop c order by c.partner.id");
}
@Test
public void testOrderBy9() {
assertValidQueryExecution("select t from Task t order by t.projectId");
}
@Test
public void testGroupBy0() {
/* 9 */assertValidQuery("select c, p.id from Person p, Cop c group by c, p.id");
}
@Test
public void testGroupBy1() {
/* 10 */assertValidQuery("select c, p.id from Person p, Cop c group by c");
}
@Test
public void testGroupBy2() {
/* 11 */assertValidQuery("select c, p.id from Person p, Cop c group by p.id");
}
@Test
public void testGroupBy3() {
/* 12 */assertValidQuery("select p.id from Person p, Cop c group by c, p.id");
}
@Test
public void testGroupBy4() {
assertValidQuery("select c from Person p, Cop c group by c, p.id");
}
@Test
public void testGroupBy5() {
/* 14 */assertValidQuery("select max(p.integer), c, min(p.string), p.id from Person p, Cop c group by c, p.id");
}
@Test
public void testGroupBy6() {
assertValidQueryExecution("SELECT p,stadt FROM Person p join p.city AS stadt ORDER BY p.id DESC, stadt.name ASC");
}
@Test
public void testGroupBy7() {
// TODO check if query is meaningful
assertValidQuery("SELECT c, new org.eclipse.persistence.testing.models.wdf.jpa1.jpql.Holder(c.id) FROM City c group by c.id");
}
@Test
@ToBeInvestigated
public void testGroupBy8() {
/* 16 */assertInvalidQuery("select c.partner.informers, p.id from Person p, Cop c group by c.partner.informers, p.id");
}
@Test
public void testGroupBy9() {
/* 17 */assertValidQuery("select c, p.id from Person p, Cop c group by c, p.id having p.id = 5 order by p.id");
}
@Test
public void testSubQueryGroupBy0() {
/* 18 */assertValidQuery("select _city from City _city where exists(select c from Cop c group by c, c.id, c.tesla)");
}
@Test
public void testSubQueryGroupBy1() {
/* 19 */assertValidQuery("select _city from City _city where exists(select c from Cop c group by c, c, c having c.tesla is not null)");
}
@Test
public void testSubQueryGroupBy2() {
/* 20 */assertValidQuery("select _city from City _city where exists(select c.id from Cop c group by c.id having c.partner.id = 5)");
}
@Test
@Skip(databaseNames="org.eclipse.persistence.platform.database.MaxDBPlatform")
/*
* On MaxDB, the query maps to
* "SELECT t0.ID, t0.COOL, t0.NAME, t0.TYPE, t0.CITY_ENUM, t0.CITY_TESLA_INT, t0.CITY_TESLA_BLOB FROM TMP_CITY t0 WHERE EXISTS (SELECT 1 FROM TMP_COP t2, TMP_COP t1 WHERE (t2.ID = t1.PARTNER_ID) GROUP BY t1.ID HAVING (t2.ID = 5))"
* . The query is invalid (as expected) and should fail on the database as
* t2.ID is no grouping column and must not be used in HAVING.
*/
public void testSubQueryGroupBy3() {
/* 21 */assertInvalidQuery("select _city from City _city where exists(select max(c.id) from Cop c group by c.id having c.partner.id = 5)");
}
@Test
public void testSubQueryGroupBy4() {
/* 22 */assertValidQuery("select _city from City _city where exists(select c from Cop c group by c.id)");
}
@Test
@ToBeInvestigated
public void testSubQueryGroupBy5() {
/* 23 */assertInvalidQuery("select _city from City _city where exists(select c.tesla from Cop c group by c.id)");
}
@Test
@ToBeInvestigated
public void testConstructorGroupBy0() {
assertValidQuery("SELECT new org.eclipse.persistence.testing.models.wdf.jpa1.jpql.Holder(count(p)) FROM City c, Person p group by c.id");
}
@Test
public void testConstructorGroupBy1() {
/* 25 */assertValidQuery("SELECT new org.eclipse.persistence.testing.models.wdf.jpa1.jpql.Holder(max(c.id)) FROM City c group by c.id");
}
}