summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Bertrand <bertrandop@gmail.com>2020-03-11 14:52:20 +0100
committerOlivier Bertrand <bertrandop@gmail.com>2020-03-11 14:52:20 +0100
commitf5f9659b1577befed935b41ce36dda91f218c8e9 (patch)
treeb3e1ebf589b8daaa5163c99c27077be4f1051e2b
parent8ff3eb417c0aa4b8d09e2b0296b2e66c0c530380 (diff)
downloadmariadb-git-f5f9659b1577befed935b41ce36dda91f218c8e9.tar.gz
- Fix https://stackoverflow.com/questions/60625778/import-complex-xml-from-multiple-files-in-mariadb/60637429#60637429
Import complex XML from multiple files in MariaDB Some row results are missing and replaced by the last file one. Thats because Nx and Sx column members are not reset when changing file. modified: storage/connect/tabxml.cpp modified: storage/connect/tabxml.h
-rw-r--r--storage/connect/tabxml.cpp11
-rw-r--r--storage/connect/tabxml.h1
2 files changed, 8 insertions, 4 deletions
diff --git a/storage/connect/tabxml.cpp b/storage/connect/tabxml.cpp
index 717090e9c5a..68941c67be8 100644
--- a/storage/connect/tabxml.cpp
+++ b/storage/connect/tabxml.cpp
@@ -813,12 +813,15 @@ bool TDBXML::Initialize(PGLOBAL g)
if (Void)
return false;
- if (Columns && !Bufdone) {
+ if (Columns) {
// Allocate the buffers that will contain node values
for (colp = (PXMLCOL)Columns; colp; colp = (PXMLCOL)colp->GetNext())
- if (!colp->IsSpecial()) // Not a pseudo column
- if (colp->AllocBuf(g, Mode == MODE_INSERT))
- return true;
+ if (!colp->IsSpecial()) { // Not a pseudo column
+ if (!Bufdone && colp->AllocBuf(g, Mode == MODE_INSERT))
+ return true;
+
+ colp->Nx = colp->Sx = -1;
+ } // endif Special
Bufdone = true;
} // endif Bufdone
diff --git a/storage/connect/tabxml.h b/storage/connect/tabxml.h
index fb3913f08ea..42dbb038b47 100644
--- a/storage/connect/tabxml.h
+++ b/storage/connect/tabxml.h
@@ -157,6 +157,7 @@ class DllExport TDBXML : public TDBASE {
/* Class XMLCOL: XDB table access method column descriptor. */
/***********************************************************************/
class XMLCOL : public COLBLK {
+ friend class TDBXML;
public:
// Constructors
XMLCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am = "XML");