import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

public class fetch {
    private static final String DRIVER_NAME = "org.mariadb.jdbc.Driver";
    //private static final String DRIVER_NAME = "com.mysql.jdbc.Driver";

    private static String SELECT24 =
        "SELECT dnsattempt AS id_100001_3098ec7e889d461ea8c8290e13454ef2,imsibcd " +
        "FROM EOF_big_t1 " +
        "ORDER BY imsibcd ASC ";
    private static String SELECT25 =
        "SELECT dnsattempt AS id_100001_3098ec7e889d461ea8c8290e13454ef2,imsibcd " +
        "FROM EOF_big_t2 " +
        "ORDER BY imsibcd ASC ";

    private static String SELECT34 =
        "SELECT dnsattempt AS id_100001_3098ec7e889d461ea8c8290e13454ef2,imsibcd " +
        "FROM EOF_big_t1 " +
        "ORDER BY imsibcd ASC ";

    private static String SELECT35 =
        "SELECT dnsattempt AS id_100001_3098ec7e889d461ea8c8290e13454ef2,imsibcd " +
        "FROM EOF_big_t2 " +
        "ORDER BY imsibcd ASC ";


    private static String url = "jdbc:mysql://10.32.10.29/";
    private static String user = "oss";
    private static String password = "oss";
    private static Logger lgr = Logger.getLogger(fetch.class.getName());

    private Connection con;
    private ResultSet rs;
    private Statement st = null;
    private int colCnt;
    private int rowCnt;

    public fetch(String p_db, String sel)  throws SQLException {
        System.out.println("db: " + p_db);
        try {
            con = DriverManager.getConnection(url + p_db, user, password);
            st = con.createStatement();
            st.setFetchSize(Integer.MIN_VALUE);

            rs = st.executeQuery(sel);
            colCnt = rs.getMetaData().getColumnCount();
            rowCnt = 0;
        } catch (SQLException ex) {
            lgr.log(Level.SEVERE, ex.getMessage(), ex);
        }
    }

    public static void main(String[] args) {
        fetch fetchObj[] = new fetch[6];

        try {
            Class.forName(DRIVER_NAME).newInstance();
        } catch (Exception ex) {
            // handle any errors
            lgr.log(Level.SEVERE, "bad", ex);
        }

        try {
            fetchObj[0] = new fetch("EOF_MYISAM_1", SELECT24);
            fetchObj[1] = new fetch("EOF_MYISAM_1", SELECT25);
            fetchObj[2] = new fetch("EOF_MYISAM_2", SELECT34);
            fetchObj[3] = new fetch("EOF_MYISAM_2", SELECT35);

            for (int loop = 0; true; loop++) {
                if (!fetchObj[loop%4].fetchRow()) {
                    System.out.println("Done loop: " + loop);
                    return;
                }
            }

        } catch (Exception ex) {
            lgr.log(Level.SEVERE, "bad2", ex);
        }
    }

    boolean fetchRow() throws SQLException {
        Object[] res = new Object[colCnt];
        if (!rs.next()) {
            return false;
        }
        for (int ii = 1; ii <= colCnt; ii++) {
            res[ii-1] = rs.getObject(ii);
        }

        return true;
    }
}
