mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-16888 Add virtual Type_handler::cond_notnull_field_isnull_to_field_eq_zero()
This commit is contained in:
@ -2518,9 +2518,8 @@ public:
|
||||
{
|
||||
Field *field=((Item_field*) args[0]->real_item())->field;
|
||||
|
||||
if (((field->type() == MYSQL_TYPE_DATE) ||
|
||||
(field->type() == MYSQL_TYPE_DATETIME)) &&
|
||||
(field->flags & NOT_NULL_FLAG))
|
||||
if ((field->flags & NOT_NULL_FLAG) &&
|
||||
field->type_handler()->cond_notnull_field_isnull_to_field_eq_zero())
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -16360,9 +16360,8 @@ Item_func_isnull::remove_eq_conds(THD *thd, Item::cond_result *cond_value,
|
||||
{
|
||||
Field *field= ((Item_field*) real_item)->field;
|
||||
|
||||
if (((field->type() == MYSQL_TYPE_DATE) ||
|
||||
(field->type() == MYSQL_TYPE_DATETIME)) &&
|
||||
(field->flags & NOT_NULL_FLAG))
|
||||
if ((field->flags & NOT_NULL_FLAG) &&
|
||||
field->type_handler()->cond_notnull_field_isnull_to_field_eq_zero())
|
||||
{
|
||||
/* fix to replace 'NULL' dates with '0' (shreeve@uci.edu) */
|
||||
/*
|
||||
|
@ -1399,6 +1399,17 @@ public:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
/*
|
||||
Returns true if this data type supports a hack that
|
||||
WHERE notnull_column IS NULL
|
||||
finds zero values, e.g.:
|
||||
WHERE date_notnull_column IS NULL ->
|
||||
WHERE date_notnull_column = '0000-00-00'
|
||||
*/
|
||||
virtual bool cond_notnull_field_isnull_to_field_eq_zero() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
Check whether a field type can be partially indexed by a key.
|
||||
@param type field type
|
||||
@ -3344,6 +3355,10 @@ public:
|
||||
{
|
||||
return MYSQL_TIMESTAMP_DATE;
|
||||
}
|
||||
bool cond_notnull_field_isnull_to_field_eq_zero() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
Item_literal *create_literal_item(THD *thd, const char *str, size_t length,
|
||||
CHARSET_INFO *cs, bool send_error) const;
|
||||
Item *create_typecast_item(THD *thd, Item *item,
|
||||
@ -3425,6 +3440,10 @@ public:
|
||||
{
|
||||
return MYSQL_TIMESTAMP_DATETIME;
|
||||
}
|
||||
bool cond_notnull_field_isnull_to_field_eq_zero() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
Item *create_typecast_item(THD *thd, Item *item,
|
||||
const Type_cast_attributes &attr) const;
|
||||
void Column_definition_implicit_upgrade(Column_definition *c) const;
|
||||
|
Reference in New Issue
Block a user