Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
21384728
Commit
21384728
authored
Apr 22, 2003
by
venu@myvenu.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix to return appropriate warnings using SHOW WARNINGS for LOAD DATA INFILE (scrum)
parent
12181f6f
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
70 additions
and
10 deletions
+70
-10
include/mysqld_error.h
include/mysqld_error.h
+5
-1
sql/field.cc
sql/field.cc
+6
-1
sql/share/english/errmsg.txt
sql/share/english/errmsg.txt
+6
-1
sql/sql_load.cc
sql/sql_load.cc
+53
-7
No files found.
include/mysqld_error.h
View file @
21384728
...
...
@@ -275,5 +275,9 @@
#define ER_ZLIB_Z_BUF_ERROR 1256
#define ER_ZLIB_Z_DATA_ERROR 1257
#define ER_CUT_VALUE_GROUP_CONCAT 1258
#define ER_ERROR_MESSAGES 259
#define ER_WARN_TOO_FEW_RECORDS 1259
#define ER_WARN_TOO_MANY_RECORDS 1260
#define ER_WARN_DATA_TRUNCATED 1261
#define ER_WARN_NULL_TO_NOTNULL 1262
#define ER_ERROR_MESSAGES 263
sql/field.cc
View file @
21384728
...
...
@@ -1677,6 +1677,7 @@ int Field_long::store(const char *from,uint len,CHARSET_INFO *cs)
!
test_if_int
(
from
,
len
,
end
,
cs
)))
{
current_thd
->
cuted_fields
++
;
error
=
1
;
}
#ifdef WORDS_BIGENDIAN
if
(
table
->
db_low_byte_first
)
...
...
@@ -1932,7 +1933,10 @@ int Field_longlong::store(const char *from,uint len,CHARSET_INFO *cs)
if
(
error
||
(
from
+
len
!=
end
&&
current_thd
->
count_cuted_fields
&&
!
test_if_int
(
from
,
len
,
end
,
cs
)))
current_thd
->
cuted_fields
++
;
{
current_thd
->
cuted_fields
++
;
error
=
1
;
}
#ifdef WORDS_BIGENDIAN
if
(
table
->
db_low_byte_first
)
{
...
...
@@ -2416,6 +2420,7 @@ int Field_double::store(const char *from,uint len,CHARSET_INFO *cs)
if
(
err
||
current_thd
->
count_cuted_fields
&&
!
test_if_real
(
from
,
len
,
cs
))
{
current_thd
->
cuted_fields
++
;
err
=
1
;
}
if
(
unsigned_flag
&&
j
<
0
)
{
...
...
sql/share/english/errmsg.txt
View file @
21384728
...
...
@@ -259,4 +259,9 @@
"Z_BUF_ERROR: Not enough memory available for zlib"
"Z_MEM_ERROR: Not enough room in the output buffer for zlib (probably, length of uncompressed data was corrupted)"
"Z_DATA_ERROR: Input data was corrupted for zlib"
"%d line(s) was(were) cut by group_concat()"
\ No newline at end of file
"%d line(s) was(were) cut by group_concat()";
"Value count is fewer than the column count at row %ld";
"Value count is more than the column count at row %ld";
"Data truncated for column '%s' at row %ld";
"Data truncated, NULL supplied to NOT NULL column '%s' at row %ld"
sql/sql_load.cc
View file @
21384728
...
...
@@ -368,9 +368,11 @@ read_fixed_length(THD *thd,COPY_INFO &info,TABLE *table,List<Item> &fields,
List_iterator_fast
<
Item
>
it
(
fields
);
Item_field
*
sql_field
;
ulonglong
id
;
ulong
row_pos
;
DBUG_ENTER
(
"read_fixed_length"
);
id
=
0
;
id
=
0
;
row_pos
=
1
;
/* No fields can be null in this format. mark all fields as not null */
while
((
sql_field
=
(
Item_field
*
)
it
++
))
sql_field
->
field
->
set_notnull
();
...
...
@@ -392,8 +394,11 @@ read_fixed_length(THD *thd,COPY_INFO &info,TABLE *table,List<Item> &fields,
Field
*
field
=
sql_field
->
field
;
if
(
pos
==
read_info
.
row_end
)
{
thd
->
cuted_fields
++
;
/* Not enough fields */
field
->
reset
();
thd
->
cuted_fields
++
;
/* Not enough fields */
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_WARN_TOO_FEW_RECORDS
,
ER
(
ER_WARN_TOO_FEW_RECORDS
),
row_pos
);
field
->
reset
();
}
else
{
...
...
@@ -403,14 +408,25 @@ read_fixed_length(THD *thd,COPY_INFO &info,TABLE *table,List<Item> &fields,
field
->
field_length
)
length
=
field
->
field_length
;
save_chr
=
pos
[
length
];
pos
[
length
]
=
'\0'
;
// Safeguard aganst malloc
field
->
store
((
char
*
)
pos
,
length
,
read_info
.
read_charset
);
if
(
field
->
store
((
char
*
)
pos
,
length
,
read_info
.
read_charset
))
{
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_WARN_DATA_TRUNCATED
,
ER
(
ER_WARN_DATA_TRUNCATED
),
field
->
field_name
,
row_pos
);
}
pos
[
length
]
=
save_chr
;
if
((
pos
+=
length
)
>
read_info
.
row_end
)
pos
=
read_info
.
row_end
;
/* Fills rest with space */
}
}
if
(
pos
!=
read_info
.
row_end
)
{
thd
->
cuted_fields
++
;
/* To long row */
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_WARN_TOO_MANY_RECORDS
,
ER
(
ER_WARN_TOO_MANY_RECORDS
),
row_pos
);
}
if
(
write_record
(
table
,
&
info
))
DBUG_RETURN
(
1
);
/*
...
...
@@ -426,7 +442,13 @@ read_fixed_length(THD *thd,COPY_INFO &info,TABLE *table,List<Item> &fields,
if
(
read_info
.
next_line
())
// Skip to next line
break
;
if
(
read_info
.
line_cuted
)
{
thd
->
cuted_fields
++
;
/* To long row */
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_WARN_TOO_MANY_RECORDS
,
ER
(
ER_WARN_TOO_MANY_RECORDS
),
row_pos
);
}
row_pos
++
;
}
if
(
id
&&
!
read_info
.
error
)
thd
->
insert_id
(
id
);
// For binary/update log
...
...
@@ -444,11 +466,13 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table,
Item_field
*
sql_field
;
uint
enclosed_length
;
ulonglong
id
;
ulong
row_pos
;
DBUG_ENTER
(
"read_sep_field"
);
enclosed_length
=
enclosed
.
length
();
id
=
0
;
id
=
0
;
row_pos
=
1
;
for
(;;
it
.
rewind
())
{
if
(
thd
->
killed
)
...
...
@@ -478,13 +502,26 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table,
if
(
field
->
type
()
==
FIELD_TYPE_TIMESTAMP
)
((
Field_timestamp
*
)
field
)
->
set_time
();
else
if
(
field
!=
table
->
next_number_field
)
{
thd
->
cuted_fields
++
;
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_WARN_NULL_TO_NOTNULL
,
ER
(
ER_WARN_NULL_TO_NOTNULL
),
field
->
field_name
,
row_pos
);
}
}
continue
;
}
field
->
set_notnull
();
read_info
.
row_end
[
0
]
=
0
;
// Safe to change end marker
field
->
store
((
char
*
)
read_info
.
row_start
,
length
,
read_info
.
read_charset
);
if
(
field
->
store
((
char
*
)
read_info
.
row_start
,
length
,
read_info
.
read_charset
))
{
// Data truncated or out of bounds
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_WARN_DATA_TRUNCATED
,
ER
(
ER_WARN_DATA_TRUNCATED
),
field
->
field_name
,
row_pos
);
}
}
if
(
read_info
.
error
)
break
;
...
...
@@ -497,6 +534,9 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table,
sql_field
->
field
->
set_null
();
sql_field
->
field
->
reset
();
thd
->
cuted_fields
++
;
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_WARN_TOO_FEW_RECORDS
,
ER
(
ER_WARN_TOO_FEW_RECORDS
),
row_pos
);
}
}
if
(
write_record
(
table
,
&
info
))
...
...
@@ -514,7 +554,13 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table,
if
(
read_info
.
next_line
())
// Skip to next line
break
;
if
(
read_info
.
line_cuted
)
{
thd
->
cuted_fields
++
;
/* To long row */
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_WARN_TOO_MANY_RECORDS
,
ER
(
ER_WARN_TOO_MANY_RECORDS
),
row_pos
);
}
row_pos
++
;
}
if
(
id
&&
!
read_info
.
error
)
thd
->
insert_id
(
id
);
// For binary/update log
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment