
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class ExecutePostgresVacuumDeadlock {

	private static final String USER_NAME = ""; // TODO
	private static final String PASSWORD = ""; // TODO
	private static final String DEFAULT_DATABASE = "jdbc:postgresql://localhost:5432/test";

	public static void main(String[] args) throws SQLException {

		for (int i = 0; i < 32; i++) {
			try (Connection con = DriverManager.getConnection(DEFAULT_DATABASE, USER_NAME, PASSWORD)) {
				try (Statement s = con.createStatement()) {
					s.execute("DROP DATABASE IF EXISTS test" + i);
					s.execute("CREATE DATABASE test" + i);
				}
			}
		}

		for (int i = 0; i < 32; i++) {
			final int index = i;
			Runnable r = new Runnable() {

				@Override
				public void run() {
					try {

						try (Connection con = DriverManager
								.getConnection("jdbc:postgresql://localhost:5432/test" + index, USER_NAME, PASSWORD)) {
							System.out.println("database: " + con.getCatalog());
							while (true) {
								try (Statement s = con.createStatement()) {
									s.execute("VACUUM FULL");
								}
							}
						}
					} catch (Exception e) {
						e.printStackTrace();
					}
				}

			};
			new Thread(r).start();

		}
	}
}
