You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tajo.apache.org by "Min Zhou (JIRA)" <ji...@apache.org> on 2013/12/29 07:42:50 UTC
[jira] [Created] (TAJO-463) ProjectionPushDownRule incorrectly
rewrite the output schema of StoreTableNode
Min Zhou created TAJO-463:
-----------------------------
Summary: ProjectionPushDownRule incorrectly rewrite the output schema of StoreTableNode
Key: TAJO-463
URL: https://issues.apache.org/jira/browse/TAJO-463
Project: Tajo
Issue Type: Bug
Components: planner/optimizer
Reporter: Min Zhou
When I was implementing CTAS on partitioned table, I ran into a schema problem if my target column names are different from select clause's output schema.
{noformat}
create table tbl (col1 int4, col2 int4, null_col int4) partition by column(key float8) as select l_orderkey as col1, l_partkey as col2, l_quantity as key from lineitem
{noformat}
After debugging, I found ProjectionPushDownRule would replace StoreTableNode's output schema with its child output schema.
{noformat}
@Override
public LogicalNode visitStoreTable(PushDownContext context, LogicalPlan plan, StoreTableNode node,
Stack<LogicalNode> stack) throws PlanningException {
return pushDownCommonPost(context, node, stack);
}
private LogicalNode pushDownCommonPost(PushDownContext context, UnaryNode node, Stack<LogicalNode> stack)
throws PlanningException {
stack.push(node);
LogicalNode child = visitChild(context, context.plan, node.getChild(), stack);
stack.pop();
node.setInSchema(child.getOutSchema());
node.setOutSchema(child.getOutSchema()); // THIS LINE WILL REWRITE THE SCHEMA!
if (node instanceof Projectable) {
pushDownProjectablePost(context, node, isTopmostProjectable(stack));
}
return node;
}
{noformat}
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)