All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.voltdb.planner.parseinfo.TableLeafNode Maven / Gradle / Ivy

There is a newer version: 10.1.1
Show newest version
/* This file is part of VoltDB.
 * Copyright (C) 2008-2018 VoltDB Inc.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with VoltDB.  If not, see .
 */

package org.voltdb.planner.parseinfo;

import java.util.List;

import org.voltdb.expressions.AbstractExpression;
import org.voltdb.planner.StmtEphemeralTableScan;

/**
 * An object of class TableLeafNode is a leaf in a join expression tree.  It
 * represents a table reference.
 */
public class TableLeafNode extends JoinNode {
    private StmtTargetTableScan m_tableScan;
    /**
     * Construct a table leaf node
     * @param id - node unique id
     * @param table - join table index
     * @param joinExpr - join expression
     * @param whereExpr - filter expression
     * @param tableScan - table scan of this join node
     */
    public TableLeafNode(int id, AbstractExpression joinExpr, AbstractExpression whereExpr,
            StmtTargetTableScan tableScan) {
        super(id);
        m_joinExpr = joinExpr;
        m_whereExpr = whereExpr;
        m_tableScan = tableScan;
    }

    /**
     * Deep clone
     */
    @Override
    public Object clone() {
        AbstractExpression joinExpr = (m_joinExpr != null) ?
                (AbstractExpression) m_joinExpr.clone() : null;
        AbstractExpression whereExpr = (m_whereExpr != null) ?
                (AbstractExpression) m_whereExpr.clone() : null;
        JoinNode newNode = new TableLeafNode(m_id, joinExpr, whereExpr, m_tableScan);
        return newNode;
    }

    @Override
    public JoinNode cloneWithoutFilters() {
        JoinNode newNode = new TableLeafNode(m_id, null, null, m_tableScan);
        return newNode;
    }

    @Override
    public StmtTableScan getTableScan() { return m_tableScan; }

    @Override public String getTableAlias() { return m_tableScan.getTableAlias(); }

    @Override
    public boolean hasSubqueryScans() {
        // No subquery scans here.
        return false;
    }

    @Override
    public void extractEphemeralTableQueries(List scans) { }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy