use of org.hibernate.engine.query.spi.HQLQueryPlan in project hibernate-orm by hibernate.
the class PaginationTest method testLimitWithExpreesionAndFetchJoin.
/**
* @author Piotr Findeisen <piotr.findeisen@gmail.com>
*/
@Test
@TestForIssue(jiraKey = "HHH-951")
@RequiresDialectFeature(value = DialectChecks.SupportLimitCheck.class, comment = "Dialect does not support limit")
public void testLimitWithExpreesionAndFetchJoin() {
Session session = openSession();
session.beginTransaction();
String hql = "SELECT b, 1 FROM DataMetaPoint b inner join fetch b.dataPoint dp";
session.createQuery(hql).setMaxResults(3).list();
HQLQueryPlan queryPlan = new HQLQueryPlan(hql, false, Collections.EMPTY_MAP, sessionFactory());
String sqlQuery = queryPlan.getTranslators()[0].collectSqlStrings().get(0);
session.getTransaction().commit();
session.close();
Matcher matcher = Pattern.compile("(?is)\\b(?<column>\\w+\\.\\w+)\\s+as\\s+(?<alias>\\w+)\\b.*\\k<column>\\s+as\\s+\\k<alias>").matcher(sqlQuery);
if (matcher.find()) {
fail(format("Column %s mapped to alias %s twice in generated SQL: %s", matcher.group("column"), matcher.group("alias"), sqlQuery));
}
}
use of org.hibernate.engine.query.spi.HQLQueryPlan in project hibernate-orm by hibernate.
the class TupleSupportTest method testImplicitTupleNotInList.
@Test
public void testImplicitTupleNotInList() {
final String hql = "from TheEntity e where e.compositeValue not in (:p1,:p2)";
HQLQueryPlan queryPlan = ((SessionFactoryImplementor) sessionFactory).getQueryPlanCache().getHQLQueryPlan(hql, false, Collections.<String, Filter>emptyMap());
assertEquals(1, queryPlan.getSqlStrings().length);
System.out.println(" SQL : " + queryPlan.getSqlStrings()[0]);
assertTrue(queryPlan.getSqlStrings()[0].contains("<>"));
}
use of org.hibernate.engine.query.spi.HQLQueryPlan in project hibernate-orm by hibernate.
the class StatelessSessionImpl method scroll.
@Override
public ScrollableResultsImplementor scroll(String query, QueryParameters queryParameters) throws HibernateException {
checkOpen();
HQLQueryPlan plan = getQueryPlan(query, false);
return plan.performScroll(queryParameters, this);
}
use of org.hibernate.engine.query.spi.HQLQueryPlan in project hibernate-orm by hibernate.
the class CompositeIdTest method testNonDistinctCountOfEntityWithCompositeId.
@Test
public void testNonDistinctCountOfEntityWithCompositeId() {
// the check here is all based on whether we had commas in the expressions inside the count
final HQLQueryPlan plan = sessionFactory().getQueryPlanCache().getHQLQueryPlan("select count(o) from Order o", false, Collections.EMPTY_MAP);
assertEquals(1, plan.getTranslators().length);
final QueryTranslator translator = plan.getTranslators()[0];
final String generatedSql = translator.getSQLString();
final int countExpressionListStart = generatedSql.indexOf("count(");
final int countExpressionListEnd = generatedSql.indexOf(")", countExpressionListStart);
final String countExpressionFragment = generatedSql.substring(countExpressionListStart + 6, countExpressionListEnd + 1);
final boolean hadCommas = countExpressionFragment.contains(",");
// set up the expectation based on Dialect...
final boolean expectCommas = sessionFactory().getDialect().supportsTupleCounts();
assertEquals(expectCommas, hadCommas);
}
use of org.hibernate.engine.query.spi.HQLQueryPlan in project hibernate-orm by hibernate.
the class HQLTest method testReturnMetadata.
@Test
public void testReturnMetadata() {
HQLQueryPlan plan = createQueryPlan("from Animal a");
check(plan.getReturnMetadata(), false, true);
plan = createQueryPlan("select a as animal from Animal a");
check(plan.getReturnMetadata(), false, false);
plan = createQueryPlan("from java.lang.Object");
check(plan.getReturnMetadata(), true, true);
plan = createQueryPlan("select o as entity from java.lang.Object o");
check(plan.getReturnMetadata(), true, false);
}
Aggregations