package com.tesora.dve.tools.analyzer.stats; /* * #%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.node.expression.ColumnInstance; import com.tesora.dve.sql.node.expression.ExpressionNode; import com.tesora.dve.sql.node.expression.FunctionCall; import com.tesora.dve.sql.node.test.EngineConstant; import com.tesora.dve.sql.schema.Column; import com.tesora.dve.sql.schema.PEColumn; import com.tesora.dve.sql.schema.SchemaContext; import com.tesora.dve.sql.statement.dml.UpdateStatement; public class UpdateStatementAnalysis extends StatementAnalysis<UpdateStatement> { public UpdateStatementAnalysis(SchemaContext sc, String sql, int freq, UpdateStatement stmt) { super(sc, sql, freq, stmt); } @Override public void visit(StatsVisitor sv) { super.visit(sv); final UpdateStatement us = getStatement(); for (final ExpressionNode en : us.getUpdateExpressionsEdge()) { if (EngineConstant.FUNCTION.has(en, EngineConstant.EQUALS)) { final FunctionCall fc = (FunctionCall) en; final ExpressionNode lhs = fc.getParametersEdge().get(0); if (lhs instanceof ColumnInstance) { final ColumnInstance ci = (ColumnInstance) lhs; final Column<?> column = ci.getColumn(); if (column instanceof PEColumn) { sv.onUpdate((PEColumn) column, frequency); } } } } } }