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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
50373d1a
Commit
50373d1a
authored
Jul 06, 2007
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into gleb.loc:/home/uchum/work/bk/5.0-opt
parents
6139d34c
725b4971
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
54 additions
and
1 deletion
+54
-1
mysql-test/r/loaddata.result
mysql-test/r/loaddata.result
+14
-0
mysql-test/t/loaddata.test
mysql-test/t/loaddata.test
+25
-0
sql/sql_class.cc
sql/sql_class.cc
+3
-1
sql/sql_class.h
sql/sql_class.h
+12
-0
No files found.
mysql-test/r/loaddata.result
View file @
50373d1a
...
...
@@ -238,3 +238,17 @@ f1
1
2
drop table t1,t2;
CREATE TABLE t1 (c1 INT, c2 TIMESTAMP, c3 REAL, c4 DOUBLE);
INSERT INTO t1 (c1, c2, c3, c4) VALUES (10, '1970-02-01 01:02:03', 1.1E-100, 1.1E+100);
SELECT * FROM t1;
c1 c2 c3 c4
10 1970-02-01 01:02:03 1.1e-100 1.1e+100
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY '-' FROM t1;
-10- -1970\-02\-01 01:02:03- -1.1e\-100- -1.1e+100-
EOF
TRUNCATE t1;
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t1 FIELDS ENCLOSED BY '-';
SELECT * FROM t1;
c1 c2 c3 c4
10 1970-02-01 01:02:03 1.1e-100 1.1e+100
DROP TABLE t1;
mysql-test/t/loaddata.test
View file @
50373d1a
...
...
@@ -213,4 +213,29 @@ select f1 from t1 where f2 <> '0000-00-00 00:00:00' order by f1;
--
exec
rm
$MYSQLTEST_VARDIR
/
tmp
/
t2
drop
table
t1
,
t2
;
#
# Bug#29442: SELECT INTO OUTFILE FIELDS ENCLOSED BY digit, minus sign etc
# corrupts non-string fields containing this character.
#
CREATE
TABLE
t1
(
c1
INT
,
c2
TIMESTAMP
,
c3
REAL
,
c4
DOUBLE
);
INSERT
INTO
t1
(
c1
,
c2
,
c3
,
c4
)
VALUES
(
10
,
'1970-02-01 01:02:03'
,
1.1E-100
,
1.1E+100
);
SELECT
*
FROM
t1
;
--
exec
rm
-
f
$MYSQLTEST_VARDIR
/
tmp
/
t1
--
replace_result
$MYSQLTEST_VARDIR
MYSQLTEST_VARDIR
eval
SELECT
*
INTO
OUTFILE
'$MYSQLTEST_VARDIR/tmp/t1'
FIELDS
ENCLOSED
BY
'-'
FROM
t1
;
--
exec
cat
$MYSQLTEST_VARDIR
/
tmp
/
t1
--
exec
echo
EOF
TRUNCATE
t1
;
--
replace_result
$MYSQLTEST_VARDIR
MYSQLTEST_VARDIR
eval
LOAD
DATA
INFILE
'$MYSQLTEST_VARDIR/tmp/t1'
INTO
TABLE
t1
FIELDS
ENCLOSED
BY
'-'
;
SELECT
*
FROM
t1
;
--
exec
rm
$MYSQLTEST_VARDIR
/
tmp
/
t1
DROP
TABLE
t1
;
# End of 5.0 tests
sql/sql_class.cc
View file @
50373d1a
...
...
@@ -1210,6 +1210,7 @@ select_export::prepare(List<Item> &list, SELECT_LEX_UNIT *u)
field_term_length
?
(
*
exchange
->
field_term
)[
0
]
:
INT_MAX
);
escape_char
=
(
exchange
->
escaped
->
length
()
?
(
*
exchange
->
escaped
)[
0
]
:
-
1
);
is_ambiguous_field_sep
=
test
(
strchr
(
ESCAPE_CHARS
,
field_sep_char
));
is_unsafe_field_sep
=
test
(
strchr
(
NUMERIC_CHARS
,
field_sep_char
));
line_sep_char
=
(
exchange
->
line_term
->
length
()
?
(
*
exchange
->
line_term
)[
0
]
:
INT_MAX
);
if
(
!
field_term_length
)
...
...
@@ -1284,7 +1285,8 @@ bool select_export::send_data(List<Item> &items)
used_length
=
min
(
res
->
length
(),
item
->
max_length
);
else
used_length
=
res
->
length
();
if
(
result_type
==
STRING_RESULT
&&
escape_char
!=
-
1
)
if
((
result_type
==
STRING_RESULT
||
is_unsafe_field_sep
)
&&
escape_char
!=
-
1
)
{
char
*
pos
,
*
start
,
*
end
;
CHARSET_INFO
*
res_charset
=
res
->
charset
();
...
...
sql/sql_class.h
View file @
50373d1a
...
...
@@ -1929,6 +1929,12 @@ public:
#define ESCAPE_CHARS "ntrb0ZN" // keep synchronous with READ_INFO::unescape
/*
List of all possible characters of a numeric value text representation.
*/
#define NUMERIC_CHARS ".0123456789e+-"
class
select_export
:
public
select_to_file
{
uint
field_term_length
;
int
field_sep_char
,
escape_char
,
line_sep_char
;
...
...
@@ -1938,6 +1944,12 @@ class select_export :public select_to_file {
(see the READ_INFO::unescape method and the ESCAPE_CHARS constant value).
*/
bool
is_ambiguous_field_sep
;
/*
The is_unsafe_field_sep field is true if a value of the field_sep_char
field is one of the '0'..'9', '+', '-', '.' and 'e' characters
(see the NUMERIC_CHARS constant value).
*/
bool
is_unsafe_field_sep
;
bool
fixed_row_size
;
public:
select_export
(
sql_exchange
*
ex
)
:
select_to_file
(
ex
)
{}
...
...
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