From 24e898c4e9872fa7a52ecf785125b91feb2ecdb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 3 Feb 2014 22:50:46 +0200 Subject: [PATCH] Add stubs for PostGIS support #631 --- querydsl-sql/pom.xml | 2 +- .../mysema/query/sql/PostgresTemplates.java | 2 - .../mysema/query/sql/TeradataTemplates.java | 6 +- .../sql/postgres/PGGeometryConverter.java | 155 ++++++++++++++++++ .../query/sql/postgres/PGGeometryType.java | 62 +++++++ .../query/sql/postgres/PostGISTemplates.java | 47 ++++++ .../query/sql/spatial/GeometryWkbType.java | 11 +- .../sql/spatial/GeometryWktClobType.java | 64 ++++++++ .../query/sql/spatial/GeometryWktType.java | 49 +----- .../java/com/mysema/query/Connections.java | 4 +- .../java/com/mysema/query/SpatialBase.java | 9 +- .../com/mysema/query/sql/spatial/QShapes.java | 12 +- .../com/mysema/query/suites/SpatialTest.java | 2 +- 13 files changed, 359 insertions(+), 66 deletions(-) create mode 100644 querydsl-sql/src/main/java/com/mysema/query/sql/postgres/PGGeometryConverter.java create mode 100644 querydsl-sql/src/main/java/com/mysema/query/sql/postgres/PGGeometryType.java create mode 100644 querydsl-sql/src/main/java/com/mysema/query/sql/postgres/PostGISTemplates.java create mode 100644 querydsl-sql/src/main/java/com/mysema/query/sql/spatial/GeometryWktClobType.java diff --git a/querydsl-sql/pom.xml b/querydsl-sql/pom.xml index 4207233ba..3e26e6e85 100644 --- a/querydsl-sql/pom.xml +++ b/querydsl-sql/pom.xml @@ -88,7 +88,7 @@ org.postgis postgis-jdbc 1.3.3 - test + provided diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/PostgresTemplates.java b/querydsl-sql/src/main/java/com/mysema/query/sql/PostgresTemplates.java index 560841727..273e8adc7 100644 --- a/querydsl-sql/src/main/java/com/mysema/query/sql/PostgresTemplates.java +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/PostgresTemplates.java @@ -47,9 +47,7 @@ public class PostgresTemplates extends SQLTemplates { setDummyTable(null); setCountDistinctMultipleColumns(true); setCountViaAnalytics(true); - addSpatialOps(true); - // type mappings addClass2TypeMappings("numeric(3,0)", Byte.class); addClass2TypeMappings("double precision", Double.class); diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/TeradataTemplates.java b/querydsl-sql/src/main/java/com/mysema/query/sql/TeradataTemplates.java index 6647c2ed4..3e8e25394 100644 --- a/querydsl-sql/src/main/java/com/mysema/query/sql/TeradataTemplates.java +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/TeradataTemplates.java @@ -13,11 +13,9 @@ */ package com.mysema.query.sql; -import java.sql.Types; - import com.mysema.query.QueryMetadata; import com.mysema.query.QueryModifiers; -import com.mysema.query.sql.spatial.GeometryWktType; +import com.mysema.query.sql.spatial.GeometryWktClobType; import com.mysema.query.types.Ops; @@ -61,7 +59,7 @@ public class TeradataTemplates extends SQLTemplates { setDummyTable(null); setCountViaAnalytics(true); - addCustomType(new GeometryWktType(Types.CLOB)); + addCustomType(GeometryWktClobType.DEFAULT); addClass2TypeMappings("byteint", Byte.class); addClass2TypeMappings("double precision", Double.class); addClass2TypeMappings("varchar(4000)", String.class); diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/postgres/PGGeometryConverter.java b/querydsl-sql/src/main/java/com/mysema/query/sql/postgres/PGGeometryConverter.java new file mode 100644 index 000000000..f6238e2bf --- /dev/null +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/postgres/PGGeometryConverter.java @@ -0,0 +1,155 @@ +/* + * Copyright 2014, Mysema Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mysema.query.sql.postgres; + +import org.geolatte.geom.Geometry; +import org.geolatte.geom.GeometryCollection; +import org.geolatte.geom.GeometryFactory; +import org.geolatte.geom.LineString; +import org.geolatte.geom.MultiLineString; +import org.geolatte.geom.MultiPoint; +import org.geolatte.geom.MultiPolygon; +import org.geolatte.geom.Point; +import org.geolatte.geom.PolyHedralSurface; +import org.geolatte.geom.Polygon; +import org.postgis.LinearRing; +import org.postgis.PGgeometry; + + +/** + * @author tiwe + * + */ +public class PGGeometryConverter { + + private GeometryFactory geometryFactory; + + public static PGgeometry convert(Geometry geometry) { + if (geometry instanceof Point) { + return convert((Point)geometry); + } else if (geometry instanceof LineString) { + return convert((LineString)geometry); + } else if (geometry instanceof MultiLineString) { + return convert((MultiLineString)geometry); + } else if (geometry instanceof Polygon) { + return convert((Polygon)geometry); + } else if (geometry instanceof PolyHedralSurface) { + return convert((PolyHedralSurface)geometry); + } else if (geometry instanceof MultiPoint) { + return convert((MultiPoint)geometry); + } else if (geometry instanceof MultiPolygon) { + return convert((MultiPolygon)geometry); + } else if (geometry instanceof GeometryCollection) { + return convert((GeometryCollection)geometry); + } else { + throw new IllegalArgumentException(geometry.getClass().getName()); + } + } + + private static PGgeometry convert(Point point) { + point.get + return null; // TODO + } + + private static PGgeometry convert(LineString lineString) { + return null; // TODO + } + + private static PGgeometry convert(MultiLineString multiLineString) { + return null; // TODO + } + + private static PGgeometry convert(Polygon polygon) { + return null; // TODO + } + + private static PGgeometry convert(PolyHedralSurface polyHedralSurface) { + return null; // TODO + } + + private static PGgeometry convert(MultiPoint multiPoint) { + return null; // TODO + } + + private static PGgeometry convert(MultiPolygon multiPolygon) { + return null; // TODO + } + + private static PGgeometry convert(GeometryCollection multiPolygon) { + return null; // TODO + } + + public static Geometry convert(PGgeometry geometry) { + switch (geometry.getGeoType()) { + case org.postgis.Geometry.POINT: + return convert((org.postgis.Point)geometry.getGeometry()); + case org.postgis.Geometry.LINESTRING: + return convert((org.postgis.LineString)geometry.getGeometry()); + case org.postgis.Geometry.LINEARRING: + return convert((org.postgis.LinearRing)geometry.getGeometry()); + case org.postgis.Geometry.POLYGON: + return convert((org.postgis.Polygon)geometry.getGeometry()); + case org.postgis.Geometry.MULTILINESTRING: + return convert((org.postgis.MultiLineString)geometry.getGeometry()); + case org.postgis.Geometry.MULTIPOINT: + return convert((org.postgis.MultiPoint)geometry.getGeometry()); + case org.postgis.Geometry.MULTIPOLYGON: + return convert((org.postgis.MultiPolygon)geometry.getGeometry()); + case org.postgis.Geometry.GEOMETRYCOLLECTION: + return convert((org.postgis.GeometryCollection)geometry.getGeometry()); + } + throw new IllegalArgumentException(geometry.toString()); + } + + private static Geometry convert(org.postgis.GeometryCollection geometry) { + // TODO Auto-generated method stub + return null; + } + + private static Geometry convert(org.postgis.MultiPolygon geometry) { + // TODO Auto-generated method stub + return null; + } + + private static Geometry convert(org.postgis.MultiPoint geometry) { + // TODO Auto-generated method stub + return null; + } + + private static Geometry convert(org.postgis.MultiLineString geometry) { + // TODO Auto-generated method stub + return null; + } + + private static Geometry convert(org.postgis.Polygon geometry) { + // TODO Auto-generated method stub + return null; + } + + private static Geometry convert(LinearRing geometry) { + // TODO Auto-generated method stub + return null; + } + + private static Geometry convert(org.postgis.LineString geometry) { + // TODO Auto-generated method stub + return null; + } + + private static Geometry convert(org.postgis.Point geometry) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/postgres/PGGeometryType.java b/querydsl-sql/src/main/java/com/mysema/query/sql/postgres/PGGeometryType.java new file mode 100644 index 000000000..871d67e28 --- /dev/null +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/postgres/PGGeometryType.java @@ -0,0 +1,62 @@ +/* + * Copyright 2014, Mysema Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mysema.query.sql.postgres; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Types; + +import javax.annotation.Nullable; + +import org.geolatte.geom.Geometry; +import org.geolatte.geom.codec.Wkt; + +import com.mysema.query.sql.types.AbstractType; + +/** + * @author tiwe + * + */ +public class PGGeometryType extends AbstractType { + + public static final PGGeometryType DEFAULT = new PGGeometryType(); + + public PGGeometryType() { + super(Types.STRUCT); + } + + @Override + public Class getReturnedClass() { + return Geometry.class; + } + + @Override + @Nullable + public Geometry getValue(ResultSet rs, int startIndex) throws SQLException { + String str = rs.getString(startIndex); + if (str != null) { + return Wkt.newWktDecoder(Wkt.Dialect.POSTGIS_EWKT_1).decode(str); + } else { + return null; + } + } + + @Override + public void setValue(PreparedStatement st, int startIndex, Geometry value) throws SQLException { + String str = Wkt.newWktEncoder(Wkt.Dialect.POSTGIS_EWKT_1).encode(value); + st.setString(startIndex, str); + } + +} diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/postgres/PostGISTemplates.java b/querydsl-sql/src/main/java/com/mysema/query/sql/postgres/PostGISTemplates.java new file mode 100644 index 000000000..dba60990c --- /dev/null +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/postgres/PostGISTemplates.java @@ -0,0 +1,47 @@ +/* + * Copyright 2011, Mysema Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mysema.query.sql.postgres; + +import com.mysema.query.sql.PostgresTemplates; +import com.mysema.query.sql.SQLTemplates; + +/** + * @author tiwe + * + */ +public class PostGISTemplates extends PostgresTemplates { + + public static Builder builder() { + return new Builder() { + @Override + protected SQLTemplates build(char escape, boolean quote) { + return new PostGISTemplates(escape, quote); + } + }; + } + + public PostGISTemplates() { + this('\\', false); + } + + public PostGISTemplates(boolean quote) { + this('\\', quote); + } + + public PostGISTemplates(char escape, boolean quote) { + super(escape, quote); + addSpatialOps(true); + } + +} diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/spatial/GeometryWkbType.java b/querydsl-sql/src/main/java/com/mysema/query/sql/spatial/GeometryWkbType.java index 42b8d4a67..25aa12de7 100644 --- a/querydsl-sql/src/main/java/com/mysema/query/sql/spatial/GeometryWkbType.java +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/spatial/GeometryWkbType.java @@ -22,6 +22,7 @@ import javax.annotation.Nullable; import org.geolatte.geom.ByteBuffer; import org.geolatte.geom.ByteOrder; import org.geolatte.geom.Geometry; +import org.geolatte.geom.codec.Wkb; import org.geolatte.geom.codec.WkbDecoder; import org.geolatte.geom.codec.WkbEncoder; @@ -33,16 +34,10 @@ import com.mysema.query.sql.types.AbstractType; */ public class GeometryWkbType extends AbstractType { - private final WkbEncoder encoder; - - private final WkbDecoder decoder; - private final ByteOrder byteOrder; - public GeometryWkbType(int type, WkbEncoder encoder, WkbDecoder decoder, ByteOrder byteOrder) { + public GeometryWkbType(int type, ByteOrder byteOrder) { super(type); - this.encoder = encoder; - this.decoder = decoder; this.byteOrder = byteOrder; } @@ -56,6 +51,7 @@ public class GeometryWkbType extends AbstractType { public Geometry getValue(ResultSet rs, int startIndex) throws SQLException { byte[] bytes = rs.getBytes(startIndex); if (bytes != null) { + WkbDecoder decoder = Wkb.newWkbDecoder(Wkb.Dialect.POSTGIS_EWKB_1); return decoder.decode(ByteBuffer.from(bytes)); } else { return null; @@ -64,6 +60,7 @@ public class GeometryWkbType extends AbstractType { @Override public void setValue(PreparedStatement st, int startIndex, Geometry value) throws SQLException { + WkbEncoder encoder = Wkb.newWkbEncoder(Wkb.Dialect.POSTGIS_EWKB_1); ByteBuffer buffer = encoder.encode(value, byteOrder); st.setBytes(startIndex, buffer.toByteArray()); } diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/spatial/GeometryWktClobType.java b/querydsl-sql/src/main/java/com/mysema/query/sql/spatial/GeometryWktClobType.java new file mode 100644 index 000000000..3a1b973a2 --- /dev/null +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/spatial/GeometryWktClobType.java @@ -0,0 +1,64 @@ +/* + * Copyright 2014, Mysema Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mysema.query.sql.spatial; + +import java.sql.Clob; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Types; + +import javax.annotation.Nullable; + +import org.geolatte.geom.Geometry; +import org.geolatte.geom.codec.Wkt; + +import com.mysema.query.sql.types.AbstractType; + +/** + * @author tiwe + * + */ +public class GeometryWktClobType extends AbstractType { + + public static final GeometryWktClobType DEFAULT = new GeometryWktClobType(); + + public GeometryWktClobType() { + super(Types.CLOB); + } + + @Override + public Class getReturnedClass() { + return Geometry.class; + } + + @Override + @Nullable + public Geometry getValue(ResultSet rs, int startIndex) throws SQLException { + Clob clob = rs.getClob(startIndex); + String str = clob != null ? clob.getSubString(1, (int) clob.length()) : null; + if (str != null) { + return Wkt.newWktDecoder(Wkt.Dialect.POSTGIS_EWKT_1).decode(str); + } else { + return null; + } + } + + @Override + public void setValue(PreparedStatement st, int startIndex, Geometry value) throws SQLException { + String str = Wkt.newWktEncoder(Wkt.Dialect.POSTGIS_EWKT_1).encode(value); + st.setString(startIndex, str); + } + +} diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/spatial/GeometryWktType.java b/querydsl-sql/src/main/java/com/mysema/query/sql/spatial/GeometryWktType.java index d553ee8ec..d9d3ea551 100644 --- a/querydsl-sql/src/main/java/com/mysema/query/sql/spatial/GeometryWktType.java +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/spatial/GeometryWktType.java @@ -13,7 +13,6 @@ */ package com.mysema.query.sql.spatial; -import java.sql.Clob; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -23,8 +22,6 @@ import javax.annotation.Nullable; import org.geolatte.geom.Geometry; import org.geolatte.geom.codec.Wkt; -import org.geolatte.geom.codec.WktDecoder; -import org.geolatte.geom.codec.WktEncoder; import com.mysema.query.sql.types.AbstractType; @@ -34,27 +31,10 @@ import com.mysema.query.sql.types.AbstractType; */ public class GeometryWktType extends AbstractType { - private static final WktEncoder ENCODER = Wkt.newWktEncoder(Wkt.Dialect.POSTGIS_EWKT_1); + public static final GeometryWktType DEFAULT = new GeometryWktType(); - private static final WktDecoder DECODER = Wkt.newWktDecoder(Wkt.Dialect.POSTGIS_EWKT_1); - - public static final GeometryWktType DEFAULT = new GeometryWktType(Types.VARCHAR, ENCODER, DECODER); - - private final int type; - - private final WktEncoder encoder; - - private final WktDecoder decoder; - - public GeometryWktType(int type) { - this(type, ENCODER, DECODER); - } - - public GeometryWktType(int type, WktEncoder encoder, WktDecoder decoder) { - super(type); - this.type = type; - this.encoder = encoder; - this.decoder = decoder; + public GeometryWktType() { + super(Types.VARCHAR); } @Override @@ -65,29 +45,18 @@ public class GeometryWktType extends AbstractType { @Override @Nullable public Geometry getValue(ResultSet rs, int startIndex) throws SQLException { - String str; - if (type == Types.VARCHAR) { - str = rs.getString(startIndex); - } else if (type == Types.CLOB) { - Clob clob = rs.getClob(startIndex); - str = clob != null ? clob.getSubString(1, (int) clob.length()) : null; + String str = rs.getString(startIndex); + if (str != null) { + return Wkt.newWktDecoder(Wkt.Dialect.POSTGIS_EWKT_1).decode(str); } else { - throw new IllegalStateException("Unsupported type " + type); + return null; } - return str != null ? decoder.decode(str) : null; } @Override public void setValue(PreparedStatement st, int startIndex, Geometry value) throws SQLException { - String str = encoder.encode(value); - if (type == Types.VARCHAR) { - st.setString(startIndex, str); - } else if (type == Types.CLOB) { - st.setString(startIndex, str); -// throw new UnsupportedOperationException(); - } else { - throw new IllegalStateException("Unsupported type " + type); - } + String str = Wkt.newWktEncoder(Wkt.Dialect.POSTGIS_EWKT_1).encode(value); + st.setString(startIndex, str); } } diff --git a/querydsl-sql/src/test/java/com/mysema/query/Connections.java b/querydsl-sql/src/test/java/com/mysema/query/Connections.java index 56048eb2e..71539b904 100644 --- a/querydsl-sql/src/test/java/com/mysema/query/Connections.java +++ b/querydsl-sql/src/test/java/com/mysema/query/Connections.java @@ -667,7 +667,9 @@ public final class Connections { // shapes dropTable(templates, "SHAPES"); - stmt.execute("create table \"SHAPES\" (\"ID\" int not null primary key, \"GEOMETRY\" geography(POINT,4326))"); +// stmt.execute("create table \"SHAPES\" (\"ID\" int not null primary key, \"GEOMETRY\" geography(POINT,4326))"); + stmt.execute("create table \"SHAPES\" (\"ID\" int not null primary key)"); + stmt.execute("select AddGeometryColumn('SHAPES', 'GEOMETRY', -1, 'POINT', 2)"); stmt.execute("insert into \"SHAPES\" values (1, 'Point(2 2)')"); stmt.execute("insert into \"SHAPES\" values (2, 'Point(8 7)')"); stmt.execute("insert into \"SHAPES\" values (3, 'Point(1 9)')"); diff --git a/querydsl-sql/src/test/java/com/mysema/query/SpatialBase.java b/querydsl-sql/src/test/java/com/mysema/query/SpatialBase.java index a639f7d88..2fd6efdb8 100644 --- a/querydsl-sql/src/test/java/com/mysema/query/SpatialBase.java +++ b/querydsl-sql/src/test/java/com/mysema/query/SpatialBase.java @@ -16,7 +16,7 @@ import org.junit.Test; import com.google.common.collect.Lists; import com.mysema.query.spatial.PointExpression; import com.mysema.query.spatial.path.PointPath; -import com.mysema.query.sql.TeradataTemplates; +import com.mysema.query.sql.PostgresTemplates; import com.mysema.query.sql.spatial.QShapes; import com.mysema.query.sql.spatial.Shapes; import com.mysema.query.types.ConstantImpl; @@ -27,9 +27,10 @@ public class SpatialBase extends AbstractBaseTest { // TEMPORARY @BeforeClass public static void setUp() throws Exception { - Connections.initTeradata(); - Connections.setTemplates(TeradataTemplates.builder().newLineToSingleSpace().build()); -// Connections.setTemplates(PostgresTemplates.builder().quote().newLineToSingleSpace().build()); +// Connections.initTeradata(); +// Connections.setTemplates(TeradataTemplates.builder().newLineToSingleSpace().build()); + Connections.initPostgres(); + Connections.setTemplates(PostgresTemplates.builder().quote().newLineToSingleSpace().build()); } // TEMPORARY diff --git a/querydsl-sql/src/test/java/com/mysema/query/sql/spatial/QShapes.java b/querydsl-sql/src/test/java/com/mysema/query/sql/spatial/QShapes.java index 682062de7..76a18cc93 100644 --- a/querydsl-sql/src/test/java/com/mysema/query/sql/spatial/QShapes.java +++ b/querydsl-sql/src/test/java/com/mysema/query/sql/spatial/QShapes.java @@ -21,7 +21,7 @@ public class QShapes extends com.mysema.query.sql.RelationalPathBase { private static final long serialVersionUID = 563213127; - public static final QShapes shapes = new QShapes("shapes"); + public static final QShapes shapes = new QShapes("SHAPES"); public final GeometryPath geometry = add(new GeometryPath(Geometry.class, PathMetadataFactory.forProperty(this, "geometry"))); @@ -31,7 +31,7 @@ public class QShapes extends com.mysema.query.sql.RelationalPathBase { public final com.mysema.query.sql.PrimaryKey shapesPkey = createPrimaryKey(id); public QShapes(String variable) { - super(Shapes.class, forVariable(variable), "public", "shapes"); + super(Shapes.class, forVariable(variable), "PUBLIC", "SHAPES"); addMetadata(); } @@ -41,18 +41,18 @@ public class QShapes extends com.mysema.query.sql.RelationalPathBase { } public QShapes(Path path) { - super(path.getType(), path.getMetadata(), "public", "shapes"); + super(path.getType(), path.getMetadata(), "PUBLIC", "SHAPES"); addMetadata(); } public QShapes(PathMetadata metadata) { - super(Shapes.class, metadata, "public", "shapes"); + super(Shapes.class, metadata, "PUBLIC", "SHAPES"); addMetadata(); } public void addMetadata() { - addMetadata(geometry, ColumnMetadata.named("geometry").ofType(1111).withSize(2147483647)); - addMetadata(id, ColumnMetadata.named("id").ofType(4).withSize(10).notNull()); + addMetadata(geometry, ColumnMetadata.named("GEOMETRY").ofType(1111).withSize(2147483647)); + addMetadata(id, ColumnMetadata.named("ID").ofType(4).withSize(10).notNull()); } } diff --git a/querydsl-sql/src/test/java/com/mysema/query/suites/SpatialTest.java b/querydsl-sql/src/test/java/com/mysema/query/suites/SpatialTest.java index 533f872fd..e920f9ee5 100644 --- a/querydsl-sql/src/test/java/com/mysema/query/suites/SpatialTest.java +++ b/querydsl-sql/src/test/java/com/mysema/query/suites/SpatialTest.java @@ -28,7 +28,7 @@ public class SpatialTest { @Test public void test() throws SQLException { Statement stmt = Connections.getStatement(); - ResultSet rs = stmt.executeQuery("select geometry from SHAPES"); + ResultSet rs = stmt.executeQuery("select \"GEOMETRY\" from \"SHAPES\""); try { while (rs.next()) { System.err.println(rs.getObject(1).getClass().getName());