summaryrefslogtreecommitdiff
path: root/sql/item.cc
diff options
context:
space:
mode:
authormonty@hundin.mysql.fi <>2002-10-16 10:32:45 +0300
committermonty@hundin.mysql.fi <>2002-10-16 10:32:45 +0300
commitb4343ba9398082b74a02b568625aee42587450f0 (patch)
treeb2749496347a8bc7352927d95fef69660bb47fe3 /sql/item.cc
parent73506bb612822dc25c940a2ca2f8b1e84a0a395d (diff)
downloadmariadb-git-b4343ba9398082b74a02b568625aee42587450f0.tar.gz
Fixed bug in LEFT JOIN ... WHERE not_null_key_column=NULL;
Diffstat (limited to 'sql/item.cc')
-rw-r--r--sql/item.cc42
1 files changed, 38 insertions, 4 deletions
diff --git a/sql/item.cc b/sql/item.cc
index 0ce37cdd593..9b4274ab71d 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -383,7 +383,7 @@ void Item_field::save_org_in_field(Field *to)
if (field->is_null())
{
null_value=1;
- set_field_to_null(to);
+ set_field_to_null_with_conversions(to);
}
else
{
@@ -398,7 +398,7 @@ bool Item_field::save_in_field(Field *to)
if (result_field->is_null())
{
null_value=1;
- return set_field_to_null(to);
+ return set_field_to_null_with_conversions(to);
}
else
{
@@ -409,9 +409,42 @@ bool Item_field::save_in_field(Field *to)
return 0;
}
+/*
+ Store null in field
+
+ SYNOPSIS
+ save_in_field()
+ field Field where we want to store NULL
+
+ DESCRIPTION
+ This is used on INSERT.
+ Allow NULL to be inserted in timestamp and auto_increment values
+
+ RETURN VALUES
+ 0 ok
+ 1 Field doesn't support NULL values and can't handle 'field = NULL'
+*/
bool Item_null::save_in_field(Field *field)
{
+ return set_field_to_null_with_conversions(field);
+}
+
+
+/*
+ Store null in field
+
+ SYNOPSIS
+ save_safe_in_field()
+ field Field where we want to store NULL
+
+ RETURN VALUES
+ 0 ok
+ 1 Field doesn't support NULL values
+*/
+
+bool Item_null::save_safe_in_field(Field *field)
+{
return set_field_to_null(field);
}
@@ -427,7 +460,7 @@ bool Item::save_in_field(Field *field)
str_value.set_quick(buff,sizeof(buff));
result=val_str(&str_value);
if (null_value)
- return set_field_to_null(field);
+ return set_field_to_null_with_conversions(field);
field->set_notnull();
field->store(result->ptr(),result->length());
str_value.set_quick(0, 0);
@@ -444,13 +477,14 @@ bool Item::save_in_field(Field *field)
{
longlong nr=val_int();
if (null_value)
- return set_field_to_null(field);
+ return set_field_to_null_with_conversions(field);
field->set_notnull();
field->store(nr);
}
return 0;
}
+
bool Item_string::save_in_field(Field *field)
{
String *result;