1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

MDEV-34137: Implement the GIS function ST_Validate

The GIS function ST_Validate takes ad input a geometry and verifies that
- is compliant with the Well-Known Binary (WKB) format and Spatial
  Reference System Identifier (SRID) syntax.
- is geometrically valid.
If the input is valid return it, else it returns NULL. The use case of
this function is to filter out invalid geometry data.

Author: StefanoPetrilli <stefanop_1999@hotmail.it>
Co-authored-by: Torje Digernes <torje.digernes@oracle.com>
Co-authored-by: Hans H Melby <hans.h.melby@oracle.com>
Co-authored-by: Jon Olav Hauglid <jon.hauglid@oracle.com>
Co-authored-by: Erlend Dahl <erlend.dahl@oracle.com>
Co-authored-by: Norvald H. Ryeng <norvald.ryeng@oracle.com>
Co-authored-by: David.Zhao <david.zhao@oracle.com>
Co-authored-by: Pavan <pavan.naik@oracle.com>
This commit is contained in:
Stefano Petrilli
2015-01-26 13:56:12 +05:30
committed by Dave Gosselin
parent 869b4c243e
commit b50366667b
7 changed files with 545 additions and 22 deletions

View File

@@ -305,7 +305,8 @@ public:
virtual int interior_ring_n(uint32 num, String *result) const { return -1; }
virtual int geometry_n(uint32 num, String *result) const { return -1; }
virtual int store_shapes(Gcalc_shape_transporter *trn) const=0;
virtual int is_clockwise(int *result) const { return -1; }
virtual int make_clockwise(String *result) const{ return -1; }
public:
static Geometry *create_by_typeid(Geometry_buffer *buffer, int type_id);
@@ -498,6 +499,7 @@ public:
return 0;
}
int store_shapes(Gcalc_shape_transporter *trn) const override;
int is_clockwise(int *result) const override;
const Class_info *get_class_info() const override;
};
@@ -533,6 +535,7 @@ public:
return 0;
}
int store_shapes(Gcalc_shape_transporter *trn) const override;
int make_clockwise(String *result) const override;
const Class_info *get_class_info() const override;
};
@@ -634,6 +637,7 @@ public:
return 0;
}
int store_shapes(Gcalc_shape_transporter *trn) const override;
int make_clockwise(String *result) const override;
const Class_info *get_class_info() const override;
uint init_from_opresult(String *bin, const char *opres, uint res_len) override;
};
@@ -663,6 +667,7 @@ public:
int geometry_n(uint32 num, String *result) const override;
bool dimension(uint32 *dim, const char **end) const override;
int store_shapes(Gcalc_shape_transporter *trn) const override;
int make_clockwise(String *result) const override;
const Class_info *get_class_info() const override;
};