/**
 * 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);
        }
    }
}

@@ -1013,16 +1013,70 @@
 = false;
+%0A    private boolean selectBloomFilterEnabled = false;
 %0A%0A    pu
@@ -1546,32 +1546,130 @@
 penBoth;%0A    %7D%0A%0A
+    public boolean isSelectBloomFilterEnabled() %7B%0A        return selectBloomFilterEnabled;%0A    %7D%0A%0A
     public void 
@@ -2229,32 +2229,32 @@
 %22.equals(prop))%0A
-
                 
@@ -2291,32 +2291,165 @@
 seBoolean(val);%0A
+            else if (%22selectBloomFilter.enabled%22.equals(prop))%0A                selectBloomFilterEnabled = Boolean.parseBoolean(val);%0A
             else

Add the new option.