Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-437-sqltests-p2 d76c20112 -> c6816a33f


ignite-437: testAll and  BQ1


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/c6816a33
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/c6816a33
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/c6816a33

Branch: refs/heads/ignite-437-sqltests-p2
Commit: c6816a33f044cce2264a3cefe280b792d7b16887
Parents: d76c201
Author: Artem Shutak <ashu...@gridgain.com>
Authored: Mon Apr 6 15:53:46 2015 +0300
Committer: Artem Shutak <ashu...@gridgain.com>
Committed: Mon Apr 6 15:53:46 2015 +0300

----------------------------------------------------------------------
 .../query/h2/sql/BaseH2CompareQueryTest.java    | 253 ++++++++++++++++++-
 .../query/h2/sql/GridQueryParsingTest.java      |   4 +-
 .../query/h2/sql/H2CompareBigQueryTest.java     |  92 ++++++-
 3 files changed, 325 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6816a33/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java
index cbe2f6a..8ba1e68 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java
@@ -16,6 +16,7 @@ import org.apache.ignite.configuration.*;
 
 import java.io.*;
 import java.sql.*;
+import java.sql.Date;
 import java.util.*;
 
 /**
@@ -23,6 +24,13 @@ import java.util.*;
  * which have the same data models and data content.
  */
 public class BaseH2CompareQueryTest extends AbstractH2CompareQueryTest {
+
+    public static final int ORG_CNT = 3;
+    public static final int ADDR_CNT = 10;
+    public static final int PERS_CNT = 5;
+    public static final int PROD_CNT = 10;
+    public static final int PURCH_CNT = PROD_CNT * 2;
+
     /** {@inheritDoc} */
     @Override protected void setIndexedTypes(CacheConfiguration<?, ?> cc, 
CacheMode mode) {
         if (mode == CacheMode.PARTITIONED)
@@ -33,7 +41,8 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
             );
         else if (mode == CacheMode.REPLICATED)
             cc.setIndexedTypes(
-                Integer.class, Product.class
+                Integer.class, Product.class,
+                Integer.class, Address.class
             );
         else
             throw new IllegalStateException("mode: " + mode);
@@ -47,7 +56,7 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
         // Organizations.
         List<Organization> organizations = new ArrayList<>();
 
-        for (int i = 0; i < 3; i++) {
+        for (int i = 0; i < ORG_CNT; i++) {
             int id = idGen++;
 
             Organization org = new Organization(id, "Org" + id);
@@ -58,15 +67,30 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
 
             insertInDb(org);
         }
+        
+       // Adresses.
+        List<Address> addreses = new ArrayList<>();
+
+        for (int i = 0; i < ADDR_CNT; i++) {
+            int id = idGen++;
+
+            Address addr = new Address(id, "Addr" + id);
+
+            addreses.add(addr);
+
+            rCache.put(addr.id, addr);
+
+            insertInDb(addr);
+        }
 
         // Persons.
         List<Person> persons = new ArrayList<>();
 
-        for (int i = 0; i < 5; i++) {
+        for (int i = 0; i < PERS_CNT; i++) {
             int id = idGen++;
 
             Person person = new Person(id, organizations.get(i % 
organizations.size()),
-                "name" + id, "lastName" + id, id * 100.0);
+                "name" + id, "lastName" + id, id * 100.0, addreses.get(i % 
addreses.size()));
 
             // Add a Person without lastname.
             if (id == organizations.size() + 1)
@@ -82,7 +106,7 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
         // Products.
         List<Product> products = new ArrayList<>();
 
-        for (int i = 0; i < 10; i++) {
+        for (int i = 0; i < PROD_CNT; i++) {
             int id = idGen++;
 
             Product product = new Product(id, "Product" + id, id*1000);
@@ -95,7 +119,7 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
         }
 
         // Purchases.
-        for (int i = 0; i < products.size() * 2; i++) {
+        for (int i = 0; i < PURCH_CNT; i++) {
             int id = idGen++;
 
             Purchase purchase = new Purchase(id, products.get(i % 
products.size()), persons.get(i % persons.size()));
@@ -118,6 +142,128 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
     }
 
     /**
+     * *
+     * @throws Exception
+     */
+    public void testAllExamples() throws Exception {
+//        compareQueryRes0("select ? limit ? offset ?");
+
+//        compareQueryRes0("select cool1()");
+//        compareQueryRes0("select cool1() z");
+//
+//        compareQueryRes0("select b,a from table0('aaa', 100)");
+//        compareQueryRes0("select * from table0('aaa', 100)");
+//        compareQueryRes0("select * from table0('aaa', 100) t0");
+//        compareQueryRes0("select x.a, y.b from table0('aaa', 100) x natural 
join table0('bbb', 100) y");
+//        compareQueryRes0("select * from table0('aaa', 100) x join 
table0('bbb', 100) y on x.a=y.a and x.b = 'bbb'");
+//        compareQueryRes0("select * from table0('aaa', 100) x left join 
table0('bbb', 100) y on x.a=y.a and x.b = 'bbb'");
+//        compareQueryRes0("select * from table0('aaa', 100) x left join 
table0('bbb', 100) y on x.a=y.a where x.b = 'bbb'");
+//        compareQueryRes0("select * from table0('aaa', 100) x left join 
table0('bbb', 100) y where x.b = 'bbb'");
+
+        final String addStreet = "Addr" + ORG_CNT + 1;
+        
+        List<List<?>> res = compareQueryRes0("select avg(old) from 
\"part\".Person left join \"repl\".Address " +
+            " on Person.addrId = Address.id where lower(Address.street) = 
lower(?)", addStreet);
+        
+        assertNotSame(0, res);
+
+        compareQueryRes0("select avg(old) from \"part\".Person join 
\"repl\".Address on Person.addrId = Address.id " +
+            "where lower(Address.street) = lower(?)", addStreet);
+
+        compareQueryRes0("select avg(old) from \"part\".Person left join 
\"repl\".Address where Person.addrId = Address.id " +
+            "and lower(Address.street) = lower(?)", addStreet);
+
+        compareQueryRes0("select avg(old) from \"part\".Person, 
\"repl\".Address where Person.addrId = Address.id " +
+            "and lower(Address.street) = lower(?)", addStreet);
+
+        compareQueryRes0("select firstName, date from \"part\".Person");
+        compareQueryRes0("select distinct firstName, date from 
\"part\".Person");
+        
+        final String star = " _key, _val, id, firstName, lastName, orgId, 
salary, addrId, old, date ";
+        
+        compareQueryRes0("select " + star + " from \"part\".Person p");
+        compareQueryRes0("select " + star + " from \"part\".Person");
+        compareQueryRes0("select distinct " + star + " from \"part\".Person");
+        compareQueryRes0("select p.firstName, date from \"part\".Person p");
+        
+        compareQueryRes0("select p._key, p._val, p.id, p.firstName, 
p.lastName, p.orgId, p.salary, p.addrId, p.old, " +
+            " p.date, a._key, a._val, a.id, a.street" +
+            " from \"part\".Person p, \"repl\".Address a");
+//        compareQueryRes0("select p.* from \"part\".Person p, 
\"repl\".Address a");
+//        compareQueryRes0("select person.* from \"part\".Person, 
\"repl\".Address a");
+//        compareQueryRes0("select p.*, street from \"part\".Person p, 
\"repl\".Address a");
+        compareQueryRes0("select p.firstName, a.street from \"part\".Person p, 
\"repl\".Address a");
+        compareQueryRes0("select distinct p.firstName, a.street from 
\"part\".Person p, \"repl\".Address a");
+        compareQueryRes0("select distinct firstName, street from 
\"part\".Person, \"repl\".Address group by firstName, street ");
+        compareQueryRes0("select distinct firstName, street from 
\"part\".Person, \"repl\".Address");
+        // TODO uncomment and investigate (Rows count has to be equal.: 
Expected :2500, Actual :900)
+//        compareQueryRes0("select p1.firstName, a2.street from 
\"part\".Person p1, \"repl\".Address a1, \"part\".Person p2, \"repl\".Address 
a2");
+
+        //TODO look at it (org.h2.jdbc.JdbcSQLException: Feature not 
supported: "VARCHAR +" // at H2)
+//        compareQueryRes0("select p.firstName n, a.street s from 
\"part\".Person p, \"repl\".Address a");
+        compareQueryRes0("select p.firstName, 1 as i, 'aaa' s from 
\"part\".Person p");
+
+//        compareQueryRes0("select p.firstName + 'a', 1 * 3 as i, 'aaa' s, 
-p.old, -p.old as old from \"part\".Person p");
+//        compareQueryRes0("select p.firstName || 'a' + p.firstName, (p.old * 
3) % p.old - p.old / p.old, p.firstName = 'aaa', " +
+//            " p.firstName is p.firstName, p.old > 0, p.old >= 0, p.old < 0, 
p.old <= 0, p.old <> 0, p.old is not p.old, " +
+//            " p.old is null, p.old is not null " +
+//            " from \"part\".Person p");
+
+        compareQueryRes0("select p.firstName from \"part\".Person p where 
firstName <> 'ivan'");
+        compareQueryRes0("select p.firstName from \"part\".Person p where 
firstName like 'i%'");
+        compareQueryRes0("select p.firstName from \"part\".Person p where 
firstName regexp 'i%'");
+        compareQueryRes0("select p.firstName from \"part\".Person p, 
\"repl\".Address a where p.firstName <> 'ivan' and a.id > 10 or not (a.id = 
100)");
+
+        compareQueryRes0("select case p.firstName when 'a' then 1 when 'a' 
then 2 end as a from \"part\".Person p");
+        compareQueryRes0("select case p.firstName when 'a' then 1 when 'a' 
then 2 else -1 end as a from \"part\".Person p");
+
+        compareQueryRes0("select abs(p.old)  from \"part\".Person p");
+        compareQueryRes0("select cast(p.old as numeric(10, 2)) from 
\"part\".Person p");
+        compareQueryRes0("select cast(p.old as numeric(10, 2)) z from 
\"part\".Person p");
+        compareQueryRes0("select cast(p.old as numeric(10, 2)) as z from 
\"part\".Person p");
+
+        compareQueryRes0("select " + star + " from \"part\".Person p where 
p.firstName in ('a', 'b', '_' + RAND())"); // test ConditionIn
+        compareQueryRes0("select " + star + " from \"part\".Person p where 
p.firstName in ('a', 'b', 'c')"); // test ConditionInConstantSet
+        compareQueryRes0("select " + star + " from \"part\".Person p where 
p.firstName in (select a.street from \"repl\".Address a)"); // test 
ConditionInConstantSet
+
+        compareQueryRes0("select (select a.street from \"repl\".Address a 
where a.id = p.addrId) from \"part\".Person p"); // test ConditionInConstantSet
+
+        compareQueryRes0("select p.firstName, ? from \"part\".Person p where 
firstName regexp ? and p.old < ?");
+
+        compareQueryRes0("select count(*) as a from \"part\".Person");
+        compareQueryRes0("select count(*) as a, count(p.*), count(p.firstName) 
from \"part\".Person p");
+        compareQueryRes0("select count(distinct p.firstName) from 
\"part\".Person p");
+
+        compareQueryRes0("select p.firstName, avg(p.old), max(p.old) from 
\"part\".Person p group by p.firstName");
+        compareQueryRes0("select p.firstName n, avg(p.old) a, max(p.old) m 
from \"part\".Person p group by p.firstName");
+        compareQueryRes0("select p.firstName n, avg(p.old) a, max(p.old) m 
from \"part\".Person p group by n");
+
+        compareQueryRes0("select p.firstName n, avg(p.old) a, max(p.old) m 
from \"part\".Person p group by p.addrId, p.firstName");
+        compareQueryRes0("select p.firstName n, avg(p.old) a, max(p.old) m 
from \"part\".Person p group by p.firstName, p.addrId");
+        compareQueryRes0("select p.firstName n, max(p.old) + min(p.old) / 
count(distinct p.old) from \"part\".Person p group by p.firstName");
+        compareQueryRes0("select p.firstName n, max(p.old) maxOld, min(p.old) 
minOld from \"part\".Person p group by p.firstName having maxOld > 10 and 
min(p.old) < 1");
+
+        compareQueryRes0("select p.firstName n, avg(p.old) a, max(p.old) m 
from \"part\".Person p group by p.firstName order by n");
+        compareQueryRes0("select p.firstName n, avg(p.old) a, max(p.old) m 
from \"part\".Person p group by p.firstName order by p.firstName");
+        compareQueryRes0("select p.firstName n, avg(p.old) a, max(p.old) m 
from \"part\".Person p group by p.firstName order by p.firstName, m");
+        compareQueryRes0("select p.firstName n, avg(p.old) a, max(p.old) m 
from \"part\".Person p group by p.firstName order by p.firstName, max(p.old) 
desc");
+        compareQueryRes0("select p.firstName n, avg(p.old) a, max(p.old) m 
from \"part\".Person p group by p.firstName order by p.firstName nulls first");
+        compareQueryRes0("select p.firstName n, avg(p.old) a, max(p.old) m 
from \"part\".Person p group by p.firstName order by p.firstName nulls last");
+        compareQueryRes0("select p.firstName n from \"part\".Person p order by 
p.old + 10");
+        compareQueryRes0("select p.firstName n from \"part\".Person p order by 
p.old + 10, p.firstName");
+        compareQueryRes0("select p.firstName n from \"part\".Person p order by 
p.old + 10, p.firstName desc");
+
+        compareQueryRes0("select p.firstName n from \"part\".Person p, (select 
a.street from \"repl\".Address a where a.street is not null) ");
+        compareQueryRes0("select street from \"part\".Person p, (select 
a.street from \"repl\".Address a where a.street is not null) ");
+        compareQueryRes0("select addr.street from \"part\".Person p, (select 
a.street from \"repl\".Address a where a.street is not null) addr");
+
+        compareQueryRes0("select p.firstName n from \"part\".Person p order by 
p.old + 10");
+
+        compareQueryRes0("select 'foo' as bar union select 'foo' as bar");
+        compareQueryRes0("select 'foo' as bar union all select 'foo' as bar");
+    }
+
+    /**
      * @throws Exception If failed.
      */
     public void testSimpleReplSelect() throws Exception {
@@ -248,7 +394,10 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
             "  firstName varchar(255), " +
             "  lastName varchar(255)," +
             "  orgId int not null," +
-            "  salary double )");
+            "  salary double," +
+            "  addrId int," +
+            "  old int," +
+            "  date Date )");
 
         st.execute("create table \"repl\".PRODUCT" +
             "  (_key int not null ," +
@@ -264,6 +413,12 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
             "  personId int, " +
             "  productId int)");
 
+        st.execute("create table \"repl\".ADDRESS" +
+            "  (_key int not null ," +
+            "   _val other not null ," +
+            "  id int unique, " +
+            "  street varchar(255))");
+
         conn.commit();
     }
     
@@ -293,7 +448,7 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
      */
     private void insertInDb(Person p) throws SQLException {
         try(PreparedStatement st = conn.prepareStatement("insert into 
\"part\".PERSON " +
-            "(_key, _val, id, firstName, lastName, orgId, salary) values(?, ?, 
?, ?, ?, ?, ?)")) {
+            "(_key, _val, id, firstName, lastName, orgId, salary, addrId, old, 
date) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")) {
             st.setObject(1, p.key());
             st.setObject(2, p);
             st.setObject(3, p.id);
@@ -301,6 +456,9 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
             st.setObject(5, p.lastName);
             st.setObject(6, p.orgId);
             st.setObject(7, p.salary);
+            st.setObject(8, p.addrId);
+            st.setObject(9, p.old);
+            st.setObject(10, p.date);
 
             st.executeUpdate();
         }
@@ -343,6 +501,34 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
             st.executeUpdate();
         }
     }
+    
+    /**
+     * Insert {@link Address} at h2 database.
+     *
+     * @param a Address.
+     * @throws SQLException If exception.
+     */
+    private void insertInDb(Address a) throws SQLException {
+        try(PreparedStatement st = conn.prepareStatement(
+            "insert into \"repl\".ADDRESS (_key, _val, id, street) values(?, 
?, ?, ?)")) {
+            st.setObject(1, a.id);
+            st.setObject(2, a);
+            st.setObject(3, a.id);
+            st.setObject(4, a.street);
+
+            st.executeUpdate();
+        }
+    }
+
+    @QuerySqlFunction
+    public static int cool1() {
+        return 1;
+    }
+
+    @QuerySqlFunction
+    public static ResultSet table0(Connection c, String a, int b) throws 
SQLException {
+        return c.createStatement().executeQuery("select '" + a + "' as a, " +  
b + " as b");
+    }
 
     /**
      * Person class. Stored at partitioned cache.
@@ -368,6 +554,19 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
         @QuerySqlField(index = true)
         private double salary;
 
+        /** Address Id (indexed). */
+        @QuerySqlField(index = true)
+        private int addrId;
+
+        /** Date. */
+        @QuerySqlField(index = true)
+        public Date date = new Date(System.currentTimeMillis());
+
+        /** Old. */
+        @QuerySqlField(index = true)
+        public int old = 17;
+
+
         /**
          * Constructs person record.
          *
@@ -376,12 +575,13 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
          * @param lastName Last name.
          * @param salary Salary.
          */
-        Person(int id, Organization org, String firstName, String lastName, 
double salary) {
+        Person(int id, Organization org, String firstName, String lastName, 
double salary, Address addr) {
             this.id = id;
             this.firstName = firstName;
             this.lastName = lastName;
             this.salary = salary;
             orgId = org.id;
+            addrId = addr.id;
         }
 
         /**
@@ -408,7 +608,8 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
                 ", lastName=" + lastName +
                 ", id=" + id +
                 ", orgId=" + orgId +
-                ", salary=" + salary + ']';
+                ", salary=" + salary + 
+                ", addrId=" + addrId + ']';
         }
     }
 
@@ -537,7 +738,6 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
         /** {@inheritDoc} */
         @Override public boolean equals(Object o) {
             return this == o || o instanceof Purchase && id == 
((Purchase)o).id;
-
         }
 
         /** {@inheritDoc} */
@@ -550,4 +750,35 @@ public class BaseH2CompareQueryTest extends 
AbstractH2CompareQueryTest {
             return "Purchase [id=" + id + ", productId=" + productId + ", 
personId=" + personId + ']';
         }
     }
+
+    /**
+     * Address class. Stored at replicated cache.
+     */
+    private static class Address implements Serializable {
+        @QuerySqlField(index = true)
+        private int id;
+
+        @QuerySqlField(index = true)
+        private String street;
+
+        Address(int id, String street) {
+            this.id = id;
+            this.street = street;
+        }
+
+        /** {@inheritDoc} */
+        @Override public boolean equals(Object o) {
+            return this == o || o instanceof Address && id == ((Address)o).id;
+        }
+
+        /** {@inheritDoc} */
+        @Override public int hashCode() {
+            return id;
+        }
+
+        /** {@inheritDoc} */
+        @Override public String toString() {
+            return "Address [id=" + id + ", street=" + street + ']';
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6816a33/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
index d1c59bb..b885a18 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
@@ -22,7 +22,6 @@ import org.apache.ignite.cache.*;
 import org.apache.ignite.cache.query.annotations.*;
 import org.apache.ignite.configuration.*;
 import org.apache.ignite.internal.*;
-import org.apache.ignite.internal.processors.cache.*;
 import org.apache.ignite.internal.processors.query.*;
 import org.apache.ignite.internal.processors.query.h2.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
@@ -199,6 +198,9 @@ public class GridQueryParsingTest extends 
GridCommonAbstractTest {
         checkQuery("select addr.street from Person p, (select a.street from 
Address a where a.street is not null) addr");
 
         checkQuery("select p.name n from \"\".Person p order by p.old + 10");
+        
+        checkQuery("select 'foo' as bar union select 'foo' as bar");
+        checkQuery("select 'foo' as bar union all select 'foo' as bar");
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c6816a33/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/H2CompareBigQueryTest.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/H2CompareBigQueryTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/H2CompareBigQueryTest.java
index 0385868..25c9c04 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/H2CompareBigQueryTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/H2CompareBigQueryTest.java
@@ -50,12 +50,12 @@ public class H2CompareBigQueryTest extends 
AbstractH2CompareQueryTest {
     @Override protected void initCacheAndDbData() throws SQLException {
         int idGen = 0;
 
-        final List<OrderT1> ordsT1 = new ArrayList<>();
+        final Collection<OrderT1> ordsT1 = new ArrayList<>();
 
         for (int i = 0; i < 10; i++) {
             int id = idGen++;
 
-            OrderT1 order = new OrderT1();
+            OrderT1 order = new OrderT1(id, 2000 + id, id % 2 == 0 ? "CUSTOM" 
: "OTHER");
 
             ordsT1.add(order);
 
@@ -64,12 +64,12 @@ public class H2CompareBigQueryTest extends 
AbstractH2CompareQueryTest {
             insertInDb(order);
         }
 
-        final List<OrderT2> ordsT2 = new ArrayList<>();
+        final Collection<OrderT2> ordsT2 = new ArrayList<>();
 
         for (int i = 0; i < 10; i++) {
             int id = idGen++;
 
-            OrderT2 order = new OrderT2();
+            OrderT2 order = new OrderT2(id, 3000 + id, id % 2 == 0 ? "CUSTOM" 
: "OTHER");
 
             ordsT2.add(order);
 
@@ -93,14 +93,65 @@ public class H2CompareBigQueryTest extends 
AbstractH2CompareQueryTest {
     public void testUnionAllOrders() throws Exception {
         compareQueryRes0(
             "   select  date, orderId, rootOrderId " +
-                "   from OrderT1 where alias='CUSTOM'" +
+                "   from \"part\".OrderT1 where alias='CUSTOM'");
+                
+        compareQueryRes0(
+                "   select  date, orderId, rootOrderId " +
+                "   from \"part\".OrderT2 where alias='CUSTOM'");
+        
+        compareQueryRes0(
+            "   select 10" +
+
+                "   union all" +
+
+                "   select  20");
+        
+        compareQueryRes0(
+            "   select  date, orderId, rootOrderId " +
+                "   from \"part\".OrderT1 where alias='CUSTOM'" +
 
                 "   union all" +
 
                 "   select  date, orderId, rootOrderId " +
-                "   from OrderT2 where alias='CUSTOM'");
+                "   from \"part\".OrderT2 where alias='CUSTOM'");
     }
 
+    /**
+     * @throws Exception If failed.
+     */
+    public void testBigQueryPart1() throws Exception {
+        compareQueryRes0(
+            "    select" +
+            "        root_order_id as cust_order_id," +
+            "        co.date, co.order_id," +
+            "        replace(co.alias,'_ALGO','') as alias, co.portfolio," +
+            "        co.symbol, co.side, co.order_datetime, co.ord_size, 
co.currency, co.exchange," +
+            "        co.ord_type, co.lim_price, co.comment, co.tif, 
co.exec_inst," +
+            "        co.rule80, co.sndr_compid, co.target_subid," +
+            "        co.OnBehalfOfSubID, co.SenderLocationID, co.ss_exempt, 
co.locate_reqd, co.locate_brkr," +
+            "        cpp.parent_algo" +
+            "    from (" +
+            "        select" +
+            "            date, order_id, order_datetime, orig_order_id, 
portfolio, alias, symbol," +
+            "            side, currency, exchange, ord_size, ord_type, 
lim_price, comment, tif, exec_inst," +
+            "            rule80, tag_22, tag_48, sndr_compid," +
+            "            target_subid, OnBehalfOfSubID, SenderLocationID, 
ss_exempt, locate_reqd, locate_brkr," +
+            "            source, arch_seq, 0 as bench, ext_order_id," +
+            "            root_order_id" +
+            "        from GetsCustOrder where alias='CUSTOM'" +
+            "        union all" +
+            "        select" +
+            "            date, order_id, order_datetime, ref_order_id as 
orig_order_id, portfolio, alias, symbol," +
+            "            side, currency, exchange, 
isnull(leaves_qty,ord_size), ord_type, lim_price, comment, tif, exec_inst," +
+            "            isnull(rule80,'A'), tag_22, tag_48, sndr_compid," +
+            "            target_subid, OnBehalfOfSubID, SenderLocationID, 
ss_exempt, locate_reqd, locate_brkr," +
+            "            source, arch_seq, 0 as bench, ext_order_id," +
+            "            root_order_id" +
+            "        from GetsCustReplace where alias='CUSTOM'" +
+            "    ) co, GetsOrderAlgoParams cpp" +
+            "    where co.date = cpp.date and co.order_id = cpp.order_id " +
+            "            and dateToLong(co.date)+co.arch_seq 
=(BigQueryPartSelectMax) and co.alias='CUSTOM'");
+    }
 
     /** {@inheritDoc} */
     @Override protected void initializeH2Schema() throws SQLException {
@@ -113,7 +164,7 @@ public class H2CompareBigQueryTest extends 
AbstractH2CompareQueryTest {
             "  (" +
             "  _key int not null," +
             "  _val other not null," +
-            "  orderId int," +
+            "  orderId int unique," +
             "  rootOrderId int," +
             "  date Date, " +
             "  alias varchar(255)" +
@@ -123,7 +174,7 @@ public class H2CompareBigQueryTest extends 
AbstractH2CompareQueryTest {
             "  (" +
             "  _key int not null," +
             "  _val other not null," +
-            "  orderId int," +
+            "  orderId int unique," +
             "  rootOrderId int," +
             "  date Date, " +
             "  alias varchar(255)" +
@@ -148,7 +199,7 @@ public class H2CompareBigQueryTest extends 
AbstractH2CompareQueryTest {
 
     private void insertInDb(OrderT2 o) throws SQLException {
         try(PreparedStatement st = conn.prepareStatement(
-            "insert into \"part\".OrderT1 (_key, _val, orderId, rootOrderId, 
date, alias) values(?, ?, ?, ?, ?, ?)")) {
+            "insert into \"part\".OrderT2 (_key, _val, orderId, rootOrderId, 
date, alias) values(?, ?, ?, ?, ?, ?)")) {
             st.setObject(1, o.orderId);
             st.setObject(2, o);
             st.setObject(3, o.orderId);
@@ -171,12 +222,23 @@ public class H2CompareBigQueryTest extends 
AbstractH2CompareQueryTest {
 
         /** Date */
         @QuerySqlField
-        private Date date = new Date();
+        private Date date ;
 
         /**  */
         @QuerySqlField
         private String alias = "CUSTOM";
 
+        /**
+         * @param orderId Order id.
+         * @param rootOrderId Root order id.
+         * @param alias Alias.
+         */
+        OrderT1(int orderId, int rootOrderId, String alias) {
+            this.orderId = orderId;
+            this.rootOrderId = rootOrderId;
+            this.alias = alias;
+        }
+
         /** {@inheritDoc} */
         @Override public boolean equals(Object o) {
             return this == o || o instanceof OrderT1 && orderId == 
((OrderT1)o).orderId;
@@ -199,15 +261,21 @@ public class H2CompareBigQueryTest extends 
AbstractH2CompareQueryTest {
 
         /** Date */
         @QuerySqlField
-        private Date date = new Date();
+        private Date date ;
 
         /**  */
         @QuerySqlField
         private String alias = "CUSTOM";
 
+        OrderT2(int orderId, int rootOrderId, String alias) {
+            this.orderId = orderId;
+            this.rootOrderId = rootOrderId;
+            this.alias = alias;
+        }
+
         /** {@inheritDoc} */
         @Override public boolean equals(Object o) {
-            return this == o || o instanceof OrderT1 && orderId == 
((OrderT1)o).orderId;
+            return this == o || o instanceof OrderT2 && orderId == 
((OrderT2)o).orderId;
         }
 
         /** {@inheritDoc} */

Reply via email to