mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	 3da06a5500
			
		
	
	3da06a5500
	
	
	
		
			
			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).
		
			
				
	
	
		
			123 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| drop table if exists t1, t2;
 | |
| create table t1 (a date, b date, c date not null, d date);
 | |
| load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',';
 | |
| Warnings:
 | |
| Warning	1265	Data truncated for column 'a' at row 1
 | |
| Warning	1265	Data truncated for column 'c' at row 1
 | |
| Warning	1265	Data truncated for column 'd' at row 1
 | |
| Warning	1265	Data truncated for column 'a' at row 2
 | |
| Warning	1265	Data truncated for column 'b' at row 2
 | |
| Warning	1265	Data truncated for column 'd' at row 2
 | |
| load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' IGNORE 2 LINES;
 | |
| SELECT * from t1;
 | |
| a	b	c	d
 | |
| 0000-00-00	NULL	0000-00-00	0000-00-00
 | |
| 0000-00-00	0000-00-00	0000-00-00	0000-00-00
 | |
| 2003-03-03	2003-03-03	2003-03-03	NULL
 | |
| 2003-03-03	2003-03-03	2003-03-03	NULL
 | |
| truncate table t1;
 | |
| load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' LINES STARTING BY ',' (b,c,d);
 | |
| Warnings:
 | |
| Warning	1265	Data truncated for column 'c' at row 1
 | |
| Warning	1265	Data truncated for column 'd' at row 1
 | |
| Warning	1265	Data truncated for column 'b' at row 2
 | |
| Warning	1265	Data truncated for column 'd' at row 2
 | |
| SELECT * from t1;
 | |
| a	b	c	d
 | |
| NULL	NULL	0000-00-00	0000-00-00
 | |
| NULL	0000-00-00	0000-00-00	0000-00-00
 | |
| NULL	2003-03-03	2003-03-03	NULL
 | |
| drop table t1;
 | |
| create table t1 (a text, b text);
 | |
| load data infile '../../std_data/loaddata2.dat' into table t1 fields terminated by ',' enclosed by '''';
 | |
| Warnings:
 | |
| Warning	1261	Row 3 doesn't contain data for all columns
 | |
| select concat('|',a,'|'), concat('|',b,'|') from t1;
 | |
| concat('|',a,'|')	concat('|',b,'|')
 | |
| |Field A|	|Field B|
 | |
| |Field 1|	|Field 2' 
 | |
| Field 3,'Field 4|
 | |
| |Field 5' ,'Field 6|	NULL
 | |
| |Field 6|	| 'Field 7'|
 | |
| drop table t1;
 | |
| create table t1 (a int, b char(10));
 | |
| load data infile '../../std_data/loaddata3.dat' into table t1 fields terminated by '' enclosed by '' ignore 1 lines;
 | |
| Warnings:
 | |
| Warning	1264	Out of range value adjusted for column 'a' at row 3
 | |
| Warning	1262	Row 3 was truncated; it contained more data than there were input columns
 | |
| Warning	1264	Out of range value adjusted for column 'a' at row 5
 | |
| Warning	1262	Row 5 was truncated; it contained more data than there were input columns
 | |
| select * from t1;
 | |
| a	b
 | |
| 1	row 1
 | |
| 2	row 2
 | |
| 0	1234567890
 | |
| 3	row 3
 | |
| 0	1234567890
 | |
| truncate table t1;
 | |
| load data infile '../../std_data/loaddata4.dat' into table t1 fields terminated by '' enclosed by '' lines terminated by '' ignore 1 lines;
 | |
| Warnings:
 | |
| Warning	1264	Out of range value adjusted for column 'a' at row 4
 | |
| Warning	1261	Row 4 doesn't contain data for all columns
 | |
| select * from t1;
 | |
| a	b
 | |
| 1	row 1
 | |
| 2	row 2
 | |
| 3	row 3
 | |
| 0	
 | |
| drop table t1;
 | |
| create table t1 (a int default 100, b int, c varchar(60));
 | |
| load data infile '../../std_data/rpl_loaddata.dat' into table t1 (a, @b) set b=@b+10, c=concat("b=",@b);
 | |
| select * from t1;
 | |
| a	b	c
 | |
| NULL	20	b=10
 | |
| NULL	25	b=15
 | |
| truncate table t1;
 | |
| load data infile '../../std_data/rpl_loaddata.dat' into table t1 (a, @b) set c= if(a is null,"oops",a);
 | |
| select * from t1;
 | |
| a	b	c
 | |
| NULL	NULL	oops
 | |
| NULL	NULL	oops
 | |
| truncate table t1;
 | |
| set @c:=123;
 | |
| load data infile '../../std_data/rpl_loaddata.dat' into table t1 (@a, b) set c= if(@a is null,@c,b);
 | |
| select * from t1;
 | |
| a	b	c
 | |
| 100	10	123
 | |
| 100	15	123
 | |
| load data infile '../../std_data/rpl_loaddata.dat' into table t1 (@a, @b);
 | |
| select * from t1;
 | |
| a	b	c
 | |
| 100	10	123
 | |
| 100	15	123
 | |
| 100	NULL	NULL
 | |
| 100	NULL	NULL
 | |
| select @a, @b;
 | |
| @a	@b
 | |
| NULL	15
 | |
| truncate table t1;
 | |
| load data infile '../../std_data/loaddata5.dat' into table t1 fields terminated by '' enclosed by '' (a, b) set c="Wow";
 | |
| select * from t1;
 | |
| a	b	c
 | |
| 1	2	Wow
 | |
| 3	4	Wow
 | |
| 5	6	Wow
 | |
| truncate table t1;
 | |
| load data infile '../../std_data/loaddata5.dat' into table t1 fields terminated by '' enclosed by '' (a, b) set c=concat(a,"+",b,"+",@c,"+",b,"+",if(c is null,"NIL",c));
 | |
| select * from t1;
 | |
| a	b	c
 | |
| 1	2	1+2+123+2+NIL
 | |
| 3	4	3+4+123+4+NIL
 | |
| 5	6	5+6+123+6+NIL
 | |
| load data infile '../../std_data/loaddata5.dat' into table t1 fields terminated by '' enclosed by '' (a, @b);
 | |
| ERROR HY000: Can't load value from file with fixed size rows to variable
 | |
| create table t2 (num int primary key, str varchar(10));
 | |
| insert into t2 values (10,'Ten'), (15,'Fifteen');
 | |
| truncate table t1;
 | |
| load data infile '../../std_data/rpl_loaddata.dat' into table t1 (@dummy,@n) set a= @n, c= (select str from t2 where num=@n);
 | |
| select * from t1;
 | |
| a	b	c
 | |
| 10	NULL	Ten
 | |
| 15	NULL	Fifteen
 | |
| drop table t1, t2;
 |