diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/GeometryType.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/GeometryType.java index 084d79ce9430c..ae8e373594f19 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/GeometryType.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/GeometryType.java @@ -46,7 +46,7 @@ public int calculateNumberOfBlocksUsedForGeometry( long firstBlock ) int dimension = getDimension( firstBlock ); if ( dimension > 3 ) { - throw new UnsupportedOperationException( "Points with more than 3 dimensions are not supported in the PropertyStore" ); + return PropertyType.BLOCKS_USED_FOR_BAD_TYPE_OR_ENCODING; } return 1 + dimension; } @@ -93,8 +93,15 @@ private static boolean isFloatPrecision( long firstBlock ) public static int calculateNumberOfBlocksUsed( long firstBlock ) { - int gtype = getGeometryType( firstBlock ); - return find( gtype ).calculateNumberOfBlocksUsedForGeometry( firstBlock ); + GeometryType geometryType = find( getGeometryType( firstBlock ) ); + if ( geometryType == null ) + { + return PropertyType.BLOCKS_USED_FOR_BAD_TYPE_OR_ENCODING; + } + else + { + return geometryType.calculateNumberOfBlocksUsedForGeometry( firstBlock ); + } } private static GeometryType find( int gtype ) @@ -106,7 +113,7 @@ private static GeometryType find( int gtype ) return type; } } - throw new IllegalArgumentException( "No such GeometryType: " + gtype ); + return null; } public static Value decode( PropertyBlock block )