Bug#16212207 - LOAD XML INFILE PERFORMANCE WITH INDENTED
XML DESCRIPTION =========== LOAD XML INFILE performance becomes painfully slow if the tags' value has any space(s) in between them. They're usually kept intentionally for indentation purpose. ANALYSIS ======== The extra spaces are calling clear_level() many a times which is having overhead of clearing taglist etc. This can be avoided altogether by skipping all such spaces. FIX === Trim all the starting whitespaces from the value before passing it to read_value()
This commit is contained in:
parent
f4ce18b0a6
commit
3b562dcf6e
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
|
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -1989,6 +1989,13 @@ int READ_INFO::read_xml()
|
|||||||
|
|
||||||
case '>': /* end tag - read tag value */
|
case '>': /* end tag - read tag value */
|
||||||
in_tag= false;
|
in_tag= false;
|
||||||
|
/* Skip all whitespaces */
|
||||||
|
while (' ' == (chr= my_tospace(GET)));
|
||||||
|
/*
|
||||||
|
Push the first non-whitespace char back to Stack. This char would be
|
||||||
|
read in the upcoming call to read_value()
|
||||||
|
*/
|
||||||
|
PUSH(chr);
|
||||||
chr= read_value('<', &value);
|
chr= read_value('<', &value);
|
||||||
if(chr == my_b_EOF)
|
if(chr == my_b_EOF)
|
||||||
goto found_eof;
|
goto found_eof;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user