Package org.eclipse.test.internal.performance.db

Source Code of org.eclipse.test.internal.performance.db.DBHelpers

/*******************************************************************************
* Copyright (c) 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.test.internal.performance.db;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import org.eclipse.test.internal.performance.PerformanceTestPlugin;
import org.eclipse.test.internal.performance.data.Dim;


public class DBHelpers {
       
    private Connection fConnection;
   
   
    public static void main(String[] args) throws SQLException {
       
        //System.setProperty("eclipse.perf.dbloc", "net://localhost");
                       
        DBHelpers db= new DBHelpers();
       
    String outFile= null;
    //outFile= "out.txt";  //$NON-NLS-1$
    PrintStream ps= null;
    if (outFile != null) {
        try {
                ps= new PrintStream(new BufferedOutputStream(new FileOutputStream(outFile)));
            } catch (FileNotFoundException e) {
                System.err.println("can't create output file"); //$NON-NLS-1$
            }
    }
    if (ps == null)
        ps= System.out;

    long start= System.currentTimeMillis();
   
   
    db.dumpSizes(ps);
    //db.renameVariation("|build=3.0.0_200410130800||config=relengbuildwin2|", "|build=3.0.0_200406251208_200410130800||config=relengbuildwin2|");
    //db.dumpTable(ps, "VARIATION", 1000); //$NON-NLS-1$
    //db.countSamplesWithNullVariations();
       
    //Variations v= new Variations();
    //v.put(PerformanceTestPlugin.CONFIG, "relengbuildwin2"); //$NON-NLS-1$
    //v.put(PerformanceTestPlugin.BUILD, "I20041104%"); //$NON-NLS-1$
   
    //db.dumpSummaries(v, null);
          //db.removeSamples(v);
    //db.countSamples(ps, v);
          //db.view(ps, v, "org.eclipse.jdt.core.tests.performance.FullSourceWorkspaceTests#testPerfFullBuild()");
       
   
        System.out.println("time: " + ((System.currentTimeMillis()-start)/1000.0)); //$NON-NLS-1$
       
        if (ps != System.out)
            ps.close();
    }

    public DBHelpers() {
        fConnection= DB.getConnection();
    }
   
    void renameVariation(String oldName, String newName) throws SQLException {
        PreparedStatement update= fConnection.prepareStatement("update VARIATION set KEYVALPAIRS = ? where KEYVALPAIRS = ? "); //$NON-NLS-1$
        update.setString(1, newName);
        update.setString(2, oldName);
        update.executeUpdate();
        update.close();
    }
   
    void dumpSummaries(Variations variations, String scenarioPattern) {
        SummaryEntry[] summries= DB.querySummaries(variations, scenarioPattern);
        for (int i= 0; i < summries.length; i++)
            System.out.println(summries[i]);
    }
   
    void count(PrintStream ps) throws SQLException {
        PreparedStatement stmt= fConnection.prepareStatement("select count(*) from SCALAR where DATAPOINT_ID not in (select DATAPOINT.ID from DATAPOINT)"); //$NON-NLS-1$
        ResultSet set= stmt.executeQuery();
        if (set.next())
            ps.println("count: " + set.getInt(1)); //$NON-NLS-1$
        set.close();
        stmt.close();
    }

    void countDimension(PrintStream ps, Dim dim) throws SQLException {
        PreparedStatement stmt= fConnection.prepareStatement("select count(*) from SCALAR where DIM_ID = ?"); //$NON-NLS-1$
        stmt.setInt(1, dim.getId());
        ResultSet set= stmt.executeQuery();
        if (set.next())
            ps.println("dimension " + dim + ": " + set.getInt(1)); //$NON-NLS-1$ //$NON-NLS-2$
    }
   
    void countAllDimensions(PrintStream ps) throws SQLException {
        PreparedStatement stmt= fConnection.prepareStatement("select distinct DIM_ID from SCALAR"); //$NON-NLS-1$
        ResultSet set= stmt.executeQuery();
        while (set.next()) {
            Dim dimension= Dim.getDimension(set.getInt(1));
            if (dimension != null)
                countDimension(ps, dimension);
        }
    }

    int countSamples(PrintStream ps, Variations v) throws SQLException {
        PreparedStatement stmt= fConnection.prepareStatement("select count(*) from SAMPLE, VARIATION where VARIATION.KEYVALPAIRS = ? and SAMPLE.VARIATION_ID = VARIATION.ID"); //$NON-NLS-1$
        stmt.setString(1, v.toExactMatchString());
        ResultSet set= stmt.executeQuery();
        int n= 0;
        if (set.next())
            n= set.getInt(1);
        ps.println("samples with variation " + v + ": " + n); //$NON-NLS-1$ //$NON-NLS-2$
        return n;
    }
   
    void countDatapoints(PrintStream ps, Variations v) throws SQLException {
        PreparedStatement stmt= fConnection.prepareStatement("select count(*) from DATAPOINT, SAMPLE, VARIATION where VARIATION.KEYVALPAIRS = ? and SAMPLE.VARIATION_ID = VARIATION.ID and DATAPOINT.SAMPLE_ID= SAMPLE.ID"); //$NON-NLS-1$
        stmt.setString(1, v.toExactMatchString());
        ResultSet set= stmt.executeQuery();
        if (set.next())
            ps.println("datapoints with variation " + v + ": " + set.getInt(1)); //$NON-NLS-1$ //$NON-NLS-2$
    }
   
    void countScalars(PrintStream ps, Variations v) throws SQLException {
        PreparedStatement stmt= fConnection.prepareStatement("select count(*) from SCALAR, DATAPOINT, SAMPLE, VARIATION where VARIATION.KEYVALPAIRS = ? and SAMPLE.VARIATION_ID = VARIATION.ID and DATAPOINT.SAMPLE_ID= SAMPLE.ID and DATAPOINT.ID = SCALAR.DATAPOINT_ID"); //$NON-NLS-1$
        stmt.setString(1, v.toExactMatchString());
        ResultSet set= stmt.executeQuery();
        if (set.next())
            ps.println("scalars with variation " + v + ": " + set.getInt(1)); //$NON-NLS-1$ //$NON-NLS-2$
    }
   
    void removeSamples(Variations v) throws SQLException {
       
        boolean delete= true;
       
        int n= countSamples(System.out, v);
               
        int variation_id= 0;
        PreparedStatement stmt= fConnection.prepareStatement("select ID from VARIATION where KEYVALPAIRS = ?"); //$NON-NLS-1$
        stmt.setString(1, v.toExactMatchString());
        ResultSet set= stmt.executeQuery();
        if (set.next()) {
            variation_id= set.getInt(1);
            System.err.println("variation_id: " + variation_id); //$NON-NLS-1$
        }
       
        if (variation_id <= 0) {
            System.err.println("nothing found for variation " + v); //$NON-NLS-1$
            return;
        }

        PreparedStatement iterSamples= fConnection.prepareStatement("select SAMPLE.ID, SAMPLE.SCENARIO_ID from SAMPLE where SAMPLE.VARIATION_ID = ?"); //$NON-NLS-1$
        PreparedStatement iterDatapoints= fConnection.prepareStatement("select DATAPOINT.ID from DATAPOINT where DATAPOINT.SAMPLE_ID = ?"); //$NON-NLS-1$
       
        PreparedStatement deleteScalars= fConnection.prepareStatement("delete from SCALAR where DATAPOINT_ID = ?"); //$NON-NLS-1$
        PreparedStatement deleteDatapoints= fConnection.prepareStatement("delete from DATAPOINT where SAMPLE_ID = ?"); //$NON-NLS-1$
        PreparedStatement deleteSamples= fConnection.prepareStatement("delete from SAMPLE where SAMPLE.ID = ?"); //$NON-NLS-1$
        PreparedStatement deleteScenario= fConnection.prepareStatement("delete from SCENARIO where SCENARIO.ID = ?"); //$NON-NLS-1$
       
        ResultSet samples= null, datapoints= null, configs= null;
        iterSamples.setInt(1, variation_id);
        samples= iterSamples.executeQuery();
        while (samples.next()) {
            int sample_id= samples.getInt(1);
            int scenario_id= samples.getInt(2);
            System.out.print(n + ": sample(" + sample_id + "):"); //$NON-NLS-1$ //$NON-NLS-2$
            iterDatapoints.setInt(1, sample_id);
          datapoints= iterDatapoints.executeQuery();
          int dps= 0;
          while (datapoints.next()) {
              int dp_id= datapoints.getInt(1);
              //ps.println("  dp: " + dp_id); //$NON-NLS-1$
              if (delete) {
                  deleteScalars.setInt(1, dp_id);
                  try {
                        deleteScalars.executeUpdate();
                    fConnection.commit();
                    dps++;
                    } catch (SQLException e) {
                        System.err.println("removing scalars: " + e); //$NON-NLS-1$
                    }
              }
          }
            System.out.println(" dps: " + dps); //$NON-NLS-1$       
          if (delete) {
              deleteDatapoints.setInt(1, sample_id);
              try {
                    deleteDatapoints.executeUpdate();
                    fConnection.commit();
                } catch (SQLException e1) {
                    System.err.println("removing datapoints: " + e1); //$NON-NLS-1$
                }
             
              deleteSamples.setInt(1, sample_id);
              try {
                    deleteSamples.executeUpdate();
                    fConnection.commit();
                } catch (SQLException e) {
                    System.err.println("removing sample: " + e); //$NON-NLS-1$
                }
               
                deleteScenario.setInt(1, scenario_id);
              try {
                  deleteScenario.executeUpdate();
                    fConnection.commit();
                } catch (SQLException e) {
                    // System.err.println("removing scenario: " + e); //$NON-NLS-1$
                }
          }
          n--;
        }
        if (delete) {
            PreparedStatement deleteSummaries= fConnection.prepareStatement("delete from SUMMARYENTRY where VARIATION_ID = ?"); //$NON-NLS-1$
            deleteSummaries.setInt(1, variation_id);
            deleteSummaries.executeUpdate();
            deleteSummaries.close();
           
            PreparedStatement deleteVariation= fConnection.prepareStatement("delete from VARIATION where ID = ?"); //$NON-NLS-1$
            deleteVariation.setInt(1, variation_id);
            try {
                deleteVariation.executeUpdate();
            } catch (SQLException e) {
                System.err.println("removing variation: " + e); //$NON-NLS-1$
            }
            deleteVariation.close();
        }

        if (configs != null) configs.close();
        if (samples != null) samples.close();
        if (datapoints != null) datapoints.close();
       
        if (iterSamples != null) iterSamples.close();
        if (iterDatapoints != null) iterDatapoints.close();
       
        if (deleteSamples != null) deleteSamples.close();
        if (deleteScenario != null) deleteScenario.close();
        if (deleteScalars != null) deleteScalars.close();
        if (deleteDatapoints != null) deleteDatapoints.close();
    }

    void countSamplesWithNullVariations() throws SQLException {
        Statement stmt= fConnection.createStatement();
        ResultSet rs= stmt.executeQuery("select count(*) from SAMPLE where SAMPLE.VARIATION_ID is null"); //$NON-NLS-1$
        while (rs.next()) {
            int config_id= rs.getInt(1);
            System.out.println("samples with NULL variation: " + config_id); //$NON-NLS-1$
        }
        rs.close();
        stmt.close();
    }
  
    void removeDimension(Dim dim) throws SQLException {
        PreparedStatement q= fConnection.prepareStatement("delete from SCALAR where SCALAR.DIM_ID = ?"); //$NON-NLS-1$
        q.setInt(1, dim.getId());
        q.executeUpdate();
        q.close();
    }
   
    void dumpScenarios(PrintStream ps, String pattern) throws SQLException {
        PreparedStatement stmt= fConnection.prepareStatement("select NAME from SCENARIO where NAME like ? order by NAME"); //$NON-NLS-1$
        stmt.setString(1, pattern);
        ResultSet rs= stmt.executeQuery();
        while (rs.next())
            ps.println(rs.getString(1));
        rs.close();
        stmt.close();
    }
   
    void dumpSizes(PrintStream ps) throws SQLException {
        if (fConnection == null)
            return;   
        Statement stmt= fConnection.createStatement();
        try {
          ResultSet rs= stmt.executeQuery("SELECT sys.systables.tablename FROM sys.systables WHERE sys.systables.tablename NOT LIKE 'SYS%' "); //$NON-NLS-1$
          while (rs.next())
              dumpSize(ps, rs.getString(1));
          rs.close();  
        } finally {
            stmt.close();
        }
    }

    void dumpSize(PrintStream ps, String table) throws SQLException {
        Statement stmt= fConnection.createStatement();
        ResultSet rs= stmt.executeQuery("select Count(*) from " + table); //$NON-NLS-1$
        if (rs.next())
            ps.println(table + ": " + rs.getInt(1)); //$NON-NLS-1$
        rs.close();  
        stmt.close();
    }
   
    public void dumpAll(PrintStream ps, int maxRow) throws SQLException {
        if (fConnection == null)
            return;
        if (maxRow < 0)
            maxRow= 1000000;
    Statement stmt= fConnection.createStatement();
        try {
          ResultSet rs= stmt.executeQuery("select SYS.SYSTABLES.TABLENAME from SYS.SYSTABLES where SYS.SYSTABLES.TABLENAME not like 'SYS%' "); //$NON-NLS-1$
          while (rs.next()) {
              dumpTable(ps, rs.getString(1), maxRow);
              ps.println();
          }
          rs.close();
        } finally {
            stmt.close();
        }
    }
   
    void dumpTable(PrintStream ps, String tableName, int maxRow) throws SQLException {
        ps.print(tableName + '(');
    Statement select= fConnection.createStatement();
        ResultSet result= select.executeQuery("select * from " + tableName); //$NON-NLS-1$
        ResultSetMetaData metaData= result.getMetaData();
        int n= metaData.getColumnCount();
        for (int i= 0; i < n; i++) {
            ps.print(metaData.getColumnLabel(i+1));
            if (i < n-1)
                ps.print(", "); //$NON-NLS-1$
        }
        ps.println("):"); //$NON-NLS-1$
        for (int r= 0; result.next() && r < maxRow; r++) {
            for (int i= 0; i < n; i++)
                ps.print(' ' + result.getString(i+1));
            ps.println();
        }
        select.close();
    }

    void view(PrintStream ps, Variations v, String scenarioPattern) throws SQLException {
        Scenario[] scenarios= DB.queryScenarios(v, scenarioPattern, PerformanceTestPlugin.BUILD, null);
        ps.println(scenarios.length + " Scenarios"); //$NON-NLS-1$
        ps.println();
        for (int s= 0; s < scenarios.length; s++)
            scenarios[s].dump(ps, PerformanceTestPlugin.BUILD);
    }
}
TOP

Related Classes of org.eclipse.test.internal.performance.db.DBHelpers

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.