1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-19944 Remove GIS data types from keyword list in lex.h

This commit is contained in:
Alexander Barkov
2019-07-03 20:08:10 +04:00
parent 695230c067
commit 9c9e0ac73d
12 changed files with 298 additions and 150 deletions

View File

@ -3074,6 +3074,12 @@ public:
}
const char *ptr() const { return LEX_CSTRING::str; }
uint length() const { return (uint) LEX_CSTRING::length; }
bool eq(const LEX_CSTRING &other) const
{
return !my_strnncoll(system_charset_info,
(const uchar *) LEX_CSTRING::str, LEX_CSTRING::length,
(const uchar *) other.str, other.length);
}
};
@ -3248,6 +3254,8 @@ protected:
enum_field_types type)
const;
public:
static const Type_handler *handler_by_name(const LEX_CSTRING &name);
static const Type_handler *handler_by_name_or_error(const LEX_CSTRING &name);
static const Type_handler *odbc_literal_type_handler(const LEX_CSTRING *str);
static const Type_handler *blob_type_handler(uint max_octet_length);
static const Type_handler *string_type_handler(uint max_octet_length);
@ -3674,6 +3682,10 @@ public:
Item *src,
const Item *cmp) const= 0;
virtual Item_cache *Item_get_cache(THD *thd, const Item *item) const= 0;
virtual Item *make_constructor_item(THD *thd, List<Item> *args) const
{
return NULL;
}
/**
A builder for literals with data type name prefix, e.g.:
TIME'00:00:00', DATE'2001-01-01', TIMESTAMP'2001-01-01 00:00:00'.
@ -6549,6 +6561,7 @@ class Type_handler_point: public Type_handler_geometry
public:
geometry_types geometry_type() const override { return GEOM_POINT; }
const Name name() const override { return m_name_point; }
Item *make_constructor_item(THD *thd, List<Item> *args) const override;
bool Key_part_spec_init_primary(Key_part_spec *part,
const Column_definition &def,
const handler *file) const override;
@ -6570,6 +6583,7 @@ class Type_handler_linestring: public Type_handler_geometry
public:
geometry_types geometry_type() const { return GEOM_LINESTRING; }
const Name name() const { return m_name_linestring; }
Item *make_constructor_item(THD *thd, List<Item> *args) const override;
};
class Type_handler_polygon: public Type_handler_geometry
@ -6578,6 +6592,7 @@ class Type_handler_polygon: public Type_handler_geometry
public:
geometry_types geometry_type() const { return GEOM_POLYGON; }
const Name name() const { return m_name_polygon; }
Item *make_constructor_item(THD *thd, List<Item> *args) const override;
};
class Type_handler_multipoint: public Type_handler_geometry
@ -6586,6 +6601,7 @@ class Type_handler_multipoint: public Type_handler_geometry
public:
geometry_types geometry_type() const { return GEOM_MULTIPOINT; }
const Name name() const { return m_name_multipoint; }
Item *make_constructor_item(THD *thd, List<Item> *args) const override;
};
class Type_handler_multilinestring: public Type_handler_geometry
@ -6594,6 +6610,7 @@ class Type_handler_multilinestring: public Type_handler_geometry
public:
geometry_types geometry_type() const { return GEOM_MULTILINESTRING; }
const Name name() const { return m_name_multilinestring; }
Item *make_constructor_item(THD *thd, List<Item> *args) const override;
};
class Type_handler_multipolygon: public Type_handler_geometry
@ -6602,6 +6619,7 @@ class Type_handler_multipolygon: public Type_handler_geometry
public:
geometry_types geometry_type() const { return GEOM_MULTIPOLYGON; }
const Name name() const { return m_name_multipolygon; }
Item *make_constructor_item(THD *thd, List<Item> *args) const override;
};
class Type_handler_geometrycollection: public Type_handler_geometry
@ -6610,6 +6628,7 @@ class Type_handler_geometrycollection: public Type_handler_geometry
public:
geometry_types geometry_type() const { return GEOM_GEOMETRYCOLLECTION; }
const Name name() const { return m_name_geometrycollection; }
Item *make_constructor_item(THD *thd, List<Item> *args) const override;
};
extern MYSQL_PLUGIN_IMPORT Type_handler_geometry type_handler_geometry;
@ -6736,6 +6755,7 @@ class Type_collection
{
public:
virtual ~Type_collection() {}
virtual const Type_handler *handler_by_name(const LEX_CSTRING &name) const= 0;
virtual const Type_handler *aggregate_for_result(const Type_handler *h1,
const Type_handler *h2)
const= 0;