This is an automated email from the ASF dual-hosted git repository.
jhyde pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/main by this push:
new 765bec45f8 [CALCITE-5276] Implicitly convert CHAR and VARCHAR values
to GEOMETRY
765bec45f8 is described below
commit 765bec45f8f311a72b846224fe37c9e836220a3a
Author: Bertil Chapuis <[email protected]>
AuthorDate: Sun Sep 11 02:09:37 2022 +0200
[CALCITE-5276] Implicitly convert CHAR and VARCHAR values to GEOMETRY
Close apache/calcite#2905
---
.../adapter/enumerable/RexToLixTranslator.java | 12 +-
.../apache/calcite/runtime/SpatialTypeUtils.java | 2 +-
.../org/apache/calcite/sql/type/ReturnTypes.java | 6 +
.../calcite/sql/type/SqlTypeAssignmentRule.java | 6 +-
.../calcite/sql/type/SqlTypeCoercionRule.java | 6 +
.../org/apache/calcite/sql/type/SqlTypeFamily.java | 2 +-
.../org/apache/calcite/sql/type/SqlTypeName.java | 3 +
.../apache/calcite/sql/type/SqlTypeTransforms.java | 1 +
.../org/apache/calcite/sql/type/SqlTypeUtil.java | 4 +-
.../validate/implicit/AbstractTypeCoercion.java | 4 +
.../org/apache/calcite/util/BuiltInMethod.java | 2 +-
.../calcite/runtime/SpatialTypeUtilsTest.java | 7 +
.../apache/calcite/sql/type/SqlTypeFixture.java | 2 +
.../org/apache/calcite/test/TypeCoercionTest.java | 13 +
core/src/test/resources/sql/spatial.iq | 468 ++++++++++-----------
site/_docs/reference.md | 35 +-
16 files changed, 293 insertions(+), 280 deletions(-)
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java
index 5f2593011f..b958f06744 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java
@@ -272,6 +272,16 @@ public class RexToLixTranslator implements
RexVisitor<RexToLixTranslator.Result>
case ANY:
convert = operand;
break;
+ case GEOMETRY:
+ switch (sourceType.getSqlTypeName()) {
+ case CHAR:
+ case VARCHAR:
+ convert = Expressions.call(BuiltInMethod.ST_GEOM_FROM_EWKT.method,
operand);
+ break;
+ default:
+ break;
+ }
+ break;
case DATE:
convert = translateCastToDate(sourceType, operand);
break;
@@ -805,7 +815,7 @@ public class RexToLixTranslator implements
RexVisitor<RexToLixTranslator.Result>
final Geometry geom = requireNonNull(literal.getValueAs(Geometry.class),
() -> "getValueAs(Geometries.Geom) for " + literal);
final String wkt = SpatialTypeFunctions.ST_AsWKT(geom);
- return Expressions.call(null, BuiltInMethod.ST_GEOM_FROM_TEXT.method,
+ return Expressions.call(null, BuiltInMethod.ST_GEOM_FROM_EWKT.method,
Expressions.constant(wkt));
case SYMBOL:
value2 = requireNonNull(literal.getValueAs(Enum.class),
diff --git
a/core/src/main/java/org/apache/calcite/runtime/SpatialTypeUtils.java
b/core/src/main/java/org/apache/calcite/runtime/SpatialTypeUtils.java
index 5a5dba34cf..49320220c5 100644
--- a/core/src/main/java/org/apache/calcite/runtime/SpatialTypeUtils.java
+++ b/core/src/main/java/org/apache/calcite/runtime/SpatialTypeUtils.java
@@ -163,7 +163,7 @@ public class SpatialTypeUtils {
* @return a geometry
*/
public static Geometry fromEwkt(String ewkt) {
- Pattern pattern = Pattern.compile("^(?:srid:(\\d*);)?(.*)$");
+ Pattern pattern = Pattern.compile("^(?:srid:(\\d*);)?(.*)$",
Pattern.DOTALL);
java.util.regex.Matcher matcher = pattern.matcher(ewkt);
if (!matcher.matches()) {
throw new RuntimeException("Unable to parse EWKT");
diff --git a/core/src/main/java/org/apache/calcite/sql/type/ReturnTypes.java
b/core/src/main/java/org/apache/calcite/sql/type/ReturnTypes.java
index 99750c535b..4aede093be 100644
--- a/core/src/main/java/org/apache/calcite/sql/type/ReturnTypes.java
+++ b/core/src/main/java/org/apache/calcite/sql/type/ReturnTypes.java
@@ -522,6 +522,12 @@ public abstract class ReturnTypes {
public static final SqlReturnTypeInference TO_MAP =
ARG0.andThen(SqlTypeTransforms.TO_MAP);
+ /**
+ * Type-inference strategy that always returns GEOMETRY.
+ */
+ public static final SqlReturnTypeInference GEOMETRY =
+ explicit(SqlTypeName.GEOMETRY);
+
/**
* Type-inference strategy whereby the result type of a call is
* {@link #ARG0_INTERVAL_NULLABLE} and {@link #LEAST_RESTRICTIVE}. These
rules
diff --git
a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeAssignmentRule.java
b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeAssignmentRule.java
index c345105b5b..41791da14f 100644
--- a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeAssignmentRule.java
+++ b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeAssignmentRule.java
@@ -181,7 +181,11 @@ public class SqlTypeAssignmentRule implements
SqlTypeMappingRule {
EnumSet.of(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE));
// GEOMETRY is assignable from ...
- rules.add(SqlTypeName.GEOMETRY, EnumSet.of(SqlTypeName.GEOMETRY));
+ rule.clear();
+ rule.add(SqlTypeName.GEOMETRY);
+ rule.add(SqlTypeName.CHAR);
+ rule.add(SqlTypeName.VARCHAR);
+ rules.add(SqlTypeName.GEOMETRY, rule);
// ARRAY is assignable from ...
rules.add(SqlTypeName.ARRAY, EnumSet.of(SqlTypeName.ARRAY));
diff --git
a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeCoercionRule.java
b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeCoercionRule.java
index 4d01356311..7a01fdae97 100644
--- a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeCoercionRule.java
+++ b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeCoercionRule.java
@@ -266,6 +266,12 @@ public class SqlTypeCoercionRule implements
SqlTypeMappingRule {
.addAll(SqlTypeName.NUMERIC_TYPES)
.build());
+ // GEOMETRY is castable from ...
+ coerceRules.add(SqlTypeName.GEOMETRY,
+ coerceRules.copyValues(SqlTypeName.GEOMETRY)
+ .addAll(SqlTypeName.CHAR_TYPES)
+ .build());
+
INSTANCE = new SqlTypeCoercionRule(coerceRules.map);
}
diff --git a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java
b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java
index d7a185ef23..7c45e017bd 100644
--- a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java
+++ b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java
@@ -200,7 +200,7 @@ public enum SqlTypeFamily implements RelDataTypeFamily {
case DATETIME_INTERVAL:
return SqlTypeName.INTERVAL_TYPES;
case GEO:
- return ImmutableList.of(SqlTypeName.GEOMETRY);
+ return SqlTypeName.GEOMETRY_TYPES;
case MULTISET:
return ImmutableList.of(SqlTypeName.MULTISET);
case ARRAY:
diff --git a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeName.java
b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeName.java
index 47c57ad6e2..1392442d3a 100644
--- a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeName.java
+++ b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeName.java
@@ -187,6 +187,9 @@ public enum SqlTypeName {
public static final List<SqlTypeName> STRING_TYPES =
combine(CHAR_TYPES, BINARY_TYPES);
+ public static final List<SqlTypeName> GEOMETRY_TYPES =
+ ImmutableList.of(GEOMETRY);
+
public static final List<SqlTypeName> DATETIME_TYPES =
ImmutableList.of(DATE, TIME, TIME_WITH_LOCAL_TIME_ZONE,
TIMESTAMP, TIMESTAMP_WITH_LOCAL_TIME_ZONE);
diff --git
a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeTransforms.java
b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeTransforms.java
index c6fce21756..66156157d4 100644
--- a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeTransforms.java
+++ b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeTransforms.java
@@ -227,4 +227,5 @@ public abstract class SqlTypeTransforms {
assert fields.size() == 1;
return fields.get(0).getType();
};
+
}
diff --git a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
index 23d04b0328..5546dc6ee9 100644
--- a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
+++ b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
@@ -1086,7 +1086,9 @@ public abstract class SqlTypeUtil {
assert typeName != null;
final SqlTypeNameSpec typeNameSpec;
- if (isAtomic(type) || isNull(type) || type.getSqlTypeName() ==
SqlTypeName.UNKNOWN) {
+ if (isAtomic(type) || isNull(type)
+ || type.getSqlTypeName() == SqlTypeName.UNKNOWN
+ || type.getSqlTypeName() == SqlTypeName.GEOMETRY) {
int precision = typeName.allowsPrec() ? type.getPrecision() : -1;
// fix up the precision.
if (maxPrecision > 0 && precision > maxPrecision) {
diff --git
a/core/src/main/java/org/apache/calcite/sql/validate/implicit/AbstractTypeCoercion.java
b/core/src/main/java/org/apache/calcite/sql/validate/implicit/AbstractTypeCoercion.java
index bf27dad3f5..d4ca0eae29 100644
---
a/core/src/main/java/org/apache/calcite/sql/validate/implicit/AbstractTypeCoercion.java
+++
b/core/src/main/java/org/apache/calcite/sql/validate/implicit/AbstractTypeCoercion.java
@@ -719,6 +719,10 @@ public abstract class AbstractTypeCoercion implements
TypeCoercion {
|| expected == SqlTypeFamily.CHARACTER)) {
return expected.getDefaultConcreteType(factory);
}
+ // CHAR -> GEOMETRY
+ if (SqlTypeUtil.isCharacter(in) && expected == SqlTypeFamily.GEO) {
+ return expected.getDefaultConcreteType(factory);
+ }
return null;
}
}
diff --git a/core/src/main/java/org/apache/calcite/util/BuiltInMethod.java
b/core/src/main/java/org/apache/calcite/util/BuiltInMethod.java
index 2c3c2d9ba1..482e87c047 100644
--- a/core/src/main/java/org/apache/calcite/util/BuiltInMethod.java
+++ b/core/src/main/java/org/apache/calcite/util/BuiltInMethod.java
@@ -393,7 +393,7 @@ public enum BuiltInMethod {
IS_JSON_OBJECT(JsonFunctions.class, "isJsonObject", String.class),
IS_JSON_ARRAY(JsonFunctions.class, "isJsonArray", String.class),
IS_JSON_SCALAR(JsonFunctions.class, "isJsonScalar", String.class),
- ST_GEOM_FROM_TEXT(SpatialTypeFunctions.class, "ST_GeomFromText",
String.class),
+ ST_GEOM_FROM_EWKT(SpatialTypeFunctions.class, "ST_GeomFromEWKT",
String.class),
INITCAP(SqlFunctions.class, "initcap", String.class),
SUBSTRING(SqlFunctions.class, "substring", String.class, int.class,
int.class),
diff --git
a/core/src/test/java/org/apache/calcite/runtime/SpatialTypeUtilsTest.java
b/core/src/test/java/org/apache/calcite/runtime/SpatialTypeUtilsTest.java
index 4cae60670f..1d0099fde2 100644
--- a/core/src/test/java/org/apache/calcite/runtime/SpatialTypeUtilsTest.java
+++ b/core/src/test/java/org/apache/calcite/runtime/SpatialTypeUtilsTest.java
@@ -37,6 +37,13 @@ class SpatialTypeUtilsTest {
assertEquals(1234, g2.getSRID());
assertEquals(1, g2.getCoordinate().getX());
assertEquals(2, g2.getCoordinate().getY());
+
+ Geometry g3 = SpatialTypeUtils.fromEwkt("GEOMETRYCOLLECTION(\n"
+ + " POLYGON((0 0, 3 -1, 1.5 2, 0 0)),\n"
+ + " POLYGON((2 0, 3 3, 4 2, 2 0)),\n"
+ + " POINT(5 6),\n"
+ + " LINESTRING(1 1, 1 6))");
+ assertEquals(g3.getSRID(), 0);
}
@Test void testAsEwkt() {
diff --git a/core/src/test/java/org/apache/calcite/sql/type/SqlTypeFixture.java
b/core/src/test/java/org/apache/calcite/sql/type/SqlTypeFixture.java
index 05fa8fed58..11c9503032 100644
--- a/core/src/test/java/org/apache/calcite/sql/type/SqlTypeFixture.java
+++ b/core/src/test/java/org/apache/calcite/sql/type/SqlTypeFixture.java
@@ -52,6 +52,8 @@ class SqlTypeFixture {
typeFactory.createSqlType(SqlTypeName.FLOAT), false);
final RelDataType sqlTimestamp = typeFactory.createTypeWithNullability(
typeFactory.createSqlType(SqlTypeName.TIMESTAMP, 3), false);
+ final RelDataType sqlGeometry = typeFactory.createTypeWithNullability(
+ typeFactory.createSqlType(SqlTypeName.GEOMETRY), false);
final RelDataType arrayFloat = typeFactory.createTypeWithNullability(
typeFactory.createArrayType(sqlFloat, -1), false);
final RelDataType arrayBigInt = typeFactory.createTypeWithNullability(
diff --git a/core/src/test/java/org/apache/calcite/test/TypeCoercionTest.java
b/core/src/test/java/org/apache/calcite/test/TypeCoercionTest.java
index 8310dc5497..26829f8b5d 100644
--- a/core/src/test/java/org/apache/calcite/test/TypeCoercionTest.java
+++ b/core/src/test/java/org/apache/calcite/test/TypeCoercionTest.java
@@ -512,6 +512,7 @@ class TypeCoercionTest {
builder.add(type);
}
}
+ builder.addAll(f.geometryTypes);
f.checkShouldCast(checkedType10, builder.build());
f.shouldCast(checkedType10, SqlTypeFamily.DECIMAL,
SqlTypeUtil.getMaxPrecisionScaleDecimal(f.typeFactory));
@@ -630,6 +631,7 @@ class TypeCoercionTest {
final ImmutableList<RelDataType> charTypes;
final ImmutableList<RelDataType> binaryTypes;
final ImmutableList<RelDataType> booleanTypes;
+ final ImmutableList<RelDataType> geometryTypes;
// single types
final RelDataType nullType;
@@ -649,6 +651,7 @@ class TypeCoercionTest {
final RelDataType charType;
final RelDataType varcharType;
final RelDataType varchar20Type;
+ final RelDataType geometryType;
/** Creates a Fixture. */
public static Fixture create(SqlTestFactory testFactory) {
@@ -679,6 +682,7 @@ class TypeCoercionTest {
charType = this.typeFactory.createSqlType(SqlTypeName.CHAR);
varcharType = this.typeFactory.createSqlType(SqlTypeName.VARCHAR);
varchar20Type = this.typeFactory.createSqlType(SqlTypeName.VARCHAR, 20);
+ geometryType = this.typeFactory.createSqlType(SqlTypeName.GEOMETRY);
// Initialize category types
@@ -700,6 +704,9 @@ class TypeCoercionTest {
for (SqlTypeName typeName : SqlTypeName.BOOLEAN_TYPES) {
builder3.add(this.typeFactory.createSqlType(typeName));
}
+ for (SqlTypeName typeName : SqlTypeName.GEOMETRY_TYPES) {
+ builder3.add(this.typeFactory.createSqlType(typeName));
+ }
atomicTypes = builder3.build();
// COMPLEX
ImmutableList.Builder<RelDataType> builder4 = ImmutableList.builder();
@@ -735,6 +742,12 @@ class TypeCoercionTest {
builder8.add(this.typeFactory.createSqlType(typeName));
}
booleanTypes = builder8.build();
+ // GEOMETRY
+ ImmutableList.Builder<RelDataType> builder9 = ImmutableList.builder();
+ for (SqlTypeName typeName : SqlTypeName.GEOMETRY_TYPES) {
+ builder9.add(this.typeFactory.createSqlType(typeName));
+ }
+ geometryTypes = builder9.build();
}
public Fixture withTypeFactory(RelDataTypeFactory typeFactory) {
diff --git a/core/src/test/resources/sql/spatial.iq
b/core/src/test/resources/sql/spatial.iq
index 892980e228..827084cc21 100644
--- a/core/src/test/resources/sql/spatial.iq
+++ b/core/src/test/resources/sql/spatial.iq
@@ -37,43 +37,43 @@ C
#### Geometry conversion functions (2D)
# ST_AsBinary(geom) Geometry to WKB
-SELECT ST_AsBinary(ST_GeomFromText('LINESTRING (1 2, 3 4)'));
+SELECT ST_AsBinary('LINESTRING (1 2, 3 4)');
EXPR$0
0000000002000000023ff0000000000000400000000000000040080000000000004010000000000000
!ok
# ST_AsEWKT(geom) Geometry to EWKT
-SELECT ST_AsEWKT(ST_GeomFromText('LINESTRING (1 2, 3 4)'));
+SELECT ST_AsEWKT('LINESTRING (1 2, 3 4)');
EXPR$0
srid:0;LINESTRING (1 2, 3 4)
!ok
# ST_AsGeoJSON(geom) Geometry to GeoJSON
-SELECT ST_AsGeoJSON(ST_GeomFromText('LINESTRING (1 2, 3 4)'));
+SELECT ST_AsGeoJSON('LINESTRING (1 2, 3 4)');
EXPR$0
{"type":"LineString","coordinates":[[1,2],[3,4]],"crs":{"type":"name","properties":{"name":"EPSG:0"}}}
!ok
# ST_AsGML(geom) Geometry to GML
-SELECT ST_AsGML(ST_GeomFromText('LINESTRING (1 2, 3 4)'));
+SELECT ST_AsGML('LINESTRING (1 2, 3 4)');
EXPR$0
<gml:LineString><gml:coordinates>1.0,2.0 3.0,4.0
</gml:coordinates></gml:LineString>
!ok
# ST_AsText(geom) Alias for `ST_AsWKT`
-SELECT ST_AsText(ST_GeomFromText('POINT(-71.064544 42.28787)'));
+SELECT ST_AsText('POINT(-71.064544 42.28787)');
EXPR$0
POINT (-71.064544 42.28787)
!ok
# ST_AsWKT(geom) Converts *geom* → Well-Known Text
-SELECT ST_AsWKT(ST_GeomFromText('POINT(-71.064544 42.28787)'));
+SELECT ST_AsWKT('POINT(-71.064544 42.28787)');
EXPR$0
POINT (-71.064544 42.28787)
!ok
# ST_AsEWKB(geom) Geometry to WKB
-SELECT ST_AsWKB(ST_GeomFromText('LINESTRING (1 2, 3 4)'));
+SELECT ST_AsWKB('LINESTRING (1 2, 3 4)');
EXPR$0
0000000002000000023ff0000000000000400000000000000040080000000000004010000000000000
!ok
@@ -95,17 +95,17 @@ null
# ST_Force2D(geom) 3D Geometry to 2D Geometry
-SELECT ST_AsText(ST_Force2D(ST_GeomFromText('POINT(-10 10)')));
+SELECT ST_AsText(ST_Force2D('POINT(-10 10)'));
EXPR$0
POINT (-10 10)
!ok
-SELECT ST_AsText(ST_Force2D(ST_GeomFromText('POINT(-10 10 6)')));
+SELECT ST_AsText(ST_Force2D('POINT(-10 10 6)'));
EXPR$0
POINT (-10 10)
!ok
-SELECT ST_AsText(ST_Force2D(ST_GeomFromText('LINESTRING(-10 10 2, 10 10 3)')));
+SELECT ST_AsText(ST_Force2D('LINESTRING(-10 10 2, 10 10 3)'));
EXPR$0
LINESTRING (-10 10, 10 10)
!ok
@@ -213,13 +213,13 @@ GEOMETRYCOLLECTION EMPTY
!ok
# ST_GeomFromWKB(wkb) WKB to Geometry
-SELECT ST_GeomFromWKB(ST_AsWKB(ST_GeomFromText('LINESTRING (1 2, 3 4)')));
+SELECT ST_GeomFromWKB(ST_AsWKB('LINESTRING (1 2, 3 4)'));
EXPR$0
LINESTRING (1 2, 3 4)
!ok
# ST_GeomFromWKB(wkb, srid) WKB to Geometry
-SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsWKB(ST_GeomFromText('LINESTRING (1 2, 3
4)')), 4326));
+SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsWKB('LINESTRING (1 2, 3 4)'), 4326));
EXPR$0
srid:4326;LINESTRING (1 2, 3 4)
!ok
@@ -304,46 +304,46 @@ POLYGON ((0 0, 0 1, 1 1, 0 0))
# ST_ToMultiLine(geom) Converts the coordinates of *geom* (which may be a
geometry-collection) into a multi-line-string
-SELECT ST_ToMultiLine(ST_GeomFromText('POLYGON((0 0, 10 0, 10 6, 0 6, 0 0), (1
1, 2 1, 2 5, 1 5, 1 1))'));
+SELECT ST_ToMultiLine('POLYGON((0 0, 10 0, 10 6, 0 6, 0 0), (1 1, 2 1, 2 5, 1
5, 1 1))');
EXPR$0
MULTILINESTRING ((0 0, 10 0, 10 6, 0 6, 0 0), (1 1, 2 1, 2 5, 1 5, 1 1))
!ok
-SELECT ST_ToMultiLine(ST_GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 4 3, 10
7 9, 12 9 22), POLYGON((1 1 -1, 3 1 0, 3 2 1, 1 2 2, 1 1 -1)))'));
+SELECT ST_ToMultiLine('GEOMETRYCOLLECTION(LINESTRING(1 4 3, 10 7 9, 12 9 22),
POLYGON((1 1 -1, 3 1 0, 3 2 1, 1 2 2, 1 1 -1)))');
EXPR$0
MULTILINESTRING ((1 4, 10 7, 12 9), (1 1, 3 1, 3 2, 1 2, 1 1))
!ok
# ST_ToMultiPoint(geom)) Converts the coordinates of *geom* (which may be a
geometry-collection) into a multi-point
-SELECT ST_ToMultiPoint(ST_GeomFromText('POINT(5 5)'));
+SELECT ST_ToMultiPoint('POINT(5 5)');
EXPR$0
MULTIPOINT ((5 5))
!ok
-SELECT ST_ToMultiPoint(ST_GeomFromText('MULTIPOINT(5 5, 1 2, 3 4, 99 3)'));
+SELECT ST_ToMultiPoint('MULTIPOINT(5 5, 1 2, 3 4, 99 3)');
EXPR$0
MULTIPOINT ((5 5), (1 2), (3 4), (99 3))
!ok
-SELECT ST_ToMultiPoint(ST_GeomFromText('LINESTRING(5 5, 1 2, 3 4, 1 5)'));
+SELECT ST_ToMultiPoint('LINESTRING(5 5, 1 2, 3 4, 1 5)');
EXPR$0
MULTIPOINT ((5 5), (1 2), (3 4), (1 5))
!ok
# ST_ToMultiSegments(geom) Converts *geom* (which may be a
geometry-collection) into a set of distinct segments stored in a
multi-line-string
-SELECT ST_ToMultiSegments(ST_GeomFromText('LINESTRING(5 4, 1 1, 3 4, 4 5)'));
+SELECT ST_ToMultiSegments('LINESTRING(5 4, 1 1, 3 4, 4 5)');
EXPR$0
MULTILINESTRING ((5 4, 1 1), (1 1, 3 4), (3 4, 4 5))
!ok
-SELECT ST_ToMultiSegments(ST_GeomFromText('MULTILINESTRING((1 4 3, 15 7 9, 16
17 22), (0 0 0, 1 0 0, 1 2 0, 0 2 1))'));
+SELECT ST_ToMultiSegments('MULTILINESTRING((1 4 3, 15 7 9, 16 17 22), (0 0 0,
1 0 0, 1 2 0, 0 2 1))');
EXPR$0
MULTILINESTRING ((1 4, 15 7), (15 7, 16 17), (0 0, 1 0), (1 0, 1 2), (1 2, 0
2))
!ok
-SELECT ST_ToMultiSegments(ST_GeomFromText('POLYGON((0 0, 10 0, 10 6, 0 6, 0
0), (1 1, 2 1, 2 5, 1 5, 1 1))'));
+SELECT ST_ToMultiSegments('POLYGON((0 0, 10 0, 10 6, 0 6, 0 0), (1 1, 2 1, 2
5, 1 5, 1 1))');
EXPR$0
MULTILINESTRING ((0 0, 10 0), (10 0, 10 6), (10 6, 0 6), (0 6, 0 0), (1 1, 2
1), (2 1, 2 5), (2 5, 1 5), (1 5, 1 1))
!ok
@@ -352,62 +352,62 @@ MULTILINESTRING ((0 0, 10 0), (10 0, 10 6), (10 6, 0 6),
(0 6, 0 0), (1 1, 2 1),
# ST_Force3D(geom) 2D Geometry to 3D Geometry
-SELECT ST_AsText(ST_Force3D(ST_GeomFromText('POINT(-10 10 6)')));
+SELECT ST_AsText(ST_Force3D('POINT(-10 10 6)'));
EXPR$0
POINT Z(-10 10 6)
!ok
-SELECT ST_AsText(ST_Force3D(ST_GeomFromText('POINT(-10 10)')));
+SELECT ST_AsText(ST_Force3D('POINT(-10 10)'));
EXPR$0
POINT Z(-10 10 0)
!ok
-SELECT ST_AsText(ST_Force3D(ST_GeomFromText('LINESTRING(-10 10, 10 10 3)')));
+SELECT ST_AsText(ST_Force3D('LINESTRING(-10 10, 10 10)'));
EXPR$0
-LINESTRING Z(-10 10 0, 10 10 3)
+LINESTRING Z(-10 10 0, 10 10 0)
!ok
#### Geometry creation functions (2D)
# ST_BoundingCircle(geom) Returns the minimum bounding circle of *geom*
-SELECT roundGeom(ST_asText(ST_BoundingCircle(ST_GeomFromText('POLYGON((1 1, 1
4, 4 4, 4 1, 1 1))'))), 2);
+SELECT roundGeom(ST_asText(ST_BoundingCircle('POLYGON((1 1, 1 4, 4 4, 4 1, 1
1))')), 2);
EXPR$0
POLYGON ((4.63 2.5, 4.59 2.09, 4.46 1.69, 4.27 1.33, 4 1.01, 3.68 0.74, 3.32
0.55, 2.92 0.42, 2.5 0.38, 2.09 0.42, 1.69 0.55, 1.33 0.74, 1.01 1, 0.74 1.33,
0.55 1.69, 0.42 2.09, 0.38 2.50, 0.42 2.92, 0.55 3.32, 0.74 3.68, 1.00 4, 1.33
4.27, 1.69 4.46, 2.09 4.59, 2.50 4.63, 2.92 4.59, 3.32 4.46, 3.68 4.27, 4.00 4,
4.27 3.68, 4.46 3.32, 4.59 2.92, 4.63 2.5))
!ok
-SELECT roundGeom(ST_asText(ST_BoundingCircle(ST_GeomFromText('MULTIPOINT((1
1), (4 2))'))), 2);
+SELECT roundGeom(ST_asText(ST_BoundingCircle('MULTIPOINT((1 1), (4 2))')), 2);
EXPR$0
POLYGON ((4.09 1.5, 4.06 1.20, 3.97 0.90, 3.82 0.63, 3.62 0.39, 3.38 0.19,
3.11 0.04, 2.81 -0.06, 2.5 -0.09, 2.20 -0.06, 1.90 0.04, 1.63 0.19, 1.39 0.39,
1.19 0.63, 1.04 0.90, 0.95 1.20, 0.92 1.50, 0.95 1.81, 1.04 2.11, 1.19 2.38,
1.39 2.62, 1.63 2.82, 1.90 2.97, 2.20 3.06, 2.50 3.09, 2.81 3.06, 3.11 2.97,
3.38 2.82, 3.62 2.62, 3.82 2.38, 3.97 2.11, 4.06 1.81, 4.09 1.5))
!ok
-SELECT roundGeom(ST_asText(ST_BoundingCircle(ST_GeomFromText('LINESTRING(1 1,
4 5, 3 2)'))), 2);
+SELECT roundGeom(ST_asText(ST_BoundingCircle('LINESTRING(1 1, 4 5, 3 2)')), 2);
EXPR$0
POLYGON ((5 3, 4.96 2.52, 4.81 2.05, 4.58 1.62, 4.27 1.24, 3.89 0.93, 3.46
0.70, 2.99 0.55, 2.5 0.5, 2.02 0.55, 1.55 0.70, 1.12 0.93, 0.74 1.24, 0.43
1.62, 0.20 2.05, 0.05 2.52, 0 3.00, 0.05 3.49, 0.20 3.96, 0.43 4.39, 0.74 4.77,
1.12 5.08, 1.55 5.31, 2.02 5.46, 2.50 5.5, 2.99 5.46, 3.46 5.31, 3.89 5.08,
4.27 4.77, 4.58 4.39, 4.81 3.96, 4.96 3.49, 5 3))
!ok
# ST_Expand(geom, distance) Expands *geom*'s envelope
-SELECT ST_Expand(ST_GeomFromText('POINT(1 1)'), 1);
+SELECT ST_Expand('POINT(1 1)', 1);
EXPR$0
POLYGON ((0 0, 0 2, 2 2, 2 0, 0 0))
!ok
# ST_Expand(geom, deltaX, deltaY) Expands *geom*'s envelope
-SELECT ST_Expand(ST_GeomFromText('POINT(4 4)'), 5, 2);
+SELECT ST_Expand('POINT(4 4)', 5, 2);
EXPR$0
POLYGON ((-1 2, -1 6, 9 6, 9 2, -1 2))
!ok
-SELECT ST_Expand(ST_GeomFromText('LINESTRING(3 2, 7 5, 2 7)'), 2, 1);
+SELECT ST_Expand('LINESTRING(3 2, 7 5, 2 7)', 2, 1);
EXPR$0
POLYGON ((0 1, 0 8, 9 8, 9 1, 0 1))
!ok
# ST_MakeEllipse(point, width, height) Constructs an ellipse
-SELECT roundGeom(ST_AsText(ST_MakeEllipse(ST_GeomFromText('POINT(5 5)'), 2,
5)), 2);
+SELECT roundGeom(ST_AsText(ST_MakeEllipse('POINT(5 5)', 2, 5)), 2);
EXPR$0
POLYGON ((6 5, 6.00 5.16, 6.00 5.32, 5.99 5.47, 5.97 5.63, 5.96 5.78, 5.93
5.93, 5.91 6.07, 5.88 6.21, 5.85 6.34, 5.81 6.47, 5.78 6.60, 5.73 6.72, 5.69
6.83, 5.64 6.93, 5.59 7.03, 5.54 7.12, 5.49 7.20, 5.43 7.27, 5.37 7.33, 5.31
7.38, 5.25 7.43, 5.19 7.46, 5.13 7.49, 5.07 7.50, 5 7.5, 4.94 7.50, 4.88 7.49,
4.82 7.46, 4.76 7.43, 4.70 7.38, 4.64 7.33, 4.58 7.27, 4.52 7.20, 4.47 7.12,
4.42 7.03, 4.37 6.93, 4.32 6.83, 4.28 6.72, 4.23 6.60, 4.20 6.47, 4.16 6.34,
4.13 6.21, 4.10 6.07, 4.08 5.9 [...]
!ok
@@ -510,47 +510,47 @@ Greenland, POINT (-42.604303 71.706936)
# ST_MakePolygon(lineString [, hole ]*) Creates a polygon from *lineString*
with the given holes (which are required to be closed line-strings)
-SELECT ST_MakePolygon(ST_GeomFromText('LINESTRING(100 250, 100 350, 200 350,
200 250, 100 250)'));
+SELECT ST_MakePolygon('LINESTRING(100 250, 100 350, 200 350, 200 250, 100
250)');
EXPR$0
POLYGON ((100 250, 100 350, 200 350, 200 250, 100 250))
!ok
-SELECT ST_MakePolygon(ST_GeomFromText('LINESTRING(0 5, 4 5, 4 0, 0 0, 0 5)'),
ST_GeomFromText('LINESTRING(1 1, 1 2, 2 2, 2 1, 1 1)'));
+SELECT ST_MakePolygon('LINESTRING(0 5, 4 5, 4 0, 0 0, 0 5)', 'LINESTRING(1 1,
1 2, 2 2, 2 1, 1 1)');
EXPR$0
POLYGON ((0 5, 4 5, 4 0, 0 0, 0 5), (1 1, 1 2, 2 2, 2 1, 1 1))
!ok
-SELECT ST_MakePolygon(ST_GeomFromText('POINT(1 1)'));
+SELECT ST_MakePolygon('POINT(1 1)');
Only supports LINESTRINGs.
!error
# ST_MinimumDiameter(geom) Returns the minimum diameter of *geom*
-SELECT ST_MinimumDiameter(ST_GeomFromText('POINT(395 278)'));
+SELECT ST_MinimumDiameter('POINT(395 278)');
EXPR$0
LINESTRING (395 278, 395 278)
!ok
-SELECT ST_MinimumDiameter(ST_GeomFromText('LINESTRING(0 0, 1 1, 3 9, 7 1)'));
+SELECT ST_MinimumDiameter('LINESTRING(0 0, 1 1, 3 9, 7 1)');
EXPR$0
LINESTRING (1 3, 7 1)
!ok
# ST_MinimumRectangle(geom) Returns the minimum rectangle enclosing *geom*
-SELECT ST_MinimumRectangle(ST_GeomFromText('MULTIPOINT((8 3), (4 6))'));
+SELECT ST_MinimumRectangle('MULTIPOINT((8 3), (4 6))');
EXPR$0
LINESTRING (4 6, 8 3)
!ok
-SELECT ST_MinimumRectangle(ST_GeomFromText('POLYGON((1 2, 3 0, 5 2, 3 2, 2 3,
1 2))'));
+SELECT ST_MinimumRectangle('POLYGON((1 2, 3 0, 5 2, 3 2, 2 3, 1 2))');
EXPR$0
POLYGON ((1.4 3.1999999999999993, 0.6 0.8, 4.2 -0.3999999999999996,
4.999999999999999 1.9999999999999993, 1.4 3.1999999999999993))
!ok
# ST_OctagonalEnvelope(geom) Returns the octogonal envelope of *geom*
-SELECT ST_OctagonalEnvelope(ST_GeomFromText('POLYGON((2 1, 1 2, 2 2, 2 4, 3 5,
3 3, 5 5, 7 2, 5 2, 6 1, 2 1))'));
+SELECT ST_OctagonalEnvelope('POLYGON((2 1, 1 2, 2 2, 2 4, 3 5, 3 3, 5 5, 7 2,
5 2, 6 1, 2 1))');
EXPR$0
POLYGON ((1 2, 1 3, 3 5, 5 5, 7 3, 7 2, 6 1, 2 1, 1 2))
!ok
@@ -572,59 +572,59 @@ POLYGON ((1 2, 1 3, 3 5, 5 5, 7 3, 7 2, 6 1, 2 1, 1 2))
#### Geometry properties (2D)
# ST_Boundary(geom [, srid ]) Returns the boundary of *geom*
-SELECT ST_AsText(ST_Boundary(ST_GeomFromText('LINESTRING(1 1,0 0, -1 1)')));
+SELECT ST_AsText(ST_Boundary('LINESTRING(1 1,0 0, -1 1)'));
EXPR$0
MULTIPOINT ((1 1), (-1 1))
!ok
-SELECT ST_AsText(ST_Boundary(ST_GeomFromText('POLYGON((1 1,0 0, -1 1, 1
1))')));
+SELECT ST_AsText(ST_Boundary('POLYGON((1 1,0 0, -1 1, 1 1))'));
EXPR$0
LINEARRING (1 1, 0 0, -1 1, 1 1)
!ok
# Using a 3d polygon
-SELECT ST_AsText(ST_Boundary(ST_GeomFromText('POLYGON Z((1 1 1,0 0 1, -1 1 1,
1 1 1))')));
+SELECT ST_AsText(ST_Boundary('POLYGON Z((1 1 1,0 0 1, -1 1 1, 1 1 1))'));
EXPR$0
LINEARRING Z(1 1 1, 0 0 1, -1 1 1, 1 1 1)
!ok
# Using a 3d multilinestring
-SELECT ST_AsText(ST_Boundary(ST_GeomFromText('MULTILINESTRING Z((1 1 1,0 0
0.5, -1 1 1),(1 1 0.5,0 0 0.5, -1 1 0.5, 1 1 0.5) )')));
+SELECT ST_AsText(ST_Boundary('MULTILINESTRING Z((1 1 1,0 0 0.5, -1 1 1),(1 1
0.5,0 0 0.5, -1 1 0.5, 1 1 0.5) )'));
EXPR$0
MULTIPOINT Z((-1 1 1), (1 1 1))
!ok
# ST_Centroid(geom) Returns the centroid of *geom* (which may be a
geometry-collection)
-SELECT ST_Centroid(ST_GeomFromText('MULTIPOINT((4 4), (1 1), (1 0), (0 3)))'));
+SELECT ST_Centroid('MULTIPOINT((4 4), (1 1), (1 0), (0 3))');
EXPR$0
POINT (1.5 2)
!ok
-SELECT ST_Centroid(ST_GeomFromText('LINESTRING(2 1, 1 3, 5 2)'));
+SELECT ST_Centroid('LINESTRING(2 1, 1 3, 5 2)');
EXPR$0
POINT (2.472556942838389 2.3241856476127962)
!ok
-SELECT ST_Centroid(ST_GeomFromText('MULTILINESTRING((1 5, 6 5), (5 1, 5 4))'));
+SELECT ST_Centroid('MULTILINESTRING((1 5, 6 5), (5 1, 5 4))');
EXPR$0
POINT (4.0625 4.0625)
!ok
-SELECT ST_Centroid(ST_GeomFromText('POLYGON((1 5, 1 2, 6 2, 3 3, 3 4, 5 6, 1
5))'));
+SELECT ST_Centroid('POLYGON((1 5, 1 2, 6 2, 3 3, 3 4, 5 6, 1 5))');
EXPR$0
POINT (2.5964912280701755 3.666666666666667)
!ok
-SELECT ST_Centroid(ST_GeomFromText('MULTIPOLYGON(((0 2, 3 2, 3 6, 0 6, 0 2)),
((5 0, 7 0, 7 1, 5 1, 5 0)))'));
+SELECT ST_Centroid('MULTIPOLYGON(((0 2, 3 2, 3 6, 0 6, 0 2)), ((5 0, 7 0, 7 1,
5 1, 5 0)))');
EXPR$0
POINT (2.142857142857143 3.5)
!ok
-SELECT ST_Centroid(ST_GeomFromText('GEOMETRYCOLLECTION(
+SELECT ST_Centroid('GEOMETRYCOLLECTION(
POLYGON((1 2, 4 2, 4 6, 1 6, 1 2)),
LINESTRING(2 6, 6 2),
- MULTIPOINT((4 4), (1 1), (1 0), (0 3)))'));
+ MULTIPOINT((4 4), (1 1), (1 0), (0 3)))');
EXPR$0
POINT (2.5 4)
!ok
@@ -635,34 +635,34 @@ POINT (2.5 4)
# ST_CoordDim(geom) Returns the dimension of the coordinates of *geom*
-SELECT ST_CoordDim(ST_GeomFromText('Point(1 2 3)'));
+SELECT ST_CoordDim('Point(1 2 3)');
EXPR$0
3
!ok
-SELECT ST_CoordDim(ST_GeomFromText('Point(1 2)'));
+SELECT ST_CoordDim('Point(1 2)');
EXPR$0
2
!ok
-SELECT ST_CoordDim(ST_GeomFromText('Point Empty'));
+SELECT ST_CoordDim('Point Empty');
EXPR$0
2
!ok
# ST_Dimension(geom) Returns the dimension of *geom*
-SELECT ST_Dimension(ST_GeomFromText('MULTIPOINT((4 4), (1 1), (1 0), (0
3)))'));
+SELECT ST_Dimension('MULTIPOINT((4 4), (1 1), (1 0), (0 3))');
EXPR$0
0
!ok
-SELECT ST_Dimension(ST_GeomFromText('LINESTRING(2 1, 1 3, 5 2)'));
+SELECT ST_Dimension('LINESTRING(2 1, 1 3, 5 2)');
EXPR$0
1
!ok
-SELECT ST_Dimension(ST_GeomFromText('MULTIPOLYGON(((0 2, 3 2, 3 6, 0 6, 0 2)),
((5 0, 7 0, 7 1, 5 1, 5 0)))'));
+SELECT ST_Dimension('MULTIPOLYGON(((0 2, 3 2, 3 6, 0 6, 0 2)), ((5 0, 7 0, 7
1, 5 1, 5 0)))');
EXPR$0
2
!ok
@@ -724,29 +724,29 @@ FROM (SELECT
# ST_EndPoint(geom) Returns the last coordinate of *geom*
-SELECT ST_EndPoint(ST_GeomFromText('MULTILINESTRING((1 1, 1 6, 2 2, -1 2))'));
+SELECT ST_EndPoint('MULTILINESTRING((1 1, 1 6, 2 2, -1 2))');
EXPR$0
POINT (-1 2)
!ok
# ST_Envelope(geom [, srid ]) Returns the envelope of *geom* (which may be a
geometry-collection) as a geometry
-SELECT ST_AsText(ST_Envelope(ST_GeomFromText('POINT(1 3)')));
+SELECT ST_AsText(ST_Envelope('POINT(1 3)'));
EXPR$0
POINT (1 3)
!ok
-SELECT ST_AsText(ST_Envelope(ST_GeomFromText('LINESTRING(0 0, 1 3)')));
+SELECT ST_AsText(ST_Envelope('LINESTRING(0 0, 1 3)'));
EXPR$0
POLYGON ((0 0, 0 3, 1 3, 1 0, 0 0))
!ok
-SELECT ST_AsText(ST_Envelope(ST_GeomFromText('POLYGON((0 0, 0 1, 1.0000001 1,
1.0000001 0, 0 0))')));
+SELECT ST_AsText(ST_Envelope('POLYGON((0 0, 0 1, 1.0000001 1, 1.0000001 0, 0
0))'));
EXPR$0
POLYGON ((0 0, 0 1, 1.0000001 1, 1.0000001 0, 0 0))
!ok
-SELECT ST_AsText(ST_Envelope(ST_GeomFromText('POLYGON((0 0, 0 1, 1.0000000001
1, 1.0000000001 0, 0 0))')));
+SELECT ST_AsText(ST_Envelope('POLYGON((0 0, 0 1, 1.0000000001 1, 1.0000000001
0, 0 0))'));
EXPR$0
POLYGON ((0 0, 0 1, 1.0000000001 1, 1.0000000001 0, 0 0))
!ok
@@ -756,47 +756,47 @@ POLYGON ((0 0, 0 1, 1.0000000001 1, 1.0000000001 0, 0 0))
# ST_Extent(geom) Returns the minimum bounding box of *geom* (which may be a
geometry-collection)
-SELECT ST_Extent(ST_GeomFromText('MULTIPOINT((5 6), (1 2), (3 4), (10 3))'));
+SELECT ST_Extent('MULTIPOINT((5 6), (1 2), (3 4), (10 3))');
EXPR$0
POLYGON ((1 2, 1 6, 10 6, 10 2, 1 2))
!ok
-SELECT ST_Extent(ST_GeomFromText('POINT(5 6)'));
+SELECT ST_Extent('POINT(5 6)');
EXPR$0
POINT (5 6)
!ok
-SELECT ST_Extent(ST_GeomFromText('GEOMETRYCOLLECTION(
+SELECT ST_Extent('GEOMETRYCOLLECTION(
POLYGON((0 0, 3 -1, 1.5 2, 0 0)),
POLYGON((2 0, 3 3, 4 2, 2 0)),
POINT(5 6),
- LINESTRING(1 1, 1 6))'));
+ LINESTRING(1 1, 1 6))');
EXPR$0
POLYGON ((0 -1, 0 6, 5 6, 5 -1, 0 -1))
!ok
# ST_ExteriorRing(polygon) Returns the exterior ring of *polygon* as a
linear-ring
-SELECT ST_ExteriorRing(ST_GeomFromText('POLYGON((0 -1, 0 2, 3 2, 3 -1, 0
-1))'));
+SELECT ST_ExteriorRing('POLYGON((0 -1, 0 2, 3 2, 3 -1, 0 -1))');
EXPR$0
LINEARRING (0 -1, 0 2, 3 2, 3 -1, 0 -1)
!ok
-SELECT ST_ExteriorRing(ST_GeomFromText('POINT(1 2)'));
+SELECT ST_ExteriorRing('POINT(1 2)');
EXPR$0
null
!ok
# ST_GeometryN(geomCollection, n) Returns the *n*th geometry of
*geomCollection*
-SELECT ST_ExteriorRing(ST_GeomFromText('POINT(1 2)'));
+SELECT ST_ExteriorRing('POINT(1 2)');
EXPR$0
null
!ok
# ST_GeometryType(geom) Returns the type of *geom*
-SELECT ST_GeometryN(ST_GeomFromText('MULTIPOLYGON(((0 0, 3 -1, 1.5 2, 0 0)),
((1 2, 4 2, 4 6, 1 6, 1 2)))'), 0);
+SELECT ST_GeometryN('MULTIPOLYGON(((0 0, 3 -1, 1.5 2, 0 0)), ((1 2, 4 2, 4 6,
1 6, 1 2)))', 0);
EXPR$0
POLYGON ((0 0, 3 -1, 1.5 2, 0 0))
!ok
@@ -807,8 +807,8 @@ SELECT id, ST_GeometryType(g), ST_GeometryTypeCode(g) FROM
(VALUES
('ls', ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29
29.07)')),
('p', ST_Point(0.0, 0.0)),
('np', ST_Point(0.0, CAST(NULL AS DECIMAL))),
- ('mp', ST_GeomFromText('MULTIPOLYGON(((1 1, 2 2, 5 3, 1 1)),
- ((0 0, 2 2, 5 3, 0 0)))'))) AS t(id, g);
+ ('mp', ST_GeomFromText('MULTIPOLYGON(((1 1, 2 2, 5 3, 1 1)), ((0 0, 2 2, 5 3,
0 0)))'))
+) AS t(id, g);
ID, EXPR$1, EXPR$2
ls, LINESTRING, 2
mp, MULTIPOLYGON, 6
@@ -818,123 +818,121 @@ p , POINT, 1
# ST_InteriorRingN(polygon, n) Returns the *n*th interior ring of *polygon*
-SELECT ST_InteriorRing(ST_GeomFromText('POLYGON((0 0, 10 0, 10 6, 0 6, 0 0),
(1 1, 2 1, 2 5, 1 5, 1 1), (8 5, 8 4, 9 4, 9 5, 8 5))'), 0);
+SELECT ST_InteriorRing('POLYGON((0 0, 10 0, 10 6, 0 6, 0 0), (1 1, 2 1, 2 5, 1
5, 1 1), (8 5, 8 4, 9 4, 9 5, 8 5))', 0);
EXPR$0
LINEARRING (1 1, 2 1, 2 5, 1 5, 1 1)
!ok
-SELECT ST_InteriorRing(ST_GeomFromText('POLYGON((0 0, 10 0, 10 6, 0 6, 0 0),
(1 1, 2 1, 2 5, 1 5, 1 1), (8 5, 8 4, 9 4, 9 5, 8 5))'), 1);
+SELECT ST_InteriorRing('POLYGON((0 0, 10 0, 10 6, 0 6, 0 0), (1 1, 2 1, 2 5, 1
5, 1 1), (8 5, 8 4, 9 4, 9 5, 8 5))', 1);
EXPR$0
LINEARRING (8 5, 8 4, 9 4, 9 5, 8 5)
!ok
# ST_IsClosed(geom) Returns whether *geom* is a closed line-string or
multi-line-string
-SELECT ST_IsClosed(ST_GeomFromText('LINESTRING(2 1, 1 3, 5 2)'));
+SELECT ST_IsClosed('LINESTRING(2 1, 1 3, 5 2)');
EXPR$0
false
!ok
-SELECT ST_IsClosed(ST_GeomFromText('LINESTRING(2 1, 1 3, 5 2, 2 1)'));
+SELECT ST_IsClosed('LINESTRING(2 1, 1 3, 5 2, 2 1)');
EXPR$0
true
!ok
# ST_IsEmpty(geom) Returns whether *geom* is empty
-SELECT ST_IsEmpty(ST_GeomFromText('MULTIPOINT((4 4), (1 1), (1 0), (0 3)))'));
+SELECT ST_IsEmpty('MULTIPOINT((4 4), (1 1), (1 0), (0 3))');
EXPR$0
false
!ok
-SELECT ST_IsEmpty(ST_GeomFromText('GEOMETRYCOLLECTION(
+SELECT ST_IsEmpty('GEOMETRYCOLLECTION(
MULTIPOINT((4 4), (1 1), (1 0), (0 3)),
LINESTRING(2 6, 6 2),
- POLYGON((1 2, 4 2, 4 6, 1 6, 1 2)))'));
+ POLYGON((1 2, 4 2, 4 6, 1 6, 1 2)))');
EXPR$0
false
!ok
-SELECT ST_IsEmpty(ST_GeomFromText('POLYGON EMPTY'));
+SELECT ST_IsEmpty('POLYGON EMPTY');
EXPR$0
true
!ok
# ST_IsRectangle(geom) Returns whether *geom* is a rectangle
-SELECT ST_IsRectangle(ST_GeomFromText('POLYGON((0 0, 10 0, 10 5, 0 5, 0 0))'));
+SELECT ST_IsRectangle('POLYGON((0 0, 10 0, 10 5, 0 5, 0 0))');
EXPR$0
true
!ok
-SELECT ST_IsRectangle(ST_GeomFromText('POLYGON((0 0, 10 0, 10 7, 0 5, 0 0))'));
+SELECT ST_IsRectangle('POLYGON((0 0, 10 0, 10 7, 0 5, 0 0))');
EXPR$0
false
!ok
# ST_IsRing(geom) Returns whether *geom* is a closed and simple line-string or
multi-line-string
-SELECT ST_IsRing(ST_GeomFromText('LINESTRING(2 1, 1 3, 6 6, 2 1)'));
+SELECT ST_IsRing('LINESTRING(2 1, 1 3, 6 6, 2 1)');
EXPR$0
true
!ok
-SELECT ST_IsRing(ST_GeomFromText('LINESTRING(2 1, 1 3, 6 6)'));
+SELECT ST_IsRing('LINESTRING(2 1, 1 3, 6 6)');
EXPR$0
false
!ok
-SELECT ST_IsRing(ST_GeomFromText('LINESTRING(2 1, 1 3, 6 6, 5 7, 5 2, 2 1)'));
+SELECT ST_IsRing('LINESTRING(2 1, 1 3, 6 6, 5 7, 5 2, 2 1)');
EXPR$0
false
!ok
-SELECT ST_IsRing(ST_GeomFromText('LINESTRING(2 1, 1 3, 6 6, 5 7, 5 2)'));
+SELECT ST_IsRing('LINESTRING(2 1, 1 3, 6 6, 5 7, 5 2)');
EXPR$0
false
!ok
# ST_IsSimple(geom) Returns whether *geom* is simple
-SELECT ST_IsSimple(ST_GeomFromText(
- 'POLYGON((0 0, 10 0, 10 6, 0 6, 0 0), (1 1, 2 1, 2 5, 1 5, 1 1), (8 5, 8 4, 9
4, 9 5, 8 5))'));
+SELECT ST_IsSimple('POLYGON((0 0, 10 0, 10 6, 0 6, 0 0), (1 1, 2 1, 2 5, 1 5,
1 1), (8 5, 8 4, 9 4, 9 5, 8 5))');
EXPR$0
true
!ok
-SELECT ST_IsSimple(ST_GeomFromText(
- 'MULTILINESTRING((0 2, 3 2, 3 6, 0 6, 0 2), (5 0, 7 0, 7 1, 5 1, 5 0))'));
+SELECT ST_IsSimple('MULTILINESTRING((0 2, 3 2, 3 6, 0 6, 0 2), (5 0, 7 0, 7 1,
5 1, 5 0))');
EXPR$0
true
!ok
-SELECT ST_IsSimple(ST_GeomFromText(
+SELECT ST_IsSimple(
'GEOMETRYCOLLECTION(
MULTIPOINT((4 4), (1 1), (1 0), (0 3)),
LINESTRING(2 6, 6 2),
- POLYGON((1 2, 4 2, 4 6, 1 6, 1 2)))'));
+ POLYGON((1 2, 4 2, 4 6, 1 6, 1 2)))');
EXPR$0
true
!ok
-SELECT ST_IsSimple(ST_GeomFromText('LINESTRING(2 1, 1 3, 6 6, 5 7, 5 6)'));
+SELECT ST_IsSimple('LINESTRING(2 1, 1 3, 6 6, 5 7, 5 6)');
EXPR$0
true
!ok
-SELECT ST_IsSimple(ST_GeomFromText('LINESTRING(2 1, 1 3, 6 6, 5 7, 5 2)'));
+SELECT ST_IsSimple('LINESTRING(2 1, 1 3, 6 6, 5 7, 5 2)');
EXPR$0
false
!ok
# ST_IsValid(geom) Returns whether *geom* is valid
-SELECT ST_IsValid(ST_GeomFromText('POLYGON((0 0, 10 0, 10 5, 0 5, 0 0))'));
+SELECT ST_IsValid('POLYGON((0 0, 10 0, 10 5, 0 5, 0 0))');
EXPR$0
true
!ok
-SELECT ST_IsValid(ST_GeomFromText('POLYGON((0 0, 10 0, 10 5, 6 -2, 0 0))'));
+SELECT ST_IsValid('POLYGON((0 0, 10 0, 10 5, 6 -2, 0 0))');
EXPR$0
false
!ok
@@ -950,80 +948,80 @@ false
# ST_NumGeometries(geom) Returns the number of geometries in *geom* (1 if it
is not a geometry-collection)
-SELECT ST_NumGeometries(ST_GeomFromText('LINESTRING(2 1, 1 3, 5 2)'));
+SELECT ST_NumGeometries('LINESTRING(2 1, 1 3, 5 2)');
EXPR$0
1
!ok
-SELECT ST_NumGeometries(ST_GeomFromText('MULTILINESTRING(
+SELECT ST_NumGeometries('MULTILINESTRING(
(0 2, 3 2, 3 6, 0 6, 0 1),
- (5 0, 7 0, 7 1, 5 1, 5 0))'));
+ (5 0, 7 0, 7 1, 5 1, 5 0))');
EXPR$0
2
!ok
-SELECT ST_NumGeometries(ST_GeomFromText('POLYGON(
+SELECT ST_NumGeometries('POLYGON(
(0 0, 10 0, 10 6, 0 6, 0 0),
(1 1, 2 1, 2 5, 1 5, 1 1),
- (8 5, 8 4, 9 4, 9 5, 8 5))'));
+ (8 5, 8 4, 9 4, 9 5, 8 5))');
EXPR$0
1
!ok
-SELECT ST_NumGeometries(ST_GeomFromText('MULTIPOLYGON(
+SELECT ST_NumGeometries('MULTIPOLYGON(
((0 0, 10 0, 10 6, 0 6, 0 0)),
((1 1, 2 1, 2 5, 1 5, 1 1)),
- ((8 5, 8 4, 9 4, 9 5, 8 5)))'));
+ ((8 5, 8 4, 9 4, 9 5, 8 5)))');
EXPR$0
3
!ok
-SELECT ST_NumGeometries(ST_GeomFromText('GEOMETRYCOLLECTION(
+SELECT ST_NumGeometries('GEOMETRYCOLLECTION(
MULTIPOINT((4 4), (1 1), (1 0), (0 3)),
LINESTRING(2 6, 6 2),
- POLYGON((1 2, 4 2, 4 6, 1 6, 1 2)))'));
+ POLYGON((1 2, 4 2, 4 6, 1 6, 1 2)))');
EXPR$0
3
!ok
-SELECT ST_NumGeometries(ST_GeomFromText('MULTIPOINT(
+SELECT ST_NumGeometries('MULTIPOINT(
(0 2), (3 2), (3 6), (0 6),
- (0 1), (5 0), (7 0))'));
+ (0 1), (5 0), (7 0))');
EXPR$0
7
!ok
# ST_NumInteriorRings(geom) Returns the number of interior rings of *geom*
-SELECT ST_NumInteriorRings(ST_GeomFromText('POLYGON(
+SELECT ST_NumInteriorRings('POLYGON(
(0 0, 10 0, 10 6, 0 6, 0 0),
(1 1, 2 1, 2 5, 1 5, 1 1),
- (8 5, 8 4, 9 4, 9 5, 8 5))'));
+ (8 5, 8 4, 9 4, 9 5, 8 5))');
EXPR$0
2
!ok
-SELECT ST_NumInteriorRings(ST_GeomFromText('MULTIPOLYGON(
+SELECT ST_NumInteriorRings('MULTIPOLYGON(
((0 0, 10 0, 10 6, 0 6, 0 0), (1 1, 2 1, 2 5, 1 5, 1 1)),
((1 1, 2 1, 2 5, 1 5, 1 1)),
- ((8 5, 8 4, 9 4, 9 5, 8 5)))'));
+ ((8 5, 8 4, 9 4, 9 5, 8 5)))');
EXPR$0
1
!ok
-SELECT ST_NumInteriorRings(ST_GeomFromText('GEOMETRYCOLLECTION(
+SELECT ST_NumInteriorRings('GEOMETRYCOLLECTION(
MULTIPOINT((4 4), (1 1), (1 0), (0 3)),
LINESTRING(2 6, 6 2),
- POLYGON((1 2, 4 2, 4 6, 1 6, 1 2)))'));
+ POLYGON((1 2, 4 2, 4 6, 1 6, 1 2)))');
EXPR$0
0
!ok
-SELECT ST_NumInteriorRings(ST_GeomFromText(
+SELECT ST_NumInteriorRings(
'GEOMETRYCOLLECTION(
MULTIPOINT((4 4), (1 1), (1 0), (0 3)),
LINESTRING(2 6, 6 2),
- POLYGON((1 2, 4 2, 4 6, 1 6, 1 2), (2 4, 3 4, 3 5, 2 5, 2 4)))'));
+ POLYGON((1 2, 4 2, 4 6, 1 6, 1 2), (2 4, 3 4, 3 5, 2 5, 2 4)))');
EXPR$0
1
!ok
@@ -1031,71 +1029,71 @@ EXPR$0
# ST_NumPoints(geom) Returns the number of points in *geom*
-SELECT ST_NumPoints(ST_GeomFromText('POINT(2 2)'));
+SELECT ST_NumPoints('POINT(2 2)');
EXPR$0
1
!ok
-SELECT ST_NumPoints(ST_GeomFromText('MULTIPOINT(2 2, 4 4)'));
+SELECT ST_NumPoints('MULTIPOINT(2 2, 4 4)');
EXPR$0
2
!ok
-SELECT ST_NumPoints(ST_GeomFromText('MULTIPOINT(2 2, 4 4, 4 4)'));
+SELECT ST_NumPoints('MULTIPOINT(2 2, 4 4, 4 4)');
EXPR$0
3
!ok
-SELECT ST_NumPoints(ST_GeomFromText('MULTILINESTRING((2 2, 4 4), (3 1, 6
3))'));
+SELECT ST_NumPoints('MULTILINESTRING((2 2, 4 4), (3 1, 6 3))');
EXPR$0
4
!ok
-SELECT ST_NumPoints(ST_GeomFromText('POLYGON((0 0, 10 0, 10 6, 0 6, 0 0), (1
1, 2 1, 2 5, 1 5, 1 1), (8 5, 8 4, 9 4, 9 5, 8 5))'));
+SELECT ST_NumPoints('POLYGON((0 0, 10 0, 10 6, 0 6, 0 0), (1 1, 2 1, 2 5, 1 5,
1 1), (8 5, 8 4, 9 4, 9 5, 8 5))');
EXPR$0
15
!ok
# ST_PointN(geom, n) Returns the *n*th point of a *geom*
-SELECT ST_PointN(ST_GeomFromText('LINESTRING(1 1, 1 6, 2 2, -1 2))'), 2);
+SELECT ST_PointN('LINESTRING(1 1, 1 6, 2 2, -1 2))', 2);
EXPR$0
POINT (2 2)
!ok
-SELECT ST_PointN(ST_GeomFromText('MULTILINESTRING((1 1, 1 6, 2 2, -1 2))'), 3);
+SELECT ST_PointN('MULTILINESTRING((1 1, 1 6, 2 2, -1 2))', 3);
EXPR$0
POINT (-1 2)
!ok
-SELECT ST_PointN(ST_GeomFromText('MULTIPOINT(1 1, 1 6, 2 2, -1 2)'), -1);
+SELECT ST_PointN('MULTIPOINT(1 1, 1 6, 2 2, -1 2)', -1);
EXPR$0
POINT (-1 2)
!ok
-SELECT ST_PointN(ST_GeomFromText('MULTILINESTRING((1 1, 1 6, 2 2, -1 2), (0 1,
2 4))'), 4);
+SELECT ST_PointN('MULTILINESTRING((1 1, 1 6, 2 2, -1 2), (0 1, 2 4))', 4);
EXPR$0
POINT (0 1)
!ok
# ST_PointOnSurface(geom) Returns an interior or boundary point of *geom*
-SELECT ST_PointOnSurface(ST_GeomFromText('POINT(1 5)'));
+SELECT ST_PointOnSurface('POINT(1 5)');
EXPR$0
POINT (1 5)
!ok
-SELECT ST_PointOnSurface(ST_GeomFromText('MULTIPOINT((4 4), (1 1), (1 0), (0
3)))'));
+SELECT ST_PointOnSurface('MULTIPOINT((4 4), (1 1), (1 0), (0 3)))');
EXPR$0
POINT (1 1)
!ok
-SELECT ST_PointOnSurface(ST_GeomFromText('LINESTRING(-1 5, 0 10)'));
+SELECT ST_PointOnSurface('LINESTRING(-1 5, 0 10)');
EXPR$0
POINT (0 10)
!ok
-SELECT ST_PointOnSurface(ST_GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0
0))'));
+SELECT ST_PointOnSurface('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))');
EXPR$0
POINT (2.5 2.5)
!ok
@@ -1114,55 +1112,55 @@ EXPR$0
# ST_StartPoint(geom) Returns the first coordinate of *geom*
-SELECT ST_StartPoint(ST_GeomFromText('MULTILINESTRING((1 1, 1 6, 2 2, -1
2))'));
+SELECT ST_StartPoint('MULTILINESTRING((1 1, 1 6, 2 2, -1 2))');
EXPR$0
POINT (1 1)
!ok
# ST_X(geom) Returns the x-value of the first coordinate of *geom*
-SELECT ST_X(ST_GeomFromText('POINT Z(1 2 3)'));
+SELECT ST_X('POINT Z(1 2 3)');
EXPR$0
1.0
!ok
-SELECT ST_X(ST_GeomFromText('POINT (1 2)'));
+SELECT ST_X('POINT (1 2)');
EXPR$0
1.0
!ok
# ST_XMax(geom) Returns the maximum x-value of *geom*
-SELECT ST_XMax(ST_GeomFromText('LINESTRING(1 3 4, 5 6 7)'));
+SELECT ST_XMax('LINESTRING(1 3 4, 5 6 7)');
EXPR$0
5.0
!ok
# ST_XMin(geom) Returns the minimum x-value of *geom*
-SELECT ST_XMin(ST_GeomFromText('LINESTRING(1 3 4, 5 6 7)'));
+SELECT ST_XMin('LINESTRING(1 3 4, 5 6 7)');
EXPR$0
1.0
!ok
# ST_Y(geom) Returns the y-value of the first coordinate of *geom*
-SELECT ST_Y(ST_GeomFromText('POINT Z(1 2 3)'));
+SELECT ST_Y('POINT Z(1 2 3)');
EXPR$0
2.0
!ok
-SELECT ST_Y(ST_GeomFromText('POINT (1 2)'));
+SELECT ST_Y('POINT (1 2)');
EXPR$0
2.0
!ok
# ST_YMax(geom) Returns the maximum y-value of *geom*
-SELECT ST_YMax(ST_GeomFromText('LINESTRING(1 3 4, 5 6 7)'));
+SELECT ST_YMax('LINESTRING(1 3 4, 5 6 7)');
EXPR$0
6.0
!ok
# ST_YMin(geom) Returns the minimum y-value of *geom*
-SELECT ST_YMin(ST_GeomFromText('LINESTRING(1 3 4, 5 6 7)'));
+SELECT ST_YMin('LINESTRING(1 3 4, 5 6 7)');
EXPR$0
3.0
!ok
@@ -1171,48 +1169,48 @@ EXPR$0
# ST_Is3D(s) Returns whether *geom* has at least one z-coordinate
-SELECT ST_Is3D(ST_GeomFromText('POINT Z(1 2 0)'));
+SELECT ST_Is3D('POINT Z(1 2 0)');
EXPR$0
true
!ok
-SELECT ST_Is3D(ST_GeomFromText('POINT (1 2)'));
+SELECT ST_Is3D('POINT (1 2)');
EXPR$0
false
!ok
# ST_Z(geom) Returns the z-value of the first coordinate of *geom*
-SELECT ST_Z(ST_GeomFromText('POINT Z(1 2 3)'));
+SELECT ST_Z('POINT Z(1 2 3)');
EXPR$0
3.0
!ok
-SELECT ST_Z(ST_GeomFromText('POINT (1 2)'));
+SELECT ST_Z('POINT (1 2)');
EXPR$0
NaN
!ok
# ST_ZMax(geom) Returns the maximum z-value of *geom*
-SELECT ST_ZMax(ST_GeomFromText('LINESTRING(1 2 3, 4 5 6)'));
+SELECT ST_ZMax('LINESTRING(1 2 3, 4 5 6)');
EXPR$0
6.0
!ok
-SELECT ST_ZMax(ST_GeomFromText('LINESTRING(1 2, 4 5)'));
+SELECT ST_ZMax('LINESTRING(1 2, 4 5)');
EXPR$0
NaN
!ok
# ST_ZMin(geom) Returns the minimum z-value of *geom*
-SELECT ST_ZMin(ST_GeomFromText('LINESTRING(1 2 3, 4 5 6)'));
+SELECT ST_ZMin('LINESTRING(1 2 3, 4 5 6)');
EXPR$0
3.0
!ok
-SELECT ST_ZMin(ST_GeomFromText('LINESTRING(1 2, 4 5)'));
+SELECT ST_ZMin('LINESTRING(1 2, 4 5)');
EXPR$0
NaN
!ok
@@ -1248,20 +1246,19 @@ POLYGON, true, true, false, false
# ST_Covers(geom1, geom2) Returns whether no point in *geom2* is outside
*geom1*
-SELECT ST_Covers(ST_Buffer(ST_GeomFromText('POINT(0 0)'), 1),
ST_GeomFromText('POINT(0 0)'));
+SELECT ST_Covers(ST_Buffer('POINT(0 0)', 1), 'POINT(0 0)');
EXPR$0
true
!ok
-SELECT ST_Covers(ST_Buffer(ST_GeomFromText('POINT(0 0)'), 1),
ST_GeomFromText('POINT(1 1)'));
+SELECT ST_Covers(ST_Buffer('POINT(0 0)', 1), 'POINT(1 1)');
EXPR$0
false
!ok
# ST_Crosses(geom1, geom2) Returns whether *geom1* crosses *geom2*
-SELECT ST_Crosses(ST_GeomFromText('LINESTRING(1 3, 5 3)'),
- ST_GeomFromText('LINESTRING(1 1, 5 2, 2 5)'));
+SELECT ST_Crosses('LINESTRING(1 3, 5 3)', 'LINESTRING(1 1, 5 2, 2 5)');
EXPR$0
true
!ok
@@ -1304,8 +1301,7 @@ United Kingdom
# ST_Disjoint(geom1, geom2) Returns whether *geom1* and *geom2* are disjoint
-SELECT ST_Disjoint(ST_GeomFromText('LINESTRING(1 3, 5 3)'),
- ST_GeomFromText('LINESTRING(1 1, 5 2, 2 5)'));
+SELECT ST_Disjoint('LINESTRING(1 3, 5 3)', 'LINESTRING(1 1, 5 2, 2 5)');
EXPR$0
false
!ok
@@ -1313,24 +1309,21 @@ false
# ST_EnvelopesIntersect(geom1, geom2) Returns whether the envelope of *geom1*
intersects the envelope of *geom2*
-SELECT ST_EnvelopesIntersect(ST_GeomFromText('LINESTRING(1 3, 5 3)'),
- ST_GeomFromText('LINESTRING(1 1, 5 2, 2 5)'));
+SELECT ST_EnvelopesIntersect('LINESTRING(1 3, 5 3)', 'LINESTRING(1 1, 5 2, 2
5)');
EXPR$0
true
!ok
# ST_Equals(geom1, geom2) Returns whether *geom1* equals *geom2*
-SELECT ST_Equals(ST_GeomFromText('LINESTRING(1 3, 5 3)'),
- ST_GeomFromText('LINESTRING(1 1, 5 2, 2 5)'));
+SELECT ST_Equals('LINESTRING(1 3, 5 3)', 'LINESTRING(1 1, 5 2, 2 5)');
EXPR$0
false
!ok
# ST_Intersects(geom1, geom2) Returns whether *geom1* intersects *geom2*
-SELECT ST_Intersects(ST_GeomFromText('LINESTRING(1 3, 5 3)'),
- ST_GeomFromText('LINESTRING(1 1, 5 2, 2 5)'));
+SELECT ST_Intersects('LINESTRING(1 3, 5 3)', 'LINESTRING(1 1, 5 2, 2 5)');
EXPR$0
true
!ok
@@ -1340,61 +1333,50 @@ true
# ST_Overlaps(geom1, geom2) Returns whether *geom1* overlaps *geom2*
-SELECT ST_Overlaps(ST_GeomFromText('LINESTRING(1 3, 5 3)'),
- ST_GeomFromText('LINESTRING(1 1, 5 2, 2 5)'));
+SELECT ST_Overlaps('LINESTRING(1 3, 5 3)', 'LINESTRING(1 1, 5 2, 2 5)');
EXPR$0
false
!ok
# ST_Relate(geom1, geom2) Returns the DE-9IM intersection matrix of *geom1*
and *geom2*
-SELECT ST_Relate(ST_GeomFromText('LINESTRING(1 2, 3 4)'),
- ST_GeomFromText('LINESTRING(5 6, 7 3)'));
+SELECT ST_Relate('LINESTRING(1 2, 3 4)', 'LINESTRING(5 6, 7 3)');
EXPR$0
FF1FF0102
!ok
-SELECT ST_Relate(ST_GeomFromText('POLYGON((1 1, 4 1, 4 5, 1 5, 1 1))'),
- ST_GeomFromText('POLYGON((3 2, 6 2, 6 6, 3 6, 3 2))'));
+SELECT ST_Relate('POLYGON((1 1, 4 1, 4 5, 1 5, 1 1))', 'POLYGON((3 2, 6 2, 6
6, 3 6, 3 2))');
EXPR$0
212101212
!ok
# ST_Relate(geom1, geom2, iMatrix) Returns whether *geom1* and *geom2* are
related by the given intersection matrix *iMatrix*
-SELECT ST_Relate(ST_GeomFromText('POLYGON((1 1, 4 1, 4 5, 1 5, 1 1))'),
- ST_GeomFromText('POLYGON((3 2, 6 2, 6 6, 3 6, 3 2))'),
- '212101212');
+SELECT ST_Relate('POLYGON((1 1, 4 1, 4 5, 1 5, 1 1))', 'POLYGON((3 2, 6 2, 6
6, 3 6, 3 2))', '212101212');
EXPR$0
true
!ok
-SELECT ST_Relate(ST_GeomFromText('POLYGON((1 1, 4 1, 4 5, 1 5, 1 1))'),
- ST_GeomFromText('POLYGON((3 2, 6 2, 6 6, 3 6, 3 2))'),
- '112101212');
+SELECT ST_Relate('POLYGON((1 1, 4 1, 4 5, 1 5, 1 1))', 'POLYGON((3 2, 6 2, 6
6, 3 6, 3 2))', '112101212');
EXPR$0
false
!ok
-SELECT ST_Relate(ST_GeomFromText('POINT(1 2)'),
- ST_Buffer(ST_GeomFromText('POINT(1 2)'), 2),
- '0F*FFF212');
+SELECT ST_Relate('POINT(1 2)', ST_Buffer('POINT(1 2)', 2), '0F*FFF212');
EXPR$0
true
!ok
# ST_Touches(geom1, geom2) Returns whether *geom1* touches *geom2*
-SELECT ST_Touches(ST_GeomFromText('LINESTRING(1 3, 5 3)'),
- ST_GeomFromText('LINESTRING(1 1, 5 2, 2 5)'));
+SELECT ST_Touches('LINESTRING(1 3, 5 3)', 'LINESTRING(1 1, 5 2, 2 5)');
EXPR$0
false
!ok
# ST_Within(geom1, geom2) Returns whether *geom1* is within *geom2*
-SELECT ST_Within(ST_GeomFromText('LINESTRING(1 3, 5 3)'),
- ST_GeomFromText('LINESTRING(1 1, 5 2, 2 5)'));
+SELECT ST_Within('LINESTRING(1 3, 5 3)', 'LINESTRING(1 1, 5 2, 2 5)');
EXPR$0
false
!ok
@@ -1403,105 +1385,88 @@ false
# ST_Buffer(geom, bufferSize [, quadSegs | style ]) Computes a buffer around
*geom*
-SELECT roundGeom(ST_AsWKT(ST_Buffer(
- ST_GeomFromText('POINT(100 90)'),
- 50)), 10);
+SELECT roundGeom(ST_AsWKT(ST_Buffer('POINT(100 90)', 50)), 10);
EXPR$0
POLYGON ((150 90, 149.0392640202 80.2454838992, 146.1939766256 70.8658283818,
141.5734806152 62.2214883491, 135.3553390594 54.6446609407, 127.7785116510
48.4265193849, 119.1341716183 43.8060233745, 109.7545161009 40.9607359799, 100
40, 90.2454838992 40.9607359799, 80.8658283818 43.8060233745, 72.2214883491
48.4265193849, 64.6446609407 54.6446609407, 58.4265193849 62.2214883491,
53.8060233745 70.8658283818, 50.9607359799 80.2454838992, 50 90, 50.9607359799
99.7545161009, 53.8060233745 109 [...]
!ok
-SELECT roundGeom(ST_AsWKT(ST_Buffer(
- ST_GeomFromText('LINESTRING(10 10,30 10)'),
- 5)), 10);
+SELECT roundGeom(ST_AsWKT(ST_Buffer('LINESTRING(10 10,30 10)', 5)), 10);
EXPR$0
POLYGON ((30 15, 30.9754516101 14.9039264021, 31.9134171619 14.6193976626,
32.7778511651 14.1573480616, 33.5355339060 13.5355339060, 34.1573480616
12.7778511651, 34.6193976626 11.9134171619, 34.9039264021 10.9754516101, 35 10,
34.9039264021 9.0245483900, 34.6193976626 8.0865828382, 34.1573480616
7.2221488350, 33.5355339060 6.4644660941, 32.7778511651 5.8426519385,
31.9134171619 5.3806023375, 30.9754516101 5.0960735980, 30 5, 10 5,
9.0245483900 5.0960735980, 8.0865828382 5.3806023375, 7.2 [...]
!ok
SELECT roundGeom(ST_AsWKT(ST_Buffer(
- ST_GeomFromText('POLYGON((-71.1776585052917
42.3902909739571,-71.1776820268866 42.3903701743239,
- -71.1776063012595 42.3903825660754,-71.1775826583081
42.3903033653531,-71.1776585052917 42.3902909739571))'),
+ 'POLYGON((-71.1776585052917 42.3902909739571,-71.1776820268866
42.3903701743239,
+ -71.1776063012595 42.3903825660754,-71.1775826583081
42.3903033653531,-71.1776585052917 42.3902909739571))',
50)), 10);
EXPR$0
POLYGON ((-63.1158577185 -6.9555028496, -73.3944111820 -7.5605449307,
-83.5789612644 -6.0473771149, -93.2376230056 -2.4801666374, -101.9608122109
2.9898157492, -109.3786142359 10.1306105467, -115.1764705475 18.6394059614,
-119.1085178604 28.1553789096, -119.1085413820 28.1554581099, -120.9273691116
37.3935076607, -120.9820790302 46.8087453442, -119.2707311309 56.0673079853,
-115.8540096006 64.8408880867, -110.8530709662 72.8183755726, -104.4452478994
79.7168897137, -96.8577610211 85.2918 [...]
!ok
# Negative buffer size makes the polgyon smaller
-SELECT ST_Buffer(
- ST_GeomFromText('POLYGON((10 10,10 20,20 20,20 10, 10 10))'),
- -1);
+SELECT ST_Buffer('POLYGON((10 10,10 20,20 20,20 10, 10 10))', -1);
EXPR$0
POLYGON ((11 11, 11 19, 19 19, 19 11, 11 11))
!ok
!if (fixed.calcite2539) {
# ST_BUFFER(geom, bufferSize, style) variant - not implemented
-SELECT ST_Buffer(
- ST_GeomFromText('POINT(100 90)'),
- 50, 'quad_segs=8');
+SELECT ST_Buffer('POINT(100 90)', 50, 'quad_segs=8');
at org.apache.calcite.runtime.Geometries.todo
!error GeoFunctions
# ST_BUFFER(geom, bufferSize, quadSegs) variant - not implemented
# When implemented, remove comment from ST_Contains test case
-SELECT ST_Buffer(
- ST_GeomFromText('POINT(100 90)'),
- 50, 2);
+SELECT ST_Buffer('POINT(100 90)', 50, 2);
at org.apache.calcite.runtime.Geometries.todo
!error GeoFunctions
!}
# ST_ConvexHull(geom) Computes the smallest convex polygon that contains all
the points in the Geometry
-SELECT ST_ConvexHull(ST_GeomFromText('GEOMETRYCOLLECTION(
+SELECT ST_ConvexHull('GEOMETRYCOLLECTION(
POINT(1 2),
LINESTRING(1 4, 4 7),
- POLYGON((3 1, 7 1, 7 6, 3 1)))'));
+ POLYGON((3 1, 7 1, 7 6, 3 1)))');
EXPR$0
POLYGON ((3 1, 1 2, 1 4, 4 7, 7 6, 7 1, 3 1))
!ok
# ST_Difference(geom1, geom2) Computes the difference between two geometries
-SELECT ST_Difference(ST_GeomFromText('POLYGON((1 1, 7 1, 7 6, 1 6, 1 1))'),
- ST_GeomFromText('POLYGON((3 2, 8 2, 8 8, 3 8, 3 2))'));
+SELECT ST_Difference('POLYGON((1 1, 7 1, 7 6, 1 6, 1 1))', 'POLYGON((3 2, 8 2,
8 8, 3 8, 3 2))');
EXPR$0
POLYGON ((7 2, 7 1, 1 1, 1 6, 3 6, 3 2, 7 2))
!ok
-SELECT ST_Difference(ST_GeomFromText('POLYGON((3 2, 8 2, 8 8, 3 8, 3 2))'),
- ST_GeomFromText('POLYGON((1 1, 7 1, 7 6, 1 6, 1 1))'));
+SELECT ST_Difference('POLYGON((3 2, 8 2, 8 8, 3 8, 3 2))', 'POLYGON((1 1, 7 1,
7 6, 1 6, 1 1))');
EXPR$0
POLYGON ((3 6, 3 8, 8 8, 8 2, 7 2, 7 6, 3 6))
!ok
# ST_Intersection(geom1, geom2) Computes the intersection of two geometries
-SELECT ST_Intersection(ST_GeomFromText('POLYGON((1 1, 7 1, 7 6, 1 6, 1 1))'),
- ST_GeomFromText('POLYGON((3 2, 8 2, 8 8, 3 8, 3 2))'));
+SELECT ST_Intersection('POLYGON((1 1, 7 1, 7 6, 1 6, 1 1))', 'POLYGON((3 2, 8
2, 8 8, 3 8, 3 2))');
EXPR$0
POLYGON ((3 6, 7 6, 7 2, 3 2, 3 6))
!ok
-SELECT ST_Intersection(ST_GeomFromText('POLYGON((1 1, 4 1, 4 6, 1 6, 1 1))'),
- ST_GeomFromText('POLYGON((4 2, 8 2, 8 8, 4 8, 4 2))'));
+SELECT ST_Intersection('POLYGON((1 1, 4 1, 4 6, 1 6, 1 1))', 'POLYGON((4 2, 8
2, 8 8, 4 8, 4 2))');
EXPR$0
LINESTRING (4 2, 4 6)
!ok
-SELECT ST_Intersection(ST_GeomFromText('POLYGON((1 1, 4 1, 4 6, 1 6, 1 1))'),
- ST_GeomFromText('POLYGON((4 6, 8 6, 8 8, 4 8, 4 6))'));
+SELECT ST_Intersection('POLYGON((1 1, 4 1, 4 6, 1 6, 1 1))', 'POLYGON((4 6, 8
6, 8 8, 4 8, 4 6))');
EXPR$0
POINT (4 6)
!ok
-SELECT ST_Intersection(ST_GeomFromText('LINESTRING(2 2, 6 6)'),
- ST_GeomFromText('LINESTRING(2 8, 8 2)'));
+SELECT ST_Intersection('LINESTRING(2 2, 6 6)', 'LINESTRING(2 8, 8 2)');
EXPR$0
POINT (5 5)
!ok
-SELECT ST_Intersection(ST_GeomFromText('POLYGON((1 1, 7 1, 7 6, 1 6, 1 1))'),
- ST_GeomFromText('POINT(3 5)'));
+SELECT ST_Intersection('POLYGON((1 1, 7 1, 7 6, 1 6, 1 1))', 'POINT(3 5)');
EXPR$0
POINT (3 5)
!ok
@@ -1509,8 +1474,7 @@ POINT (3 5)
# ST_SymDifference(geom1, geom2) Computes the symmetric difference between two
geometries
-SELECT ST_SymDifference(ST_GeomFromText('POLYGON((1 1, 7 1, 7 6, 1 6, 1 1))'),
- ST_GeomFromText('POLYGON((3 2, 8 2, 8 8, 3 8, 3 2))'));
+SELECT ST_SymDifference('POLYGON((1 1, 7 1, 7 6, 1 6, 1 1))', 'POLYGON((3 2, 8
2, 8 8, 3 8, 3 2))');
EXPR$0
MULTIPOLYGON (((7 2, 7 1, 1 1, 1 6, 3 6, 3 2, 7 2)), ((7 2, 7 6, 3 6, 3 8, 8
8, 8 2, 7 2)))
!ok
@@ -1518,15 +1482,13 @@ MULTIPOLYGON (((7 2, 7 1, 1 1, 1 6, 3 6, 3 2, 7 2)),
((7 2, 7 6, 3 6, 3 8, 8 8,
# ST_Union(geom1, geom2) Computes the union of two or more geometries
# NOTE: PostGIS altered the order: it returned MULTIPOINT(-2 3,1 2)
-SELECT ST_AsText(ST_Union(ST_GeomFromText('POINT(1 2)'),
- ST_GeomFromText('POINT(-2 3)')));
+SELECT ST_AsText(ST_Union('POINT(1 2)', 'POINT(-2 3)'));
EXPR$0
MULTIPOINT ((-2 3), (1 2))
!ok
# NOTE: PostGIS returned a point not a multipoint: POINT(1 2). ESRI bug?
-SELECT ST_AsText(ST_Union(ST_GeomFromText('POINT(1 2)'),
- ST_GeomFromText('POINT(1 2)')));
+SELECT ST_AsText(ST_Union('POINT(1 2)', 'POINT(1 2)'));
EXPR$0
POINT (1 2)
!ok
@@ -1535,11 +1497,11 @@ POINT (1 2)
# Disabled: ST_GeomFromText cannot handle GEOMETRYCOLLECTION
!if (false) {
-SELECT ST_AsText(st_union(ST_GeomFromText('GEOMETRYCOLLECTION(
+SELECT ST_AsText(st_union('GEOMETRYCOLLECTION(
POLYGON((-7 4.2,-7.1 4.2,-7.1 4.3,-7 4.2))
POINT(5 5)
POINT(-2 3)
- LINESTRING(5 5, 10 10)')));
+ LINESTRING(5 5, 10 10)'));
EXPR$0
null
!ok
@@ -1552,7 +1514,8 @@ null
SELECT ST_Union(ARRAY(SELECT the_geom FROM sometable));
!ok
-SELECT ST_AsText(ST_Union(ARRAY[ST_GeomFromText('LINESTRING(1 2, 3 4)'),
+SELECT ST_AsText(ST_Union(ARRAY[
+ ST_GeomFromText('LINESTRING(1 2, 3 4)'),
ST_GeomFromText('LINESTRING(3 4, 4 5)')])) As wktunion;
--wktunion---
@@ -1564,58 +1527,58 @@ MULTILINESTRING((3 4,4 5),(1 2,3 4))
# ST_Rotate(geom, angle [, origin | x, y]) Rotates a *geom* counter-clockwise
by *angle* (in radians) about *origin* (or the point (*x*, *y*))
-SELECT ST_Rotate(ST_GeomFromText('LINESTRING(1 3, 1 1, 2 1)'), pi());
+SELECT ST_Rotate('LINESTRING(1 3, 1 1, 2 1)', pi());
EXPR$0
LINESTRING (-1.0000000000000004 -3, -1.0000000000000002 -0.9999999999999999,
-2 -0.9999999999999998)
!ok
-SELECT ST_Rotate(ST_GeomFromText('LINESTRING(1 3, 1 1, 2 1)'), pi() / 3);
+SELECT ST_Rotate('LINESTRING(1 3, 1 1, 2 1)', pi() / 3);
EXPR$0
LINESTRING (-2.098076211353316 2.3660254037844393, -0.3660254037844385
1.3660254037844388, 0.1339745962155616 2.232050807568877)
!ok
-SELECT ST_Rotate(ST_GeomFromText('LINESTRING(1 3, 1 1, 2 1)'), -pi() / 2,
ST_PointFromText('POINT(2 1)'));
+SELECT ST_Rotate('LINESTRING(1 3, 1 1, 2 1)', -pi() / 2,
ST_PointFromText('POINT(2 1)'));
EXPR$0
LINESTRING (4 2, 1.9999999999999998 2, 2 1)
!ok
-SELECT ST_Rotate(ST_GeomFromText('LINESTRING(1 3, 1 1, 2 1)'), pi() / 2, 1.0,
1.0);
+SELECT ST_Rotate('LINESTRING(1 3, 1 1, 2 1)', pi() / 2, 1.0, 1.0);
EXPR$0
LINESTRING (-1 1.0000000000000002, 1 0.9999999999999999, 1 2)
!ok
# ST_Scale(geom, xFactor, yFactor) Scales *geom* by multiplying the ordinates
by the indicated scale factors
-SELECT ST_Scale(ST_GeomFromText('LINESTRING(1 2, 4 5)'), 0.5, 0.75);
+SELECT ST_Scale('LINESTRING(1 2, 4 5)', 0.5, 0.75);
EXPR$0
LINESTRING (0.5 1.5, 2 3.75)
!ok
# ST_Translate(geom, x, y, [, z]) Translates *geom*
-SELECT ST_Translate(ST_GeomFromText('POINT(1 2)'), 10, 20);
+SELECT ST_Translate('POINT(1 2)', 10, 20);
EXPR$0
POINT (11 22)
!ok
-SELECT ST_Translate(ST_GeomFromText('LINESTRING(0 0, 1 0)'), 1, 2);
+SELECT ST_Translate('LINESTRING(0 0, 1 0)', 1, 2);
EXPR$0
LINESTRING (1 2, 2 2)
!ok
-SELECT ST_Translate(ST_GeomFromText('LINESTRING(-71.01 42.37, -71.11 42.38)'),
1, 0.5);
+SELECT ST_Translate('LINESTRING(-71.01 42.37, -71.11 42.38)', 1, 0.5);
EXPR$0
LINESTRING (-70.01 42.87, -70.11 42.88)
!ok
-SELECT ST_Translate(ST_GeomFromText('MULTIPOINT((0 1), (2 2), (1 3))'), 1, 0);
+SELECT ST_Translate('MULTIPOINT((0 1), (2 2), (1 3))', 1, 0);
EXPR$0
MULTIPOINT ((1 1), (3 2), (2 3))
!ok
-SELECT ST_Translate(ST_GeomFromText('GEOMETRYCOLLECTION(
+SELECT ST_Translate('GEOMETRYCOLLECTION(
POLYGON((0 0, 3 5, 6 6, 0 7, 0 0)),
- MULTIPOINT((0 1), (2 2), (1 3)))'), -1, 1);
+ MULTIPOINT((0 1), (2 2), (1 3)))', -1, 1);
EXPR$0
GEOMETRYCOLLECTION (POLYGON ((-1 1, 2 6, 5 7, -1 8, -1 1)), MULTIPOINT ((-1
2), (1 3), (0 4)))
!ok
@@ -1729,32 +1692,32 @@ GEOMETRYCOLLECTION (POLYGON ((-1 1, 2 6, 5 7, -1 8, -1
1)), MULTIPOINT ((-1 2),
# ST_LineMerge(geom) Merges a collection of linear components to form a
line-string of maximal length
-SELECT ST_LineMerge(ST_GeomFromText('LINESTRING (1 1, 1 4)'));
+SELECT ST_LineMerge('LINESTRING (1 1, 1 4)');
EXPR$0
MULTILINESTRING ((1 1, 1 4))
!ok
-SELECT ST_LineMerge(ST_GeomFromText('MULTILINESTRING ((1 1, 1 4), (1 4, 5 4),
(5 4, 5 1), (3 3, 3 4))'));
+SELECT ST_LineMerge('MULTILINESTRING ((1 1, 1 4), (1 4, 5 4), (5 4, 5 1), (3
3, 3 4))');
EXPR$0
MULTILINESTRING ((1 1, 1 4, 5 4, 5 1), (3 3, 3 4))
!ok
# ST_MakeValid(geom [, preserveGeomDim [, preserveDuplicateCoord [,
preserveCoordDim]]]) Makes *geom* valid
-SELECT ST_MakeValid(ST_GeomFromText('LINESTRING(0 0, 0 0)'));
+SELECT ST_MakeValid('LINESTRING(0 0, 0 0)');
EXPR$0
LINESTRING EMPTY
!ok
# ST_Polygonize(geom) Creates a multi-polygon from edges of *geom*
-SELECT ST_Polygonize(ST_GeomFromText('LINESTRING(1 2, 2 4, 4 4, 5 2, 1 2)'));
+SELECT ST_Polygonize('LINESTRING(1 2, 2 4, 4 4, 5 2, 1 2)');
EXPR$0
POLYGON ((1 2, 2 4, 4 4, 5 2, 1 2))
!ok
# ST_PrecisionReducer(geom, n) Reduces *geom*'s precision to *n* decimal places
-SELECT ST_PrecisionReducer(ST_GeomFromText('MULTIPOINT((190.1239999997 300),
(10 11.1233))'), 3);
+SELECT ST_PrecisionReducer('MULTIPOINT((190.1239999997 300), (10 11.1233))',
3);
EXPR$0
MULTIPOINT ((190.124 300), (10 11.123))
!ok
@@ -1767,81 +1730,71 @@ MULTIPOINT ((190.124 300), (10 11.123))
# ST_Simplify(geom, distance) Simplifies *geom* using the Douglas-Peuker
algorithm with a *distance* tolerance
-SELECT ST_Simplify(ST_GeomFromText('POLYGON((2 1, 1 2, 2 2, 2 3, 3 3, 3 2, 4
2, 4 1, 3 0, 2 0, 2 1))'), 0.5);
+SELECT ST_Simplify('POLYGON((2 1, 1 2, 2 2, 2 3, 3 3, 3 2, 4 2, 4 1, 3 0, 2 0,
2 1))', 0.5);
EXPR$0
POLYGON ((2 1, 1 2, 3 3, 4 1, 3 0, 2 0, 2 1))
!ok
-SELECT ST_Simplify(ST_GeomFromText('POLYGON((2 1, 1 2, 2 2, 2 3, 3 3, 3 2, 4
2, 4 1, 3 0, 2 0, 2 1))'), 1);
+SELECT ST_Simplify('POLYGON((2 1, 1 2, 2 2, 2 3, 3 3, 3 2, 4 2, 4 1, 3 0, 2 0,
2 1))', 1);
EXPR$0
POLYGON ((2 1, 1 2, 3 3, 4 1, 2 1))
!ok
-SELECT ST_Simplify(ST_GeomFromText('POLYGON((2 1, 1 2, 2 2, 2 3, 3 3, 3 2, 4
2, 4 1, 3 0, 2 0, 2 1))'), 2);
+SELECT ST_Simplify('POLYGON((2 1, 1 2, 2 2, 2 3, 3 3, 3 2, 4 2, 4 1, 3 0, 2 0,
2 1))', 2);
EXPR$0
POLYGON EMPTY
!ok
-SELECT ST_Simplify(ST_GeomFromText('MULTIPOINT((190 300), (10 11))'), 4);
+SELECT ST_Simplify('MULTIPOINT((190 300), (10 11))', 4);
EXPR$0
MULTIPOINT ((190 300), (10 11))
!ok
-SELECT ST_Simplify(ST_GeomFromText('LINESTRING(250 250, 280 290, 300 230, 340
300, 360 260, 440 310, 470 360, 604 286)'), 40);
+SELECT ST_Simplify('LINESTRING(250 250, 280 290, 300 230, 340 300, 360 260,
440 310, 470 360, 604 286)', 40);
EXPR$0
LINESTRING (250 250, 280 290, 300 230, 470 360, 604 286)
!ok
# ST_SimplifyPreserveTopology(geom, distance) Simplifies *geom*, preserving
its topology
-SELECT ST_SimplifyPreserveTopology(ST_GeomFromText('POLYGON((8 25, 28 22, 28
20, 15 11, 33 3, 56 30, 46 33, 46 34, 47 44, 35 36, 45 33, 43 19, 29 21, 29
22, 35 26, 24 39, 8 25))'), 10);
+SELECT ST_SimplifyPreserveTopology('POLYGON((8 25, 28 22, 28 20, 15 11, 33 3,
56 30, 46 33, 46 34, 47 44, 35 36, 45 33, 43 19, 29 21, 29 22, 35 26, 24 39, 8
25))', 10);
EXPR$0
POLYGON ((8 25, 28 22, 15 11, 33 3, 56 30, 47 44, 35 36, 43 19, 24 39, 8 25))
!ok
-SELECT ST_SimplifyPreserveTopology(ST_GeomFromText('POLYGON((8 25, 28 22, 28
20, 15 11, 33 3, 56 30, 46 33, 46 34, 47 44, 35 36, 45 33, 43 19, 29 21, 29
22, 35 26, 24 39, 8 25))'), 20);
+SELECT ST_SimplifyPreserveTopology('POLYGON((8 25, 28 22, 28 20, 15 11, 33 3,
56 30, 46 33, 46 34, 47 44, 35 36, 45 33, 43 19, 29 21, 29 22, 35 26, 24 39, 8
25))', 20);
EXPR$0
POLYGON ((8 25, 33 3, 56 30, 47 44, 43 19, 8 25))
!ok
-SELECT ST_SimplifyPreserveTopology(ST_GeomFromText('POLYGON((8 25, 28 22, 28
20, 15 11, 33 3, 56 30, 46 33, 46 34, 47 44, 35 36, 45 33, 43 19, 29 21, 29
22, 35 26, 24 39, 8 25))'), 30);
+SELECT ST_SimplifyPreserveTopology('POLYGON((8 25, 28 22, 28 20, 15 11, 33 3,
56 30, 46 33, 46 34, 47 44, 35 36, 45 33, 43 19, 29 21, 29 22, 35 26, 24 39, 8
25))', 30);
EXPR$0
POLYGON ((8 25, 33 3, 56 30, 47 44, 8 25))
!ok
# ST_Snap(geom1, geom2, tolerance) Snaps *geom1* and *geom2* together
-SELECT ST_Snap(
- ST_GeomFromText('LINESTRING(1 2, 2 4, 4 4, 5 2)'),
- ST_GeomFromText('LINESTRING(5 2, 2 1, 1 2)'), 1);
+SELECT ST_Snap('LINESTRING(1 2, 2 4, 4 4, 5 2)', 'LINESTRING(5 2, 2 1, 1 2)',
1);
EXPR$0
LINESTRING (1 2, 2 4, 4 4, 5 2)
!ok
-SELECT ST_Snap(
- ST_GeomFromText('LINESTRING(1 2, 2 4, 4 4, 5 2)'),
- ST_GeomFromText('LINESTRING(5 2, 2 1, 1 2)'), 2);
+SELECT ST_Snap('LINESTRING(1 2, 2 4, 4 4, 5 2)', 'LINESTRING(5 2, 2 1, 1 2)',
2);
EXPR$0
LINESTRING (1 2, 2 1, 2 4, 4 4, 5 2)
!ok
-SELECT ST_Snap(
- ST_GeomFromText('LINESTRING(1 2, 2 4, 4 4, 5 2)'),
- ST_GeomFromText('LINESTRING(5 2, 2 1, 1 2)'), 3);
+SELECT ST_Snap('LINESTRING(1 2, 2 4, 4 4, 5 2)', 'LINESTRING(5 2, 2 1, 1 2)',
3);
EXPR$0
LINESTRING (1 2, 1 2, 2 1, 5 2, 5 2)
!ok
-SELECT ST_Snap(
- ST_GeomFromText('POLYGON((1 1, 1 7, 7 7, 7 1, 1 1))'),
- ST_GeomFromText('POLYGON((3 3, 1 2, 0 2, 0 1, -2 1, -1 7, 3 6, 4 8, 7 8, 6
6, 9 6, 8 1, 8 1, 3 3))'), 2);
+SELECT ST_Snap('POLYGON((1 1, 1 7, 7 7, 7 1, 1 1))', 'POLYGON((3 3, 1 2, 0 2,
0 1, -2 1, -1 7, 3 6, 4 8, 7 8, 6 6, 9 6, 8 1, 8 1, 3 3))', 2);
EXPR$0
POLYGON ((0 1, 1 2, 0 2, -1 7, 1 7, 3 6, 6 6, 8 1, 0 1))
!ok
-SELECT ST_Snap(
- ST_GeomFromText('POLYGON((3 3, 1 2, 0 2, 0 1, -2 1, -1 7, 3 6, 4 8, 7 8, 6
6, 9 6, 8 1, 8 1, 3 3))'),
- ST_GeomFromText('POLYGON((1 1, 1 7, 7 7, 7 1, 1 1))'), 2);
+SELECT ST_Snap('POLYGON((3 3, 1 2, 0 2, 0 1, -2 1, -1 7, 3 6, 4 8, 7 8, 6 6, 9
6, 8 1, 8 1, 3 3))', 'POLYGON((1 1, 1 7, 7 7, 7 1, 1 1))', 2);
EXPR$0
POLYGON ((3 3, 1 1, 1 1, 1 1, -2 1, -1 7, 1 7, 3 6, 4 8, 7 7, 7 7, 9 6, 7 1, 7
1, 3 3))
!ok
@@ -1917,7 +1870,8 @@ POLYGON ((-71.1776848523 42.3902896513, -71.1776843767
42.3903829479, -71.177584
# Disabled - ST_Union agg function is not implemented
!if (false) {
SELECT ST_AsText(st_union(the_geom))
-FROM (VALUES ST_GeomFromText('POLYGON((-7 4.2,-7.1 4.2,-7.1 4.3,-7 4.2))'),
+FROM (VALUES
+ ST_GeomFromText('POLYGON((-7 4.2,-7.1 4.2,-7.1 4.3,-7 4.2))'),
ST_GeomFromText('POINT(5 5)'),
ST_GeomFromText('POINT(-2 3)'),
ST_GeomFromText('LINESTRING(5 5, 10 10)')) as foo(the_geom);
diff --git a/site/_docs/reference.md b/site/_docs/reference.md
index 98a9bd7c0e..b51726d6dc 100644
--- a/site/_docs/reference.md
+++ b/site/_docs/reference.md
@@ -1515,23 +1515,24 @@ Calcite type conversions. The table shows all possible
conversions,
without regard to the context in which it is made. The rules governing
these details follow the table.
-| FROM - TO | NULL | BOOLEAN | TINYINT | SMALLINT | INT | BIGINT |
DECIMAL | FLOAT or REAL | DOUBLE | INTERVAL | DATE | TIME | TIMESTAMP | CHAR or
VARCHAR | BINARY or VARBINARY
-|:------------------- |:---- |:------- |:------- |:-------- |:--- |:------
|:------- |:------------- |:------ |:-------- |:---- |:---- |:---------
|:--------------- |:-----------
-| NULL | i | i | i | i | i | i | i
| i | i | i | i | i | i | i
| i
-| BOOLEAN | x | i | e | e | e | e | e
| e | e | x | x | x | x | i
| x
-| TINYINT | x | e | i | i | i | i | i
| i | i | e | x | x | e | i
| x
-| SMALLINT | x | e | i | i | i | i | i
| i | i | e | x | x | e | i
| x
-| INT | x | e | i | i | i | i | i
| i | i | e | x | x | e | i
| x
-| BIGINT | x | e | i | i | i | i | i
| i | i | e | x | x | e | i
| x
-| DECIMAL | x | e | i | i | i | i | i
| i | i | e | x | x | e | i
| x
-| FLOAT/REAL | x | e | i | i | i | i | i
| i | i | x | x | x | e | i
| x
-| DOUBLE | x | e | i | i | i | i | i
| i | i | x | x | x | e | i
| x
-| INTERVAL | x | x | e | e | e | e | e
| x | x | i | x | x | x | e
| x
-| DATE | x | x | x | x | x | x | x
| x | x | x | i | x | i | i
| x
-| TIME | x | x | x | x | x | x | x
| x | x | x | x | i | e | i
| x
-| TIMESTAMP | x | x | e | e | e | e | e
| e | e | x | i | e | i | i
| x
-| CHAR or VARCHAR | x | e | i | i | i | i | i
| i | i | i | i | i | i | i
| i
-| BINARY or VARBINARY | x | x | x | x | x | x | x
| x | x | x | e | e | e | i
| i
+| FROM - TO | NULL | BOOLEAN | TINYINT | SMALLINT | INT | BIGINT |
DECIMAL | FLOAT or REAL | DOUBLE | INTERVAL | DATE | TIME | TIMESTAMP | CHAR or
VARCHAR | BINARY or VARBINARY | GEOMETRY
+|:--------------------|:---- |:------- |:------- |:-------- |:--- |:------
|:------- |:------------- |:------ |:--------
|:-----|:-----|:----------|:--------------- |:--------------------|:--------
+| NULL | i | i | i | i | i | i | i
| i | i | i | i | i | i | i
| i | i
+| BOOLEAN | x | i | e | e | e | e | e
| e | e | x | x | x | x | i
| x | x
+| TINYINT | x | e | i | i | i | i | i
| i | i | e | x | x | e | i
| x | x
+| SMALLINT | x | e | i | i | i | i | i
| i | i | e | x | x | e | i
| x | x
+| INT | x | e | i | i | i | i | i
| i | i | e | x | x | e | i
| x | x
+| BIGINT | x | e | i | i | i | i | i
| i | i | e | x | x | e | i
| x | x
+| DECIMAL | x | e | i | i | i | i | i
| i | i | e | x | x | e | i
| x | x
+| FLOAT/REAL | x | e | i | i | i | i | i
| i | i | x | x | x | e | i
| x | x
+| DOUBLE | x | e | i | i | i | i | i
| i | i | x | x | x | e | i
| x | x
+| INTERVAL | x | x | e | e | e | e | e
| x | x | i | x | x | x | e
| x | x
+| DATE | x | x | x | x | x | x | x
| x | x | x | i | x | i | i
| x | x
+| TIME | x | x | x | x | x | x | x
| x | x | x | x | i | e | i
| x | x
+| TIMESTAMP | x | x | e | e | e | e | e
| e | e | x | i | e | i | i
| x | x
+| CHAR or VARCHAR | x | e | i | i | i | i | i
| i | i | i | i | i | i | i
| i | i
+| BINARY or VARBINARY | x | x | x | x | x | x | x
| x | x | x | e | e | e | i
| i | x
+| GEOMETRY | x | x | x | x | x | x | x
| x | x | x | x | x | x | i
| x | i
i: implicit cast / e: explicit cast / x: not allowed