From dd934da9159a6eb69fdd7fdd91a78c801a0b7caa Mon Sep 17 00:00:00 2001
From: unknown <tnurnberg@mysql.com>
Date: Mon, 8 May 2006 04:37:58 +0200
Subject: [PATCH] Bug#10418: LOAD_FILE does not behave like in manual if file
 does not exist

load_file() string-function should return NULL rather than throw an error if
the file doesn't exist, as per the manual.


mysql-test/t/outfile.test:
  expect NULL rather than error if file given to load_file() doesn't exist
mysql-test/t/func_str.test:
  show that load_file() will return NULL rather than throw an error
  if file doesn't exist
mysql-test/r/outfile.result:
  expect NULL rather than error if file given to load_file() doesn't exist
mysql-test/r/func_str.result:
  expect NULL rather than error if file given to load_file() doesn't exist
sql/item_strfunc.cc:
  load_file() should return NULL as per the docs if file not found,
  rather than throw an error
---
 mysql-test/r/func_str.result |   7 +++++++
 mysql-test/r/outfile.result  | Bin 959 -> 988 bytes
 mysql-test/t/func_str.test   |   9 ++++++++-
 mysql-test/t/outfile.test    |   1 -
 sql/item_strfunc.cc          |   2 +-
 5 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/mysql-test/r/func_str.result b/mysql-test/r/func_str.result
index ae6578795f..0609624af1 100644
--- a/mysql-test/r/func_str.result
+++ b/mysql-test/r/func_str.result
@@ -1000,3 +1000,10 @@ t
 1000000
 1      
 drop table t1;
+select load_file("lkjlkj");
+load_file("lkjlkj")
+NULL
+select ifnull(load_file("lkjlkj"),"it's null");
+ifnull(load_file("lkjlkj"),"it's null")
+it's null
+End of 4.1 tests
diff --git a/mysql-test/r/outfile.result b/mysql-test/r/outfile.result
index 5eb24a78ef0d0242fcdd2f0ad1dfbf47f9d60dac..bcafae831d560242e84f6ab21d5d454deaf87079 100644
GIT binary patch
delta 25
hcmdnbeusU-U&e{cG$y}i<YDFV3-$5YEXlNt5deoI2?YQE

delta 41
wcmcb^zMp-=Uq%`C{1S!yyi|q!G=-9kRE3<(;*!)9h18;={G#H`W=zW%0ZUX5N&o-=

diff --git a/mysql-test/t/func_str.test b/mysql-test/t/func_str.test
index 8afbe673ce..c2f76dbac4 100644
--- a/mysql-test/t/func_str.test
+++ b/mysql-test/t/func_str.test
@@ -662,4 +662,11 @@ select rpad(i, 7, ' ') as t from t1;
 --disable_metadata
 drop table t1;
 
-# End of 4.1 tests
+#
+# Bug #10418: LOAD_FILE does not behave like in manual if file does not exist
+#
+
+select load_file("lkjlkj");
+select ifnull(load_file("lkjlkj"),"it's null");
+
+--echo End of 4.1 tests
diff --git a/mysql-test/t/outfile.test b/mysql-test/t/outfile.test
index a74bebe146..81fcc7fd56 100644
--- a/mysql-test/t/outfile.test
+++ b/mysql-test/t/outfile.test
@@ -38,7 +38,6 @@ select load_file(concat(@tmpdir,"/outfile-test.3"));
 #--error 1086
 #eval select * into dumpfile "$MYSQL_TEST_DIR/var/tmp/outfile-test.3" from t1;
 #enable_query_log;
---error 13,2
 select load_file(concat(@tmpdir,"/outfile-test.not-exist"));
 --exec rm $MYSQL_TEST_DIR/var/tmp/outfile-test.1
 --exec rm $MYSQL_TEST_DIR/var/tmp/outfile-test.2
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc
index f0127ed2a5..e74d0100b5 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -2489,7 +2489,7 @@ String *Item_load_file::val_str(String *str)
   (void) fn_format(path, file_name->c_ptr(), mysql_real_data_home, "",
 		   MY_RELATIVE_PATH | MY_UNPACK_FILENAME);
 
-  if (!my_stat(path, &stat_info, MYF(MY_WME)))
+  if (!my_stat(path, &stat_info, MYF(0)))
     goto err;
 
   if (!(stat_info.st_mode & S_IROTH))
-- 
2.30.9