summaryrefslogtreecommitdiff
path: root/sql/sql_load.cc
diff options
context:
space:
mode:
authorunknown <dlenev@brandersnatch.localdomain>2005-03-16 12:13:35 +0300
committerunknown <dlenev@brandersnatch.localdomain>2005-03-16 12:13:35 +0300
commitec919d742838f491556cb98a894bffab79957cd5 (patch)
treeb8622bdfca30af3b43d99987e30119fd6b8726bf /sql/sql_load.cc
parent5f75c8f5b47b73e6c1cd4261de9b99b0fdb8c24e (diff)
downloadmariadb-git-ec919d742838f491556cb98a894bffab79957cd5.tar.gz
Fixed behavior of LOAD DATA with subqueries in SET clause.
The idea is to use TABLE_LIST::lock_type for passing type of lock for target table to mysql_load() instead of using LEX::lock_option (which were rewritten by first subselect in SET clause). This should also fix potential problem with LOAD DATA in SP (it is important for them to have right lock_type in the table list by the end of statement parsing). mysql-test/r/loaddata.result: Added nice test for LOAD DATA with subquery. mysql-test/t/loaddata.test: Added nice test for LOAD DATA with subquery. sql/log_event.cc: Now we don't pass type of lock for target table to mysql_load() explicitly . Instead we use TABLE_LIST::lock_type for this table which is already properly set here. sql/mysql_priv.h: Now we don't pass type of lock for target table to mysql_load() explicitly . Instead we properly set TABLE_LIST::lock_type for this table in parser. sql/sql_load.cc: Now we don't pass type of lock for target table to mysql_load() explicitly . Instead we properly set TABLE_LIST::lock_type for this table in parser. sql/sql_parse.cc: Now we don't pass type of lock for target table to mysql_load() explicitly . Instead we properly set TABLE_LIST::lock_type for this table in parser. sql/sql_yacc.yy: load_data: Let us use TABLE_LIST::lock_type for passing type of lock for target table to mysql_load() instead of using LEX::lock_option (which will be rewritten by first subselect in SET clause).
Diffstat (limited to 'sql/sql_load.cc')
-rw-r--r--sql/sql_load.cc4
1 files changed, 1 insertions, 3 deletions
diff --git a/sql/sql_load.cc b/sql/sql_load.cc
index b27ba9c095f..e2f7c9d62c8 100644
--- a/sql/sql_load.cc
+++ b/sql/sql_load.cc
@@ -99,7 +99,6 @@ static int read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list,
replace row if we will meet duplicates.
ignore - - indicates whenever we should ignore duplicates
read_file_from_client - is this LOAD DATA LOCAL ?
- lock_type - what type of concurrency do we allow then we are inserting data
RETURN VALUES
TRUE - error / FALSE - success
@@ -109,7 +108,7 @@ bool mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
List<Item> &fields_vars, List<Item> &set_fields,
List<Item> &set_values,
enum enum_duplicates handle_duplicates, bool ignore,
- bool read_file_from_client, thr_lock_type lock_type)
+ bool read_file_from_client)
{
char name[FN_REFLEN];
File file;
@@ -143,7 +142,6 @@ bool mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
MYF(0));
DBUG_RETURN(TRUE);
}
- table_list->lock_type= lock_type;
if (open_and_lock_tables(thd, table_list))
DBUG_RETURN(TRUE);
if (setup_tables(thd, table_list, &unused_conds,