package org.geotools.data.postgis; import org.geotools.jdbc.JDBCPrimaryKeyTestSetup; import org.geotools.jdbc.JDBCTestSetup; public class PostgisPrimaryKeyTestSetup extends JDBCPrimaryKeyTestSetup { public PostgisPrimaryKeyTestSetup(JDBCTestSetup delegate) { super(delegate); } @Override protected void createAutoGeneratedPrimaryKeyTable() throws Exception { run("CREATE TABLE \"auto\"(\"key\" serial primary key, \"name\" varchar)"); run("SELECT AddGeometryColumn('auto', 'geom', -1, 'GEOMETRY', 2)"); run( "INSERT INTO \"auto\" (\"name\",\"geom\" ) VALUES ('one',NULL)"); run( "INSERT INTO \"auto\" (\"name\",\"geom\" ) VALUES ('two',NULL)"); run( "INSERT INTO \"auto\" (\"name\",\"geom\" ) VALUES ('three',NULL)"); } @Override protected void createMultiColumnPrimaryKeyTable() throws Exception { run( "CREATE TABLE \"multi\" ( \"key1\" int NOT NULL, \"key2\" VARCHAR NOT NULL, " + "\"name\" VARCHAR)" ); run("SELECT AddGeometryColumn('multi', 'geom', -1, 'GEOMETRY', 2)"); run( "ALTER TABLE \"multi\" ADD PRIMARY KEY (\"key1\",\"key2\")" ); run( "INSERT INTO \"multi\" VALUES (1, 'x', 'one', NULL)"); run( "INSERT INTO \"multi\" VALUES (2, 'y', 'two', NULL)"); run( "INSERT INTO \"multi\" VALUES (3, 'z', 'three', NULL)"); } @Override protected void createNonIncrementingPrimaryKeyTable() throws Exception { run("CREATE TABLE \"noninc\"(\"key\" int primary key, \"name\" varchar)"); run("SELECT AddGeometryColumn('noninc', 'geom', -1, 'GEOMETRY', 2)"); run( "INSERT INTO \"noninc\" VALUES (1, 'one', NULL)"); run( "INSERT INTO \"noninc\" VALUES (2, 'two', NULL)"); run( "INSERT INTO \"noninc\" VALUES (3, 'three', NULL)"); } @Override protected void createSequencedPrimaryKeyTable() throws Exception { run( "CREATE TABLE \"seq\" ( \"key\" int PRIMARY KEY, \"name\" VARCHAR)" ); run("SELECT AddGeometryColumn('seq', 'geom', -1, 'GEOMETRY', 2)"); run( "CREATE SEQUENCE SEQ_KEY_SEQUENCE START WITH 1 OWNED BY \"seq\".\"key\""); run( "INSERT INTO \"seq\" (\"key\", \"name\",\"geom\" ) VALUES (" + "(SELECT NEXTVAL('SEQ_KEY_SEQUENCE')),'one',NULL)"); run( "INSERT INTO \"seq\" (\"key\", \"name\",\"geom\" ) VALUES (" + "(SELECT NEXTVAL('SEQ_KEY_SEQUENCE')),'two',NULL)"); run( "INSERT INTO \"seq\" (\"key\", \"name\",\"geom\" ) VALUES (" + "(SELECT NEXTVAL('SEQ_KEY_SEQUENCE')),'three',NULL)"); } @Override protected void createNullPrimaryKeyTable() throws Exception { run( "CREATE TABLE \"nokey\" ( \"name\" VARCHAR)"); run( "INSERT INTO \"nokey\" VALUES ('one')"); run( "INSERT INTO \"nokey\" VALUES ('two')"); run( "INSERT INTO \"nokey\" VALUES ('three')"); } @Override protected void createUniqueIndexTable() throws Exception { run("CREATE TABLE \"uniq\"(\"key\" int, \"name\" varchar)"); run("SELECT AddGeometryColumn('uniq', 'geom', -1, 'GEOMETRY', 2)"); run("CREATE UNIQUE INDEX \"uniq_key_index\" ON \"uniq\"(\"key\")"); run( "INSERT INTO \"uniq\" VALUES (1,'one',NULL)"); run( "INSERT INTO \"uniq\" VALUES (2,'two',NULL)"); run( "INSERT INTO \"uniq\" VALUES (3,'three',NULL)"); } @Override protected void dropAutoGeneratedPrimaryKeyTable() throws Exception { runSafe("DELETE FROM GEOMETRY_COLUMNS WHERE F_TABLE_NAME = 'auto'"); runSafe("DROP TABLE \"auto\""); } @Override protected void dropMultiColumnPrimaryKeyTable() throws Exception { runSafe("DELETE FROM GEOMETRY_COLUMNS WHERE F_TABLE_NAME = 'multi'"); runSafe("DROP TABLE \"multi\""); } @Override protected void dropNonIncrementingPrimaryKeyTable() throws Exception { runSafe("DELETE FROM GEOMETRY_COLUMNS WHERE F_TABLE_NAME = 'noninc'"); runSafe("DROP TABLE \"noninc\""); } @Override protected void dropSequencedPrimaryKeyTable() throws Exception { runSafe("DELETE GEOMETRY_COLUMNS WHERE F_TABLE_NAME = 'seq'"); runSafe("DROP SEQUENCE SEQ_KEY_SEQUENCE"); runSafe("DROP TABLE \"seq\""); } @Override protected void dropNullPrimaryKeyTable() throws Exception { runSafe("DROP TABLE \"nokey\""); } @Override protected void dropUniqueIndexTable() throws Exception { runSafe("DROP TABLE \"uniq\""); } }