package com.tesora.dve.sql.transform.behaviors; /* * #%L * Tesora Inc. * Database Virtualization Engine * %% * Copyright (C) 2011 - 2014 Tesora Inc. * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * 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/>. * #L% */ import com.tesora.dve.sql.statement.dml.DMLStatement; import com.tesora.dve.sql.transform.strategy.PlannerContext; import com.tesora.dve.sql.transform.strategy.featureplan.FeaturePlanner; public interface BehaviorConfiguration extends FeaturePlannerBehavior { //NOTE: implementations of this class should be stateless/immutable, since the default behavior is installed as a single //instance into the singletons registry. /* * Find appropriate feature planners based on context & stmt. You can override this to add feature planners arbitrarily. */ public FeaturePlanner[] getFeaturePlanners(PlannerContext pc, DMLStatement dmls); /* * Find feature planners for select statements. */ public FeaturePlanner[] getSelectStatementPlanners(PlannerContext pc, DMLStatement dmls); /* * Find feature planners for update statements. */ public FeaturePlanner[] getUpdateStatementPlanners(PlannerContext pc, DMLStatement dmls); /* * Find feature planners for delete statements. */ public FeaturePlanner[] getDeleteStatementPlanners(PlannerContext pc, DMLStatement dmls); /* * Find feature planners for insert into select statements */ public FeaturePlanner[] getInsertIntoSelectPlanners(PlannerContext pc, DMLStatement dmls); /* * Find feature planners for union statements. */ public FeaturePlanner[] getUnionStatementPlanners(PlannerContext pc, DMLStatement dmls); /* * Find feature planners for replace into select statements. */ public FeaturePlanner[] getReplaceIntoSelectPlanners(PlannerContext pc, DMLStatement dmls); /* * Find feature planners for replace into values statements. */ public FeaturePlanner[] getReplaceIntoValuesPlanners(PlannerContext pc, DMLStatement dmls); /* * Find feature planners for truncate statements. */ public FeaturePlanner[] getTruncatePlanners(PlannerContext pc, DMLStatement dmls); /* * If you need to transform the plan after regular dml planning is complete, provide a plan transformer */ public FeaturePlanTransformerBehavior getPostPlanningTransformer(PlannerContext pc, DMLStatement original); }