Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into index_support
Conflicts:
CHANGES
diff --git a/CHANGES b/CHANGES
index 9fb7eb3..2c32817 100644
--- a/CHANGES
+++ b/CHANGES
@@ -32,6 +32,9 @@
IMPROVEMENT
+ TAJO-1700: Add better exception handling in TajoMasterClientService.
+ (hyunsik)
+
TAJO-1343: Improve the memory usage of physical executors. (jihoon)
TAJO-1696: Resource calculator should consider the requested disk resource
@@ -195,6 +198,8 @@
TAJO-1657: Tajo Rest API /database/{database-name]/tables should return table
names only without invalid external table info.
+ TAJO-1597: Problem of ignoring theta join condition. (jihoon)
+
TAJO-1697: RCFile progress causes NPE occasionally. (jinho)
TAJO-1689: Metrics file reporter prints histogram metric without group name.
@@ -406,7 +411,12 @@
SUB TASKS
+<<<<<<< HEAD
TAJO-1302: Support index metadata backup and restore. (jihoon)
+=======
+ TAJO-1484 Apply on ColPartitionStoreExec. (Contributed by Navis,
+ committed by hyunsik)
+>>>>>>> bcec5eb7e247dc983184b37a3dbb4143afd19ac8
TAJO-1464: Add ORCFileScanner to read ORCFile table. (Contributed by
Jongyoung Park, Committed by jihoon)
diff --git a/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java b/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java
index 3cff88a..4900188 100644
--- a/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java
+++ b/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java
@@ -36,7 +36,9 @@
import org.apache.tajo.rpc.RpcChannelFactory;
import org.apache.tajo.rpc.RpcClientManager;
import org.apache.tajo.rpc.RpcConstants;
+import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos;
import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.KeyValueSetResponse;
+import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState;
import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.StringResponse;
import org.apache.tajo.service.ServiceTracker;
import org.apache.tajo.util.CommonTestingUtil;
@@ -54,8 +56,10 @@
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
+import static org.apache.tajo.error.Errors.ResultCode.NO_SUCH_SESSION_VARIABLE;
import static org.apache.tajo.exception.ReturnStateUtil.isError;
import static org.apache.tajo.exception.ReturnStateUtil.isSuccess;
+import static org.apache.tajo.exception.ReturnStateUtil.isThisError;
import static org.apache.tajo.exception.SQLExceptionUtil.toSQLException;
import static org.apache.tajo.exception.SQLExceptionUtil.throwIfError;
import static org.apache.tajo.ipc.ClientProtos.CreateSessionRequest;
@@ -278,9 +282,18 @@
public Boolean existSessionVariable(final String varname) throws SQLException {
- BlockingInterface stub = getTMStub();
try {
- return isSuccess(stub.existSessionVariable(null, getSessionedString(varname)));
+ final BlockingInterface stub = getTMStub();
+ ReturnState state = stub.existSessionVariable(null, getSessionedString(varname));
+
+ if (isThisError(state, NO_SUCH_SESSION_VARIABLE)) {
+ return false;
+ } else if (isError(state)){
+ throw SQLExceptionUtil.toSQLException(state);
+ }
+
+ return isSuccess(state);
+
} catch (ServiceException e) {
throw new RuntimeException(e);
}
diff --git a/tajo-client/src/main/proto/TajoMasterClientProtocol.proto b/tajo-client/src/main/proto/TajoMasterClientProtocol.proto
index b772abe..78f0f30 100644
--- a/tajo-client/src/main/proto/TajoMasterClientProtocol.proto
+++ b/tajo-client/src/main/proto/TajoMasterClientProtocol.proto
@@ -37,7 +37,7 @@
rpc removeSession(SessionIdProto) returns (ReturnState);
rpc updateSessionVariables(UpdateSessionVariableRequest) returns (SessionUpdateResponse);
rpc existSessionVariable(SessionedStringProto) returns (ReturnState);
- rpc getSessionVariable(SessionedStringProto) returns (StringProto);
+ rpc getSessionVariable(SessionedStringProto) returns (StringResponse);
rpc getAllSessionVariables(SessionIdProto) returns (KeyValueSetResponse);
// Query Submission and Result APIs
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/ColPartitionStoreExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/ColPartitionStoreExec.java
index 76abc6d..33714db 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/ColPartitionStoreExec.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/ColPartitionStoreExec.java
@@ -63,17 +63,7 @@
super(context, plan.getInSchema(), plan.getOutSchema(), child);
this.plan = plan;
- if (plan.getType() == NodeType.CREATE_TABLE) {
- if (!(plan instanceof CreateTableNode)) {
- throw new IllegalArgumentException("plan should be a CreateTableNode type.");
- }
- this.outSchema = ((CreateTableNode)plan).getTableSchema();
- } else if (plan.getType() == NodeType.INSERT) {
- if (!(plan instanceof InsertNode)) {
- throw new IllegalArgumentException("plan should be a InsertNode type.");
- }
- this.outSchema = ((InsertNode)plan).getTableSchema();
- }
+ this.outSchema = plan.getTableSchema();
// set table meta
if (this.plan.hasOptions()) {
@@ -171,4 +161,9 @@
appender.enableStats();
appender.init();
}
+
+ @Override
+ public void rescan() throws IOException {
+ // nothing to do
+ }
}
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashBasedColPartitionStoreExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashBasedColPartitionStoreExec.java
index 0a812ee..1860ec0 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashBasedColPartitionStoreExec.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashBasedColPartitionStoreExec.java
@@ -20,6 +20,8 @@
import org.apache.tajo.catalog.statistics.StatisticsUtil;
import org.apache.tajo.catalog.statistics.TableStats;
+import org.apache.tajo.datum.Datum;
+import org.apache.tajo.engine.planner.physical.ComparableVector.ComparableTuple;
import org.apache.tajo.plan.logical.StoreTableNode;
import org.apache.tajo.storage.Appender;
import org.apache.tajo.storage.Tuple;
@@ -36,26 +38,35 @@
* This class is a physical operator to store at column partitioned table.
*/
public class HashBasedColPartitionStoreExec extends ColPartitionStoreExec {
- private final Map<String, Appender> appenderMap = new HashMap<String, Appender>();
+
+ private final ComparableTuple partKey;
+ private final Map<ComparableTuple, Appender> appenderMap = new HashMap<ComparableTuple, Appender>();
public HashBasedColPartitionStoreExec(TaskAttemptContext context, StoreTableNode plan, PhysicalExec child)
throws IOException {
super(context, plan, child);
+ partKey = new ComparableTuple(inSchema, keyIds);
}
- public void init() throws IOException {
- super.init();
- }
+ private transient final StringBuilder sb = new StringBuilder();
- private Appender getAppender(String partition) throws IOException {
- Appender appender = appenderMap.get(partition);
-
- if (appender == null) {
- appender = getNextPartitionAppender(partition);
- appenderMap.put(partition, appender);
- } else {
- appender = appenderMap.get(partition);
+ private Appender getAppender(ComparableTuple partitionKey, Tuple tuple) throws IOException {
+ Appender appender = appenderMap.get(partitionKey);
+ if (appender != null) {
+ return appender;
}
+ sb.setLength(0);
+ for (int i = 0; i < keyNum; i++) {
+ if (i > 0) {
+ sb.append('/');
+ }
+ sb.append(keyNames[i]).append('=');
+ Datum datum = tuple.asDatum(keyIds[i]);
+ sb.append(StringUtils.escapePathName(datum.asChars()));
+ }
+ appender = getNextPartitionAppender(sb.toString());
+
+ appenderMap.put(partitionKey.copy(), appender);
return appender;
}
@@ -65,27 +76,14 @@
@Override
public Tuple next() throws IOException {
Tuple tuple;
- StringBuilder sb = new StringBuilder();
while(!context.isStopped() && (tuple = child.next()) != null) {
- // set subpartition directory name
- sb.delete(0, sb.length());
- if (keyIds != null) {
- for(int i = 0; i < keyIds.length; i++) {
- if(i > 0)
- sb.append("/");
- sb.append(keyNames[i]).append("=");
- sb.append(StringUtils.escapePathName(tuple.getText(keyIds[i])));
- }
- }
-
+ partKey.set(tuple);
// add tuple
- Appender appender = getAppender(sb.toString());
- appender.addTuple(tuple);
+ getAppender(partKey, tuple).addTuple(tuple);
}
List<TableStats> statSet = new ArrayList<TableStats>();
- for (Map.Entry<String, Appender> entry : appenderMap.entrySet()) {
- Appender app = entry.getValue();
+ for (Appender app : appenderMap.values()) {
app.flush();
app.close();
statSet.add(app.getStats());
@@ -97,9 +95,4 @@
return null;
}
-
- @Override
- public void rescan() throws IOException {
- // nothing to do
- }
}
\ No newline at end of file
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SortBasedColPartitionStoreExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SortBasedColPartitionStoreExec.java
index 3a0dd38..607dff7 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SortBasedColPartitionStoreExec.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SortBasedColPartitionStoreExec.java
@@ -22,9 +22,10 @@
package org.apache.tajo.engine.planner.physical;
import org.apache.tajo.catalog.statistics.StatisticsUtil;
+import org.apache.tajo.datum.Datum;
+import org.apache.tajo.engine.planner.physical.ComparableVector.ComparableTuple;
import org.apache.tajo.plan.logical.StoreTableNode;
import org.apache.tajo.storage.Tuple;
-import org.apache.tajo.storage.VTuple;
import org.apache.tajo.util.StringUtils;
import org.apache.tajo.worker.TaskAttemptContext;
@@ -35,35 +36,25 @@
* ascending or descending order of partition columns.
*/
public class SortBasedColPartitionStoreExec extends ColPartitionStoreExec {
- private Tuple currentKey;
- private Tuple prevKey;
+
+ private ComparableTuple prevKey;
public SortBasedColPartitionStoreExec(TaskAttemptContext context, StoreTableNode plan, PhysicalExec child)
throws IOException {
super(context, plan, child);
}
- public void init() throws IOException {
- super.init();
+ private transient StringBuilder sb = new StringBuilder();
- currentKey = new VTuple(keyNum);
- }
-
- private void fillKeyTuple(Tuple inTuple, Tuple keyTuple) {
- for (int i = 0; i < keyIds.length; i++) {
- keyTuple.put(i, inTuple.asDatum(keyIds[i]));
- }
- }
-
- private String getSubdirectory(Tuple keyTuple) {
- StringBuilder sb = new StringBuilder();
-
+ private String getSubdirectory(Tuple tuple) {
+ sb.setLength(0);
for(int i = 0; i < keyIds.length; i++) {
- if(i > 0) {
- sb.append("/");
+ Datum datum = tuple.asDatum(keyIds[i]);
+ if (i > 0) {
+ sb.append('/');
}
- sb.append(keyNames[i]).append("=");
- sb.append(StringUtils.escapePathName(keyTuple.getText(i)));
+ sb.append(keyNames[i]).append('=');
+ sb.append(StringUtils.escapePathName(datum.asChars()));
}
return sb.toString();
}
@@ -73,22 +64,19 @@
Tuple tuple;
while(!context.isStopped() && (tuple = child.next()) != null) {
- fillKeyTuple(tuple, currentKey);
-
if (prevKey == null) {
- appender = getNextPartitionAppender(getSubdirectory(currentKey));
- prevKey = new VTuple(currentKey);
- } else {
- if (!prevKey.equals(currentKey)) {
- appender.close();
- StatisticsUtil.aggregateTableStat(aggregatedStats, appender.getStats());
+ appender = getNextPartitionAppender(getSubdirectory(tuple));
+ prevKey = new ComparableTuple(inSchema, keyIds);
+ prevKey.set(tuple);
+ } else if (!prevKey.equals(tuple)) {
+ appender.close();
+ StatisticsUtil.aggregateTableStat(aggregatedStats, appender.getStats());
- appender = getNextPartitionAppender(getSubdirectory(currentKey));
- prevKey.put(currentKey.getValues());
+ appender = getNextPartitionAppender(getSubdirectory(tuple));
+ prevKey.set(tuple);
- // reset all states for file rotating
- writtenFileNum = 0;
- }
+ // reset all states for file rotating
+ writtenFileNum = 0;
}
appender.addTuple(tuple);
diff --git a/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java b/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
index c1afbc9..0e9b6e6 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
@@ -40,6 +40,9 @@
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.conf.TajoConf.ConfVars;
import org.apache.tajo.engine.query.QueryContext;
+import org.apache.tajo.exception.ErrorUtil;
+import org.apache.tajo.exception.ExceptionUtil;
+import org.apache.tajo.exception.ReturnStateUtil;
import org.apache.tajo.ipc.ClientProtos;
import org.apache.tajo.ipc.ClientProtos.*;
import org.apache.tajo.ipc.TajoMasterClientProtocol;
@@ -67,8 +70,12 @@
import java.util.List;
import static org.apache.tajo.TajoConstants.DEFAULT_DATABASE_NAME;
+import static org.apache.tajo.exception.ExceptionUtil.printStackTraceIfError;
import static org.apache.tajo.exception.ReturnStateUtil.*;
+/**
+ * It provides Client Remote API service for TajoMaster.
+ */
public class TajoMasterClientService extends AbstractService {
private final static Log LOG = LogFactory.getLog(TajoMasterClientService.class);
private final MasterContext context;
@@ -78,8 +85,6 @@
private BlockingRpcServer server;
private InetSocketAddress bindAddress;
- private final BoolProto BOOL_TRUE =
- BoolProto.newBuilder().setValue(true).build();
public TajoMasterClientService(MasterContext context) {
super(TajoMasterClientService.class.getName());
@@ -142,6 +147,9 @@
return builder.build();
} catch (Throwable t) {
+
+ printStackTraceIfError(LOG, t);
+
CreateSessionResponse.Builder builder = CreateSessionResponse.newBuilder();
builder.setState(returnError(t));
return builder.build();
@@ -152,8 +160,13 @@
public ReturnState removeSession(RpcController controller, TajoIdProtos.SessionIdProto request)
throws ServiceException {
- if (request != null) {
- context.getSessionManager().removeSession(request.getId());
+ try {
+ if (request != null) {
+ context.getSessionManager().removeSession(request.getId());
+ }
+ } catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
+ return ReturnStateUtil.returnError(t);
}
return OK;
@@ -181,20 +194,29 @@
return builder.build();
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
builder.setState(returnError(t));
return builder.build();
}
}
@Override
- public StringProto getSessionVariable(RpcController controller, SessionedStringProto request)
+ public StringResponse getSessionVariable(RpcController controller, SessionedStringProto request)
throws ServiceException {
try {
- return ProtoUtil.convertString(
- context.getSessionManager().getVariable(request.getSessionId().getId(), request.getValue()));
+ String value = context.getSessionManager().getVariable(request.getSessionId().getId(), request.getValue());
+
+ return StringResponse.newBuilder()
+ .setState(OK)
+ .setValue(value)
+ .build();
+
} catch (Throwable t) {
- throw new ServiceException(t);
+ printStackTraceIfError(LOG, t);
+ return StringResponse.newBuilder()
+ .setState(returnError(t))
+ .build();
}
}
@@ -209,6 +231,7 @@
return errNoSessionVar(request.getValue());
}
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return returnError(t);
}
}
@@ -229,6 +252,7 @@
.build();
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return KeyValueSetResponse.newBuilder()
.setState(returnError(t))
.build();
@@ -245,6 +269,7 @@
.build();
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return StringResponse.newBuilder()
.setState(returnError(t))
.build();
@@ -264,6 +289,7 @@
return errUndefinedDatabase(databaseName);
}
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return returnError(t);
}
}
@@ -279,10 +305,11 @@
return context.getGlobalEngine().executeQuery(session, request.getQuery(), request.getIsJson());
- } catch (Exception e) {
+ } catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return ClientProtos.SubmitQueryResponse.newBuilder()
- .setState(returnError(e))
+ .setState(returnError(t))
.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto())
.setIsForwarded(true)
.setUserName(context.getConf().getVar(ConfVars.USERNAME))
@@ -301,6 +328,7 @@
builder.setState(OK);
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
builder.setState(returnError(t));
}
return builder.build();
@@ -352,20 +380,22 @@
builder.setState(errIncompleteQuery(queryId));
}
- return builder.build();
} catch (Throwable t) {
- throw new ServiceException(t);
+ printStackTraceIfError(LOG, t);
+ builder.setState(returnError(t));
}
+
+ return builder.build();
}
@Override
public GetQueryListResponse getRunningQueryList(RpcController controller, TajoIdProtos.SessionIdProto request)
-
throws ServiceException {
+ GetQueryListResponse.Builder builder = GetQueryListResponse.newBuilder();
+
try {
context.getSessionManager().touch(request.getId());
- GetQueryListResponse.Builder builder= GetQueryListResponse.newBuilder();
Collection<QueryInProgress> queries = new ArrayList<QueryInProgress>(context.getQueryJobManager().getSubmittedQueries());
queries.addAll(context.getQueryJobManager().getRunningQueries());
@@ -388,11 +418,14 @@
builder.addQueryList(infoBuilder.build());
}
- GetQueryListResponse result = builder.build();
- return result;
+ builder.setState(OK);
+
} catch (Throwable t) {
- throw new ServiceException(t);
+ printStackTraceIfError(LOG, t);
+ builder.setState(returnError(t));
}
+
+ return builder.build();
}
@Override
@@ -425,7 +458,9 @@
}
builder.setState(OK);
+
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
builder.setState(returnError(t));
}
@@ -436,10 +471,11 @@
public GetQueryStatusResponse getQueryStatus(RpcController controller, GetQueryStatusRequest request)
throws ServiceException {
+ GetQueryStatusResponse.Builder builder = GetQueryStatusResponse.newBuilder();
+
try {
context.getSessionManager().touch(request.getSessionId().getId());
- GetQueryStatusResponse.Builder builder = GetQueryStatusResponse.newBuilder();
QueryId queryId = new QueryId(request.getQueryId());
builder.setQueryId(request.getQueryId());
@@ -486,11 +522,13 @@
}
}
}
- return builder.build();
} catch (Throwable t) {
- throw new ServiceException(t);
+ printStackTraceIfError(LOG, t);
+ builder.setState(returnError(t));
}
+
+ return builder.build();
}
@Override
@@ -540,8 +578,10 @@
request.getSessionId().getId() + "," + queryId + ", " + rows.size() + " rows");
} catch (Throwable t) {
- builder.setResultSet(resultSetBuilder.build()); // required field
+ printStackTraceIfError(LOG, t);
+
builder.setState(returnError(t));
+ builder.setResultSet(resultSetBuilder.build()); // required field
}
return builder.build();
@@ -560,6 +600,7 @@
return OK;
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return returnError(t);
}
}
@@ -588,6 +629,7 @@
builder.setState(OK);
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
builder.setState(returnError(t));
}
@@ -612,6 +654,7 @@
return OK;
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return returnError(t);
}
}
@@ -647,6 +690,7 @@
builder.setState(OK);
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
builder.setState(returnError(t));
}
@@ -666,6 +710,7 @@
}
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return returnError(t);
}
}
@@ -681,6 +726,7 @@
}
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return returnError(t);
}
}
@@ -698,6 +744,7 @@
}
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return returnError(t);
}
}
@@ -715,6 +762,7 @@
.build();
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return StringListResponse.newBuilder()
.setState(returnError(t))
.build();
@@ -745,6 +793,7 @@
}
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return returnError(t);
}
}
@@ -768,6 +817,7 @@
.build();
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return StringListResponse.newBuilder()
.setState(returnError(t))
.build();
@@ -808,7 +858,10 @@
.build();
}
} catch (Throwable t) {
- throw new ServiceException(t);
+ printStackTraceIfError(LOG, t);
+ return TableResponse.newBuilder()
+ .setState(returnError(t))
+ .build();
}
}
@@ -851,6 +904,7 @@
.setTable(desc.getProto()).build();
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return TableResponse.newBuilder()
.setState(returnError(t))
.build();
@@ -868,6 +922,7 @@
return OK;
} catch (Throwable t) {
+ printStackTraceIfError(LOG, t);
return returnError(t);
}
}
@@ -899,7 +954,11 @@
.build();
} catch (Throwable t) {
- return FunctionListResponse.newBuilder().setState(returnError(t)).build();
+ printStackTraceIfError(LOG, t);
+
+ return FunctionListResponse.newBuilder().
+ setState(returnError(t))
+ .build();
}
}
diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java
index ad851e7..88b3548 100644
--- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java
+++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java
@@ -18,7 +18,6 @@
package org.apache.tajo.engine.query;
-import com.google.protobuf.ServiceException;
import org.apache.tajo.IntegrationTest;
import org.apache.tajo.NamedTest;
import org.junit.AfterClass;
diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinWithSubQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinWithSubQuery.java
index 1869946..6c9546e 100644
--- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinWithSubQuery.java
+++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinWithSubQuery.java
@@ -18,7 +18,6 @@
package org.apache.tajo.engine.query;
-import com.google.protobuf.ServiceException;
import org.apache.tajo.IntegrationTest;
import org.apache.tajo.NamedTest;
import org.junit.AfterClass;
diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestMultipleJoinTypes.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestMultipleJoinTypes.java
index b4ab1d7..d3cde3d 100644
--- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestMultipleJoinTypes.java
+++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestMultipleJoinTypes.java
@@ -18,7 +18,6 @@
package org.apache.tajo.engine.query;
-import com.google.protobuf.ServiceException;
import org.apache.tajo.IntegrationTest;
import org.apache.tajo.NamedTest;
import org.apache.tajo.QueryTestCaseBase;
diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestOuterJoinQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestOuterJoinQuery.java
index 5274d2c..0b42a6d 100644
--- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestOuterJoinQuery.java
+++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestOuterJoinQuery.java
@@ -18,7 +18,6 @@
package org.apache.tajo.engine.query;
-import com.google.protobuf.ServiceException;
import org.apache.tajo.IntegrationTest;
import org.apache.tajo.NamedTest;
import org.junit.AfterClass;
@@ -28,7 +27,6 @@
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
-import java.sql.ResultSet;
import java.sql.SQLException;
@Category(IntegrationTest.class)
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan
index 27de587..d161811 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash.plan
@@ -4,9 +4,9 @@
=> Targets: a_name (TEXT), b_name (TEXT)
=> out schema: {(2) a_name (TEXT), b_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
- SELECTION(2)
+ SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.r_name (TEXT)
- JOIN(6)(CROSS)
+ JOIN(7)(CROSS)
=> target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)
=> out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
@@ -43,9 +43,9 @@
=> Targets: a_name (TEXT), b_name (TEXT)
=> out schema: {(2) a_name (TEXT), b_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
- SELECTION(2)
+ SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.r_name (TEXT)
- JOIN(6)(CROSS)
+ JOIN(7)(CROSS)
=> target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)
=> out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan
index 0048ac6..cfbfa19 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan
@@ -4,9 +4,9 @@
=> Targets: a_name (TEXT), b_name (TEXT)
=> out schema: {(2) a_name (TEXT), b_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
- SELECTION(2)
+ SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.r_name (TEXT)
- JOIN(6)(CROSS)
+ JOIN(7)(CROSS)
=> target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)
=> out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
@@ -72,16 +72,16 @@
=> Targets: a_name (TEXT), b_name (TEXT)
=> out schema: {(2) a_name (TEXT), b_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
- SELECTION(2)
+ SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.r_name (TEXT)
- JOIN(6)(CROSS)
+ JOIN(7)(CROSS)
=> target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)
=> out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
- SCAN(9) on eb_0000000000000_0000_000002
+ SCAN(10) on eb_0000000000000_0000_000002
=> out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)}
=> in schema: {(2) a_name (TEXT), default.a.r_name (TEXT)}
- SCAN(8) on eb_0000000000000_0000_000001
+ SCAN(9) on eb_0000000000000_0000_000001
=> out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)}
=> in schema: {(2) b_name (TEXT), default.b.r_name (TEXT)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan
index 27de587..d161811 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort.plan
@@ -4,9 +4,9 @@
=> Targets: a_name (TEXT), b_name (TEXT)
=> out schema: {(2) a_name (TEXT), b_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
- SELECTION(2)
+ SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.r_name (TEXT)
- JOIN(6)(CROSS)
+ JOIN(7)(CROSS)
=> target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)
=> out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
@@ -43,9 +43,9 @@
=> Targets: a_name (TEXT), b_name (TEXT)
=> out schema: {(2) a_name (TEXT), b_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
- SELECTION(2)
+ SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.r_name (TEXT)
- JOIN(6)(CROSS)
+ JOIN(7)(CROSS)
=> target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)
=> out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan
index 0048ac6..cfbfa19 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testCrossJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan
@@ -4,9 +4,9 @@
=> Targets: a_name (TEXT), b_name (TEXT)
=> out schema: {(2) a_name (TEXT), b_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
- SELECTION(2)
+ SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.r_name (TEXT)
- JOIN(6)(CROSS)
+ JOIN(7)(CROSS)
=> target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)
=> out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
@@ -72,16 +72,16 @@
=> Targets: a_name (TEXT), b_name (TEXT)
=> out schema: {(2) a_name (TEXT), b_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
- SELECTION(2)
+ SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.r_name (TEXT)
- JOIN(6)(CROSS)
+ JOIN(7)(CROSS)
=> target list: a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)
=> out schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
=> in schema: {(4) a_name (TEXT), b_name (TEXT), default.a.r_name (TEXT), default.b.r_name (TEXT)}
- SCAN(9) on eb_0000000000000_0000_000002
+ SCAN(10) on eb_0000000000000_0000_000002
=> out schema: {(2) a_name (TEXT), default.a.r_name (TEXT)}
=> in schema: {(2) a_name (TEXT), default.a.r_name (TEXT)}
- SCAN(8) on eb_0000000000000_0000_000001
+ SCAN(9) on eb_0000000000000_0000_000001
=> out schema: {(2) b_name (TEXT), default.b.r_name (TEXT)}
=> in schema: {(2) b_name (TEXT), default.b.r_name (TEXT)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash.plan
index 469668c..b2f4ff1 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) <= default.b.r_name (TEXT)
- JOIN(6)(INNER)
+ JOIN(7)(INNER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.r_regionkey (INT4)
=> target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)
=> out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)}
@@ -36,9 +36,9 @@
[Enforcers]
0: type=Broadcast, tables=default.a
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) <= default.b.r_name (TEXT)
- JOIN(6)(INNER)
+ JOIN(7)(INNER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.r_regionkey (INT4)
=> target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)
=> out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan
index 8e99f07..79d5e7a 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) <= default.b.r_name (TEXT)
- JOIN(6)(INNER)
+ JOIN(7)(INNER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.r_regionkey (INT4)
=> target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)
=> out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)}
@@ -65,17 +65,17 @@
[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32)
[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32)
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) <= default.b.r_name (TEXT)
- JOIN(6)(INNER)
+ JOIN(7)(INNER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.r_regionkey (INT4)
=> target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)
=> out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)}
=> in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)}
- SCAN(9) on eb_0000000000000_0000_000002
+ SCAN(10) on eb_0000000000000_0000_000002
=> out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)}
=> in schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)}
- SCAN(8) on eb_0000000000000_0000_000001
+ SCAN(9) on eb_0000000000000_0000_000001
=> out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)}
=> in schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort.plan
index 469668c..b2f4ff1 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) <= default.b.r_name (TEXT)
- JOIN(6)(INNER)
+ JOIN(7)(INNER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.r_regionkey (INT4)
=> target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)
=> out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)}
@@ -36,9 +36,9 @@
[Enforcers]
0: type=Broadcast, tables=default.a
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) <= default.b.r_name (TEXT)
- JOIN(6)(INNER)
+ JOIN(7)(INNER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.r_regionkey (INT4)
=> target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)
=> out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan
index 8e99f07..79d5e7a 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinQuery/testInnerJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) <= default.b.r_name (TEXT)
- JOIN(6)(INNER)
+ JOIN(7)(INNER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.r_regionkey (INT4)
=> target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)
=> out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)}
@@ -65,17 +65,17 @@
[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.b.r_regionkey (INT4), num=32)
[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32)
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) <= default.b.r_name (TEXT)
- JOIN(6)(INNER)
+ JOIN(7)(INNER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.r_regionkey (INT4)
=> target list: default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)
=> out schema: {(3) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT)}
=> in schema: {(4) default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.r_name (TEXT), default.b.r_regionkey (INT4)}
- SCAN(9) on eb_0000000000000_0000_000002
+ SCAN(10) on eb_0000000000000_0000_000002
=> out schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)}
=> in schema: {(2) default.a.r_name (TEXT), default.a.r_regionkey (INT4)}
- SCAN(8) on eb_0000000000000_0000_000001
+ SCAN(9) on eb_0000000000000_0000_000001
=> out schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)}
=> in schema: {(2) default.b.r_name (TEXT), default.b.r_regionkey (INT4)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan
index ec3578c..5def40e 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash.plan
@@ -5,9 +5,9 @@
=> target list: ?sum (FLOAT8)
=> out schema:{(1) ?sum (FLOAT8)}
=> in schema:{(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
- SELECTION(16)
+ SELECTION(20)
=> Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8)
- JOIN(23)(INNER)
+ JOIN(24)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
@@ -25,7 +25,7 @@
=> Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)
=> out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)}
=> in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)}
- JOIN(21)(INNER)
+ JOIN(22)(INNER)
=> Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
@@ -38,7 +38,7 @@
=> target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)}
=> in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)}
- JOIN(22)(INNER)
+ JOIN(23)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
@@ -52,7 +52,7 @@
=> Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)
=> out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)}
=> in schema: {(3) default.b.l_linenumber (INT4), default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)}
- JOIN(20)(INNER)
+ JOIN(21)(INNER)
=> Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)
=> out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
@@ -93,7 +93,7 @@
[Enforcers]
0: type=Broadcast, tables=default.part
-GROUP_BY(31)(l_orderkey)
+GROUP_BY(32)(l_orderkey)
=> exprs: (avg(default.e.l_quantity (FLOAT8)))
=> target list: default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)
=> out schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
@@ -106,7 +106,7 @@
=> Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
=> in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
- JOIN(21)(INNER)
+ JOIN(22)(INNER)
=> Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
@@ -135,14 +135,14 @@
1: type=Broadcast, tables=default.a
2: type=Broadcast, tables=default.c
-GROUP_BY(35)()
+GROUP_BY(36)()
=> exprs: (sum(default.b.l_quantity (FLOAT8)))
=> target list: ?sum_12 (FLOAT8)
=> out schema:{(1) ?sum_12 (FLOAT8)}
=> in schema:{(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
- SELECTION(16)
+ SELECTION(20)
=> Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8)
- JOIN(23)(INNER)
+ JOIN(24)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
@@ -160,10 +160,10 @@
=> target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8)
=> out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)}
=> in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
- SCAN(32) on eb_0000000000000_0000_000008
+ SCAN(33) on eb_0000000000000_0000_000008
=> out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
=> in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
- JOIN(22)(INNER)
+ JOIN(23)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
@@ -181,7 +181,7 @@
=> Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_linenumber (INT4)
=> out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
=> in schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
- JOIN(20)(INNER)
+ JOIN(21)(INNER)
=> Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)
=> out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
@@ -207,7 +207,7 @@
=> target list: ?sum (FLOAT8)
=> out schema:{(1) ?sum (FLOAT8)}
=> in schema:{(1) ?sum_12 (FLOAT8)}
- SCAN(36) on eb_0000000000000_0000_000010
+ SCAN(37) on eb_0000000000000_0000_000010
=> out schema: {(1) ?sum_12 (FLOAT8)}
=> in schema: {(1) ?sum_12 (FLOAT8)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan
index 14f4bb4..cbd07fc 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Hash_NoBroadcast.plan
@@ -5,9 +5,9 @@
=> target list: ?sum (FLOAT8)
=> out schema:{(1) ?sum (FLOAT8)}
=> in schema:{(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
- SELECTION(16)
+ SELECTION(20)
=> Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8)
- JOIN(23)(INNER)
+ JOIN(24)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
@@ -25,7 +25,7 @@
=> Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)
=> out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)}
=> in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)}
- JOIN(21)(INNER)
+ JOIN(22)(INNER)
=> Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
@@ -38,7 +38,7 @@
=> target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)}
=> in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)}
- JOIN(22)(INNER)
+ JOIN(23)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
@@ -52,7 +52,7 @@
=> Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)
=> out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)}
=> in schema: {(3) default.b.l_linenumber (INT4), default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)}
- JOIN(20)(INNER)
+ JOIN(21)(INNER)
=> Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)
=> out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
@@ -142,15 +142,15 @@
=> Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_linenumber (INT4)
=> out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
=> in schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
- JOIN(20)(INNER)
+ JOIN(21)(INNER)
=> Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)
=> out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
=> in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)}
- SCAN(26) on eb_0000000000000_0000_000002
+ SCAN(27) on eb_0000000000000_0000_000002
=> out schema: {(1) default.part.p_partkey (INT4)}
=> in schema: {(1) default.part.p_partkey (INT4)}
- SCAN(25) on eb_0000000000000_0000_000001
+ SCAN(26) on eb_0000000000000_0000_000001
=> out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)}
=> in schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)}
@@ -202,15 +202,15 @@
[Outgoing]
[q_0000000000000_0000] 5 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32)
-JOIN(22)(INNER)
+JOIN(23)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
=> in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
- SCAN(28) on eb_0000000000000_0000_000004
+ SCAN(29) on eb_0000000000000_0000_000004
=> out schema: {(1) default.c.o_orderkey (INT4)}
=> in schema: {(1) default.c.o_orderkey (INT4)}
- SCAN(27) on eb_0000000000000_0000_000003
+ SCAN(28) on eb_0000000000000_0000_000003
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)}
=> in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)}
@@ -225,7 +225,7 @@
[Outgoing]
[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32)
-GROUP_BY(31)(l_orderkey)
+GROUP_BY(32)(l_orderkey)
=> exprs: (avg(default.e.l_quantity (FLOAT8)))
=> target list: default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)
=> out schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
@@ -238,15 +238,15 @@
=> Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
=> in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
- JOIN(21)(INNER)
+ JOIN(22)(INNER)
=> Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
=> in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)}
- SCAN(30) on eb_0000000000000_0000_000007
+ SCAN(31) on eb_0000000000000_0000_000007
=> out schema: {(1) default.part.p_partkey (INT4)}
=> in schema: {(1) default.part.p_partkey (INT4)}
- SCAN(29) on eb_0000000000000_0000_000006
+ SCAN(30) on eb_0000000000000_0000_000006
=> out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)}
=> in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)}
@@ -273,7 +273,7 @@
=> target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8)
=> out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)}
=> in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
- SCAN(32) on eb_0000000000000_0000_000008
+ SCAN(33) on eb_0000000000000_0000_000008
=> out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
=> in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
@@ -288,22 +288,22 @@
[Outgoing]
[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=, num=1)
-GROUP_BY(35)()
+GROUP_BY(36)()
=> exprs: (sum(default.b.l_quantity (FLOAT8)))
=> target list: ?sum_12 (FLOAT8)
=> out schema:{(1) ?sum_12 (FLOAT8)}
=> in schema:{(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
- SELECTION(16)
+ SELECTION(20)
=> Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8)
- JOIN(23)(INNER)
+ JOIN(24)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
=> in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)}
- SCAN(34) on eb_0000000000000_0000_000009
+ SCAN(35) on eb_0000000000000_0000_000009
=> out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)}
=> in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)}
- SCAN(33) on eb_0000000000000_0000_000005
+ SCAN(34) on eb_0000000000000_0000_000005
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
=> in schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
@@ -319,7 +319,7 @@
=> target list: ?sum (FLOAT8)
=> out schema:{(1) ?sum (FLOAT8)}
=> in schema:{(1) ?sum_12 (FLOAT8)}
- SCAN(36) on eb_0000000000000_0000_000010
+ SCAN(37) on eb_0000000000000_0000_000010
=> out schema: {(1) ?sum_12 (FLOAT8)}
=> in schema: {(1) ?sum_12 (FLOAT8)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan
index ec3578c..5def40e 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort.plan
@@ -5,9 +5,9 @@
=> target list: ?sum (FLOAT8)
=> out schema:{(1) ?sum (FLOAT8)}
=> in schema:{(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
- SELECTION(16)
+ SELECTION(20)
=> Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8)
- JOIN(23)(INNER)
+ JOIN(24)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
@@ -25,7 +25,7 @@
=> Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)
=> out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)}
=> in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)}
- JOIN(21)(INNER)
+ JOIN(22)(INNER)
=> Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
@@ -38,7 +38,7 @@
=> target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)}
=> in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)}
- JOIN(22)(INNER)
+ JOIN(23)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
@@ -52,7 +52,7 @@
=> Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)
=> out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)}
=> in schema: {(3) default.b.l_linenumber (INT4), default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)}
- JOIN(20)(INNER)
+ JOIN(21)(INNER)
=> Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)
=> out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
@@ -93,7 +93,7 @@
[Enforcers]
0: type=Broadcast, tables=default.part
-GROUP_BY(31)(l_orderkey)
+GROUP_BY(32)(l_orderkey)
=> exprs: (avg(default.e.l_quantity (FLOAT8)))
=> target list: default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)
=> out schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
@@ -106,7 +106,7 @@
=> Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
=> in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
- JOIN(21)(INNER)
+ JOIN(22)(INNER)
=> Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
@@ -135,14 +135,14 @@
1: type=Broadcast, tables=default.a
2: type=Broadcast, tables=default.c
-GROUP_BY(35)()
+GROUP_BY(36)()
=> exprs: (sum(default.b.l_quantity (FLOAT8)))
=> target list: ?sum_12 (FLOAT8)
=> out schema:{(1) ?sum_12 (FLOAT8)}
=> in schema:{(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
- SELECTION(16)
+ SELECTION(20)
=> Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8)
- JOIN(23)(INNER)
+ JOIN(24)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
@@ -160,10 +160,10 @@
=> target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8)
=> out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)}
=> in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
- SCAN(32) on eb_0000000000000_0000_000008
+ SCAN(33) on eb_0000000000000_0000_000008
=> out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
=> in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
- JOIN(22)(INNER)
+ JOIN(23)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
@@ -181,7 +181,7 @@
=> Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_linenumber (INT4)
=> out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
=> in schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
- JOIN(20)(INNER)
+ JOIN(21)(INNER)
=> Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)
=> out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
@@ -207,7 +207,7 @@
=> target list: ?sum (FLOAT8)
=> out schema:{(1) ?sum (FLOAT8)}
=> in schema:{(1) ?sum_12 (FLOAT8)}
- SCAN(36) on eb_0000000000000_0000_000010
+ SCAN(37) on eb_0000000000000_0000_000010
=> out schema: {(1) ?sum_12 (FLOAT8)}
=> in schema: {(1) ?sum_12 (FLOAT8)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan
index 14f4bb4..cbd07fc 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testBroadcastSubquery2.Sort_NoBroadcast.plan
@@ -5,9 +5,9 @@
=> target list: ?sum (FLOAT8)
=> out schema:{(1) ?sum (FLOAT8)}
=> in schema:{(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
- SELECTION(16)
+ SELECTION(20)
=> Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8)
- JOIN(23)(INNER)
+ JOIN(24)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
@@ -25,7 +25,7 @@
=> Targets: default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)
=> out schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)}
=> in schema: {(2) default.e.l_orderkey (INT4), default.e.l_quantity (FLOAT8)}
- JOIN(21)(INNER)
+ JOIN(22)(INNER)
=> Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
@@ -38,7 +38,7 @@
=> target list: default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)}
=> in schema: {(16) default.d.l_comment (TEXT), default.d.l_commitdate (TEXT), default.d.l_discount (FLOAT8), default.d.l_extendedprice (FLOAT8), default.d.l_linenumber (INT4), default.d.l_linestatus (TEXT), default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.d.l_receiptdate (TEXT), default.d.l_returnflag (TEXT), default.d.l_shipdate (TEXT), default.d.l_shipinstruct (TEXT), default.d.l_shipmode (TEXT), default.d.l_suppkey (INT4), default.d.l_tax (FLOAT8)}
- JOIN(22)(INNER)
+ JOIN(23)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
@@ -52,7 +52,7 @@
=> Targets: default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)
=> out schema: {(2) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)}
=> in schema: {(3) default.b.l_linenumber (INT4), default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8)}
- JOIN(20)(INNER)
+ JOIN(21)(INNER)
=> Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)
=> out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
@@ -142,15 +142,15 @@
=> Targets: default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8), default.a.l_linenumber (INT4)
=> out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
=> in schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
- JOIN(20)(INNER)
+ JOIN(21)(INNER)
=> Join Cond: default.a.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)
=> out schema: {(3) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_quantity (FLOAT8)}
=> in schema: {(5) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8), default.part.p_partkey (INT4)}
- SCAN(26) on eb_0000000000000_0000_000002
+ SCAN(27) on eb_0000000000000_0000_000002
=> out schema: {(1) default.part.p_partkey (INT4)}
=> in schema: {(1) default.part.p_partkey (INT4)}
- SCAN(25) on eb_0000000000000_0000_000001
+ SCAN(26) on eb_0000000000000_0000_000001
=> out schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)}
=> in schema: {(4) default.a.l_linenumber (INT4), default.a.l_orderkey (INT4), default.a.l_partkey (INT4), default.a.l_quantity (FLOAT8)}
@@ -202,15 +202,15 @@
[Outgoing]
[q_0000000000000_0000] 5 => 10 (type=HASH_SHUFFLE, key=default.c.o_orderkey (INT4), num=32)
-JOIN(22)(INNER)
+JOIN(23)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.b.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
=> in schema: {(3) default.b.l_orderkey (INT4), default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
- SCAN(28) on eb_0000000000000_0000_000004
+ SCAN(29) on eb_0000000000000_0000_000004
=> out schema: {(1) default.c.o_orderkey (INT4)}
=> in schema: {(1) default.c.o_orderkey (INT4)}
- SCAN(27) on eb_0000000000000_0000_000003
+ SCAN(28) on eb_0000000000000_0000_000003
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)}
=> in schema: {(2) default.b.l_quantity (FLOAT8), default.b.l_orderkey (INT4)}
@@ -225,7 +225,7 @@
[Outgoing]
[q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=default.e.l_orderkey (INT4), num=32)
-GROUP_BY(31)(l_orderkey)
+GROUP_BY(32)(l_orderkey)
=> exprs: (avg(default.e.l_quantity (FLOAT8)))
=> target list: default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)
=> out schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
@@ -238,15 +238,15 @@
=> Targets: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
=> in schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
- JOIN(21)(INNER)
+ JOIN(22)(INNER)
=> Join Cond: default.d.l_partkey (INT4) = default.part.p_partkey (INT4)
=> target list: default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)
=> out schema: {(2) default.d.l_orderkey (INT4), default.d.l_quantity (FLOAT8)}
=> in schema: {(4) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8), default.part.p_partkey (INT4)}
- SCAN(30) on eb_0000000000000_0000_000007
+ SCAN(31) on eb_0000000000000_0000_000007
=> out schema: {(1) default.part.p_partkey (INT4)}
=> in schema: {(1) default.part.p_partkey (INT4)}
- SCAN(29) on eb_0000000000000_0000_000006
+ SCAN(30) on eb_0000000000000_0000_000006
=> out schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)}
=> in schema: {(3) default.d.l_orderkey (INT4), default.d.l_partkey (INT4), default.d.l_quantity (FLOAT8)}
@@ -273,7 +273,7 @@
=> target list: default.e.l_orderkey (INT4), avg_quantity (FLOAT8)
=> out schema:{(2) avg_quantity (FLOAT8), default.e.l_orderkey (INT4)}
=> in schema:{(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
- SCAN(32) on eb_0000000000000_0000_000008
+ SCAN(33) on eb_0000000000000_0000_000008
=> out schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
=> in schema: {(2) default.e.l_orderkey (INT4), ?avg_11 (PROTOBUF)}
@@ -288,22 +288,22 @@
[Outgoing]
[q_0000000000000_0000] 10 => 11 (type=HASH_SHUFFLE, key=, num=1)
-GROUP_BY(35)()
+GROUP_BY(36)()
=> exprs: (sum(default.b.l_quantity (FLOAT8)))
=> target list: ?sum_12 (FLOAT8)
=> out schema:{(1) ?sum_12 (FLOAT8)}
=> in schema:{(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
- SELECTION(16)
+ SELECTION(20)
=> Search Cond: default.b.l_quantity (FLOAT8) > default.f.avg_quantity (FLOAT8)
- JOIN(23)(INNER)
+ JOIN(24)(INNER)
=> Join Cond: default.c.o_orderkey (INT4) = default.f.l_orderkey (INT4)
=> target list: default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.f.avg_quantity (FLOAT8)}
=> in schema: {(4) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4), default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)}
- SCAN(34) on eb_0000000000000_0000_000009
+ SCAN(35) on eb_0000000000000_0000_000009
=> out schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)}
=> in schema: {(2) default.f.avg_quantity (FLOAT8), default.f.l_orderkey (INT4)}
- SCAN(33) on eb_0000000000000_0000_000005
+ SCAN(34) on eb_0000000000000_0000_000005
=> out schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
=> in schema: {(2) default.b.l_quantity (FLOAT8), default.c.o_orderkey (INT4)}
@@ -319,7 +319,7 @@
=> target list: ?sum (FLOAT8)
=> out schema:{(1) ?sum (FLOAT8)}
=> in schema:{(1) ?sum_12 (FLOAT8)}
- SCAN(36) on eb_0000000000000_0000_000010
+ SCAN(37) on eb_0000000000000_0000_000010
=> out schema: {(1) ?sum_12 (FLOAT8)}
=> in schema: {(1) ?sum_12 (FLOAT8)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan
index 8d739f6..f249f0e 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(9)
+SELECTION(12)
=> Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4)
- JOIN(14)(INNER)
+ JOIN(15)(INNER)
=> Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)
=> out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
@@ -11,7 +11,7 @@
=> Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)
=> out schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
=> in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
- JOIN(12)(INNER)
+ JOIN(13)(INNER)
=> Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
@@ -25,7 +25,7 @@
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- JOIN(13)(INNER)
+ JOIN(14)(INNER)
=> Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)
=> out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
@@ -61,9 +61,9 @@
1: type=Broadcast, tables=default.s
2: type=Broadcast, tables=default.r
-SELECTION(9)
+SELECTION(12)
=> Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4)
- JOIN(14)(INNER)
+ JOIN(15)(INNER)
=> Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)
=> out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
@@ -76,7 +76,7 @@
=> Targets: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- JOIN(12)(INNER)
+ JOIN(13)(INNER)
=> Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
@@ -90,7 +90,7 @@
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- JOIN(13)(INNER)
+ JOIN(14)(INNER)
=> Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)
=> out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan
index d80eea0..554ee76 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Hash_NoBroadcast.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(9)
+SELECTION(12)
=> Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4)
- JOIN(14)(INNER)
+ JOIN(15)(INNER)
=> Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)
=> out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
@@ -11,7 +11,7 @@
=> Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)
=> out schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
=> in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
- JOIN(12)(INNER)
+ JOIN(13)(INNER)
=> Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
@@ -25,7 +25,7 @@
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- JOIN(13)(INNER)
+ JOIN(14)(INNER)
=> Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)
=> out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
@@ -124,15 +124,15 @@
[Outgoing]
[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32)
-JOIN(13)(INNER)
+JOIN(14)(INNER)
=> Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)
=> out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
=> in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
- SCAN(17) on eb_0000000000000_0000_000002
+ SCAN(18) on eb_0000000000000_0000_000002
=> out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
=> in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
- SCAN(16) on eb_0000000000000_0000_000001
+ SCAN(17) on eb_0000000000000_0000_000001
=> out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)}
=> in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)}
@@ -155,15 +155,15 @@
=> Targets: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- JOIN(12)(INNER)
+ JOIN(13)(INNER)
=> Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- SCAN(19) on eb_0000000000000_0000_000005
+ SCAN(20) on eb_0000000000000_0000_000005
=> out schema: {(1) default.r.r_regionkey (INT4)}
=> in schema: {(1) default.r.r_regionkey (INT4)}
- SCAN(18) on eb_0000000000000_0000_000004
+ SCAN(19) on eb_0000000000000_0000_000004
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
@@ -175,17 +175,17 @@
[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32)
[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32)
-SELECTION(9)
+SELECTION(12)
=> Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4)
- JOIN(14)(INNER)
+ JOIN(15)(INNER)
=> Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)
=> out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
=> in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
- SCAN(21) on eb_0000000000000_0000_000006
+ SCAN(22) on eb_0000000000000_0000_000006
=> out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)}
=> in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)}
- SCAN(20) on eb_0000000000000_0000_000003
+ SCAN(21) on eb_0000000000000_0000_000003
=> out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
=> in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan
index 8d739f6..f249f0e 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(9)
+SELECTION(12)
=> Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4)
- JOIN(14)(INNER)
+ JOIN(15)(INNER)
=> Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)
=> out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
@@ -11,7 +11,7 @@
=> Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)
=> out schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
=> in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
- JOIN(12)(INNER)
+ JOIN(13)(INNER)
=> Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
@@ -25,7 +25,7 @@
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- JOIN(13)(INNER)
+ JOIN(14)(INNER)
=> Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)
=> out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
@@ -61,9 +61,9 @@
1: type=Broadcast, tables=default.s
2: type=Broadcast, tables=default.r
-SELECTION(9)
+SELECTION(12)
=> Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4)
- JOIN(14)(INNER)
+ JOIN(15)(INNER)
=> Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)
=> out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
@@ -76,7 +76,7 @@
=> Targets: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- JOIN(12)(INNER)
+ JOIN(13)(INNER)
=> Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
@@ -90,7 +90,7 @@
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- JOIN(13)(INNER)
+ JOIN(14)(INNER)
=> Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)
=> out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan
index d80eea0..554ee76 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testJoinWithMultipleJoinQual4.Sort_NoBroadcast.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(9)
+SELECTION(12)
=> Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4)
- JOIN(14)(INNER)
+ JOIN(15)(INNER)
=> Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)
=> out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
@@ -11,7 +11,7 @@
=> Targets: default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)
=> out schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
=> in schema: {(4) default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
- JOIN(12)(INNER)
+ JOIN(13)(INNER)
=> Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
@@ -25,7 +25,7 @@
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- JOIN(13)(INNER)
+ JOIN(14)(INNER)
=> Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)
=> out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
@@ -124,15 +124,15 @@
[Outgoing]
[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32)
-JOIN(13)(INNER)
+JOIN(14)(INNER)
=> Join Cond: default.s.s_suppkey (INT4) = default.ps.ps_suppkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)
=> out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
=> in schema: {(4) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
- SCAN(17) on eb_0000000000000_0000_000002
+ SCAN(18) on eb_0000000000000_0000_000002
=> out schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
=> in schema: {(2) default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
- SCAN(16) on eb_0000000000000_0000_000001
+ SCAN(17) on eb_0000000000000_0000_000001
=> out schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)}
=> in schema: {(2) default.ps.ps_availqty (INT4), default.ps.ps_suppkey (INT4)}
@@ -155,15 +155,15 @@
=> Targets: default.n.n_nationkey (INT4), default.n.n_name (TEXT), default.n.n_regionkey (INT4), default.n.n_comment (TEXT)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- JOIN(12)(INNER)
+ JOIN(13)(INNER)
=> Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
=> target list: default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(5) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- SCAN(19) on eb_0000000000000_0000_000005
+ SCAN(20) on eb_0000000000000_0000_000005
=> out schema: {(1) default.r.r_regionkey (INT4)}
=> in schema: {(1) default.r.r_regionkey (INT4)}
- SCAN(18) on eb_0000000000000_0000_000004
+ SCAN(19) on eb_0000000000000_0000_000004
=> out schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
@@ -175,17 +175,17 @@
[q_0000000000000_0000] 3 => 7 (type=HASH_SHUFFLE, key=default.s.s_nationkey (INT4), num=32)
[q_0000000000000_0000] 6 => 7 (type=HASH_SHUFFLE, key=default.t.n_nationkey (INT4), num=32)
-SELECTION(9)
+SELECTION(12)
=> Search Cond: default.t.n_nationkey (INT4) > default.s.s_suppkey (INT4)
- JOIN(14)(INNER)
+ JOIN(15)(INNER)
=> Join Cond: default.s.s_nationkey (INT4) = default.t.n_nationkey (INT4)
=> target list: default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)
=> out schema: {(6) default.ps.ps_availqty (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
=> in schema: {(7) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4), default.t.n_comment (TEXT), default.t.n_name (TEXT), default.t.n_nationkey (INT4), default.t.n_regionkey (INT4)}
- SCAN(21) on eb_0000000000000_0000_000006
+ SCAN(22) on eb_0000000000000_0000_000006
=> out schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)}
=> in schema: {(4) default.t.n_nationkey (INT4), default.t.n_name (TEXT), default.t.n_regionkey (INT4), default.t.n_comment (TEXT)}
- SCAN(20) on eb_0000000000000_0000_000003
+ SCAN(21) on eb_0000000000000_0000_000003
=> out schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
=> in schema: {(3) default.ps.ps_availqty (INT4), default.s.s_nationkey (INT4), default.s.s_suppkey (INT4)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash.plan
index c0b6f82..cf59edb 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash.plan
@@ -2,37 +2,39 @@
-------------------------------
SORT(8)
=> Sort Keys: default.n.n_nationkey (INT4) (asc)
- JOIN(12)(INNER)
- => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
- => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
- => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- SCAN(0) on default.nation as n
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
- => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- TABLE_SUBQUERY(6) as default.t
- => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4)
- => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- GROUP_BY(4)(r_regionkey)
- => exprs: (count())
- => target list: default.r.r_regionkey (INT4), cnt (INT8)
- => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
- => in schema:{(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- JOIN(11)(INNER)
- => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)
- => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- SCAN(2) on default.region as r
- => target list: default.r.r_regionkey (INT4)
- => out schema: {(1) default.r.r_regionkey (INT4)}
- => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)}
- SCAN(1) on default.nation as n
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
- => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ SELECTION(11)
+ => Search Cond: CAST (default.n.n_nationkey (INT4) AS INT8) > default.t.cnt (INT8)
+ JOIN(13)(INNER)
+ => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
+ => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
+ => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ SCAN(0) on default.nation as n
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
+ => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ TABLE_SUBQUERY(6) as default.t
+ => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4)
+ => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ GROUP_BY(4)(r_regionkey)
+ => exprs: (count())
+ => target list: default.r.r_regionkey (INT4), cnt (INT8)
+ => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
+ => in schema:{(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
+ JOIN(12)(INNER)
+ => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)
+ => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
+ => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
+ SCAN(2) on default.region as r
+ => target list: default.r.r_regionkey (INT4)
+ => out schema: {(1) default.r.r_regionkey (INT4)}
+ => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)}
+ SCAN(1) on default.nation as n
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
+ => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
explain
-------------------------------
-------------------------------------------------------------------------------
@@ -61,12 +63,12 @@
[Enforcers]
0: type=Broadcast, tables=default.r
-GROUP_BY(16)(r_regionkey)
+GROUP_BY(17)(r_regionkey)
=> exprs: (count())
- => target list: default.r.r_regionkey (INT4), ?count_4 (INT8)
- => out schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
+ => target list: default.r.r_regionkey (INT4), ?count_5 (INT8)
+ => out schema:{(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
=> in schema:{(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- JOIN(11)(INNER)
+ JOIN(12)(INNER)
=> Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
=> target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)
=> out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
@@ -93,33 +95,35 @@
[Enforcers]
0: type=Broadcast, tables=default.n
-SORT(20)
+SORT(21)
=> Sort Keys: default.n.n_nationkey (INT4) (asc)
- JOIN(12)(INNER)
- => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
- => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
- => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- SCAN(0) on default.nation as n
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
- => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- TABLE_SUBQUERY(6) as default.t
- => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4)
- => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- PROJECTION(5)
- => Targets: default.r.r_regionkey (INT4), cnt (INT8)
- => out schema: {(2) cnt (INT8), default.r.r_regionkey (INT4)}
- => in schema: {(2) cnt (INT8), default.r.r_regionkey (INT4)}
- GROUP_BY(4)(r_regionkey)
- => exprs: (count(?count_4 (INT8)))
- => target list: default.r.r_regionkey (INT4), cnt (INT8)
- => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
- => in schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
- SCAN(17) on eb_0000000000000_0000_000003
- => out schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
- => in schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
+ SELECTION(11)
+ => Search Cond: CAST (default.n.n_nationkey (INT4) AS INT8) > default.t.cnt (INT8)
+ JOIN(13)(INNER)
+ => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
+ => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
+ => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ SCAN(0) on default.nation as n
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
+ => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ TABLE_SUBQUERY(6) as default.t
+ => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4)
+ => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ PROJECTION(5)
+ => Targets: default.r.r_regionkey (INT4), cnt (INT8)
+ => out schema: {(2) cnt (INT8), default.r.r_regionkey (INT4)}
+ => in schema: {(2) cnt (INT8), default.r.r_regionkey (INT4)}
+ GROUP_BY(4)(r_regionkey)
+ => exprs: (count(?count_5 (INT8)))
+ => target list: default.r.r_regionkey (INT4), cnt (INT8)
+ => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
+ => in schema:{(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
+ SCAN(18) on eb_0000000000000_0000_000003
+ => out schema: {(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
+ => in schema: {(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
=======================================================
Block Id: eb_0000000000000_0000_000007 [ROOT]
@@ -133,7 +137,7 @@
SORT(8)
=> Sort Keys: default.n.n_nationkey (INT4) (asc)
- SCAN(21) on eb_0000000000000_0000_000006
+ SCAN(22) on eb_0000000000000_0000_000006
=> out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
=> in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash_NoBroadcast.plan
index 6509afc..d2d5617 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Hash_NoBroadcast.plan
@@ -2,37 +2,39 @@
-------------------------------
SORT(8)
=> Sort Keys: default.n.n_nationkey (INT4) (asc)
- JOIN(12)(INNER)
- => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
- => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
- => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- SCAN(0) on default.nation as n
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
- => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- TABLE_SUBQUERY(6) as default.t
- => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4)
- => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- GROUP_BY(4)(r_regionkey)
- => exprs: (count())
- => target list: default.r.r_regionkey (INT4), cnt (INT8)
- => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
- => in schema:{(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- JOIN(11)(INNER)
- => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)
- => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- SCAN(2) on default.region as r
- => target list: default.r.r_regionkey (INT4)
- => out schema: {(1) default.r.r_regionkey (INT4)}
- => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)}
- SCAN(1) on default.nation as n
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
- => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ SELECTION(11)
+ => Search Cond: CAST (default.n.n_nationkey (INT4) AS INT8) > default.t.cnt (INT8)
+ JOIN(13)(INNER)
+ => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
+ => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
+ => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ SCAN(0) on default.nation as n
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
+ => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ TABLE_SUBQUERY(6) as default.t
+ => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4)
+ => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ GROUP_BY(4)(r_regionkey)
+ => exprs: (count())
+ => target list: default.r.r_regionkey (INT4), cnt (INT8)
+ => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
+ => in schema:{(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
+ JOIN(12)(INNER)
+ => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)
+ => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
+ => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
+ SCAN(2) on default.region as r
+ => target list: default.r.r_regionkey (INT4)
+ => out schema: {(1) default.r.r_regionkey (INT4)}
+ => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)}
+ SCAN(1) on default.nation as n
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
+ => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
explain
-------------------------------
-------------------------------------------------------------------------------
@@ -94,20 +96,20 @@
[Outgoing]
[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32)
-GROUP_BY(16)(r_regionkey)
+GROUP_BY(17)(r_regionkey)
=> exprs: (count())
- => target list: default.r.r_regionkey (INT4), ?count_4 (INT8)
- => out schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
+ => target list: default.r.r_regionkey (INT4), ?count_5 (INT8)
+ => out schema:{(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
=> in schema:{(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- JOIN(11)(INNER)
+ JOIN(12)(INNER)
=> Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
=> target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)
=> out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
=> in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- SCAN(15) on eb_0000000000000_0000_000002
+ SCAN(16) on eb_0000000000000_0000_000002
=> out schema: {(1) default.r.r_regionkey (INT4)}
=> in schema: {(1) default.r.r_regionkey (INT4)}
- SCAN(14) on eb_0000000000000_0000_000001
+ SCAN(15) on eb_0000000000000_0000_000001
=> out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
@@ -130,13 +132,13 @@
=> out schema: {(2) cnt (INT8), default.r.r_regionkey (INT4)}
=> in schema: {(2) cnt (INT8), default.r.r_regionkey (INT4)}
GROUP_BY(4)(r_regionkey)
- => exprs: (count(?count_4 (INT8)))
+ => exprs: (count(?count_5 (INT8)))
=> target list: default.r.r_regionkey (INT4), cnt (INT8)
=> out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
- => in schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
- SCAN(17) on eb_0000000000000_0000_000003
- => out schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
- => in schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
+ => in schema:{(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
+ SCAN(18) on eb_0000000000000_0000_000003
+ => out schema: {(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
+ => in schema: {(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
=======================================================
Block Id: eb_0000000000000_0000_000005 [LEAF]
@@ -161,19 +163,21 @@
[Outgoing]
[q_0000000000000_0000] 6 => 7 (type=RANGE_SHUFFLE, key=default.n.n_nationkey (INT4), num=32)
-SORT(20)
+SORT(21)
=> Sort Keys: default.n.n_nationkey (INT4) (asc)
- JOIN(12)(INNER)
- => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
- => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
- => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- SCAN(19) on eb_0000000000000_0000_000005
- => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- SCAN(18) on eb_0000000000000_0000_000004
- => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ SELECTION(11)
+ => Search Cond: CAST (default.n.n_nationkey (INT4) AS INT8) > default.t.cnt (INT8)
+ JOIN(13)(INNER)
+ => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
+ => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
+ => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ SCAN(20) on eb_0000000000000_0000_000005
+ => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ SCAN(19) on eb_0000000000000_0000_000004
+ => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
=======================================================
Block Id: eb_0000000000000_0000_000007 [ROOT]
@@ -187,7 +191,7 @@
SORT(8)
=> Sort Keys: default.n.n_nationkey (INT4) (asc)
- SCAN(21) on eb_0000000000000_0000_000006
+ SCAN(22) on eb_0000000000000_0000_000006
=> out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
=> in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort.plan
index c0b6f82..cf59edb 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort.plan
@@ -2,37 +2,39 @@
-------------------------------
SORT(8)
=> Sort Keys: default.n.n_nationkey (INT4) (asc)
- JOIN(12)(INNER)
- => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
- => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
- => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- SCAN(0) on default.nation as n
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
- => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- TABLE_SUBQUERY(6) as default.t
- => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4)
- => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- GROUP_BY(4)(r_regionkey)
- => exprs: (count())
- => target list: default.r.r_regionkey (INT4), cnt (INT8)
- => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
- => in schema:{(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- JOIN(11)(INNER)
- => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)
- => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- SCAN(2) on default.region as r
- => target list: default.r.r_regionkey (INT4)
- => out schema: {(1) default.r.r_regionkey (INT4)}
- => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)}
- SCAN(1) on default.nation as n
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
- => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ SELECTION(11)
+ => Search Cond: CAST (default.n.n_nationkey (INT4) AS INT8) > default.t.cnt (INT8)
+ JOIN(13)(INNER)
+ => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
+ => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
+ => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ SCAN(0) on default.nation as n
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
+ => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ TABLE_SUBQUERY(6) as default.t
+ => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4)
+ => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ GROUP_BY(4)(r_regionkey)
+ => exprs: (count())
+ => target list: default.r.r_regionkey (INT4), cnt (INT8)
+ => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
+ => in schema:{(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
+ JOIN(12)(INNER)
+ => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)
+ => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
+ => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
+ SCAN(2) on default.region as r
+ => target list: default.r.r_regionkey (INT4)
+ => out schema: {(1) default.r.r_regionkey (INT4)}
+ => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)}
+ SCAN(1) on default.nation as n
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
+ => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
explain
-------------------------------
-------------------------------------------------------------------------------
@@ -61,12 +63,12 @@
[Enforcers]
0: type=Broadcast, tables=default.r
-GROUP_BY(16)(r_regionkey)
+GROUP_BY(17)(r_regionkey)
=> exprs: (count())
- => target list: default.r.r_regionkey (INT4), ?count_4 (INT8)
- => out schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
+ => target list: default.r.r_regionkey (INT4), ?count_5 (INT8)
+ => out schema:{(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
=> in schema:{(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- JOIN(11)(INNER)
+ JOIN(12)(INNER)
=> Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
=> target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)
=> out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
@@ -93,33 +95,35 @@
[Enforcers]
0: type=Broadcast, tables=default.n
-SORT(20)
+SORT(21)
=> Sort Keys: default.n.n_nationkey (INT4) (asc)
- JOIN(12)(INNER)
- => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
- => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
- => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- SCAN(0) on default.nation as n
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
- => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- TABLE_SUBQUERY(6) as default.t
- => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4)
- => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- PROJECTION(5)
- => Targets: default.r.r_regionkey (INT4), cnt (INT8)
- => out schema: {(2) cnt (INT8), default.r.r_regionkey (INT4)}
- => in schema: {(2) cnt (INT8), default.r.r_regionkey (INT4)}
- GROUP_BY(4)(r_regionkey)
- => exprs: (count(?count_4 (INT8)))
- => target list: default.r.r_regionkey (INT4), cnt (INT8)
- => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
- => in schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
- SCAN(17) on eb_0000000000000_0000_000003
- => out schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
- => in schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
+ SELECTION(11)
+ => Search Cond: CAST (default.n.n_nationkey (INT4) AS INT8) > default.t.cnt (INT8)
+ JOIN(13)(INNER)
+ => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
+ => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
+ => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ SCAN(0) on default.nation as n
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
+ => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ TABLE_SUBQUERY(6) as default.t
+ => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4)
+ => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ PROJECTION(5)
+ => Targets: default.r.r_regionkey (INT4), cnt (INT8)
+ => out schema: {(2) cnt (INT8), default.r.r_regionkey (INT4)}
+ => in schema: {(2) cnt (INT8), default.r.r_regionkey (INT4)}
+ GROUP_BY(4)(r_regionkey)
+ => exprs: (count(?count_5 (INT8)))
+ => target list: default.r.r_regionkey (INT4), cnt (INT8)
+ => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
+ => in schema:{(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
+ SCAN(18) on eb_0000000000000_0000_000003
+ => out schema: {(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
+ => in schema: {(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
=======================================================
Block Id: eb_0000000000000_0000_000007 [ROOT]
@@ -133,7 +137,7 @@
SORT(8)
=> Sort Keys: default.n.n_nationkey (INT4) (asc)
- SCAN(21) on eb_0000000000000_0000_000006
+ SCAN(22) on eb_0000000000000_0000_000006
=> out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
=> in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort_NoBroadcast.plan
index 6509afc..d2d5617 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.Sort_NoBroadcast.plan
@@ -2,37 +2,39 @@
-------------------------------
SORT(8)
=> Sort Keys: default.n.n_nationkey (INT4) (asc)
- JOIN(12)(INNER)
- => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
- => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
- => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- SCAN(0) on default.nation as n
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
- => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- TABLE_SUBQUERY(6) as default.t
- => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4)
- => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- GROUP_BY(4)(r_regionkey)
- => exprs: (count())
- => target list: default.r.r_regionkey (INT4), cnt (INT8)
- => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
- => in schema:{(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- JOIN(11)(INNER)
- => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)
- => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- SCAN(2) on default.region as r
- => target list: default.r.r_regionkey (INT4)
- => out schema: {(1) default.r.r_regionkey (INT4)}
- => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)}
- SCAN(1) on default.nation as n
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
- => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ SELECTION(11)
+ => Search Cond: CAST (default.n.n_nationkey (INT4) AS INT8) > default.t.cnt (INT8)
+ JOIN(13)(INNER)
+ => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
+ => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
+ => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ SCAN(0) on default.nation as n
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
+ => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ TABLE_SUBQUERY(6) as default.t
+ => Targets: default.t.cnt (INT8), default.t.r_regionkey (INT4)
+ => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ GROUP_BY(4)(r_regionkey)
+ => exprs: (count())
+ => target list: default.r.r_regionkey (INT4), cnt (INT8)
+ => out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
+ => in schema:{(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
+ JOIN(12)(INNER)
+ => Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)
+ => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
+ => in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
+ SCAN(2) on default.region as r
+ => target list: default.r.r_regionkey (INT4)
+ => out schema: {(1) default.r.r_regionkey (INT4)}
+ => in schema: {(3) default.r.r_comment (TEXT), default.r.r_name (TEXT), default.r.r_regionkey (INT4)}
+ SCAN(1) on default.nation as n
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)
+ => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ => in schema: {(4) default.n.n_comment (TEXT), default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
explain
-------------------------------
-------------------------------------------------------------------------------
@@ -94,20 +96,20 @@
[Outgoing]
[q_0000000000000_0000] 3 => 4 (type=HASH_SHUFFLE, key=default.r.r_regionkey (INT4), num=32)
-GROUP_BY(16)(r_regionkey)
+GROUP_BY(17)(r_regionkey)
=> exprs: (count())
- => target list: default.r.r_regionkey (INT4), ?count_4 (INT8)
- => out schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
+ => target list: default.r.r_regionkey (INT4), ?count_5 (INT8)
+ => out schema:{(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
=> in schema:{(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- JOIN(11)(INNER)
+ JOIN(12)(INNER)
=> Join Cond: default.n.n_regionkey (INT4) = default.r.r_regionkey (INT4)
=> target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)
=> out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
=> in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.r.r_regionkey (INT4)}
- SCAN(15) on eb_0000000000000_0000_000002
+ SCAN(16) on eb_0000000000000_0000_000002
=> out schema: {(1) default.r.r_regionkey (INT4)}
=> in schema: {(1) default.r.r_regionkey (INT4)}
- SCAN(14) on eb_0000000000000_0000_000001
+ SCAN(15) on eb_0000000000000_0000_000001
=> out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
=> in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
@@ -130,13 +132,13 @@
=> out schema: {(2) cnt (INT8), default.r.r_regionkey (INT4)}
=> in schema: {(2) cnt (INT8), default.r.r_regionkey (INT4)}
GROUP_BY(4)(r_regionkey)
- => exprs: (count(?count_4 (INT8)))
+ => exprs: (count(?count_5 (INT8)))
=> target list: default.r.r_regionkey (INT4), cnt (INT8)
=> out schema:{(2) cnt (INT8), default.r.r_regionkey (INT4)}
- => in schema:{(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
- SCAN(17) on eb_0000000000000_0000_000003
- => out schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
- => in schema: {(2) default.r.r_regionkey (INT4), ?count_4 (INT8)}
+ => in schema:{(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
+ SCAN(18) on eb_0000000000000_0000_000003
+ => out schema: {(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
+ => in schema: {(2) default.r.r_regionkey (INT4), ?count_5 (INT8)}
=======================================================
Block Id: eb_0000000000000_0000_000005 [LEAF]
@@ -161,19 +163,21 @@
[Outgoing]
[q_0000000000000_0000] 6 => 7 (type=RANGE_SHUFFLE, key=default.n.n_nationkey (INT4), num=32)
-SORT(20)
+SORT(21)
=> Sort Keys: default.n.n_nationkey (INT4) (asc)
- JOIN(12)(INNER)
- => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
- => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
- => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
- => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- SCAN(19) on eb_0000000000000_0000_000005
- => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
- SCAN(18) on eb_0000000000000_0000_000004
- => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
- => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ SELECTION(11)
+ => Search Cond: CAST (default.n.n_nationkey (INT4) AS INT8) > default.t.cnt (INT8)
+ JOIN(13)(INNER)
+ => Join Cond: default.n.n_regionkey (INT4) = default.t.r_regionkey (INT4)
+ => target list: default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)
+ => out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
+ => in schema: {(5) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ SCAN(20) on eb_0000000000000_0000_000005
+ => out schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ => in schema: {(3) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4)}
+ SCAN(19) on eb_0000000000000_0000_000004
+ => out schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
+ => in schema: {(2) default.t.cnt (INT8), default.t.r_regionkey (INT4)}
=======================================================
Block Id: eb_0000000000000_0000_000007 [ROOT]
@@ -187,7 +191,7 @@
SORT(8)
=> Sort Keys: default.n.n_nationkey (INT4) (asc)
- SCAN(21) on eb_0000000000000_0000_000006
+ SCAN(22) on eb_0000000000000_0000_000006
=> out schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
=> in schema: {(4) default.n.n_name (TEXT), default.n.n_nationkey (INT4), default.n.n_regionkey (INT4), default.t.cnt (INT8)}
diff --git a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.result b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.result
index f3a26c8..32d64d9 100644
--- a/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.result
+++ b/tajo-core/src/test/resources/results/TestInnerJoinWithSubQuery/testThetaJoinKeyPairs.result
@@ -1,11 +1,5 @@
n_nationkey,n_name,n_regionkey,cnt
-------------------------------
-0,ALGERIA,0,5
-1,ARGENTINA,1,5
-2,BRAZIL,1,5
-3,CANADA,1,5
-4,EGYPT,4,5
-5,ETHIOPIA,0,5
6,FRANCE,3,5
7,GERMANY,3,5
8,INDIA,2,5
diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Hash.plan
index a0cc8ea..20f77b3 100644
--- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Hash.plan
+++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Hash.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(LEFT_OUTER)
+ JOIN(7)(LEFT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
@@ -36,9 +36,9 @@
[Enforcers]
0: type=Broadcast, tables=default.b
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(LEFT_OUTER)
+ JOIN(7)(LEFT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan
index df36af8..ac73ab9 100644
--- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(LEFT_OUTER)
+ JOIN(7)(LEFT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
@@ -65,17 +65,17 @@
[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32)
[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32)
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(LEFT_OUTER)
+ JOIN(7)(LEFT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
=> in schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
- SCAN(9) on eb_0000000000000_0000_000002
+ SCAN(10) on eb_0000000000000_0000_000002
=> out schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
=> in schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
- SCAN(8) on eb_0000000000000_0000_000001
+ SCAN(9) on eb_0000000000000_0000_000001
=> out schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)}
=> in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)}
diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Sort.plan
index a0cc8ea..20f77b3 100644
--- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Sort.plan
+++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Sort.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(LEFT_OUTER)
+ JOIN(7)(LEFT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
@@ -36,9 +36,9 @@
[Enforcers]
0: type=Broadcast, tables=default.b
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(LEFT_OUTER)
+ JOIN(7)(LEFT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan
index df36af8..ac73ab9 100644
--- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(LEFT_OUTER)
+ JOIN(7)(LEFT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
@@ -65,17 +65,17 @@
[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32)
[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32)
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(LEFT_OUTER)
+ JOIN(7)(LEFT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
=> in schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
- SCAN(9) on eb_0000000000000_0000_000002
+ SCAN(10) on eb_0000000000000_0000_000002
=> out schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
=> in schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
- SCAN(8) on eb_0000000000000_0000_000001
+ SCAN(9) on eb_0000000000000_0000_000001
=> out schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)}
=> in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)}
diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Hash.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Hash.plan
index 9564d93..024ebe7 100644
--- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Hash.plan
+++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Hash.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(RIGHT_OUTER)
+ JOIN(7)(RIGHT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
@@ -36,9 +36,9 @@
[Enforcers]
0: type=Broadcast, tables=default.a
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(RIGHT_OUTER)
+ JOIN(7)(RIGHT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan
index 122c0b2..54c7444 100644
--- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Hash_NoBroadcast.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(RIGHT_OUTER)
+ JOIN(7)(RIGHT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
@@ -65,17 +65,17 @@
[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32)
[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32)
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(RIGHT_OUTER)
+ JOIN(7)(RIGHT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
=> in schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
- SCAN(9) on eb_0000000000000_0000_000002
+ SCAN(10) on eb_0000000000000_0000_000002
=> out schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
=> in schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
- SCAN(8) on eb_0000000000000_0000_000001
+ SCAN(9) on eb_0000000000000_0000_000001
=> out schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)}
=> in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)}
diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Sort.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Sort.plan
index 9564d93..024ebe7 100644
--- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Sort.plan
+++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Sort.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(RIGHT_OUTER)
+ JOIN(7)(RIGHT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
@@ -36,9 +36,9 @@
[Enforcers]
0: type=Broadcast, tables=default.a
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(RIGHT_OUTER)
+ JOIN(7)(RIGHT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
diff --git a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan
index 122c0b2..54c7444 100644
--- a/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan
+++ b/tajo-core/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithThetaJoinConditionInWhere.Sort_NoBroadcast.plan
@@ -1,8 +1,8 @@
explain
-------------------------------
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(RIGHT_OUTER)
+ JOIN(7)(RIGHT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
@@ -65,17 +65,17 @@
[q_0000000000000_0000] 1 => 3 (type=HASH_SHUFFLE, key=default.a.r_regionkey (INT4), num=32)
[q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.c_custkey (INT4), num=32)
-SELECTION(3)
+SELECTION(6)
=> Search Cond: default.a.r_name (TEXT) < default.b.c_name (TEXT)
- JOIN(6)(RIGHT_OUTER)
+ JOIN(7)(RIGHT_OUTER)
=> Join Cond: default.a.r_regionkey (INT4) = default.b.c_custkey (INT4)
=> target list: default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)
=> out schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
=> in schema: {(11) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4), default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
- SCAN(9) on eb_0000000000000_0000_000002
+ SCAN(10) on eb_0000000000000_0000_000002
=> out schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
=> in schema: {(8) default.b.c_acctbal (FLOAT8), default.b.c_address (TEXT), default.b.c_comment (TEXT), default.b.c_custkey (INT4), default.b.c_mktsegment (TEXT), default.b.c_name (TEXT), default.b.c_nationkey (INT4), default.b.c_phone (TEXT)}
- SCAN(8) on eb_0000000000000_0000_000001
+ SCAN(9) on eb_0000000000000_0000_000001
=> out schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)}
=> in schema: {(3) default.a.r_comment (TEXT), default.a.r_name (TEXT), default.a.r_regionkey (INT4)}
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java
index fc52d86..451ab5e 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java
@@ -33,6 +33,7 @@
import org.apache.tajo.plan.expr.AlgebraicUtil;
import org.apache.tajo.plan.expr.EvalNode;
import org.apache.tajo.plan.expr.EvalTreeUtil;
+import org.apache.tajo.plan.expr.EvalType;
import org.apache.tajo.plan.joinorder.*;
import org.apache.tajo.plan.logical.*;
import org.apache.tajo.plan.rewrite.BaseLogicalPlanRewriteEngine;
@@ -253,9 +254,15 @@
@Override
public LogicalNode visitFilter(JoinGraphContext context, LogicalPlan plan, LogicalPlan.QueryBlock block,
SelectionNode node, Stack<LogicalNode> stack) throws TajoException {
- // all join predicate candidates must be collected before building the join tree
- context.addCandidateJoinFilters(
- TUtil.newList(AlgebraicUtil.toConjunctiveNormalFormArray(node.getQual())));
+ // all join predicate candidates must be collected before building the join tree except non-equality conditions
+ // TODO: non-equality conditions should also be considered as join conditions after TAJO-1554
+ List<EvalNode> candidateJoinQuals = TUtil.newList();
+ for (EvalNode eachEval : AlgebraicUtil.toConjunctiveNormalFormArray(node.getQual())) {
+ if (EvalTreeUtil.isJoinQual(eachEval, false)) {
+ candidateJoinQuals.add(eachEval);
+ }
+ }
+ context.addCandidateJoinFilters(candidateJoinQuals);
super.visitFilter(context, plan, block, node, stack);
return node;
}
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java
index be0cce5..7ff695b 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java
@@ -347,7 +347,7 @@
}
private static boolean isJoinQualWithOnlyColumns(@Nullable LogicalPlan.QueryBlock block,
- Column left, Column right) {
+ Column left, Column right) {
String leftQualifier = CatalogUtil.extractQualifier(left.getQualifiedName());
String rightQualifier = CatalogUtil.extractQualifier(right.getQualifiedName());
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java
index ebc35a5..4fb8aac 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java
@@ -35,6 +35,7 @@
import org.apache.tajo.exception.TajoException;
import org.apache.tajo.exception.TajoInternalError;
import org.apache.tajo.plan.*;
+import org.apache.tajo.plan.LogicalPlan.QueryBlock;
import org.apache.tajo.plan.expr.*;
import org.apache.tajo.plan.logical.*;
import org.apache.tajo.plan.rewrite.LogicalPlanRewriteRuleContext;
@@ -46,11 +47,7 @@
import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor;
import org.apache.tajo.util.TUtil;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Stack;
+import java.util.*;
/**
* This rule tries to push down all filter conditions into logical nodes as lower as possible.
@@ -211,7 +208,7 @@
context.addFiltersTobePushed(notMatched);
notMatched.clear();
- context.addFiltersTobePushed(nonPushableQuals);
+ context.pushingDownFilters.addAll(nonPushableQuals);
List<EvalNode> matched = TUtil.newList();
// If the query involves a subquery, the stack can be empty.
@@ -245,9 +242,53 @@
}
context.pushingDownFilters.removeAll(matched);
+
+ // The selection node for non-equi theta join conditions should be created here
+ // to process those conditions as early as possible.
+ // This should be removed after TAJO-742.
+ if (context.pushingDownFilters.size() > 0) {
+ List<EvalNode> nonEquiThetaJoinQuals = extractNonEquiThetaJoinQuals(context.pushingDownFilters, block, joinNode);
+ if (nonEquiThetaJoinQuals.size() > 0) {
+ SelectionNode selectionNode = createSelectionParentForNonEquiThetaJoinQuals(plan, block, stack, joinNode,
+ nonEquiThetaJoinQuals);
+
+ context.pushingDownFilters.removeAll(nonEquiThetaJoinQuals);
+ return selectionNode;
+ }
+ }
+
return joinNode;
}
+ private SelectionNode createSelectionParentForNonEquiThetaJoinQuals(LogicalPlan plan,
+ QueryBlock block,
+ Stack<LogicalNode> stack,
+ JoinNode joinNode,
+ List<EvalNode> nonEquiThetaJoinQuals) {
+ SelectionNode selectionNode = plan.createNode(SelectionNode.class);
+ selectionNode.setInSchema(joinNode.getOutSchema());
+ selectionNode.setOutSchema(joinNode.getOutSchema());
+ selectionNode.setQual(AlgebraicUtil.createSingletonExprFromCNF(nonEquiThetaJoinQuals));
+ block.registerNode(selectionNode);
+
+ LogicalNode parent = stack.peek();
+ if (parent instanceof UnaryNode) {
+ ((UnaryNode) parent).setChild(selectionNode);
+ } else if (parent instanceof BinaryNode) {
+ BinaryNode binaryParent = (BinaryNode) parent;
+ if (binaryParent.getLeftChild().getPID() == joinNode.getPID()) {
+ binaryParent.setLeftChild(selectionNode);
+ } else if (binaryParent.getRightChild().getPID() == joinNode.getPID()) {
+ binaryParent.setRightChild(selectionNode);
+ }
+ } else if (parent instanceof TableSubQueryNode) {
+ ((TableSubQueryNode) parent).setSubQuery(selectionNode);
+ }
+
+ selectionNode.setChild(joinNode);
+ return selectionNode;
+ }
+
private static Set<EvalNode> extractNonPushableJoinQuals(final LogicalPlan plan,
final LogicalPlan.QueryBlock block,
final JoinNode joinNode,
@@ -557,7 +598,7 @@
context.setFiltersTobePushed(transformedMap.keySet());
stack.push(projectionNode);
- childNode = visit(context, plan, plan.getBlock(childNode), childNode, stack);
+ visit(context, plan, plan.getBlock(childNode), childNode, stack);
stack.pop();
// find not matched after visiting child