Class GeoTypes

java.lang.Object
dev.frostlake.types.GeoTypes

public final class GeoTypes extends Object
The GEOSPATIAL type predicate shared by the strict-argument rules: GeographyType and GeometryType are ONE family for every rejection measured on the account.

That the two agree was measured rather than assumed. Live over a table carrying both a GEOGRAPHY and a GEOMETRY column, every rejection reproduced with the type name swapped and nothing else changed: GROUP BY (SQLSTATE 42804, vendor 92102), ORDER BY (92103), PARTITION BY (92104), MAX / MIN, SUM, MEDIAN, STDDEV, UPPER, ABS, ||, = and CAST(… AS VARCHAR).

Both types live in the ENGINE even though the ST_ function pack ships in the optional frostlake-geo module: a GEOGRAPHY column can be declared with the module absent, so these rejections must not depend on it being on the classpath.

This is deliberately NOT folded into TypeCategory.SEMI_STRUCTURED, which both geo types happen to carry: the semi-structured rules key on the OBJECT / ARRAY / MAP classes, and live treats geo differently from all three in both directions — GROUP BY o and o = o are legal where the geo spellings are not, while TO_JSON(o), GET(o, 'k') and ARRAY_AGG(o) all work where the geo spellings are refused.

  • Method Details

    • isGeo

      public static boolean isGeo(DataType type)
      Whether type is GEOGRAPHY or GEOMETRY.