From ea7d3db0b9d03964dfa498e38ad3612ca8509df0 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 6 Dec 2006 21:45:57 +0400 Subject: bug #22372 (LOAD DATA crashes the table with the geometry field) The problem is that the GEOMETRY NOT NULL can't automatically set any value as a default one. We always tried to complete LOAD DATA command even if there's not enough data in file. That doesn't work for GEOMETRY NOT NULL. Now Field_*::reset() returns an error sign and it's checked in mysql_load() mysql-test/r/gis.result: test result mysql-test/t/gis.test: testcase sql/field.cc: reset() now returns error sign sql/field.h: Field_*::reset() now returns error sign if the field can't be reset sql/sql_load.cc: check if field can't be reset and return error if it's so --- mysql-test/r/gis.result | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'mysql-test/r/gis.result') diff --git a/mysql-test/r/gis.result b/mysql-test/r/gis.result index f7066e7edca..ce2b5deadbd 100644 --- a/mysql-test/r/gis.result +++ b/mysql-test/r/gis.result @@ -671,3 +671,9 @@ Catalog Database Table Table_alias Column Column_alias Type Length Max length Is def asbinary(g) 252 8192 0 Y 128 0 63 asbinary(g) drop table t1; +create table t1 (a TEXT, b GEOMETRY NOT NULL, SPATIAL KEY(b)); +alter table t1 disable keys; +load data infile '../../std_data/bad_gis_data.dat' into table t1; +ERROR 01000: Data truncated; NULL supplied to NOT NULL column 'b' at row 1 +alter table t1 enable keys; +drop table t1; -- cgit v1.2.1 From e5168acb98b9fd4d9582ea7a5022d4da72a346d6 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Dec 2006 09:11:56 +0400 Subject: merging mysql-test/r/gis.result: result fixed sql/field.cc: Field_*::reset() now returns int sql/sql_load.cc: merging fix --- mysql-test/r/gis.result | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'mysql-test/r/gis.result') diff --git a/mysql-test/r/gis.result b/mysql-test/r/gis.result index c4c073f047a..92386535119 100644 --- a/mysql-test/r/gis.result +++ b/mysql-test/r/gis.result @@ -673,6 +673,22 @@ POINT(10 10) select (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440)))); (asWKT(geomfromwkb((0x010100000000000000000024400000000000002440)))) POINT(10 10) +create table t1 (g GEOMETRY); +select * from t1; +Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr +def test t1 t1 g g 255 4294967295 0 Y 144 0 63 +g +select asbinary(g) from t1; +Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr +def asbinary(g) 252 8192 0 Y 128 0 63 +asbinary(g) +drop table t1; +create table t1 (a TEXT, b GEOMETRY NOT NULL, SPATIAL KEY(b)); +alter table t1 disable keys; +load data infile '../../std_data/bad_gis_data.dat' into table t1; +ERROR 22004: Column was set to data type implicit default; NULL supplied for NOT NULL column 'b' at row 1 +alter table t1 enable keys; +drop table t1; create table t1 (s1 geometry not null,s2 char(100)); create trigger t1_bu before update on t1 for each row set new.s1 = null; insert into t1 values (null,null); @@ -696,22 +712,6 @@ alter table t1 add primary key pti(pt); ERROR 42000: BLOB/TEXT column 'pt' used in key specification without a key length alter table t1 add primary key pti(pt(20)); drop table t1; -create table t1 (g GEOMETRY); -select * from t1; -Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def test t1 t1 g g 255 4294967295 0 Y 144 0 63 -g -select asbinary(g) from t1; -Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def asbinary(g) 252 8192 0 Y 128 0 63 -asbinary(g) -drop table t1; -create table t1 (a TEXT, b GEOMETRY NOT NULL, SPATIAL KEY(b)); -alter table t1 disable keys; -load data infile '../../std_data/bad_gis_data.dat' into table t1; -ERROR 01000: Data truncated; NULL supplied to NOT NULL column 'b' at row 1 -alter table t1 enable keys; -drop table t1; create table t1 select GeomFromText('point(1 1)'); desc t1; Field Type Null Key Default Extra -- cgit v1.2.1 From 2a2e6cf4e9142335619c031f7e0c54c6cb570c81 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Dec 2006 13:38:16 +0400 Subject: merging --- mysql-test/r/gis.result | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'mysql-test/r/gis.result') diff --git a/mysql-test/r/gis.result b/mysql-test/r/gis.result index 047cc56e275..5ef06688ee6 100644 --- a/mysql-test/r/gis.result +++ b/mysql-test/r/gis.result @@ -680,13 +680,13 @@ def test t1 t1 g g 255 4294967295 0 Y 144 0 63 g select asbinary(g) from t1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def asbinary(g) 252 8192 0 Y 128 0 63 +def asbinary(g) 252 16777216 0 Y 128 0 63 asbinary(g) drop table t1; create table t1 (a TEXT, b GEOMETRY NOT NULL, SPATIAL KEY(b)); alter table t1 disable keys; load data infile '../../std_data/bad_gis_data.dat' into table t1; -ERROR 22004: Column was set to data type implicit default; NULL supplied for NOT NULL column 'b' at row 1 +ERROR 22004: Column set to default value; NULL supplied to NOT NULL column 'b' at row 1 alter table t1 enable keys; drop table t1; create table t1 (s1 geometry not null,s2 char(100)); -- cgit v1.2.1 From c067aa5867b06af0a9b18e6fd8466334d99df63e Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Dec 2006 15:22:43 +0400 Subject: merging fix mysql-test/r/gis.result: result fixed mysql-test/t/gis.test: path to datafile fixed --- mysql-test/r/gis.result | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mysql-test/r/gis.result') diff --git a/mysql-test/r/gis.result b/mysql-test/r/gis.result index 92386535119..870e160e563 100644 --- a/mysql-test/r/gis.result +++ b/mysql-test/r/gis.result @@ -685,7 +685,7 @@ asbinary(g) drop table t1; create table t1 (a TEXT, b GEOMETRY NOT NULL, SPATIAL KEY(b)); alter table t1 disable keys; -load data infile '../../std_data/bad_gis_data.dat' into table t1; +load data infile '../std_data_ln/bad_gis_data.dat' into table t1; ERROR 22004: Column was set to data type implicit default; NULL supplied for NOT NULL column 'b' at row 1 alter table t1 enable keys; drop table t1; -- cgit v1.2.1