pgpool2.git / summary / log / commit / refs
commit d14f4f90ed2eeff883e815e0968d89587431a4c2
Author: Tatsuo Ishii <ishii@postgresql.org>
Date: Sat Jan 18 11:57:31 2014 +0000
Integrate jdbc test to regression test.
"005.jdbc" added. In order to execute the new regression part,
pgpool_setup now supports "raw" mode.
.../regression/tests/005.jdbc/AutoCommitTest.java | 45 ++++++++++
src/test/regression/tests/005.jdbc/BatchTest.java | 55 ++++++++++++
src/test/regression/tests/005.jdbc/ColumnTest.java | 60 +++++++++++++
.../tests/005.jdbc/CreateTempTableTest.java | 48 ++++++++++
src/test/regression/tests/005.jdbc/InsertTest.java | 34 +++++++
src/test/regression/tests/005.jdbc/LockTest.java | 36 ++++++++
src/test/regression/tests/005.jdbc/PgpoolTest.java | 75 ++++++++++++++++
src/test/regression/tests/005.jdbc/README.euc_jp | 73 +++++++++++++++
src/test/regression/tests/005.jdbc/RunTest.java | 83 +++++++++++++++++
src/test/regression/tests/005.jdbc/SelectTest.java | 37 ++++++++
src/test/regression/tests/005.jdbc/UpdateTest.java | 32 +++++++
src/test/regression/tests/005.jdbc/expected.txt | 7 ++
.../tests/005.jdbc/expected/CreateTempTable | 1 +
.../regression/tests/005.jdbc/expected/autocommit | 10 +++
src/test/regression/tests/005.jdbc/expected/batch | 1 +
src/test/regression/tests/005.jdbc/expected/column | 100 +++++++++++++++++++++
src/test/regression/tests/005.jdbc/expected/insert | 1 +
src/test/regression/tests/005.jdbc/expected/lock | 100 +++++++++++++++++++++
src/test/regression/tests/005.jdbc/expected/select | 2 +
src/test/regression/tests/005.jdbc/expected/update | 1 +
src/test/regression/tests/005.jdbc/prepare.sql | 54 +++++++++++
src/test/regression/tests/005.jdbc/run.sh | 6 ++
src/test/regression/tests/005.jdbc/test.sh | 54 +++++++++++
23 files changed, 915 insertions(+)
diff --git a/src/test/regression/tests/005.jdbc/AutoCommitTest.java b/src/test/regression/tests/005.jdbc/AutoCommitTest.java
new file mode 100644
index 000000000..5b8194f4c
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/AutoCommitTest.java
@@ -0,0 +1,45 @@
+import java.util.*;
+import java.io.*;
+import java.sql.*;
+
+public class AutoCommitTest extends PgpoolTest{
+ public String sql = "select * from autocommit where a = ?";
+
+ public static void main(String[] args) throws SQLException {
+ AutoCommitTest test = new AutoCommitTest();
+ test.do_test();
+ }
+
+ public void do_test() throws SQLException
+ {
+ connection.setAutoCommit(true);
+
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+
+ try {
+ for(int i = 0; i < 10; i++) {
+ stmt = connection.prepareStatement(sql);
+ try {
+ stmt.setInt(1, i + 1);
+ rs = stmt.executeQuery();
+
+ while(rs.next()){
+ logwriter.print(rs.getInt(1) + " ");
+ }
+ logwriter.println();
+ } finally {
+ if(rs != null) rs.close();
+ if(stmt != null) stmt.close();
+ }
+ }
+ } finally {
+ connection.close();
+ logwriter.close();
+ }
+ }
+
+ public String getTestName() {
+ return "autocommit";
+ }
+}
diff --git a/src/test/regression/tests/005.jdbc/BatchTest.java b/src/test/regression/tests/005.jdbc/BatchTest.java
new file mode 100644
index 000000000..664f43950
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/BatchTest.java
@@ -0,0 +1,55 @@
+import java.util.*;
+import java.io.*;
+import java.sql.*;
+
+public class BatchTest extends PgpoolTest {
+ public String [] batchSqls = new String[] {
+ "INSERT INTO batch VALUES (1)",
+ "INSERT INTO batch VALUES (1)",
+ "INSERT INTO batch VALUES (1)",
+ "INSERT INTO batch VALUES (1)",
+ "INSERT INTO batch VALUES (1)",
+ "INSERT INTO batch VALUES (1)",
+ "INSERT INTO batch VALUES (1)",
+ "INSERT INTO batch VALUES (1)",
+ "INSERT INTO batch VALUES (1)",
+ "INSERT INTO batch VALUES (1)",
+ "INSERT INTO batch VALUES (1)",
+ };
+
+ public void do_test() throws SQLException {
+ connection.setAutoCommit(false);
+
+ Statement stmt = null;
+ ResultSet rs = null;
+
+ try {
+ try {
+ stmt = connection.createStatement();
+ for(int i=0; i<batchSqls.length; i++) {
+ stmt.addBatch(batchSqls[i]);
+ }
+ int [] r = stmt.executeBatch();
+
+ connection.commit();
+ stmt.close();
+
+ stmt = connection.createStatement();
+ rs = stmt.executeQuery("SELECT count(*) FROM batch");
+ rs.next();
+ logwriter.println(rs.getInt(1));
+ connection.commit();
+ } finally {
+ if(rs != null) rs.close();
+ if(stmt != null) stmt.close();
+ }
+ } finally {
+ connection.close();
+ logwriter.close();
+ }
+ }
+
+ public String getTestName() {
+ return "batch";
+ }
+}
diff --git a/src/test/regression/tests/005.jdbc/ColumnTest.java b/src/test/regression/tests/005.jdbc/ColumnTest.java
new file mode 100644
index 000000000..b4402337a
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/ColumnTest.java
@@ -0,0 +1,60 @@
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+public class ColumnTest extends PgpoolTest {
+ public static String sql =
+ "SELECT"
+ +" columntest.v1 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz001,"
+ +" columntest.v2 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz002,"
+ +" columntest.v3 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz003,"
+ +" columntest.v4 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz004,"
+ +" columntest.v5 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz005,"
+ +" columntest.v6 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz006,"
+ +" columntest.v7 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz007,"
+ +" columntest.v8 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz008,"
+ +" columntest.v9 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz009,"
+ +" columntest.v10 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz010,"
+ +" columntest.v11 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz011,"
+ +" columntest.v12 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz012,"
+ +" columntest.v13 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz013,"
+ +" columntest.v14 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz014,"
+ +" columntest.v15 as abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz015"
+ +" FROM columntest";
+ static String url = "jdbc:postgresql://localhost:9999/test";
+ static String user = "y-asaba";
+ static String password = "postgres";
+ static final int COUNT = 100;
+
+ public void do_test() throws SQLException {
+ connection.setAutoCommit(false);
+
+ Statement stmt = null;
+ ResultSet rs = null;
+
+ try {
+ for (int i = 0; i < COUNT; i++) {
+ try {
+ stmt = connection.createStatement();
+ rs = stmt.executeQuery(sql);
+
+ while(rs.next()){
+ logwriter.println(rs.getInt(1));
+ }
+ } finally {
+ if(rs != null) rs.close();
+ if(stmt != null) stmt.close();
+ }
+ }
+ } finally {
+ connection.close();
+ logwriter.close();
+ }
+ }
+
+ public String getTestName() {
+ return "column";
+ }
+}
diff --git a/src/test/regression/tests/005.jdbc/CreateTempTableTest.java b/src/test/regression/tests/005.jdbc/CreateTempTableTest.java
new file mode 100644
index 000000000..0045a2ae7
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/CreateTempTableTest.java
@@ -0,0 +1,48 @@
+/*
+ * Test for master/slave mode + temporary tables
+ */
+import java.sql.*;
+
+public class CreateTempTableTest extends PgpoolTest {
+ public void do_test() throws SQLException {
+
+ try {
+ ResultSet rs;
+ PreparedStatement pstmt = null;
+ Statement stmt = null;
+
+ connection.setAutoCommit(false);
+
+ pstmt = connection.prepareStatement("CREATE TEMP TABLE t1(i INTEGER)");
+ pstmt.executeUpdate();
+ pstmt.close();
+
+ pstmt = connection.prepareStatement("/*NO LOAD BALANCE*/ INSERT INTO t1 SELECT ?");
+ pstmt.setInt(1, 100);
+ pstmt.executeUpdate();
+ pstmt.close();
+
+ pstmt = connection.prepareStatement("/*NO LOAD BALANCE*/ UPDATE t1 SET i = ?");
+ pstmt.setInt(1, 200);
+ pstmt.executeUpdate();
+ pstmt.close();
+
+ pstmt = connection.prepareStatement("/*NO LOAD BALANCE*/ SELECT sum(i) FROM t1");
+ rs = pstmt.executeQuery();
+ rs.next();
+ logwriter.println(rs.getInt(1));
+ rs.close();
+ pstmt.close();
+
+ connection.commit();
+ }
+ finally {
+ connection.close();
+ logwriter.close();
+ }
+ }
+
+ public String getTestName() {
+ return "CreateTempTable";
+ }
+}
diff --git a/src/test/regression/tests/005.jdbc/InsertTest.java b/src/test/regression/tests/005.jdbc/InsertTest.java
new file mode 100644
index 000000000..62dd35658
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/InsertTest.java
@@ -0,0 +1,34 @@
+import java.sql.*;
+
+public class InsertTest extends PgpoolTest {
+ public void do_test() throws SQLException {
+ int N = 100;
+
+ try {
+ ResultSet rs;
+ PreparedStatement pstmt = null;
+ Statement stmt = null;
+
+ for (int i = 0; i < N; i++) {
+ connection.setAutoCommit(false);
+ pstmt = connection.prepareStatement("INSERT INTO ins VALUES (?)");
+ pstmt.setInt(1, i);
+ pstmt.executeUpdate();
+ pstmt.close();
+ connection.commit();
+ }
+ connection.setAutoCommit(true);
+ stmt = connection.createStatement();
+ rs = stmt.executeQuery("SELECT count(a) FROM ins" );
+ rs.next();
+ logwriter.println(rs.getInt(1));
+ }
+ finally {
+ connection.close();
+ }
+ }
+
+ public String getTestName() {
+ return "insert";
+ }
+}
diff --git a/src/test/regression/tests/005.jdbc/LockTest.java b/src/test/regression/tests/005.jdbc/LockTest.java
new file mode 100644
index 000000000..2509ce1e8
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/LockTest.java
@@ -0,0 +1,36 @@
+import java.sql.*;
+import java.io.*;
+
+public class LockTest extends PgpoolTest {
+ public final int COUNT = 100;
+
+ public void do_test() throws SQLException, IOException {
+ PreparedStatement pstmt = null;
+ Statement stmt = null;
+ ResultSet rs = null;
+ try{
+ for (int i = 0; i < COUNT; i++) {
+ connection.setAutoCommit(false);
+ /* table lock */
+ stmt = connection.createStatement();
+ stmt.executeUpdate("LOCK locktest");
+
+ pstmt = connection.prepareStatement("SELECT * FROM locktest");
+ rs = pstmt.executeQuery();
+ rs.next();
+ logwriter.println(rs.getInt(1));
+ rs.close();
+ connection.commit();
+ }
+ } finally {
+ if (connection != null) {
+ connection.close();
+ }
+
+ }
+ }
+
+ public String getTestName() {
+ return "lock";
+ }
+}
diff --git a/src/test/regression/tests/005.jdbc/PgpoolTest.java b/src/test/regression/tests/005.jdbc/PgpoolTest.java
new file mode 100644
index 000000000..d07f05a37
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/PgpoolTest.java
@@ -0,0 +1,75 @@
+import java.util.*;
+import java.io.*;
+import java.sql.*;
+
+public abstract class PgpoolTest {
+ protected String url = "jdbc:postgresql://";
+ protected String user;
+ protected String password;
+ protected String dbname;
+ protected String host;
+ protected String port;
+ protected String options;
+ protected Connection connection;
+ protected PrintWriter logwriter;
+
+ public PgpoolTest()
+ {
+ try {
+ Properties prop = new Properties();
+ prop.load(new FileInputStream("pgpool.properties"));
+ host = prop.getProperty("pgpooltest.host");
+ port = prop.getProperty("pgpooltest.port");
+ user = prop.getProperty("pgpooltest.user");
+ password = prop.getProperty("pgpooltest.password");
+ dbname = prop.getProperty("pgpooltest.dbname");
+ options = prop.getProperty("pgpooltest.options");
+
+ url = url + host + ":" + port + "/" + dbname;
+
+ if (!options.equals(""))
+ url = url + "?" + options;
+
+ File dir = new File("result");
+ dir.mkdir();
+
+ logwriter = new PrintWriter(new FileWriter("result/" + getTestName()), true);
+ try {
+ Class.forName("org.postgresql.Driver");
+ connection = DriverManager.getConnection(url, user, password);
+ } catch (ClassNotFoundException e) {
+ System.out.println("cannot load JDBC Driver");
+ System.exit(1);
+ } catch (Exception e) {
+ System.out.println("cannot connect to pgpool");
+ System.exit(1);
+ }
+ } catch (Exception e) {
+ System.out.println("cannot read property file");
+ System.exit(1);
+ }
+ }
+
+ public void check() {
+ try {
+ String command_line = "diff -u expected/" + getTestName() + " result/" +
+ getTestName();
+ Process proc;
+
+ proc = Runtime.getRuntime().exec(command_line);
+ proc.waitFor();
+ System.out.print(getTestName() + ": ");
+ if (proc.exitValue() == 0)
+ System.out.println("ok");
+ else if (proc.exitValue() == 0)
+ System.out.println("FAIL");
+ else
+ System.out.println("unknown error" + proc.exitValue());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public abstract void do_test() throws SQLException, IOException;
+ public abstract String getTestName();
+}
diff --git a/src/test/regression/tests/005.jdbc/README.euc_jp b/src/test/regression/tests/005.jdbc/README.euc_jp
new file mode 100644
index 000000000..102a4304b
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/README.euc_jp
@@ -0,0 +1,73 @@
+$Header$
+
+1. JDBC ドライバテストスイート
+JDBC ドライバテストスイートでは、JDBC ドライバを使って pgpool へ接続し、
+クエリを実行します。
+
+1.1 準備
+あらかじめ CLASSPATH に JDBC ドライバの jar ファイルを通しておいてくだ
+さい。例を示します。
+
+export CLASSPATH=.:/home/t-ishii/lib/postgresql-8.3-604.jdbc4.jar
+
+接続先等のテスト環境の設定は pgpool.properties で定義します。
+
+ pgpooltest.host=localhost
+ pgpool が動作しているホスト名を指定します。
+
+ pgpooltest.port=9999
+ pgpool が LISTEN しているポート番号を指定します。
+
+ pgpooltest.user=pgpool
+ 接続ユーザを指定します。
+
+ pgpooltest.password=
+ 接続パスワードを指定します。
+
+ pgpooltest.dbname=pgpooltest
+ 接続データベース名を指定します。
+
+ pgpooltest.options=
+ JDBCドライバのオプションを指定します。
+
+ pgpooltest.tests=autocommit batch column lock select update insert
+ テストケースを指定します。
+
+1.2 実行方法
+run.sh スクリプトを実行してください。.java をコンパイルし、テストを開
+始します。
+
+ autocommit: ok
+
+と出力されれば、指定したテストケースが正しく完了しています。失敗した場
+合には、diff コマンドで差分を確認してください。
+
+ % diff -u {expected,result}/autocommit
+
+
+2. テストケースを追加する方法
+主に開発者向けの情報です。テストケースを追加する方法を説明します。
+テストは 1 クラス 1 テスト構成になっています。テストを作る場合には、
+PgpoolTest クラスを継承します。以下の 2 つのメソッドを実装してください。
+
+* do_test()
+テストケースを記述します。
+
+* getTestName()
+テストケース名を指定します。pgpool.properties に指定するテスト名です。
+
+テストケースクラスを追加したら、テストをできるように RunTest.java の
+testFactory() に追加します。
+
+ public PgpoolTest testFactory(String testcase)
+ {
+ if (testcase == null)
+ return null;
+
+ if (testcase.equals("autocommit"))
+ return new AutoCommitTest();
+ ....
+ }
+
+最後に、期待される結果を expected/ 以下に用意し、pgpool.properties に
+登録すれば完了です。
diff --git a/src/test/regression/tests/005.jdbc/RunTest.java b/src/test/regression/tests/005.jdbc/RunTest.java
new file mode 100644
index 000000000..4b63a7553
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/RunTest.java
@@ -0,0 +1,83 @@
+import java.sql.*;
+import java.util.*;
+import java.io.*;
+
+public class RunTest {
+ public static void main(String[] args)
+ {
+ RunTest test = new RunTest();
+ test.run();
+ }
+
+ public void run()
+ {
+ try {
+ PgpoolTest test;
+ Properties prop = new Properties();
+ prop.load(new FileInputStream("pgpool.properties"));
+ String tests = prop.getProperty("pgpooltest.tests");
+ String host = prop.getProperty("pgpooltest.host");
+ String port = prop.getProperty("pgpooltest.port");
+ String user = prop.getProperty("pgpooltest.user");
+ String password = prop.getProperty("pgpooltest.password");
+ String dbname = prop.getProperty("pgpooltest.dbname");
+
+ // setup database
+ String command_line = "psql -f prepare.sql";
+ command_line = command_line + " -h " + host + " -p " + port +
+ " -U " + user + " " + dbname;
+ Process proc = Runtime.getRuntime().exec(command_line);
+ proc.waitFor();
+
+ StringTokenizer tokenizer = new StringTokenizer(tests, " ");
+
+ while(tokenizer.hasMoreTokens()) {
+ test = testFactory(tokenizer.nextToken());
+ if (test == null) {
+ System.out.println("unknown testcase");
+ System.exit(1);
+ }
+ test.do_test();
+ test.check();
+ }
+ } catch (IOException e) {
+ System.out.println("cannot read property file");
+ System.exit(1);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public PgpoolTest testFactory(String testcase)
+ {
+ if (testcase == null)
+ return null;
+
+ if (testcase.equals("autocommit"))
+ return new AutoCommitTest();
+
+ if (testcase.equals("batch"))
+ return new BatchTest();
+
+ if (testcase.equals("column"))
+ return new ColumnTest();
+
+ if (testcase.equals("lock"))
+ return new LockTest();
+
+ if (testcase.equals("select"))
+ return new SelectTest();
+
+ if (testcase.equals("update"))
+ return new UpdateTest();
+
+ if (testcase.equals("insert"))
+ return new InsertTest();
+
+ if (testcase.equals("CreateTempTable"))
+ return new CreateTempTableTest();
+
+ /* unknown test case */
+ return null;
+ }
+}
diff --git a/src/test/regression/tests/005.jdbc/SelectTest.java b/src/test/regression/tests/005.jdbc/SelectTest.java
new file mode 100644
index 000000000..86dcb8a2d
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/SelectTest.java
@@ -0,0 +1,37 @@
+import java.sql.*;
+import java.io.*;
+
+public class SelectTest extends PgpoolTest {
+ public void do_test() throws SQLException {
+ try {
+ for (int i = 0; i < 1; i++) {
+ connection.setAutoCommit(false);
+ Statement stmt = null;
+ PreparedStatement pstmt = null;
+ ResultSet rs = null;
+
+ pstmt = connection.prepareStatement("SELECT count(*) FROM sel");
+ rs = pstmt.executeQuery();
+ rs.next();
+ logwriter.println(rs.getInt(1));
+ rs.close();
+ pstmt.close();
+
+ pstmt = connection.prepareStatement("SELECT sum(a) FROM sel");
+ rs = pstmt.executeQuery();
+ rs.next();
+ logwriter.println(rs.getInt(1));
+ rs.close();
+ pstmt.close();
+ connection.commit();
+ }
+ } finally {
+ connection.close();
+ logwriter.close();
+ }
+ }
+
+ public String getTestName() {
+ return "select";
+ }
+}
diff --git a/src/test/regression/tests/005.jdbc/UpdateTest.java b/src/test/regression/tests/005.jdbc/UpdateTest.java
new file mode 100644
index 000000000..7284c2af5
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/UpdateTest.java
@@ -0,0 +1,32 @@
+import java.sql.*;
+
+public class UpdateTest extends PgpoolTest {
+ public void do_test() throws SQLException {
+ int N = 100;
+
+ try {
+ ResultSet rs;
+ Statement stmt = null;
+
+ for (int i = 0; i < N; i++) {
+ connection.setAutoCommit(false);
+ stmt = connection.createStatement();
+ stmt.executeUpdate("UPDATE up SET a = a + 1" );
+ stmt.close();
+ connection.commit();
+ }
+ connection.setAutoCommit(true);
+ stmt = connection.createStatement();
+ rs = stmt.executeQuery("SELECT max(a) FROM up" );
+ rs.next();
+ logwriter.println(rs.getInt(1));
+ }
+ finally {
+ connection.close();
+ }
+ }
+
+ public String getTestName() {
+ return "update";
+ }
+}
diff --git a/src/test/regression/tests/005.jdbc/expected.txt b/src/test/regression/tests/005.jdbc/expected.txt
new file mode 100644
index 000000000..bfd6daadc
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/expected.txt
@@ -0,0 +1,7 @@
+autocommit: ok
+batch: ok
+column: ok
+lock: ok
+select: ok
+update: ok
+insert: ok
diff --git a/src/test/regression/tests/005.jdbc/expected/CreateTempTable b/src/test/regression/tests/005.jdbc/expected/CreateTempTable
new file mode 100644
index 000000000..08839f6bb
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/expected/CreateTempTable
@@ -0,0 +1 @@
+200
diff --git a/src/test/regression/tests/005.jdbc/expected/autocommit b/src/test/regression/tests/005.jdbc/expected/autocommit
new file mode 100644
index 000000000..918e94db8
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/expected/autocommit
@@ -0,0 +1,10 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
diff --git a/src/test/regression/tests/005.jdbc/expected/batch b/src/test/regression/tests/005.jdbc/expected/batch
new file mode 100644
index 000000000..b4de39476
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/expected/batch
@@ -0,0 +1 @@
+11
diff --git a/src/test/regression/tests/005.jdbc/expected/column b/src/test/regression/tests/005.jdbc/expected/column
new file mode 100644
index 000000000..f6d8fb48f
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/expected/column
@@ -0,0 +1,100 @@
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
diff --git a/src/test/regression/tests/005.jdbc/expected/insert b/src/test/regression/tests/005.jdbc/expected/insert
new file mode 100644
index 000000000..29d6383b5
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/expected/insert
@@ -0,0 +1 @@
+100
diff --git a/src/test/regression/tests/005.jdbc/expected/lock b/src/test/regression/tests/005.jdbc/expected/lock
new file mode 100644
index 000000000..f6d8fb48f
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/expected/lock
@@ -0,0 +1,100 @@
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
diff --git a/src/test/regression/tests/005.jdbc/expected/select b/src/test/regression/tests/005.jdbc/expected/select
new file mode 100644
index 000000000..7fe69129e
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/expected/select
@@ -0,0 +1,2 @@
+100
+5050
diff --git a/src/test/regression/tests/005.jdbc/expected/update b/src/test/regression/tests/005.jdbc/expected/update
new file mode 100644
index 000000000..257e56326
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/expected/update
@@ -0,0 +1 @@
+102
diff --git a/src/test/regression/tests/005.jdbc/prepare.sql b/src/test/regression/tests/005.jdbc/prepare.sql
new file mode 100644
index 000000000..c5a474be7
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/prepare.sql
@@ -0,0 +1,54 @@
+-- autocommit
+DROP TABLE autocommit;
+CREATE TABLE autocommit (a int);
+INSERT INTO autocommit SELECT generate_series(1, 10);
+
+-- batch
+DROP TABLE batch;
+CREATE TABLE batch (a int);
+
+-- column
+DROP TABLE columntest;
+CREATE TABLE columntest
+(
+ v1 int4,
+ v2 int4,
+ v3 int4,
+ v4 int4,
+ v5 int4,
+ v6 int4,
+ v7 int4,
+ v8 int4,
+ v9 int4,
+ v10 int4,
+ v11 int4,
+ v12 int4,
+ v13 int4,
+ v14 int4,
+ v15 int4)
+WITHOUT OIDS;
+INSERT INTO columntest VALUES (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
+
+-- lock
+DROP TABLE locktest;
+CREATE TABLE locktest (a int);
+INSERT INTO locktest VALUES (1);
+INSERT INTO locktest VALUES (2);
+INSERT INTO locktest VALUES (3);
+INSERT INTO locktest VALUES (4);
+INSERT INTO locktest VALUES (5);
+
+-- select
+DROP TABLE sel;
+CREATE TABLE sel (a int);
+INSERT INTO sel SELECT generate_series(1, 100);
+
+-- update
+DROP TABLE up;
+CREATE TABLE up (a int);
+INSERT INTO up VALUES (1);
+INSERT INTO up VALUES (2);
+
+-- insert
+DROP TABLE ins;
+CREATE TABLE ins (a int);
diff --git a/src/test/regression/tests/005.jdbc/run.sh b/src/test/regression/tests/005.jdbc/run.sh
new file mode 100644
index 000000000..319f246b3
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/run.sh
@@ -0,0 +1,6 @@
+#! /bin/sh
+
+rm -f *.class
+rm -f result/*
+javac *.java
+java RunTest
diff --git a/src/test/regression/tests/005.jdbc/test.sh b/src/test/regression/tests/005.jdbc/test.sh
new file mode 100755
index 000000000..74a61ba29
--- /dev/null
+++ b/src/test/regression/tests/005.jdbc/test.sh
@@ -0,0 +1,54 @@
+#! /bin/sh -x
+#-------------------------------------------------------------------
+# test script for jdbc test
+#
+source $TESTLIBS
+TESTDIR=testdir
+PSQL=$PGBIN/psql
+export CLASSPATH=.:$JDBC_DRIVER
+
+for mode in s r n
+do
+ rm -fr $TESTDIR
+ mkdir $TESTDIR
+ cd $TESTDIR
+
+# create test environment
+ echo -n "creating test environment..."
+ sh $PGPOOL_SETUP -m $mode -n 2 || exit 1
+ echo "done."
+
+ source ./bashrc.ports
+
+# create Java property file
+ cat > pgpool.properties <<EOF
+pgpooltest.host=localhost
+pgpooltest.port=$PGPOOL_PORT
+pgpooltest.user=$USER
+pgpooltest.password=
+pgpooltest.dbname=test
+pgpooltest.options=
+pgpooltest.tests=autocommit batch column lock select update insert
+EOF
+ cp ../*.java .
+ cp ../*.sql .
+ cp ../run.sh .
+ cp -r ../expected .
+ cp ../expected.txt .
+
+ ./startall
+
+ export PGPORT=$PGPOOL_PORT
+
+ wait_for_pgpool_startup
+
+ sh run.sh > result.txt 2>&1
+ cmp result.txt expected.txt || (./shutdown all;exit 1)
+
+ ./shutdownall
+
+ cd ..
+
+done
+
+exit 0
[parent: 3c5776a506a1]