/**
 * Copyright (C) 2009-2013 Akiban Technologies, 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 this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.akiban.sql.optimizer.rule;

import java.util.Properties;

public class PipelineConfiguration
{
    private boolean mapEnabled = false;
    private int indexScanLookaheadQuantum = 1;
    private int groupLookupLookaheadQuantum = 1;
    private boolean unionAllOpenBoth = false;

    public PipelineConfiguration() {
    }

    public PipelineConfiguration(Properties properties) {
        load(properties);
    }

    public boolean isMapEnabled() {
        return mapEnabled;
    }

    public int getIndexScanLookaheadQuantum() {
        return indexScanLookaheadQuantum;
    }

    public int getGroupLookupLookaheadQuantum() {
        return groupLookupLookaheadQuantum;
    }

    public boolean isUnionAllOpenBoth() {
        return unionAllOpenBoth;
    }

    public void load(Properties properties) {
        for (String prop : properties.stringPropertyNames()) {
            String val = properties.getProperty(prop);
            if ("map.enabled".equals(prop))
                mapEnabled = Boolean.parseBoolean(val);
            else if ("indexScan.lookaheadQuantum".equals(prop))
                indexScanLookaheadQuantum = Integer.parseInt(val);
            else if ("groupLookup.lookaheadQuantum".equals(prop))
                groupLookupLookaheadQuantum = Integer.parseInt(val);
            else if ("unionAll.openBoth".equals(prop))
                unionAllOpenBoth = Boolean.parseBoolean(val);
            else
                throw new IllegalArgumentException("Unknown property " + prop);
        }
    }
}

/**
 * Copyright (C) 2009-2013 Akiban Technologies, 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 this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.akiban.sql.optimizer.rule;

import java.util.Properties;

public class PipelineConfiguration
{
    private boolean mapEnabled = false;
    private int indexScanLookaheadQuantum = 1;
    private int groupLookupLookaheadQuantum = 1;
    private boolean unionAllOpenBoth = false;
    private boolean selectBloomFilterEnabled = false;

    public PipelineConfiguration() {
    }

    public PipelineConfiguration(Properties properties) {
        load(properties);
    }

    public boolean isMapEnabled() {
        return mapEnabled;
    }

    public int getIndexScanLookaheadQuantum() {
        return indexScanLookaheadQuantum;
    }

    public int getGroupLookupLookaheadQuantum() {
        return groupLookupLookaheadQuantum;
    }

    public boolean isUnionAllOpenBoth() {
        return unionAllOpenBoth;
    }

    public boolean isSelectBloomFilterEnabled() {
        return selectBloomFilterEnabled;
    }

    public void load(Properties properties) {
        for (String prop : properties.stringPropertyNames()) {
            String val = properties.getProperty(prop);
            if ("map.enabled".equals(prop))
                mapEnabled = Boolean.parseBoolean(val);
            else if ("indexScan.lookaheadQuantum".equals(prop))
                indexScanLookaheadQuantum = Integer.parseInt(val);
            else if ("groupLookup.lookaheadQuantum".equals(prop))
                groupLookupLookaheadQuantum = Integer.parseInt(val);
            else if ("unionAll.openBoth".equals(prop))
                unionAllOpenBoth = Boolean.parseBoolean(val);
            else if ("selectBloomFilter.enabled".equals(prop))
                selectBloomFilterEnabled = Boolean.parseBoolean(val);
            else
                throw new IllegalArgumentException("Unknown property " + prop);
        }
    }
}

Add the new option.