1#ifndef ITEM_GEOFUNC_INCLUDED
2#define ITEM_GEOFUNC_INCLUDED
39#include "mysqld_error.h"
68class Spatial_reference_system;
326 const char *
func_name()
const override {
return "st_astext"; }
336 const char *
func_name()
const override {
return "st_aswkb"; }
352 const char *
func_name()
const override {
return "st_geometrytype"; }
402 const char *
func_name()
const override {
return "st_geomfromgeojson"; }
409 bool is_parent_featurecollection,
Geometry **geometry);
412 bool is_parent_featurecollection,
420 const char *member_name);
517 Item *maxdecimaldigits)
530 const char *
func_name()
const override {
return "st_asgeojson"; }
602 const char *
func_name()
const override {
return "st_geohash"; }
604 void encode_bit(
double *upper_value,
double *lower_value,
double target_value,
605 char *char_value,
int bit_number);
651 bool start_on_even_bit_arg)
664 double *result_longitude);
666 double lower_limit,
double upper_limit);
680 const char *
func_name()
const override {
return "ST_LATFROMGEOHASH"; }
693 const char *
func_name()
const override {
return "ST_LONGFROMGEOHASH"; }
699 template <
typename Coordsys>
704 const char *
func_name()
const override {
return "st_centroid"; }
717 template <
typename Coordsys>
722 const char *
func_name()
const override {
return "st_convexhull"; }
734 const char *
func_name()
const override {
return "st_envelope"; }
747 const char *
func_name()
const override {
return "st_makeenvelope"; }
761 const char *
func_name()
const override {
return "st_validate"; }
782 const char *
func_name()
const override {
return "st_simplify"; }
789 const char *
func_name()
const override {
return "point"; }
827 const char *
func_name()
const override {
return "st_pointfromgeohash"; }
851 return "st_startpoint";
853 return "st_endpoint";
855 return "st_exteriorring";
858 return "spatial_decomp_unknown";
883 return "st_geometryn";
885 return "st_interiorringn";
888 return "spatial_decomp_n_unknown";
911 for (
unsigned int i = 0; i <
arg_count; ++i) {
916 my_error(ER_ILLEGAL_VALUE_FOR_TYPE,
MYF(0),
"non geometric",
str.ptr());
1012 bool *
result,
bool *
null) = 0;
1021 const char *
func_name()
const override {
return "st_contains"; }
1032 const char *
func_name()
const override {
return "st_crosses"; }
1043 const char *
func_name()
const override {
return "st_disjoint"; }
1054 const char *
func_name()
const override {
return "st_equals"; }
1065 const char *
func_name()
const override {
return "st_intersects"; }
1076 const char *
func_name()
const override {
return "mbrcontains"; }
1087 const char *
func_name()
const override {
return "mbrcoveredby"; }
1098 const char *
func_name()
const override {
return "mbrcovers"; }
1109 const char *
func_name()
const override {
return "mbrdisjoint"; }
1120 const char *
func_name()
const override {
return "mbrequals"; }
1131 const char *
func_name()
const override {
return "mbrintersects"; }
1142 const char *
func_name()
const override {
return "mbroverlaps"; }
1153 const char *
func_name()
const override {
return "mbrtouches"; }
1164 const char *
func_name()
const override {
return "mbrwithin"; }
1175 const char *
func_name()
const override {
return "st_overlaps"; }
1186 const char *
func_name()
const override {
return "st_touches"; }
1197 const char *
func_name()
const override {
return "st_within"; }
1222 const char *
func_name()
const override {
return "st_difference"; }
1230 const char *
func_name()
const override {
return "st_intersection"; }
1238 const char *
func_name()
const override {
return "st_symdifference"; }
1246 const char *
func_name()
const override {
return "st_union"; }
1270 const char *
func_name()
const override {
return "st_buffer_strategy"; }
1280 const char *
func_name()
const override {
return "st_isempty"; }
1292 const char *
func_name()
const override {
return "st_issimple"; }
1304 const char *
func_name()
const override {
return "st_isclosed"; }
1317 const char *
func_name()
const override {
return "st_isvalid"; }
1330 const char *
func_name()
const override {
return "st_dimension"; }
1346 bool geographic_only)
1408 const char *
func_name()
const override {
return "st_latitude"; }
1423 const char *
func_name()
const override {
return "st_latitude"; }
1438 const char *
func_name()
const override {
return "st_longitude"; }
1453 const char *
func_name()
const override {
return "st_longitude"; }
1515 const char *
func_name()
const override {
return "st_swapxy"; }
1525 const char *
func_name()
const override {
return "st_numgeometries"; }
1540 const char *
func_name()
const override {
return "st_numinteriorrings"; }
1555 const char *
func_name()
const override {
return "st_numpoints"; }
1568 const char *
func_name()
const override {
return "st_area"; }
1586 const char *
func_name()
const override {
return "st_buffer"; }
1603 const char *
func_name()
const override {
return "st_length"; }
1620 const char *
func_name()
const override {
return "st_srid"; }
1634 const char *
func_name()
const override {
return "st_srid"; }
1646 template <
typename Coordsys,
typename BG_geometry>
1651 template <
typename Coordsys>
1671 const char *
func_name()
const override {
return "st_distance"; }
1679 const char *
func_name()
const override {
return "st_frechetdistance"; }
1693 const char *
func_name()
const override {
return "st_hausdorffdistance"; }
1707 const char *
func_name()
const override {
return "st_distance_sphere"; }
1738 const char *
func_name()
const override {
return "st_lineinterpolatepoint"; }
1749 const char *
func_name()
const override {
return "st_lineinterpolatepoints"; }
1760 const char *
func_name()
const override {
return "st_pointatdistance"; }
1774 const char *
func_name()
const override {
return "st_transform"; }
1804 std::unique_ptr<gis::Geometry> *source_geometry,
1805 std::unique_ptr<gis::Geometry> *target_geometry)
const = 0;
1815 const char *
func_name()
const override {
return "cast_as_point"; }
1818 std::unique_ptr<gis::Geometry> *source_geometry,
1819 std::unique_ptr<gis::Geometry> *target_geometry)
const override;
1829 const char *
func_name()
const override {
return "cast_as_linestring"; }
1832 std::unique_ptr<gis::Geometry> *source_geometry,
1833 std::unique_ptr<gis::Geometry> *target_geometry)
const override;
1843 const char *
func_name()
const override {
return "cast_as_polygon"; }
1846 std::unique_ptr<gis::Geometry> *source_geometry,
1847 std::unique_ptr<gis::Geometry> *target_geometry)
const override;
1857 const char *
func_name()
const override {
return "cast_as_multipoint"; }
1860 std::unique_ptr<gis::Geometry> *source_geometry,
1861 std::unique_ptr<gis::Geometry> *target_geometry)
const override;
1871 const char *
func_name()
const override {
return "cast_as_multilinestring"; }
1874 std::unique_ptr<gis::Geometry> *source_geometry,
1875 std::unique_ptr<gis::Geometry> *target_geometry)
const override;
1885 const char *
func_name()
const override {
return "cast_as_multipolygon"; }
1888 std::unique_ptr<gis::Geometry> *source_geometry,
1889 std::unique_ptr<gis::Geometry> *target_geometry)
const override;
1901 return "cast_as_geometrycollection";
1905 std::unique_ptr<gis::Geometry> *source_geometry,
1906 std::unique_ptr<gis::Geometry> *target_geometry)
const override;
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:247
This file implements a struct that is used to hold information that decide how to compute the buffer ...
A utility class to flatten any hierarchy of geometry collection into one with no nested geometry coll...
Definition: item_geofunc.h:141
Geometry_list & get_geometries()
Definition: item_geofunc.h:168
void set_comp_no_overlapped(bool b)
Definition: item_geofunc.h:156
size_t m_num_isolated
Definition: item_geofunc.h:144
std::vector< Geometry * > Geometry_list
Definition: item_geofunc.h:150
gis::srid_t get_srid() const
Definition: item_geofunc.h:158
const Geometry_list & get_geometries() const
Definition: item_geofunc.h:166
gis::srid_t m_srid
Definition: item_geofunc.h:143
Geometry * store(const Geometry *geo)
Store a geometry of GEOMETRY format into this collection.
Definition: item_geofunc.cc:4617
Inplace_vector< String > m_geosdata
Definition: item_geofunc.h:147
bool fill(const Geometry *geo, bool break_multi_geom=false)
Definition: item_geofunc.h:162
bool store_geometry(const Geometry *geo, bool break_multi_geom)
Store a Geometry object into this collection.
Definition: item_geofunc.cc:4559
size_t num_isolated() const
Definition: item_geofunc.h:172
bool comp_no_overlapped
Definition: item_geofunc.h:142
BG_geometry_collection()
Definition: item_geofunc.cc:4542
bool is_comp_no_overlapped() const
Definition: item_geofunc.h:154
std::vector< Geometry * > m_geos
Definition: item_geofunc.h:145
Inplace_vector< Geometry_buffer > m_geobufs
Definition: item_geofunc.h:146
bool all_isolated() const
Definition: item_geofunc.h:170
void set_srid(gis::srid_t srid)
Definition: item_geofunc.h:160
We have to hold result buffers in functions that return a GEOMETRY string, because such a function's ...
Definition: item_geofunc.h:82
~BG_result_buf_mgr()
Definition: item_geofunc.h:88
void add_buffer(void *buf)
Definition: item_geofunc.h:93
void * bg_result_buf
Definition: item_geofunc.h:125
void set_result_buffer(void *buf)
Definition: item_geofunc.h:115
BG_result_buf_mgr()
Definition: item_geofunc.h:86
void free_intermediate_result_buffers()
Definition: item_geofunc.h:101
void forget_buffer(void *buf)
Definition: item_geofunc.h:95
Prealloced_buffers bg_results
Definition: item_geofunc.h:131
void free_result_buffer()
Definition: item_geofunc.h:110
Prealloced_array< void *, 64 > Prealloced_buffers
Definition: item_geofunc.h:83
static constexpr size_t MAX_LONG_BLOB_WIDTH
Definition: field.h:735
geometry_type
Definition: field.h:716
@ GEOM_POINT
Definition: field.h:718
Definition: spatial.h:213
wkbType
Definition: spatial.h:290
Definition: spatial.h:2099
Definition: spatial.h:1152
Definition: spatial.h:2187
Utility container class to store elements stably and scalably.
Definition: inplace_vector.h:60
Base class for functions that usually take two arguments, which are possibly strings,...
Definition: item_cmpfunc.h:636
Definition: item_cmpfunc.h:294
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_cmpfunc.h:328
This class handles the following function:
Definition: item_geofunc.h:491
bool val_json(Json_wrapper *wr) override
Create a GeoJSON object, according to GeoJSON specification revision 1.0.
Definition: item_geofunc.cc:2365
Item_func_as_geojson(THD *thd, const POS &pos, Item *geometry, Item *maxdecimaldigits)
Definition: item_geofunc.h:516
bool m_add_short_crs_urn
If true, the output GeoJSON has a CRS object in the short form (e.g "EPSG:4326").
Definition: item_geofunc.h:501
bool parse_maxdecimaldigits_argument()
Parse the value in maxdecimaldigits argument.
Definition: item_geofunc.cc:2455
Item_func_as_geojson(THD *thd, const POS &pos, Item *geometry, Item *maxdecimaldigits, Item *options)
Definition: item_geofunc.h:522
int m_max_decimal_digits
Maximum number of decimal digits in printed coordinates.
Definition: item_geofunc.h:494
bool m_add_bounding_box
If true, the output GeoJSON has a bounding box for each GEOMETRY.
Definition: item_geofunc.h:496
const char * func_name() const override
Definition: item_geofunc.h:530
Item_func_as_geojson(THD *thd, const POS &pos, Item *geometry)
Definition: item_geofunc.h:511
bool parse_options_argument()
Parse the value in options argument.
Definition: item_geofunc.cc:2418
uint32 m_geometry_srid
The SRID found in the input GEOMETRY.
Definition: item_geofunc.h:508
bool fix_fields(THD *thd, Item **ref) override
Perform type checking on all arguments.
Definition: item_geofunc.cc:2488
bool m_add_long_crs_urn
If true, the output GeoJSON has a CRS object in the long form (e.g "urn:ogc:def:crs:EPSG::4326").
Definition: item_geofunc.h:506
Definition: item_geofunc.h:331
Item_func_as_wkb(const POS &pos, Item *a)
Definition: item_geofunc.h:333
const char * func_name() const override
Definition: item_geofunc.h:336
String * val_str(String *) override
Definition: item_geofunc.cc:3259
Item_func_as_wkb(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:334
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:338
Definition: item_geofunc.h:321
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.cc:3250
String * val_str_ascii(String *) override
Definition: item_geofunc.cc:3140
Item_func_as_wkt(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:324
const char * func_name() const override
Definition: item_geofunc.h:326
Item_func_as_wkt(const POS &pos, Item *a)
Definition: item_geofunc.h:323
Definition: item_geofunc.h:1249
char tmp_buffer[16]
Definition: item_geofunc.h:1267
enum_buffer_strategies
Definition: item_geofunc.h:1251
@ point_circle
Definition: item_geofunc.h:1257
@ point_square
Definition: item_geofunc.h:1258
@ join_miter
Definition: item_geofunc.h:1256
@ max_strategy
Definition: item_geofunc.h:1259
@ end_flat
Definition: item_geofunc.h:1254
@ invalid_strategy
Definition: item_geofunc.h:1252
@ end_round
Definition: item_geofunc.h:1253
@ join_round
Definition: item_geofunc.h:1255
friend class Item_func_buffer
Definition: item_geofunc.h:1265
String tmp_value
Definition: item_geofunc.h:1266
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc_buffer.cc:125
const char * func_name() const override
Definition: item_geofunc.h:1270
String * val_str(String *) override
Definition: item_geofunc_buffer.cc:133
Item_func_buffer_strategy(const POS &pos, PT_item_list *ilist)
Definition: item_geofunc_buffer.cc:117
Definition: item_geofunc.h:696
const char * func_name() const override
Definition: item_geofunc.h:704
bool bg_centroid(const Geometry *geom, String *ptwkb)
Definition: item_geofunc.cc:3830
String * val_str(String *) override
Definition: item_geofunc.cc:3613
Item_func_centroid(const POS &pos, Item *a)
Definition: item_geofunc.h:703
BG_result_buf_mgr bg_resbuf_mgr
Definition: item_geofunc.h:697
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:707
Field::geometry_type get_geometry_type() const override
Definition: item_geofunc.cc:3609
Definition: item_geofunc.h:713
String tmp_value
Definition: item_geofunc.h:715
BG_result_buf_mgr bg_resbuf_mgr
Definition: item_geofunc.h:714
bool bg_convex_hull(const Geometry *geom, String *wkb)
Definition: item_geofunc.cc:3942
const char * func_name() const override
Definition: item_geofunc.h:722
String * val_str(String *) override
Definition: item_geofunc.cc:3900
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:725
Field::geometry_type get_geometry_type() const override
Definition: item_geofunc.cc:3896
Item_func_convex_hull(const POS &pos, Item *a)
Definition: item_geofunc.h:721
The abstract superclass for all geometry coordinate mutator functions (ST_X, ST_Y,...
Definition: item_geofunc.h:1343
virtual int coordinate_number(const dd::Spatial_reference_system *srs) const =0
Returns the coordinate number accessed by this item.
Item_func_coordinate_mutator(const POS &pos, Item *a, Item *b, bool geographic_only)
Definition: item_geofunc.h:1345
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1359
const char * func_name() const override=0
bool m_geographic_only
Whether this item will accept only geographic geometries/SRSs.
Definition: item_geofunc.h:1367
String * val_str(String *) override
Definition: item_geofunc.cc:4910
The abstract superclass for all geometry coordinate oberserver functions (ST_X, ST_Y,...
Definition: item_geofunc.h:1374
double val_real() override
Definition: item_geofunc.cc:4982
bool m_geographic_only
Whether this item will accept only geographic geometries/SRSs.
Definition: item_geofunc.h:1396
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1389
Item_func_coordinate_observer(const POS &pos, Item *a, bool geographic_only)
Definition: item_geofunc.h:1376
virtual int coordinate_number(const dd::Spatial_reference_system *srs) const =0
Returns the coordinate number accessed by this item.
const char * func_name() const override=0
Definition: item_geofunc.h:1324
String value
Definition: item_geofunc.h:1325
const char * func_name() const override
Definition: item_geofunc.h:1330
longlong val_int() override
Definition: item_geofunc.cc:4834
Item_func_dimension(const POS &pos, Item *a)
Definition: item_geofunc.h:1328
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1331
Definition: item_geofunc.h:1643
double val_real() override
Definition: item_geofunc.cc:5658
double geometry_collection_distance(const Geometry *g1, const Geometry *g2)
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1663
const char * func_name() const override
Definition: item_geofunc.h:1671
double bg_distance(const Geometry *g1, const Geometry *g2)
enum Functype functype() const override
Definition: item_geofunc.h:1670
double distance_dispatch_second_geometry(const BG_geometry &bg1, const Geometry *g2)
Item_func_distance(const POS &pos, PT_item_list *ilist)
Definition: item_geofunc.h:1654
Definition: item_geofunc.h:731
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:737
const char * func_name() const override
Definition: item_geofunc.h:734
Field::geometry_type get_geometry_type() const override
Definition: item_geofunc.cc:3572
String * val_str(String *) override
Definition: item_geofunc.cc:3576
Item_func_envelope(const POS &pos, Item *a)
Definition: item_geofunc.h:733
This class handles two forms of the same function:
Definition: item_geofunc.h:544
char char_to_base32(char char_input)
Converts a char value to it's base32 representation, where 0 = a, 1 = b, ... , 30 = y,...
Definition: item_geofunc.cc:2867
uint geohash_max_output_length
The maximum output length of the geohash, supplied by the user.
Definition: item_geofunc.h:551
Item_func_geohash(const POS &pos, Item *longitude, Item *latitude, Item *length)
Definition: item_geofunc.h:591
String * val_str_ascii(String *) override
Encodes a pair of longitude and latitude values into a geohash string.
Definition: item_geofunc.cc:2673
double longitude
The longitude argument supplied by the user (directly or by a POINT).
Definition: item_geofunc.h:549
bool fill_and_check_fields()
Populate member variables with values from arguments.
Definition: item_geofunc.cc:2581
const double min_latitude
The minimum input latitude.
Definition: item_geofunc.h:563
bool fix_fields(THD *thd, Item **ref) override
Here we check for valid types.
Definition: item_geofunc.cc:2740
void encode_bit(double *upper_value, double *lower_value, double target_value, char *char_value, int bit_number)
Sets the bit number in char_value, determined by following formula:
Definition: item_geofunc.cc:2842
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.cc:2730
bool check_valid_latlong_type(Item *ref)
Checks if supplied item is a valid latitude or longitude, based on which type it is.
Definition: item_geofunc.cc:2531
const uint upper_limit_output_length
The absolute upper limit of geohash output length.
Definition: item_geofunc.h:581
const double min_longitude
The minimum input longitude.
Definition: item_geofunc.h:575
double latitude
The latitude argument supplied by the user (directly or by a POINT).
Definition: item_geofunc.h:547
const double max_latitude
The maximum input latitude.
Definition: item_geofunc.h:557
const double max_longitude
The maximum input longitude.
Definition: item_geofunc.h:569
const char * func_name() const override
Definition: item_geofunc.h:602
Item_func_geohash(const POS &pos, Item *point, Item *length)
Definition: item_geofunc.h:584
Definition: item_geofunc.h:199
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_geofunc.cc:316
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:252
Item_func_geometry_from_text(const POS &pos, Item *a, Item *srid, Item *option, Functype functype)
Definition: item_geofunc.h:245
Functype
Definition: item_geofunc.h:201
@ MULTILINESTRINGFROMTEXT
@ GEOMETRYCOLLECTIONFROMTEXT
Functype m_functype
Definition: item_geofunc.h:222
Item_func_geometry_from_text(const POS &pos, Item *a, Functype functype)
Definition: item_geofunc.h:240
Geometry::wkbType allowed_wkb_type() const
Get the type of geometry that this Item can return.
Definition: item_geofunc.cc:365
String * val_str(String *) override
Parses a WKT string to produce a geometry encoded with an SRID prepending its WKB bytes,...
Definition: item_geofunc.cc:423
const char * func_name() const override
Definition: item_geofunc.cc:325
Item_geometry_func super
Definition: item_geofunc.h:221
bool is_allowed_wkb_type(Geometry::wkbType type) const
Check if a geometry type is a valid return type for this Item.
Definition: item_geofunc.cc:397
Item_func_geometry_from_text(const POS &pos, Item *a, Item *srid, Functype functype)
Definition: item_geofunc.h:242
Definition: item_geofunc.h:260
Item_geometry_func super
Definition: item_geofunc.h:281
Functype
Definition: item_geofunc.h:262
@ GEOMETRYCOLLECTIONFROMWKB
Item_func_geometry_from_wkb(const POS &pos, Item *a, Item *srid, Item *option, Functype functype)
Definition: item_geofunc.h:312
Item_func_geometry_from_wkb(const POS &pos, Item *a, Item *srid, Functype functype)
Definition: item_geofunc.h:309
String tmp_value
Definition: item_geofunc.h:282
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_geofunc.cc:576
Functype m_functype
Definition: item_geofunc.h:283
String * val_str(String *) override
Parses a WKB string to produce a geometry encoded with an SRID prepending its WKB bytes,...
Definition: item_geofunc.cc:680
Item_func_geometry_from_wkb(const POS &pos, Item *a, Functype functype)
Definition: item_geofunc.h:307
const char * func_name() const override
Definition: item_geofunc.cc:585
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:299
Geometry::wkbType allowed_wkb_type() const
Get the type of geometry that this Item can return.
Definition: item_geofunc.cc:623
bool is_allowed_wkb_type(Geometry::wkbType type) const
Check if a geometry type is a valid return type for this Item.
Definition: item_geofunc.cc:654
Definition: item_geofunc.h:347
Item_func_geometry_type(const POS &pos, Item *a)
Definition: item_geofunc.h:349
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:353
const char * func_name() const override
Definition: item_geofunc.h:352
String * val_str_ascii(String *) override
Definition: item_geofunc.cc:3366
This handles one function:
Definition: item_geofunc.h:375
bool m_toplevel
True if we're currently parsing the top-level object.
Definition: item_geofunc.h:467
static const char * TYPE_MEMBER
Definition of various string constants used for writing and reading GeoJSON data.
Definition: item_geofunc.h:422
static const char * FEATURECOLLECTION_TYPE
Definition: item_geofunc.h:442
bool parse_object(const Json_object *object, bool *rollback, String *buffer, bool is_parent_featurecollection, Geometry **geometry)
Takes a JSON object as input, and parses the data to a Geometry object.
Definition: item_geofunc.cc:1066
static const char * SHORT_EPSG_PREFIX
Definition: item_geofunc.h:431
static const char * CRS_NAME_MEMBER
Definition: item_geofunc.h:429
bool is_member_valid(const Json_dom *member, const char *member_name, enum_json_type expected_type, bool allow_null, bool *was_null)
Checks if a JSON member is valid based on input criteria.
Definition: item_geofunc.cc:1784
static const char * LINESTRING_TYPE
Definition: item_geofunc.h:436
bool parse_object_array(const Json_array *points, Geometry::wkbType type, bool *rollback, String *buffer, bool is_parent_featurecollection, Geometry **geometry)
Takes a JSON array as input, does a recursive parsing and returns a Geometry object.
Definition: item_geofunc.cc:1354
longlong m_srid_found_in_document
The SRID value of the document CRS, if one is found.
Definition: item_geofunc.h:457
double m_min_latitude
The minimum allowed latitude value (inclusive).
Definition: item_geofunc.h:463
static const char * MULTIPOLYGON_TYPE
Definition: item_geofunc.h:439
bool parse_crs_object(const Json_object *crs_object)
Takes a GeoJSON CRS object as input and parses it into a SRID.
Definition: item_geofunc.cc:1663
const Json_dom * my_find_member_ncase(const Json_object *object, const char *member_name)
Case insensitive lookup of a member in a JSON object.
Definition: item_geofunc.cc:1037
bool m_user_provided_srid
Is set to true if user provided a SRID as an argument.
Definition: item_geofunc.h:450
static const char * GEOMETRIES_MEMBER
Definition: item_geofunc.h:427
double m_min_longitude
The minimum allowed longitude value (non-inclusive).
Definition: item_geofunc.h:459
static const char * LONG_EPSG_PREFIX
Definition: item_geofunc.h:432
enum_handle_coordinate_dimension m_handle_coordinate_dimension
How higher coordinate dimensions than currently supported should be handled.
Definition: item_geofunc.h:448
static const char * COORDINATES_MEMBER
Definition: item_geofunc.h:428
static const char * FEATURE_TYPE
Definition: item_geofunc.h:441
String * val_str(String *) override
<geometry> = ST_GEOMFROMGEOJSON(<string>[, <options>[, <srid>]])
Definition: item_geofunc.cc:865
gis::srid_t m_user_srid
The SRID user provided as an argument.
Definition: item_geofunc.h:452
bool get_linestring(const Json_array *data_array, Gis_line_string *linestring)
Create a Gis_line_string from a JSON array.
Definition: item_geofunc.cc:1516
bool get_positions(const Json_array *coordinates, Gis_point *point)
Parse an array of coordinates to a Gis_point.
Definition: item_geofunc.cc:1254
const char * func_name() const override
Definition: item_geofunc.h:402
double m_max_longitude
The maximum allowed longitude (inclusive).
Definition: item_geofunc.h:461
double m_max_latitude
The maximum allowed latitude (inclusive).
Definition: item_geofunc.h:465
Item_func_geomfromgeojson(const POS &pos, Item *json_string, Item *options)
Definition: item_geofunc.h:392
static const char * CRS84_URN
Definition: item_geofunc.h:433
Geometry::wkbType get_wkbtype(const char *typestring)
Converts GeoJSON type string to a wkbType.
Definition: item_geofunc.cc:1626
static bool check_argument_valid_integer(Item *argument)
Checks if the supplied argument is a valid integer type.
Definition: item_geofunc.cc:1837
bool get_polygon(const Json_array *data_array, Gis_polygon *polygon)
Create a Gis_polygon from a JSON array.
Definition: item_geofunc.cc:1548
static const char * MULTIPOINT_TYPE
Definition: item_geofunc.h:435
Item_func_geomfromgeojson(const POS &pos, Item *json_string, Item *options, Item *srid)
Definition: item_geofunc.h:396
static const char * POINT_TYPE
Definition: item_geofunc.h:434
static const char * CRS_MEMBER
Definition: item_geofunc.h:423
bool fix_fields(THD *, Item **ref) override
Do type checking on all provided arguments.
Definition: item_geofunc.cc:1860
static const char * NAMED_CRS
Definition: item_geofunc.h:430
static const char * PROPERTIES_MEMBER
Definition: item_geofunc.h:425
Item_func_geomfromgeojson(const POS &pos, Item *json_string)
Definition: item_geofunc.h:387
static const char * GEOMETRYCOLLECTION_TYPE
Definition: item_geofunc.h:440
enum_handle_coordinate_dimension
Describing how coordinate dimensions higher than supported in MySQL should be handled.
Definition: item_geofunc.h:381
@ strip_now_reject_future
Definition: item_geofunc.h:384
@ reject_document
Definition: item_geofunc.h:382
@ strip_now_accept_future
Definition: item_geofunc.h:383
@ strip_now_strip_future
Definition: item_geofunc.h:385
static const char * FEATURES_MEMBER
Definition: item_geofunc.h:426
static const char * POLYGON_TYPE
Definition: item_geofunc.h:438
static const char * MULTILINESTRING_TYPE
Definition: item_geofunc.h:437
static const char * GEOMETRY_MEMBER
Definition: item_geofunc.h:424
Definition: item_geofunc.h:1299
longlong val_int() override
Definition: item_geofunc.cc:4771
Item_func_isclosed(const POS &pos, Item *a)
Definition: item_geofunc.h:1301
optimize_type select_optimize(const THD *) override
Definition: item_geofunc.h:1303
const char * func_name() const override
Definition: item_geofunc.h:1304
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1305
Definition: item_geofunc.h:1275
Item_func_isempty(const POS &pos, Item *a)
Definition: item_geofunc.h:1277
optimize_type select_optimize(const THD *) override
Definition: item_geofunc.h:1279
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1281
longlong val_int() override
Definition: item_geofunc.cc:4707
const char * func_name() const override
Definition: item_geofunc.h:1280
Definition: item_geofunc.h:1312
Item_func_isvalid(const POS &pos, Item *a)
Definition: item_geofunc.h:1314
optimize_type select_optimize(const THD *) override
Definition: item_geofunc.h:1316
const char * func_name() const override
Definition: item_geofunc.h:1317
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1318
longlong val_int() override
Definition: item_geofunc.cc:4793
This handles the <double> = ST_LATFROMGEOHASH(<string>) function.
Definition: item_geofunc.h:674
const char * func_name() const override
Definition: item_geofunc.h:680
Item_func_latfromgeohash(const POS &pos, Item *a)
Definition: item_geofunc.h:676
This is a superclass for Item_func_longfromgeohash and Item_func_latfromgeohash, since they share alm...
Definition: item_geofunc.h:614
const double lower_latitude
The lower limit for latitude output value.
Definition: item_geofunc.h:620
bool fix_fields(THD *thd, Item **ref) override
Definition: item_geofunc.cc:2888
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.cc:2882
Item_func_latlongfromgeohash(const POS &pos, Item *a, double lower_latitude, double upper_latitude, double lower_longitude, double upper_longitude, bool start_on_even_bit_arg)
Definition: item_geofunc.h:648
const bool start_on_even_bit
If this is set to true the algorithm will start decoding on the first bit, which decodes a longitude ...
Definition: item_geofunc.h:645
static bool decode_geohash(String *geohash, double upper_latitude, double lower_latitude, double upper_longitude, double lower_longitude, double *result_latitude, double *result_longitude)
Decodes a geohash string into longitude and latitude.
Definition: item_geofunc.cc:2953
const double upper_longitude
The upper limit for longitude output value.
Definition: item_geofunc.h:638
static double round_latlongitude(double latlongitude, double error_range, double lower_limit, double upper_limit)
Rounds a latitude or longitude value.
Definition: item_geofunc.cc:3067
static bool check_geohash_argument_valid_type(Item *item)
Checks if geohash arguments is of valid type.
Definition: item_geofunc.cc:2912
const double upper_latitude
The upper limit for latitude output value.
Definition: item_geofunc.h:626
const double lower_longitude
The lower limit for longitude output value.
Definition: item_geofunc.h:632
double val_real() override
Decodes a geohash into longitude if start_on_even_bit == true, or latitude if start_on_even_bit == fa...
Definition: item_geofunc.cc:3110
Definition: item_geofunc.h:1716
Item_func_lineinterpolate(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1718
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1725
String * val_str(String *str) override
Definition: item_geofunc.cc:5878
virtual bool returnMultiplePoints() const =0
virtual bool isFractionalDistance() const =0
Definition: item_geofunc.h:1732
bool isFractionalDistance() const override
Definition: item_geofunc.h:1739
Item_func_lineinterpolatepoint(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1734
const char * func_name() const override
Definition: item_geofunc.h:1738
bool returnMultiplePoints() const override
Definition: item_geofunc.h:1740
Definition: item_geofunc.h:1743
bool isFractionalDistance() const override
Definition: item_geofunc.h:1750
const char * func_name() const override
Definition: item_geofunc.h:1749
Item_func_lineinterpolatepoints(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1745
bool returnMultiplePoints() const override
Definition: item_geofunc.h:1751
This handles the <double> = ST_LONGFROMGEOHASH(<string>) function.
Definition: item_geofunc.h:687
Item_func_longfromgeohash(const POS &pos, Item *a)
Definition: item_geofunc.h:689
const char * func_name() const override
Definition: item_geofunc.h:693
Definition: item_geofunc.h:743
String * val_str(String *) override
Definition: item_geofunc.cc:3431
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:750
Field::geometry_type get_geometry_type() const override
Definition: item_geofunc.cc:3427
Item_func_make_envelope(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:745
const char * func_name() const override
Definition: item_geofunc.h:747
Definition: item_geofunc.h:1070
Item_func_mbrcontains(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1072
enum Functype functype() const override
Definition: item_geofunc.h:1074
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:159
enum Functype rev_functype() const override
Definition: item_geofunc.h:1075
const char * func_name() const override
Definition: item_geofunc.h:1076
Definition: item_geofunc.h:1081
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:166
enum Functype rev_functype() const override
Definition: item_geofunc.h:1086
Item_func_mbrcoveredby(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1083
enum Functype functype() const override
Definition: item_geofunc.h:1085
const char * func_name() const override
Definition: item_geofunc.h:1087
Definition: item_geofunc.h:1092
enum Functype rev_functype() const override
Definition: item_geofunc.h:1097
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:173
Item_func_mbrcovers(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1094
enum Functype functype() const override
Definition: item_geofunc.h:1096
const char * func_name() const override
Definition: item_geofunc.h:1098
Definition: item_geofunc.h:1103
enum Functype functype() const override
Definition: item_geofunc.h:1107
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:179
const char * func_name() const override
Definition: item_geofunc.h:1109
Item_func_mbrdisjoint(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1105
enum Functype rev_functype() const override
Definition: item_geofunc.h:1108
Definition: item_geofunc.h:1114
Item_func_mbrequals(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1116
enum Functype functype() const override
Definition: item_geofunc.h:1118
const char * func_name() const override
Definition: item_geofunc.h:1120
enum Functype rev_functype() const override
Definition: item_geofunc.h:1119
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:186
Definition: item_geofunc.h:1125
enum Functype functype() const override
Definition: item_geofunc.h:1129
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:192
enum Functype rev_functype() const override
Definition: item_geofunc.h:1130
Item_func_mbrintersects(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1127
const char * func_name() const override
Definition: item_geofunc.h:1131
Definition: item_geofunc.h:1136
enum Functype functype() const override
Definition: item_geofunc.h:1140
Item_func_mbroverlaps(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1138
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:199
const char * func_name() const override
Definition: item_geofunc.h:1142
enum Functype rev_functype() const override
Definition: item_geofunc.h:1141
Definition: item_geofunc.h:1147
const char * func_name() const override
Definition: item_geofunc.h:1153
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:206
Item_func_mbrtouches(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1149
enum Functype functype() const override
Definition: item_geofunc.h:1151
enum Functype rev_functype() const override
Definition: item_geofunc.h:1152
Definition: item_geofunc.h:1158
const char * func_name() const override
Definition: item_geofunc.h:1164
Item_func_mbrwithin(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1160
enum Functype functype() const override
Definition: item_geofunc.h:1162
enum Functype rev_functype() const override
Definition: item_geofunc.h:1163
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:213
Definition: item_geofunc.h:1519
longlong val_int() override
Definition: item_geofunc.cc:4872
String value
Definition: item_geofunc.h:1520
const char * func_name() const override
Definition: item_geofunc.h:1525
Item_func_numgeometries(const POS &pos, Item *a)
Definition: item_geofunc.h:1523
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1526
Definition: item_geofunc.h:1534
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1541
Item_func_numinteriorring(const POS &pos, Item *a)
Definition: item_geofunc.h:1538
const char * func_name() const override
Definition: item_geofunc.h:1540
String value
Definition: item_geofunc.h:1535
longlong val_int() override
Definition: item_geofunc.cc:4853
Definition: item_geofunc.h:1549
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1556
longlong val_int() override
Definition: item_geofunc.cc:4891
String value
Definition: item_geofunc.h:1550
const char * func_name() const override
Definition: item_geofunc.h:1555
Item_func_numpoints(const POS &pos, Item *a)
Definition: item_geofunc.h:1553
Definition: item_geofunc.h:785
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:792
Field::geometry_type get_geometry_type() const override
Definition: item_geofunc.cc:4224
String * val_str(String *) override
Definition: item_geofunc.cc:4228
const char * func_name() const override
Definition: item_geofunc.h:789
Item_func_point(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:787
This handles the <point> = ST_POINTFROMGEOHASH(<string>, <srid>) function.
Definition: item_geofunc.h:806
const double upper_latitude
The maximum output latitude value when decoding the geohash value.
Definition: item_geofunc.h:809
const double lower_longitude
The minimum output longitude value when decoding the geohash value.
Definition: item_geofunc.h:818
const double lower_latitude
The minimum output latitude value when decoding the geohash value.
Definition: item_geofunc.h:812
String * val_str(String *) override
Definition: item_geofunc.cc:4313
Item_func_pointfromgeohash(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:821
const char * func_name() const override
Definition: item_geofunc.h:827
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.cc:4307
const double upper_longitude
The maximum output longitude value when decoding the geohash value.
Definition: item_geofunc.h:815
bool fix_fields(THD *thd, Item **ref) override
This will check if arguments passed (geohash and SRID) are of valid types.
Definition: item_geofunc.cc:4261
Field::geometry_type get_geometry_type() const override
Definition: item_geofunc.h:831
Definition: item_geofunc.h:894
Item_func_spatial_collection(const POS &pos, PT_item_list *list, enum Geometry::wkbType ct, enum Geometry::wkbType it)
Definition: item_geofunc.h:900
enum Geometry::wkbType item_type
Definition: item_geofunc.h:897
String tmp_value
Definition: item_geofunc.h:895
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:908
enum Geometry::wkbType coll_type
Definition: item_geofunc.h:896
String * val_str(String *) override
Concatenates various items into various collections with checkings for valid wkb type of items.
Definition: item_geofunc.cc:4396
const char * func_name() const override
Definition: item_geofunc.cc:4356
Definition: item_geofunc.h:864
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:866
const char * func_name() const override
Definition: item_geofunc.h:878
String * val_str(String *) override
Definition: item_geofunc.cc:4167
Item_func_spatial_decomp_n(const POS &pos, Item *a, Item *b, Item_func::Functype ft)
Definition: item_geofunc.h:873
enum Functype decomp_func_n
Definition: item_geofunc.h:865
Definition: item_geofunc.h:836
enum Functype decomp_func
Definition: item_geofunc.h:837
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:838
Item_func_spatial_decomp(const POS &pos, Item *a, Item_func::Functype ft)
Definition: item_geofunc.h:844
String * val_str(String *) override
Definition: item_geofunc.cc:4123
const char * func_name() const override
Definition: item_geofunc.h:848
Definition: item_geofunc.h:930
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_geofunc.h:957
enum Functype rev_functype() const override
Definition: item_geofunc.h:945
enum Functype spatial_rel
Definition: item_geofunc.h:931
enum Functype functype() const override
Definition: item_geofunc.h:944
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:961
Item_func_spatial_mbr_rel(Item *a, Item *b, enum Functype sp_rel)
Definition: item_geofunc.h:934
Item_func_spatial_mbr_rel(const POS &pos, Item *a, Item *b, enum Functype sp_rel)
Definition: item_geofunc.h:938
const char * func_name() const override
longlong val_int() override
bool is_null() override
The method allows to determine nullness of a complex expression without fully evaluating it,...
Definition: item_geofunc.h:965
Spatial operations.
Definition: item_geofunc.h:1205
Item_func_spatial_operation(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1207
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1211
Definition: item_geofunc.h:971
bool is_null() override
The method allows to determine nullness of a complex expression without fully evaluating it,...
Definition: item_geofunc.h:988
longlong val_int() override
Definition: item_geofunc_relchecks.cc:68
virtual bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null)=0
Evaluate the spatial relation function.
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_geofunc.h:983
Item_func_spatial_relation(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:973
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:975
Definition: item_geofunc.h:1564
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1569
double val_real() override
Definition: item_geofunc.cc:5093
const char * func_name() const override
Definition: item_geofunc.h:1568
Item_func_st_area(const POS &pos, Item *a)
Definition: item_geofunc.h:1566
Definition: item_geofunc.h:1577
Item_func_st_buffer(const POS &pos, PT_item_list *ilist)
Definition: item_geofunc.h:1582
String * val_str(String *) override
Definition: item_geofunc.cc:5144
const char * func_name() const override
Definition: item_geofunc.h:1586
bool parse_strategy(String *arg, gis::BufferStrategies &strats)
Parses strategy stored in String object, and sets values in strats.
Definition: item_geofunc.cc:5202
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1587
Definition: item_geofunc.h:1015
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:125
const char * func_name() const override
Definition: item_geofunc.h:1021
enum Functype rev_functype() const override
Definition: item_geofunc.h:1020
Item_func_st_contains(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1017
enum Functype functype() const override
Definition: item_geofunc.h:1019
Definition: item_geofunc.h:1026
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:132
enum Functype rev_functype() const override
Definition: item_geofunc.h:1031
enum Functype functype() const override
Definition: item_geofunc.h:1030
const char * func_name() const override
Definition: item_geofunc.h:1032
Item_func_st_crosses(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1028
Definition: item_geofunc.h:1217
String * val_str(String *) override
Definition: item_geofunc.cc:5593
Item_func_st_difference(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1219
const char * func_name() const override
Definition: item_geofunc.h:1222
Definition: item_geofunc.h:1037
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:139
enum Functype functype() const override
Definition: item_geofunc.h:1041
Item_func_st_disjoint(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1039
enum Functype rev_functype() const override
Definition: item_geofunc.h:1042
const char * func_name() const override
Definition: item_geofunc.h:1043
Definition: item_geofunc.h:1702
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1708
Item_func_st_distance_sphere(const POS &pos, PT_item_list *ilist)
Definition: item_geofunc.h:1704
const char * func_name() const override
Definition: item_geofunc.h:1707
double val_real() override
Definition: item_geofunc.cc:5725
Definition: item_geofunc.h:1048
enum Functype rev_functype() const override
Definition: item_geofunc.h:1053
enum Functype functype() const override
Definition: item_geofunc.h:1052
const char * func_name() const override
Definition: item_geofunc.h:1054
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:146
Item_func_st_equals(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1050
Definition: item_geofunc.h:1674
Item_func_st_frechet_distance(const POS &pos, PT_item_list *ilist)
Definition: item_geofunc.h:1676
const char * func_name() const override
Definition: item_geofunc.h:1679
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1680
double val_real() override
Definition: item_geofunc.cc:5465
Definition: item_geofunc.h:1688
Item_func_st_hausdorff_distance(const POS &pos, PT_item_list *ilist)
Definition: item_geofunc.h:1690
const char * func_name() const override
Definition: item_geofunc.h:1693
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1694
double val_real() override
Definition: item_geofunc.cc:5529
Definition: item_geofunc.h:1225
String * val_str(String *) override
Definition: item_geofunc.cc:5822
const char * func_name() const override
Definition: item_geofunc.h:1230
Item_func_st_intersection(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1227
Definition: item_geofunc.h:1059
enum Functype functype() const override
Definition: item_geofunc.h:1063
enum Functype rev_functype() const override
Definition: item_geofunc.h:1064
Item_func_st_intersects(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1061
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:152
const char * func_name() const override
Definition: item_geofunc.h:1065
Definition: item_geofunc.h:1288
longlong val_int() override
Definition: item_geofunc.cc:4725
const char * func_name() const override
Definition: item_geofunc.h:1292
Item_func_st_issimple(const POS &pos, Item *a)
Definition: item_geofunc.h:1290
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1293
This class implements the two-parameter ST_Latitude function which sets the latitude of a geographic ...
Definition: item_geofunc.h:1402
Item_func_st_latitude_mutator(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1404
const char * func_name() const override
Definition: item_geofunc.h:1408
int coordinate_number(const dd::Spatial_reference_system *) const override
Returns the coordinate number accessed by this item.
Definition: item_geofunc.h:1409
This class implements the one-parameter ST_Latitude function which returns the latitude coordinate of...
Definition: item_geofunc.h:1417
Item_func_st_latitude_observer(const POS &pos, Item *a)
Definition: item_geofunc.h:1419
const char * func_name() const override
Definition: item_geofunc.h:1423
int coordinate_number(const dd::Spatial_reference_system *) const override
Returns the coordinate number accessed by this item.
Definition: item_geofunc.h:1424
Definition: item_geofunc.h:1596
const char * func_name() const override
Definition: item_geofunc.h:1603
String value
Definition: item_geofunc.h:1597
Item_func_st_length(const POS &pos, PT_item_list *ilist)
Definition: item_geofunc.h:1600
double val_real() override
Definition: item_geofunc.cc:5324
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1604
This class implements the two-parameter ST_Longitude function which sets the longitude coordinate of ...
Definition: item_geofunc.h:1432
Item_func_st_longitude_mutator(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1434
const char * func_name() const override
Definition: item_geofunc.h:1438
int coordinate_number(const dd::Spatial_reference_system *) const override
Returns the coordinate number accessed by this item.
Definition: item_geofunc.h:1439
This class implements the one-parameter ST_Longitude function which returns the longitude coordinate ...
Definition: item_geofunc.h:1447
int coordinate_number(const dd::Spatial_reference_system *) const override
Returns the coordinate number accessed by this item.
Definition: item_geofunc.h:1454
Item_func_st_longitude_observer(const POS &pos, Item *a)
Definition: item_geofunc.h:1449
const char * func_name() const override
Definition: item_geofunc.h:1453
Definition: item_geofunc.h:1169
Item_func_st_overlaps(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1171
enum Functype functype() const override
Definition: item_geofunc.h:1173
enum Functype rev_functype() const override
Definition: item_geofunc.h:1174
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:219
const char * func_name() const override
Definition: item_geofunc.h:1175
Definition: item_geofunc.h:1754
Item_func_st_pointatdistance(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1756
bool returnMultiplePoints() const override
Definition: item_geofunc.h:1762
bool isFractionalDistance() const override
Definition: item_geofunc.h:1761
const char * func_name() const override
Definition: item_geofunc.h:1760
Item that implements function ST_Simplify, which simplifies a geometry using the Douglas-Peucker algo...
Definition: item_geofunc.h:771
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:775
String * val_str(String *) override
Definition: item_geofunc.cc:4076
Item_func_st_simplify(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:773
const char * func_name() const override
Definition: item_geofunc.h:782
This class implements the two-parameter ST_SRID function which sets the SRID of a geometry.
Definition: item_geofunc.h:1615
String * val_str(String *) override
Definition: item_geofunc.cc:5419
const char * func_name() const override
Definition: item_geofunc.h:1620
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1621
Item_func_st_srid_mutator(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1617
This class implements the one-parameter ST_SRID function which returns the SRID of a geometry.
Definition: item_geofunc.h:1630
Item_func_st_srid_observer(const POS &pos, Item *a)
Definition: item_geofunc.h:1632
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1635
const char * func_name() const override
Definition: item_geofunc.h:1634
longlong val_int() override
Definition: item_geofunc.cc:5379
Definition: item_geofunc.h:1233
String * val_str(String *) override
Definition: item_geofunc.cc:5949
Item_func_st_symdifference(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1235
const char * func_name() const override
Definition: item_geofunc.h:1238
Definition: item_geofunc.h:1180
enum Functype functype() const override
Definition: item_geofunc.h:1184
Item_func_st_touches(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1182
enum Functype rev_functype() const override
Definition: item_geofunc.h:1185
const char * func_name() const override
Definition: item_geofunc.h:1186
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:226
Definition: item_geofunc.h:1241
Item_func_st_union(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1243
String * val_str(String *) override
Definition: item_geofunc.cc:4642
const char * func_name() const override
Definition: item_geofunc.h:1246
Definition: item_geofunc.h:1191
bool eval(const dd::Spatial_reference_system *srs, const gis::Geometry *g1, const gis::Geometry *g2, bool *result, bool *null) override
Evaluate the spatial relation function.
Definition: item_geofunc_relchecks.cc:233
enum Functype rev_functype() const override
Definition: item_geofunc.h:1196
enum Functype functype() const override
Definition: item_geofunc.h:1195
Item_func_st_within(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1193
const char * func_name() const override
Definition: item_geofunc.h:1197
This class implements the two-parameter ST_X function which sets the X coordinate of a point.
Definition: item_geofunc.h:1461
int coordinate_number(const dd::Spatial_reference_system *srs) const override
Returns the coordinate number accessed by this item.
Definition: item_geofunc.cc:5036
Item_func_st_x_mutator(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1463
const char * func_name() const override
Definition: item_geofunc.h:1467
This class implements the one-parameter ST_X function which returns the X coordinate of a point.
Definition: item_geofunc.h:1473
int coordinate_number(const dd::Spatial_reference_system *srs) const override
Returns the coordinate number accessed by this item.
Definition: item_geofunc.cc:5042
Item_func_st_x_observer(const POS &pos, Item *a)
Definition: item_geofunc.h:1475
const char * func_name() const override
Definition: item_geofunc.h:1479
This class implements the two-parameter ST_Y function which sets the Y coordinate of a point.
Definition: item_geofunc.h:1485
int coordinate_number(const dd::Spatial_reference_system *srs) const override
Returns the coordinate number accessed by this item.
Definition: item_geofunc.cc:5048
const char * func_name() const override
Definition: item_geofunc.h:1491
Item_func_st_y_mutator(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:1487
This class implements the one-parameter ST_Y function which returns the Y coordinate of a point.
Definition: item_geofunc.h:1497
int coordinate_number(const dd::Spatial_reference_system *srs) const override
Returns the coordinate number accessed by this item.
Definition: item_geofunc.cc:5054
const char * func_name() const override
Definition: item_geofunc.h:1503
Item_func_st_y_observer(const POS &pos, Item *a)
Definition: item_geofunc.h:1499
Definition: item_geofunc.h:1507
const char * func_name() const override
Definition: item_geofunc.h:1515
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1508
String * val_str(String *) override
Definition: item_geofunc.cc:5060
Item_func_swap_xy(const POS &pos, Item *a)
Definition: item_geofunc.h:1514
Definition: item_geofunc.h:756
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:762
String * val_str(String *) override
Definition: item_geofunc.cc:3387
const char * func_name() const override
Definition: item_geofunc.h:761
Item_func_validate(const POS &pos, Item *a)
Definition: item_geofunc.h:760
String arg_val
Definition: item_geofunc.h:757
Item ** args
Array of pointers to arguments.
Definition: item_func.h:107
virtual enum Functype functype() const
Definition: item_func.h:367
Functype
Definition: item_func.h:209
@ SP_CROSSES_FUNC
Definition: item_func.h:237
@ SP_EXTERIORRING
Definition: item_func.h:245
@ SP_EQUALS_FUNC
Definition: item_func.h:232
@ SP_COVEREDBY_FUNC
Definition: item_func.h:240
@ SP_TOUCHES_FUNC
Definition: item_func.h:236
@ SP_DISJOINT_FUNC
Definition: item_func.h:233
@ SP_STARTPOINT
Definition: item_func.h:243
@ SP_POINTN
Definition: item_func.h:246
@ SP_GEOMETRYN
Definition: item_func.h:247
@ TYPECAST_FUNC
Definition: item_func.h:258
@ SP_DISTANCE_FUNC
Definition: item_func.h:234
@ SP_WITHIN_FUNC
Definition: item_func.h:238
@ SP_INTERIORRINGN
Definition: item_func.h:248
@ SP_INTERSECTS_FUNC
Definition: item_func.h:235
@ SP_COVERS_FUNC
Definition: item_func.h:241
@ SP_CONTAINS_FUNC
Definition: item_func.h:239
@ SP_ENDPOINT
Definition: item_func.h:244
@ SP_OVERLAPS_FUNC
Definition: item_func.h:242
optimize_type
Definition: item_func.h:359
@ OPTIMIZE_NONE
Definition: item_func.h:360
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_func.h:718
enum Type type() const override
Definition: item_func.h:366
bool param_type_is_default(THD *thd, uint start, uint end, uint step, enum_field_types def)
For arguments of this Item_func ("args" array), in range [start, start+step, start+2*step,...
Definition: item_func.cc:528
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_func.cc:748
uint arg_count
How many arguments in 'args'.
Definition: item_func.h:130
Definition: item_geofunc.h:179
Field * tmp_table_field(TABLE *t_arg) override
Definition: item_geofunc.cc:299
Item_geometry_func(Item *a, Item *b)
Definition: item_geofunc.h:186
Item_geometry_func(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_geofunc.h:191
Item_geometry_func(Item *a)
Definition: item_geofunc.h:183
Item_geometry_func(Item *a, Item *b, Item *c)
Definition: item_geofunc.h:190
Item_geometry_func(const POS &pos, Item *a)
Definition: item_geofunc.h:184
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.cc:308
Item_geometry_func()
Definition: item_geofunc.h:181
Item_geometry_func(const POS &pos, Item *a, Item *b)
Definition: item_geofunc.h:187
Definition: item_func.h:1021
Base class for all item functions that a return JSON value.
Definition: item_json_func.h:158
Definition: item_func.h:833
Definition: item_strfunc.h:150
Definition: item_strfunc.h:78
Definition: item_geofunc.h:1778
const char * func_name() const override=0
enum Functype functype() const override
Definition: item_geofunc.h:1786
Item_typecast_geometry(const POS &pos, Item *a)
Definition: item_geofunc.h:1780
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_geofunc.h:1788
String * val_str(String *str) override
Definition: item_geofunc.cc:6082
virtual bool cast(const dd::Spatial_reference_system *srs, std::unique_ptr< gis::Geometry > *source_geometry, std::unique_ptr< gis::Geometry > *target_geometry) const =0
Casts certain geometry types to certain target geometry types.
void print(const THD *thd, String *str, enum_query_type query_type) const override=0
This method is used for to:
Field::geometry_type get_geometry_type() const override=0
Definition: item_geofunc.h:1894
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_geofunc.cc:7021
bool cast(const dd::Spatial_reference_system *, std::unique_ptr< gis::Geometry > *source_geometry, std::unique_ptr< gis::Geometry > *target_geometry) const override
Casts certain geometry types to certain target geometry types.
Definition: item_geofunc.cc:6966
const char * func_name() const override
Definition: item_geofunc.h:1900
Item_typecast_geometrycollection(const POS &pos, Item *a)
Definition: item_geofunc.h:1896
Field::geometry_type get_geometry_type() const override
Definition: item_geofunc.cc:7016
Definition: item_geofunc.h:1823
Item_typecast_linestring(const POS &pos, Item *a)
Definition: item_geofunc.h:1825
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_geofunc.cc:6324
bool cast(const dd::Spatial_reference_system *, std::unique_ptr< gis::Geometry > *source_geometry, std::unique_ptr< gis::Geometry > *target_geometry) const override
Casts certain geometry types to certain target geometry types.
Definition: item_geofunc.cc:6203
Field::geometry_type get_geometry_type() const override
Definition: item_geofunc.cc:6320
const char * func_name() const override
Definition: item_geofunc.h:1829
Definition: item_geofunc.h:1865
Item_typecast_multilinestring(const POS &pos, Item *a)
Definition: item_geofunc.h:1867
bool cast(const dd::Spatial_reference_system *, std::unique_ptr< gis::Geometry > *source_geometry, std::unique_ptr< gis::Geometry > *target_geometry) const override
Casts certain geometry types to certain target geometry types.
Definition: item_geofunc.cc:6657
const char * func_name() const override
Definition: item_geofunc.h:1871
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_geofunc.cc:6794
Field::geometry_type get_geometry_type() const override
Definition: item_geofunc.cc:6790
Definition: item_geofunc.h:1851
Item_typecast_multipoint(const POS &pos, Item *a)
Definition: item_geofunc.h:1853
const char * func_name() const override
Definition: item_geofunc.h:1857
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_geofunc.cc:6650
Field::geometry_type get_geometry_type() const override
Definition: item_geofunc.cc:6646
bool cast(const dd::Spatial_reference_system *, std::unique_ptr< gis::Geometry > *source_geometry, std::unique_ptr< gis::Geometry > *target_geometry) const override
Casts certain geometry types to certain target geometry types.
Definition: item_geofunc.cc:6556
Definition: item_geofunc.h:1879
Item_typecast_multipolygon(const POS &pos, Item *a)
Definition: item_geofunc.h:1881
const char * func_name() const override
Definition: item_geofunc.h:1885
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_geofunc.cc:6959
bool cast(const dd::Spatial_reference_system *srs, std::unique_ptr< gis::Geometry > *source_geometry, std::unique_ptr< gis::Geometry > *target_geometry) const override
Casts certain geometry types to certain target geometry types.
Definition: item_geofunc.cc:6801
Field::geometry_type get_geometry_type() const override
Definition: item_geofunc.cc:6955
Definition: item_geofunc.h:1809
bool cast(const dd::Spatial_reference_system *, std::unique_ptr< gis::Geometry > *source_geometry, std::unique_ptr< gis::Geometry > *target_geometry) const override
Casts certain geometry types to certain target geometry types.
Definition: item_geofunc.cc:6130
const char * func_name() const override
Definition: item_geofunc.h:1815
Item_typecast_point(const POS &pos, Item *a)
Definition: item_geofunc.h:1811
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_geofunc.cc:6196
Field::geometry_type get_geometry_type() const override
Definition: item_geofunc.cc:6192
Definition: item_geofunc.h:1837
Field::geometry_type get_geometry_type() const override
Definition: item_geofunc.cc:6545
const char * func_name() const override
Definition: item_geofunc.h:1843
Item_typecast_polygon(const POS &pos, Item *a)
Definition: item_geofunc.h:1839
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_geofunc.cc:6549
bool cast(const dd::Spatial_reference_system *srs, std::unique_ptr< gis::Geometry > *source_geometry, std::unique_ptr< gis::Geometry > *target_geometry) const override
Casts certain geometry types to certain target geometry types.
Definition: item_geofunc.cc:6331
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:930
void set_nullable(bool nullable)
Definition: item.h:3691
void set_data_type_blob(enum_field_types type, uint32 max_l)
Set the Item to be of BLOB type.
Definition: item.h:1683
static const CHARSET_INFO * default_charset()
Definition: item.cc:1760
virtual void print(const THD *, String *str, enum_query_type) const
This method is used for to:
Definition: item.h:2488
enum_field_types data_type() const
Retrieve the derived data type of the Item.
Definition: item.h:1481
bool fixed
True if item has been resolved.
Definition: item.h:3679
bool null_value
True if item is null.
Definition: item.h:3716
void set_data_type_string(uint32 max_l)
Set the Item to be variable length string.
Definition: item.h:1600
uint32 max_length
Maximum length of result of evaluating this item, in number of bytes.
Definition: item.h:3604
Represents a JSON array container, i.e.
Definition: json_dom.h:513
JSON DOM abstract base class.
Definition: json_dom.h:172
Represents a JSON container value of type "object" (ECMA), type J_OBJECT here.
Definition: json_dom.h:367
Abstraction for accessing JSON values irrespective of whether they are (started out as) binary JSON v...
Definition: json_dom.h:1150
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:105
void error(Context *pc, const POS &pos) const
syntax_error() function replacement for deferred reporting of syntax errors
Definition: parse_tree_node_base.h:345
size_type erase_unique(const value_type &val)
Similar to std::set<>::erase() Removes a single element from the array by value.
Definition: prealloced_array.h:450
void clear()
Removes (and destroys) all elements.
Definition: prealloced_array.h:610
void * * iterator
Definition: prealloced_array.h:116
iterator begin()
begin : Returns a pointer to the first element in the array.
Definition: prealloced_array.h:254
std::pair< iterator, bool > insert_unique(const value_type &val)
Similar to std::set<>::insert() Extends the array by inserting a new element, but only if it cannot b...
Definition: prealloced_array.h:430
iterator end()
Definition: prealloced_array.h:255
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:167
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
Definition: spatial_reference_system.h:53
Abstract superclass for all geometric objects.
Definition: geometries.h:100
static char buf[MAX_BUF]
Definition: conf_to_src.cc:74
enum_query_type
Query type constants (usable as bitmap flags).
Definition: enum_query_type.h:31
@ QT_NO_DATA_EXPANSION
If an expression is constant, print the expression, not the value it evaluates to.
Definition: enum_query_type.h:76
This file contains the field type.
@ MYSQL_TYPE_LONGLONG
Definition: field_types.h:64
@ MYSQL_TYPE_LONG_BLOB
Definition: field_types.h:86
@ MYSQL_TYPE_GEOMETRY
Definition: field_types.h:90
@ MYSQL_TYPE_DOUBLE
Definition: field_types.h:61
void my_error(int nr, myf MyFlags,...)
Fill in and print a previously registered error message.
Definition: my_error.cc:216
static constexpr unsigned PSI_INSTRUMENT_ME
Definition: psi_bits.h:43
static const int MAX_CRS_WIDTH
Max width of long CRS URN supported + max width of SRID + '\0'.
Definition: item_geofunc.h:471
enum_json_type
Json values in MySQL comprises the stand set of JSON values plus a MySQL specific set.
Definition: json_dom.h:108
Some integer typedefs for easier portability.
long long int longlong
Definition: my_inttypes.h:55
#define MYF(v)
Definition: my_inttypes.h:97
uint32_t uint32
Definition: my_inttypes.h:67
Common header for many mysys elements.
Common definition between mysql server & client.
#define MAX_INT_WIDTH
Max width for a LONG w.o.
Definition: mysql_com.h:902
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1084
Definition: buf0block_hint.cc:30
PT & ref(PT *tp)
Definition: tablespace_impl.cc:359
The version of the current data dictionary table definitions.
Definition: dictionary_client.h:43
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
std::uint32_t srid_t
A spatial reference system ID (SRID).
Definition: srid.h:33
mutable_buffer buffer(void *p, size_t n) noexcept
Definition: buffer.h:418
Definition: options.cc:57
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2880
Performance schema instrumentation interface.
void gis_wkb_raw_free(void *p)
Definition: spatial.h:211
static bool rollback(THD *thd)
Abort the current statement and transaction.
Definition: sql_cmd_srs.cc:140
Our own string classes, used pervasively throughout the executor.
Bison "location" class.
Definition: parse_location.h:43
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:421
Definition: buffer_strategies.h:45