You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ja...@apache.org on 2014/01/28 09:04:26 UTC
git commit: Fix flapping unit test due to use of local timezone,
comment back-in uncommented QueryPlanTest
Updated Branches:
refs/heads/master 4066a331b -> 806d3412f
Fix flapping unit test due to use of local timezone, comment back-in uncommented QueryPlanTest
Project: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/commit/806d3412
Tree: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/tree/806d3412
Diff: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/diff/806d3412
Branch: refs/heads/master
Commit: 806d3412f51d68dfec2ef8c7929eba3df4a2d082
Parents: 4066a33
Author: James Taylor <ja...@apache.org>
Authored: Tue Jan 28 00:04:19 2014 -0800
Committer: James Taylor <ja...@apache.org>
Committed: Tue Jan 28 00:04:19 2014 -0800
----------------------------------------------------------------------
.../phoenix/expression/LiteralExpression.java | 3 +-
.../compile/StatementHintsCompilationTest.java | 9 +-
.../apache/phoenix/end2end/QueryPlanTest.java | 244 +++++++++----------
3 files changed, 127 insertions(+), 129 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/806d3412/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java
index 202bcb0..3449f4b 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java
@@ -26,7 +26,6 @@ import java.sql.SQLException;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.io.WritableUtils;
-
import org.apache.phoenix.exception.SQLExceptionCode;
import org.apache.phoenix.exception.SQLExceptionInfo;
import org.apache.phoenix.expression.visitor.ExpressionVisitor;
@@ -205,7 +204,7 @@ public class LiteralExpression extends BaseTerminalExpression {
@Override
public String toString() {
- return type != null && type.isCoercibleTo(PDataType.VARCHAR) ? "'" + value + "'" : "" + value;
+ return value == null ? "null" : type.toStringLiteral(byteValue, null);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/806d3412/phoenix-core/src/test/java/org/apache/phoenix/compile/StatementHintsCompilationTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/compile/StatementHintsCompilationTest.java b/phoenix-core/src/test/java/org/apache/phoenix/compile/StatementHintsCompilationTest.java
index 0fbd85b..448e6c3 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/compile/StatementHintsCompilationTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/compile/StatementHintsCompilationTest.java
@@ -35,8 +35,6 @@ import java.util.Set;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.FilterList;
-import org.junit.Test;
-
import org.apache.phoenix.compile.GroupByCompiler.GroupBy;
import org.apache.phoenix.expression.Expression;
import org.apache.phoenix.filter.SkipScanFilter;
@@ -46,6 +44,7 @@ import org.apache.phoenix.parse.SQLParser;
import org.apache.phoenix.parse.SelectStatement;
import org.apache.phoenix.query.BaseConnectionlessQueryTest;
import org.apache.phoenix.util.QueryUtil;
+import org.junit.Test;
/**
@@ -115,9 +114,9 @@ public class StatementHintsCompilationTest extends BaseConnectionlessQueryTest {
public void testSelectForceRangeScanForEH() throws Exception {
Connection conn = DriverManager.getConnection(getUrl());
conn.createStatement().execute("create table eh (organization_id char(15) not null,parent_id char(15) not null, created_date date not null, entity_history_id char(15) not null constraint pk primary key (organization_id, parent_id, created_date, entity_history_id))");
- ResultSet rs = conn.createStatement().executeQuery("explain select /*+ RANGE_SCAN */ ORGANIZATION_ID, PARENT_ID, CREATED_DATE, ENTITY_HISTORY_ID from eh where ORGANIZATION_ID='111111111111111' and SUBSTR(PARENT_ID, 1, 3) = 'foo' and TO_DATE ('2012-0-1 00:00:00') <= CREATED_DATE and CREATED_DATE <= TO_DATE ('2012-11-31 00:00:00') order by ORGANIZATION_ID, PARENT_ID, CREATED_DATE DESC, ENTITY_HISTORY_ID limit 100");
- assertEquals("CLIENT PARALLEL 1-WAY RANGE SCAN OVER EH ['111111111111111','foo','2011-12-01 00:00:00.000'] - ['111111111111111','fop','2012-12-01 00:00:00.000']\n" +
- " SERVER FILTER BY (CREATED_DATE >= 2011-11-30 AND CREATED_DATE <= 2012-11-30)\n" +
+ ResultSet rs = conn.createStatement().executeQuery("explain select /*+ RANGE_SCAN */ ORGANIZATION_ID, PARENT_ID, CREATED_DATE, ENTITY_HISTORY_ID from eh where ORGANIZATION_ID='111111111111111' and SUBSTR(PARENT_ID, 1, 3) = 'foo' and CREATED_DATE >= TO_DATE ('2012-11-01 00:00:00') and CREATED_DATE < TO_DATE ('2012-11-30 00:00:00') order by ORGANIZATION_ID, PARENT_ID, CREATED_DATE DESC, ENTITY_HISTORY_ID limit 100");
+ assertEquals("CLIENT PARALLEL 1-WAY RANGE SCAN OVER EH ['111111111111111','foo','2012-11-01 00:00:00.000'] - ['111111111111111','fop','2012-11-30 00:00:00.000']\n" +
+ " SERVER FILTER BY (CREATED_DATE >= '2012-11-01 00:00:00.000' AND CREATED_DATE < '2012-11-30 00:00:00.000')\n" +
" SERVER TOP 100 ROWS SORTED BY [ORGANIZATION_ID, PARENT_ID, CREATED_DATE DESC, ENTITY_HISTORY_ID]\n" +
"CLIENT MERGE SORT",QueryUtil.getExplainPlan(rs));
}
http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/806d3412/phoenix-core/src/test/java/org/apache/phoenix/end2end/QueryPlanTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/end2end/QueryPlanTest.java b/phoenix-core/src/test/java/org/apache/phoenix/end2end/QueryPlanTest.java
index ce06c3c..12c0c81 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/end2end/QueryPlanTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/end2end/QueryPlanTest.java
@@ -32,13 +32,13 @@ import java.sql.Statement;
import java.util.Map;
import java.util.Properties;
+import org.apache.phoenix.query.QueryServices;
+import org.apache.phoenix.util.QueryUtil;
+import org.apache.phoenix.util.ReadOnlyProps;
import org.junit.BeforeClass;
import org.junit.Test;
import com.google.common.collect.Maps;
-import org.apache.phoenix.query.QueryServices;
-import org.apache.phoenix.util.QueryUtil;
-import org.apache.phoenix.util.ReadOnlyProps;
public class QueryPlanTest extends BaseConnectedQueryTest {
@@ -62,125 +62,125 @@ public class QueryPlanTest extends BaseConnectedQueryTest {
"CLIENT PARALLEL 1-WAY SKIP SCAN ON 3 KEYS OVER PTSDB3 [~'na3'] - [~'na1']\n" +
" SERVER FILTER BY FIRST KEY ONLY",
-// "SELECT host FROM PTSDB WHERE inst IS NULL AND host IS NOT NULL AND date >= to_date('2013-01-01')",
-// "CLIENT PARALLEL 1-WAY RANGE SCAN OVER PTSDB [null,not null]\n" +
-// " SERVER FILTER BY FIRST KEY ONLY AND DATE >= 2012-12-31",
-//
-// // Since inst IS NOT NULL is unbounded, we won't continue optimizing
-// "SELECT host FROM PTSDB WHERE inst IS NOT NULL AND host IS NULL AND date >= to_date('2013-01-01')",
-// "CLIENT PARALLEL 4-WAY RANGE SCAN OVER PTSDB [not null]\n" +
-// " SERVER FILTER BY FIRST KEY ONLY AND (HOST IS NULL AND DATE >= 2012-12-31)",
-//
-// "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' AND entity_id = '000000000000002' AND x_integer = 2 AND a_integer < 5 ",
-// "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001','000000000000002']\n" +
-// " SERVER FILTER BY (X_INTEGER = 2 AND A_INTEGER < 5)",
-//
-// "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' AND entity_id > '000000000000002' AND entity_id < '000000000000008' AND (organization_id,entity_id) >= ('000000000000001','000000000000005') ",
-// "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001','000000000000005'] - ['000000000000001','000000000000008']",
-//
-// "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' AND entity_id > '000000000000002' AND entity_id < '000000000000008' AND (organization_id,entity_id) <= ('000000000000001','000000000000005') ",
-// "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001','000000000000003'] - ['000000000000001','000000000000006']",
-//
-// "SELECT a_string,b_string FROM atable WHERE organization_id > '000000000000001' AND entity_id > '000000000000002' AND entity_id < '000000000000008' AND (organization_id,entity_id) >= ('000000000000003','000000000000005') ",
-// "CLIENT PARALLEL 4-WAY RANGE SCAN OVER ATABLE ['000000000000003','000000000000005'] - [*]\n" +
-// " SERVER FILTER BY (ENTITY_ID > '000000000000002' AND ENTITY_ID < '000000000000008')",
-//
-// "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' AND entity_id >= '000000000000002' AND entity_id < '000000000000008' AND (organization_id,entity_id) >= ('000000000000000','000000000000005') ",
-// "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001','000000000000002'] - ['000000000000001','000000000000008']",
-//
-// "SELECT * FROM atable",
-// "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE",
-//
-// "SELECT inst,host FROM PTSDB WHERE REGEXP_SUBSTR(INST, '[^-]+', 1) IN ('na1', 'na2','na3')", // REVIEW: should this use skip scan given the regexpr_substr
-// "CLIENT PARALLEL 1-WAY SKIP SCAN ON 3 RANGES OVER PTSDB ['na1'] - ['na4']\n" +
-// " SERVER FILTER BY FIRST KEY ONLY AND REGEXP_SUBSTR(INST, '[^-]+', 1) IN ('na1','na2','na3')",
-//
-// "SELECT inst,host FROM PTSDB WHERE inst IN ('na1', 'na2','na3') AND host IN ('a','b') AND date >= to_date('2013-01-01') AND date < to_date('2013-01-02')",
-// "CLIENT PARALLEL 1-WAY SKIP SCAN ON 6 RANGES OVER PTSDB ['na1','a','2013-01-01'] - ['na3','b','2013-01-02']\n" +
-// " SERVER FILTER BY FIRST KEY ONLY",
-//
-// "SELECT inst,host FROM PTSDB WHERE inst LIKE 'na%' AND host IN ('a','b') AND date >= to_date('2013-01-01') AND date < to_date('2013-01-02')",
-// "CLIENT PARALLEL 1-WAY SKIP SCAN ON 2 RANGES OVER PTSDB ['na','a','2013-01-01'] - ['nb','b','2013-01-02']\n" +
-// " SERVER FILTER BY FIRST KEY ONLY",
-//
-// "SELECT count(*) FROM atable",
-// "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
-// " SERVER FILTER BY FIRST KEY ONLY\n" +
-// " SERVER AGGREGATE INTO SINGLE ROW",
-//
-// // TODO: review: why does this change with parallelized non aggregate queries?
-// "SELECT count(*) FROM atable WHERE organization_id='000000000000001' AND SUBSTR(entity_id,1,3) > '002' AND SUBSTR(entity_id,1,3) <= '003'",
-// "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001','003'] - ['000000000000001','004']\n" +
-// " SERVER FILTER BY FIRST KEY ONLY\n" +
-// " SERVER AGGREGATE INTO SINGLE ROW",
-//
-// "SELECT a_string FROM atable WHERE organization_id='000000000000001' AND SUBSTR(entity_id,1,3) > '002' AND SUBSTR(entity_id,1,3) <= '003'",
-// "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001','003'] - ['000000000000001','004']",
-//
-// "SELECT count(1) FROM atable GROUP BY a_string",
-// "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
-// " SERVER AGGREGATE INTO DISTINCT ROWS BY [A_STRING]\n" +
-// "CLIENT MERGE SORT",
-//
-// "SELECT count(1) FROM atable GROUP BY a_string LIMIT 5",
-// "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
-// " SERVER AGGREGATE INTO DISTINCT ROWS BY [A_STRING]\n" +
-// "CLIENT MERGE SORT\n" +
-// "CLIENT 5 ROW LIMIT",
-//
-// "SELECT a_string FROM atable ORDER BY a_string DESC LIMIT 3",
-// "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
-// " SERVER TOP 3 ROWS SORTED BY [A_STRING DESC]\n" +
-// "CLIENT MERGE SORT",
-//
-// "SELECT count(1) FROM atable GROUP BY a_string,b_string HAVING max(a_string) = 'a'",
-// "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
-// " SERVER AGGREGATE INTO DISTINCT ROWS BY [A_STRING, B_STRING]\n" +
-// "CLIENT MERGE SORT\n" +
-// "CLIENT FILTER BY MAX(A_STRING) = 'a'",
-//
-// "SELECT count(1) FROM atable WHERE a_integer = 1 GROUP BY ROUND(a_time,'HOUR',2),entity_id HAVING max(a_string) = 'a'",
-// "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
-// " SERVER FILTER BY A_INTEGER = 1\n" +
-// " SERVER AGGREGATE INTO DISTINCT ROWS BY [ENTITY_ID, ROUND(A_TIME)]\n" +
-// "CLIENT MERGE SORT\n" +
-// "CLIENT FILTER BY MAX(A_STRING) = 'a'",
-//
-// "SELECT count(1) FROM atable WHERE a_integer = 1 GROUP BY a_string,b_string HAVING max(a_string) = 'a' ORDER BY b_string",
-// "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
-// " SERVER FILTER BY A_INTEGER = 1\n" +
-// " SERVER AGGREGATE INTO DISTINCT ROWS BY [A_STRING, B_STRING]\n" +
-// "CLIENT MERGE SORT\n" +
-// "CLIENT FILTER BY MAX(A_STRING) = 'a'\n" +
-// "CLIENT SORTED BY [B_STRING]",
-//
-// "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' AND entity_id != '000000000000002' AND x_integer = 2 AND a_integer < 5 LIMIT 10",
-// "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001']\n" +
-// " SERVER FILTER BY (ENTITY_ID != '000000000000002' AND X_INTEGER = 2 AND A_INTEGER < 5)\n" +
-// " SERVER 10 ROW LIMIT\n" +
-// "CLIENT 10 ROW LIMIT",
-//
-// "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' ORDER BY a_string ASC NULLS FIRST LIMIT 10",
-// "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001']\n" +
-// " SERVER TOP 10 ROWS SORTED BY [A_STRING]\n" +
-// "CLIENT MERGE SORT",
-//
-// "SELECT max(a_integer) FROM atable WHERE organization_id = '000000000000001' GROUP BY organization_id,entity_id,ROUND(a_date,'HOUR') ORDER BY entity_id NULLS LAST LIMIT 10",
-// "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001']\n" +
-// " SERVER AGGREGATE INTO DISTINCT ROWS BY [ORGANIZATION_ID, ENTITY_ID, ROUND(A_DATE)]\n" +
-// "CLIENT MERGE SORT\n" +
-// "CLIENT TOP 10 ROWS SORTED BY [ENTITY_ID NULLS LAST]",
-//
-// "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' ORDER BY a_string DESC NULLS LAST LIMIT 10",
-// "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001']\n" +
-// " SERVER TOP 10 ROWS SORTED BY [A_STRING DESC NULLS LAST]\n" +
-// "CLIENT MERGE SORT",
-//
-// "SELECT a_string,b_string FROM atable WHERE organization_id IN ('000000000000001', '000000000000005')",
-// "CLIENT PARALLEL 1-WAY SKIP SCAN ON 2 KEYS OVER ATABLE ['000000000000001'] - ['000000000000005']",
-//
-// "SELECT a_string,b_string FROM atable WHERE organization_id IN ('00D000000000001', '00D000000000005') AND entity_id IN('00E00000000000X','00E00000000000Z')",
-// "CLIENT PARALLEL 1-WAY SKIP SCAN ON 4 KEYS OVER ATABLE ['00D000000000001','00E00000000000X'] - ['00D000000000005','00E00000000000Z']",
+ "SELECT host FROM PTSDB WHERE inst IS NULL AND host IS NOT NULL AND date >= to_date('2013-01-01')",
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER PTSDB [null,not null]\n" +
+ " SERVER FILTER BY FIRST KEY ONLY AND DATE >= '2013-01-01 00:00:00.000'",
+
+ // Since inst IS NOT NULL is unbounded, we won't continue optimizing
+ "SELECT host FROM PTSDB WHERE inst IS NOT NULL AND host IS NULL AND date >= to_date('2013-01-01')",
+ "CLIENT PARALLEL 4-WAY RANGE SCAN OVER PTSDB [not null]\n" +
+ " SERVER FILTER BY FIRST KEY ONLY AND (HOST IS NULL AND DATE >= '2013-01-01 00:00:00.000')",
+
+ "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' AND entity_id = '000000000000002' AND x_integer = 2 AND a_integer < 5 ",
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001','000000000000002']\n" +
+ " SERVER FILTER BY (X_INTEGER = 2 AND A_INTEGER < 5)",
+
+ "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' AND entity_id > '000000000000002' AND entity_id < '000000000000008' AND (organization_id,entity_id) >= ('000000000000001','000000000000005') ",
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001','000000000000005'] - ['000000000000001','000000000000008']",
+
+ "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' AND entity_id > '000000000000002' AND entity_id < '000000000000008' AND (organization_id,entity_id) <= ('000000000000001','000000000000005') ",
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001','000000000000003'] - ['000000000000001','000000000000006']",
+
+ "SELECT a_string,b_string FROM atable WHERE organization_id > '000000000000001' AND entity_id > '000000000000002' AND entity_id < '000000000000008' AND (organization_id,entity_id) >= ('000000000000003','000000000000005') ",
+ "CLIENT PARALLEL 4-WAY RANGE SCAN OVER ATABLE ['000000000000003','000000000000005'] - [*]\n" +
+ " SERVER FILTER BY (ENTITY_ID > '000000000000002' AND ENTITY_ID < '000000000000008')",
+
+ "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' AND entity_id >= '000000000000002' AND entity_id < '000000000000008' AND (organization_id,entity_id) >= ('000000000000000','000000000000005') ",
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001','000000000000002'] - ['000000000000001','000000000000008']",
+
+ "SELECT * FROM atable",
+ "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE",
+
+ "SELECT inst,host FROM PTSDB WHERE REGEXP_SUBSTR(INST, '[^-]+', 1) IN ('na1', 'na2','na3')", // REVIEW: should this use skip scan given the regexpr_substr
+ "CLIENT PARALLEL 1-WAY SKIP SCAN ON 3 RANGES OVER PTSDB ['na1'] - ['na4']\n" +
+ " SERVER FILTER BY FIRST KEY ONLY AND REGEXP_SUBSTR(INST, '[^-]+', 1) IN ('na1','na2','na3')",
+
+ "SELECT inst,host FROM PTSDB WHERE inst IN ('na1', 'na2','na3') AND host IN ('a','b') AND date >= to_date('2013-01-01') AND date < to_date('2013-01-02')",
+ "CLIENT PARALLEL 1-WAY SKIP SCAN ON 6 RANGES OVER PTSDB ['na1','a','2013-01-01'] - ['na3','b','2013-01-02']\n" +
+ " SERVER FILTER BY FIRST KEY ONLY",
+
+ "SELECT inst,host FROM PTSDB WHERE inst LIKE 'na%' AND host IN ('a','b') AND date >= to_date('2013-01-01') AND date < to_date('2013-01-02')",
+ "CLIENT PARALLEL 1-WAY SKIP SCAN ON 2 RANGES OVER PTSDB ['na','a','2013-01-01'] - ['nb','b','2013-01-02']\n" +
+ " SERVER FILTER BY FIRST KEY ONLY",
+
+ "SELECT count(*) FROM atable",
+ "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
+ " SERVER FILTER BY FIRST KEY ONLY\n" +
+ " SERVER AGGREGATE INTO SINGLE ROW",
+
+ // TODO: review: why does this change with parallelized non aggregate queries?
+ "SELECT count(*) FROM atable WHERE organization_id='000000000000001' AND SUBSTR(entity_id,1,3) > '002' AND SUBSTR(entity_id,1,3) <= '003'",
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001','003'] - ['000000000000001','004']\n" +
+ " SERVER FILTER BY FIRST KEY ONLY\n" +
+ " SERVER AGGREGATE INTO SINGLE ROW",
+
+ "SELECT a_string FROM atable WHERE organization_id='000000000000001' AND SUBSTR(entity_id,1,3) > '002' AND SUBSTR(entity_id,1,3) <= '003'",
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001','003'] - ['000000000000001','004']",
+
+ "SELECT count(1) FROM atable GROUP BY a_string",
+ "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
+ " SERVER AGGREGATE INTO DISTINCT ROWS BY [A_STRING]\n" +
+ "CLIENT MERGE SORT",
+
+ "SELECT count(1) FROM atable GROUP BY a_string LIMIT 5",
+ "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
+ " SERVER AGGREGATE INTO DISTINCT ROWS BY [A_STRING]\n" +
+ "CLIENT MERGE SORT\n" +
+ "CLIENT 5 ROW LIMIT",
+
+ "SELECT a_string FROM atable ORDER BY a_string DESC LIMIT 3",
+ "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
+ " SERVER TOP 3 ROWS SORTED BY [A_STRING DESC]\n" +
+ "CLIENT MERGE SORT",
+
+ "SELECT count(1) FROM atable GROUP BY a_string,b_string HAVING max(a_string) = 'a'",
+ "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
+ " SERVER AGGREGATE INTO DISTINCT ROWS BY [A_STRING, B_STRING]\n" +
+ "CLIENT MERGE SORT\n" +
+ "CLIENT FILTER BY MAX(A_STRING) = 'a'",
+
+ "SELECT count(1) FROM atable WHERE a_integer = 1 GROUP BY ROUND(a_time,'HOUR',2),entity_id HAVING max(a_string) = 'a'",
+ "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
+ " SERVER FILTER BY A_INTEGER = 1\n" +
+ " SERVER AGGREGATE INTO DISTINCT ROWS BY [ENTITY_ID, ROUND(A_TIME)]\n" +
+ "CLIENT MERGE SORT\n" +
+ "CLIENT FILTER BY MAX(A_STRING) = 'a'",
+
+ "SELECT count(1) FROM atable WHERE a_integer = 1 GROUP BY a_string,b_string HAVING max(a_string) = 'a' ORDER BY b_string",
+ "CLIENT PARALLEL 4-WAY FULL SCAN OVER ATABLE\n" +
+ " SERVER FILTER BY A_INTEGER = 1\n" +
+ " SERVER AGGREGATE INTO DISTINCT ROWS BY [A_STRING, B_STRING]\n" +
+ "CLIENT MERGE SORT\n" +
+ "CLIENT FILTER BY MAX(A_STRING) = 'a'\n" +
+ "CLIENT SORTED BY [B_STRING]",
+
+ "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' AND entity_id != '000000000000002' AND x_integer = 2 AND a_integer < 5 LIMIT 10",
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001']\n" +
+ " SERVER FILTER BY (ENTITY_ID != '000000000000002' AND X_INTEGER = 2 AND A_INTEGER < 5)\n" +
+ " SERVER 10 ROW LIMIT\n" +
+ "CLIENT 10 ROW LIMIT",
+
+ "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' ORDER BY a_string ASC NULLS FIRST LIMIT 10",
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001']\n" +
+ " SERVER TOP 10 ROWS SORTED BY [A_STRING]\n" +
+ "CLIENT MERGE SORT",
+
+ "SELECT max(a_integer) FROM atable WHERE organization_id = '000000000000001' GROUP BY organization_id,entity_id,ROUND(a_date,'HOUR') ORDER BY entity_id NULLS LAST LIMIT 10",
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001']\n" +
+ " SERVER AGGREGATE INTO DISTINCT ROWS BY [ORGANIZATION_ID, ENTITY_ID, ROUND(A_DATE)]\n" +
+ "CLIENT MERGE SORT\n" +
+ "CLIENT TOP 10 ROWS SORTED BY [ENTITY_ID NULLS LAST]",
+
+ "SELECT a_string,b_string FROM atable WHERE organization_id = '000000000000001' ORDER BY a_string DESC NULLS LAST LIMIT 10",
+ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER ATABLE ['000000000000001']\n" +
+ " SERVER TOP 10 ROWS SORTED BY [A_STRING DESC NULLS LAST]\n" +
+ "CLIENT MERGE SORT",
+
+ "SELECT a_string,b_string FROM atable WHERE organization_id IN ('000000000000001', '000000000000005')",
+ "CLIENT PARALLEL 1-WAY SKIP SCAN ON 2 KEYS OVER ATABLE ['000000000000001'] - ['000000000000005']",
+
+ "SELECT a_string,b_string FROM atable WHERE organization_id IN ('00D000000000001', '00D000000000005') AND entity_id IN('00E00000000000X','00E00000000000Z')",
+ "CLIENT PARALLEL 1-WAY SKIP SCAN ON 4 KEYS OVER ATABLE ['00D000000000001','00E00000000000X'] - ['00D000000000005','00E00000000000Z']",
};
for (int i = 0; i < queryPlans.length; i+=2) {
String query = queryPlans[i];