Here is a stack trace where for LOAD DATA LOCAL, we get a call to
handler::extra with operation set to HA_EXTRA_IGNORE_DUP_KEY
#0 ha_tokudb::extra (this=0x1aaf240,
operation=HA_EXTRA_IGNORE_DUP_KEY) at
/home/zardosht/dev/mysql-build/mysql-5.5.28/storage/tokudb/ha_tokudb.cc:5949
#1 0x000000000084be8a in mysql_load (thd=0x1a14d20, ex=0x1acc190,
table_list=0x1acc218, fields_vars=..., set_fields=..., set_values=...,
handle_duplicates=DUP_ERROR, ignore=true,
read_file_from_client=true) at
/home/zardosht/dev/mysql-build/mysql-5.5.28/sql/sql_load.cc:474
#2 0x00000000005dcfb5 in mysql_execute_command (thd=0x1a14d20) at
/home/zardosht/dev/mysql-build/mysql-5.5.28/sql/sql_parse.cc:3173
#3 0x00000000005e32a6 in mysql_parse (thd=0x1a14d20,
rawbuf=0x1acbfd0 "load data local infile
'/nfs/tmcsrv/sysbench-mysqldump-50000000/sbtest.txt' into table
sbtest1 fields terminated by ',' enclosed by '\"'", length=135,
parser_state=0x536e0910)
at /home/zardosht/dev/mysql-build/mysql-5.5.28/sql/sql_parse.cc:5627
#4 0x00000000005d7f0c in dispatch_command (command=COM_QUERY,
thd=0x1a14d20, packet=0x1ab1cd1 "", packet_length=135) at
/home/zardosht/dev/mysql-build/mysql-5.5.28/sql/sql_parse.cc:1037
#5 0x00000000005d729d in do_command (thd=0x1a14d20) at
/home/zardosht/dev/mysql-build/mysql-5.5.28/sql/sql_parse.cc:773
#6 0x00000000006b2b49 in do_handle_one_connection (thd_arg=0x1a14d20)
at /home/zardosht/dev/mysql-build/mysql-5.5.28/sql/sql_connect.cc:840
#7 0x00000000006b2676 in handle_one_connection (arg=0x1a14d20) at
/home/zardosht/dev/mysql-build/mysql-5.5.28/sql/sql_connect.cc:759
#8 0x000000310e60677d in start_thread () from /lib64/libpthread.so.0
#9 0x000000310dad325d in clone () from /lib64/libc.so.6
#10 0x0000000000000000 in ?? ()
On Fri, Mar 1, 2013 at 9:42 AM, Michael Widenius <monty@stripped> wrote:
>
> Hi!
>
>>>>>> "Zardosht" == Zardosht Kasheff <zardosht@stripped>
> writes:
>
> Zardosht> As I understand it, LOAD DATA LOCAL acts basically like ignore. It
> Zardosht> sets table->file->extra(HA_EXTRA_IGNORE_DUP_KEY).
>
> Where does it do that?
> (LOCAL should not have anything to do with IGNORE).
>
> The code we have in MariaDB 5.5 is:
>
> if (ignore ||
> handle_duplicates == DUP_REPLACE)
> table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
>
> This has nothing to do with LOCAL.
>
> Zardosht> What I am wondering is why would LOAD DATA LOCAL use more RSS than
> Zardosht> LOAD DATA IGNORE for us, but not for InnoDB. Does anyone have any
> Zardosht> theories?
>
> RSS?
>
> As LOCAL and IGNORE are independent flags that have nothing to do with
> each other, I can't answer your question.
>
> My previous answer should cover most things about using or not using IGNORE.
>
> Regards,
> Monty