package com.avaje.tests.query.other; import org.junit.Assert; import org.junit.Test; import com.avaje.ebean.Ebean; import com.avaje.ebeaninternal.api.HashQueryPlanBuilder; import com.avaje.ebeaninternal.api.SpiQuery; import com.avaje.tests.model.basic.Order; public class TestQueryPlanHash { @Test public void test() { HashQueryPlanBuilder builder1 = new HashQueryPlanBuilder(); SpiQuery squery = (SpiQuery)Ebean.find(Order.class); squery.queryAutoTuneHash(builder1); squery.where().in("id", 1,2,3); HashQueryPlanBuilder builder2 = new HashQueryPlanBuilder(); squery.queryAutoTuneHash(builder2); int q1BindHash = squery.queryBindHash(); Assert.assertNotSame(builder1.build(), builder2.build()); HashQueryPlanBuilder builder3 = new HashQueryPlanBuilder(); SpiQuery squery2 = (SpiQuery)Ebean.find(Order.class); squery2.where().in("id", 2,2,3); squery2.queryAutoTuneHash(builder3); int q2BindHash = squery2.queryBindHash(); Assert.assertEquals(builder3.build(), builder2.build()); Assert.assertTrue(q1BindHash != q2BindHash); HashQueryPlanBuilder builder4 = new HashQueryPlanBuilder(); SpiQuery squery4 = (SpiQuery)Ebean.find(Order.class); squery4.where().in("name", 2,2,3); squery4.queryAutoTuneHash(builder4); int q4BindHash = squery4.queryBindHash(); //different query plan Assert.assertTrue(!builder3.build().equals(builder4.build())); //same bind hash Assert.assertTrue(q4BindHash == q2BindHash); } }