This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to tag REL9_3_1103 in repository libpostgresql-jdbc-java.
commit 851342e153aba7b06c62247c64ff5a0bf24ab604 Author: Alexis Meneses <[email protected]> Date: Thu Dec 4 21:27:36 2014 +0100 Add tests for schema name containing special characters (cherry picked from commit 169c6dfe48e07234f9d083ae92697298e8d5b630) Conflicts: org/postgresql/test/jdbc4/jdbc41/SchemaTest.java --- org/postgresql/test/jdbc4/jdbc41/SchemaTest.java | 194 +++++++++++++++++++++++ 1 file changed, 194 insertions(+) diff --git a/org/postgresql/test/jdbc4/jdbc41/SchemaTest.java b/org/postgresql/test/jdbc4/jdbc41/SchemaTest.java new file mode 100644 index 0000000..4a544ee --- /dev/null +++ b/org/postgresql/test/jdbc4/jdbc41/SchemaTest.java @@ -0,0 +1,194 @@ +/*------------------------------------------------------------------------- +* +* Copyright (c) 2010-2014, PostgreSQL Global Development Group +* +* +*------------------------------------------------------------------------- +*/ +package org.postgresql.test.jdbc4.jdbc41; + +import java.sql.*; + +import java.util.Properties; + +import junit.framework.TestCase; + +import org.postgresql.test.TestUtil; + +public class SchemaTest extends TestCase +{ + + private Connection _conn; + + public SchemaTest(String name) + { + super(name); + } + + protected void setUp() throws Exception + { + _conn = TestUtil.openDB(); + Statement stmt = _conn.createStatement(); + stmt.execute("CREATE SCHEMA schema1"); + stmt.execute("CREATE SCHEMA schema2"); + stmt.execute("CREATE SCHEMA \"schema 3\""); + stmt.execute("CREATE SCHEMA \"schema \"\"4\""); + stmt.execute("CREATE SCHEMA \"schema '5\""); + stmt.execute("CREATE SCHEMA \"UpperCase\""); + TestUtil.createTable(_conn, "schema1.table1", "id integer"); + TestUtil.createTable(_conn, "schema2.table2", "id integer"); + TestUtil.createTable(_conn, "\"UpperCase\".table3", "id integer"); + } + + protected void tearDown() throws SQLException + { + _conn.setSchema(null); + Statement stmt = _conn.createStatement(); + stmt.execute("DROP SCHEMA schema1 CASCADE"); + stmt.execute("DROP SCHEMA schema2 CASCADE"); + stmt.execute("DROP SCHEMA \"schema 3\" CASCADE"); + stmt.execute("DROP SCHEMA \"schema \"\"4\" CASCADE"); + stmt.execute("DROP SCHEMA \"schema '5\" CASCADE"); + stmt.execute("DROP SCHEMA \"UpperCase\" CASCADE"); + TestUtil.closeDB(_conn); + } + + /** + * Test that what you set is what you get + */ + public void testGetSetSchema() throws SQLException + { + _conn.setSchema("schema1"); + assertEquals("schema1", _conn.getSchema()); + _conn.setSchema("schema2"); + assertEquals("schema2", _conn.getSchema()); + _conn.setSchema("schema 3"); + assertEquals("\"schema 3\"", _conn.getSchema()); + _conn.setSchema("schema \"4"); + assertEquals("\"schema \"\"4\"", _conn.getSchema()); + _conn.setSchema("schema '5"); + assertEquals("\"schema '5\"", _conn.getSchema()); + _conn.setSchema("UpperCase"); + assertEquals("\"UpperCase\"", _conn.getSchema()); + } + + /** + * Test that setting the schema allows to access objects of this schema + * without prefix, hide objects from other schemas but doesn't prevent + * to prefix-access to them. + */ + public void testUsingSchema() throws SQLException + { + Statement stmt = _conn.createStatement(); + try + { + try + { + _conn.setSchema("schema1"); + stmt.executeQuery(TestUtil.selectSQL("table1", "*")); + stmt.executeQuery(TestUtil.selectSQL("schema2.table2", "*")); + try + { + stmt.executeQuery(TestUtil.selectSQL("table2", "*")); + fail("Objects of schema2 should not be visible without prefix"); + } + catch (SQLException e) + { + // expected + } + + _conn.setSchema("schema2"); + stmt.executeQuery(TestUtil.selectSQL("table2", "*")); + stmt.executeQuery(TestUtil.selectSQL("schema1.table1", "*")); + try + { + stmt.executeQuery(TestUtil.selectSQL("table1", "*")); + fail("Objects of schema1 should not be visible without prefix"); + } + catch (SQLException e) + { + // expected + } + + _conn.setSchema("UpperCase"); + stmt.executeQuery(TestUtil.selectSQL("table3", "*")); + stmt.executeQuery(TestUtil.selectSQL("schema1.table1", "*")); + try + { + stmt.executeQuery(TestUtil.selectSQL("table1", "*")); + fail("Objects of schema1 should not be visible without prefix"); + } + catch (SQLException e) + { + // expected + } + } + catch (SQLException e) + { + fail("Could not find expected schema elements: " + e.getMessage()); + } + } + finally + { + try + { + stmt.close(); + } + catch (SQLException e) + { + } + } + } + + /** + * Test that get schema returns the schema with the highest priority + * in the search path + */ + public void testMultipleSearchPath() throws SQLException + { + Statement stmt = _conn.createStatement(); + try + { + stmt.execute("SET search_path TO schema1,schema2"); + } + finally + { + try + { + stmt.close(); + } + catch (SQLException e) + { + } + } + assertEquals("schema1", _conn.getSchema()); + } + + public void testSchemaInProperties() throws Exception + { + Properties properties = new Properties(); + properties.setProperty("currentSchema", "schema1"); + Connection conn = TestUtil.openDB(properties); + try + { + assertEquals("schema1", conn.getSchema()); + + Statement stmt = conn.createStatement(); + stmt.executeQuery(TestUtil.selectSQL("table1", "*")); + stmt.executeQuery(TestUtil.selectSQL("schema2.table2", "*")); + try + { + stmt.executeQuery(TestUtil.selectSQL("table2", "*")); + fail("Objects of schema2 should not be visible without prefix"); + } + catch (SQLException e) + { + // expected + } + } + finally + { + TestUtil.closeDB(conn); + } + } +} -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/libpostgresql-jdbc-java.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

