mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 ee02650bac
			
		
	
	
	ee02650bac
	
	
	
		
			
			DESCRIPTION
===========
Inability of mysql LOAD XML command to handle empty XML
tags i.e. <row><tag/></row>. Also the behaviour is wrong
and (different than above) when there is a space in empty
tag i.e. <row><tag /></row>
ANALYSIS
========
In read_xml() the case where we encounter a close tag ('/')
we're decreasing the 'level' blindly which is wrong.
Actually when its an without-space-empty-tag (succeeding
char is '>'), we need to skip the decrement. In other words
whenever we hit a close tag ('/'), decrease the 'level'
only when (i) It's not an (without space) empty tag i.e.
<tag/> or, (ii) It is of format <row col="val" .../>
FIX
===
The switch case for '/' is modified. We've removed the
blind decrement of 'level'. We do it only when its not an
without-space-empty-tag. Also we are setting 'in_tag' to
false to let program know that we're done reading current
tag (required in the case of format <row col="val" .../>)
		
	
			
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| <test_rows>
 | |
|   <row>
 | |
|     <col1>0bc</col1>
 | |
|     <col2>def</col2>
 | |
|     <col3>ghi</col3>
 | |
|     <col4>jkl</col4>
 | |
|   </row>
 | |
|   <row>
 | |
|     <col1>1no</col1>
 | |
|     <col2/>
 | |
|     <col3>pqr</col3>
 | |
|     <col4>stu</col4>
 | |
|   </row>
 | |
| 
 | |
|   <row>
 | |
|     <col1>2BC</col1>
 | |
|     <col2>DEF</col2>
 | |
|     <col3>GHI</col3>
 | |
|     <col4>JKL</col4>
 | |
|   </row>
 | |
|   <row>
 | |
|     <col1>3NO</col1>
 | |
|     <col2 />
 | |
|     <col3>PQR</col3>
 | |
|     <col4>STU</col4>
 | |
|   </row>
 | |
| 
 | |
|   <row col1="4bc" col2="def" col3="ghi" col4="jkl"/>
 | |
|   <row col1="5no"   col2="pqr"   col3="stu"   col4="vwx"   />
 | |
| 
 | |
|   <row>
 | |
|     <field name='col1'>6BC</field>
 | |
|     <field name='col2'>DEF</field>
 | |
|     <field name='col3'></field>
 | |
|     <field name='col4'>JKL</field>
 | |
|   </row>
 | |
|   <row>
 | |
|     <field name='col1'>7NO</field>
 | |
|     <field name='col2'>PQR</field>
 | |
|     <field name='col3'>STU</field>
 | |
|     <field name='col4'>VWX</field>
 | |
|   </row>
 | |
| 
 | |
|   <row>
 | |
|     <col1>8bc</col1>
 | |
|     <col2>def</col2>
 | |
|     <col3>ghi</col3>
 | |
|     <col4 />
 | |
|   </row>
 | |
|   <row>
 | |
|     <col1>9kl</col1>
 | |
|     <col2/>
 | |
|     <col3>mno</col3>
 | |
|     <col4>pqr</col4>
 | |
|   </row>
 | |
| 
 | |
|   <row col1="ABC" col2="DEF" col3="" col4="JKL"/>
 | |
|   <row col1="MNO" col2="" col3="STU" col4="VWX"/>
 | |
| </test_rows>
 |