mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge branch 'bb-10.3-release' into bb-10.4-release
Note, the fix for "MDEV-23328 Server hang due to Galera lock conflict resolution" was null-merged. 10.4 version of the fix is coming up separately
This commit is contained in:
@@ -67,7 +67,7 @@
|
||||
/* This should be an option. */
|
||||
/***********************************************************************/
|
||||
#define MAXCOL 200 /* Default max column nb in result */
|
||||
#define TYPE_UNKNOWN 10 /* Must be greater than other types */
|
||||
#define TYPE_UNKNOWN 12 /* Must be greater than other types */
|
||||
|
||||
/***********************************************************************/
|
||||
/* External function. */
|
||||
@@ -311,14 +311,14 @@ PQRYRES CSVColumns(PGLOBAL g, PCSZ dp, PTOS topt, bool info)
|
||||
|
||||
} else if (*p == q) {
|
||||
if (phase == 0) {
|
||||
if (blank)
|
||||
{
|
||||
if (blank) {
|
||||
if (++nerr > mxr) {
|
||||
sprintf(g->Message, MSG(MISPLACED_QUOTE), num_read);
|
||||
goto err;
|
||||
} else
|
||||
goto skip;
|
||||
}
|
||||
|
||||
n = 0;
|
||||
phase = digit = 1;
|
||||
} else if (phase == 1) {
|
||||
@@ -342,14 +342,14 @@ PQRYRES CSVColumns(PGLOBAL g, PCSZ dp, PTOS topt, bool info)
|
||||
goto skip;
|
||||
|
||||
} else {
|
||||
if (phase == 2)
|
||||
{
|
||||
if (phase == 2) {
|
||||
if (++nerr > mxr) {
|
||||
sprintf(g->Message, MSG(MISPLACED_QUOTE), num_read);
|
||||
goto err;
|
||||
} else
|
||||
goto skip;
|
||||
}
|
||||
|
||||
// isdigit cannot be used here because of debug assert
|
||||
if (!strchr("0123456789", *p)) {
|
||||
if (!digit && *p == dechar)
|
||||
@@ -364,14 +364,14 @@ PQRYRES CSVColumns(PGLOBAL g, PCSZ dp, PTOS topt, bool info)
|
||||
blank = 1;
|
||||
} // endif's *p
|
||||
|
||||
if (phase == 1)
|
||||
{
|
||||
if (phase == 1) {
|
||||
if (++nerr > mxr) {
|
||||
sprintf(g->Message, MSG(UNBALANCE_QUOTE), num_read);
|
||||
goto err;
|
||||
} else
|
||||
goto skip;
|
||||
}
|
||||
|
||||
if (n) {
|
||||
len[i] = MY_MAX(len[i], n);
|
||||
type = (digit || n == 0 || (dec && n == 1)) ? TYPE_STRING
|
||||
@@ -744,8 +744,7 @@ bool TDBCSV::OpenDB(PGLOBAL g)
|
||||
int i, len;
|
||||
PCSVCOL colp;
|
||||
|
||||
if (!Fields) // May have been set in TABFMT::OpenDB
|
||||
{
|
||||
if (!Fields) { // May have been set in TABFMT::OpenDB
|
||||
if (Mode != MODE_UPDATE && Mode != MODE_INSERT) {
|
||||
for (colp = (PCSVCOL)Columns; colp; colp = (PCSVCOL)colp->Next)
|
||||
if (!colp->IsSpecial() && !colp->IsVirtual())
|
||||
@@ -759,6 +758,7 @@ bool TDBCSV::OpenDB(PGLOBAL g)
|
||||
if (!cdp->IsSpecial() && !cdp->IsVirtual())
|
||||
Fields++;
|
||||
}
|
||||
|
||||
Offset = (int*)PlugSubAlloc(g, NULL, sizeof(int) * Fields);
|
||||
Fldlen = (int*)PlugSubAlloc(g, NULL, sizeof(int) * Fields);
|
||||
|
||||
@@ -778,8 +778,7 @@ bool TDBCSV::OpenDB(PGLOBAL g)
|
||||
|
||||
} // endfor i
|
||||
|
||||
if (Field)
|
||||
{
|
||||
if (Field) {
|
||||
// Prepare writing fields
|
||||
if (Mode != MODE_UPDATE) {
|
||||
for (colp = (PCSVCOL)Columns; colp; colp = (PCSVCOL)colp->Next)
|
||||
@@ -803,6 +802,7 @@ bool TDBCSV::OpenDB(PGLOBAL g)
|
||||
Fldtyp[i] = IsTypeNum(cdp->GetType());
|
||||
} // endif cdp
|
||||
}
|
||||
|
||||
} // endif Use
|
||||
|
||||
if (Header) {
|
||||
@@ -1051,8 +1051,7 @@ bool TDBCSV::PrepareWriting(PGLOBAL g)
|
||||
if (i)
|
||||
strcat(To_Line, sep);
|
||||
|
||||
if (Field[i])
|
||||
{
|
||||
if (Field[i]) {
|
||||
if (!strlen(Field[i])) {
|
||||
// Generally null fields are not quoted
|
||||
if (Quoted > 2)
|
||||
@@ -1060,7 +1059,7 @@ bool TDBCSV::PrepareWriting(PGLOBAL g)
|
||||
strcat(strcat(To_Line, qot), qot);
|
||||
|
||||
} else if (Qot && (strchr(Field[i], Sep) || *Field[i] == Qot
|
||||
|| Quoted > 1 || (Quoted == 1 && !Fldtyp[i])))
|
||||
|| Quoted > 1 || (Quoted == 1 && !Fldtyp[i]))) {
|
||||
if (strchr(Field[i], Qot)) {
|
||||
// Field contains quotes that must be doubled
|
||||
int j, k = strlen(To_Line), n = strlen(Field[i]);
|
||||
@@ -1078,10 +1077,12 @@ bool TDBCSV::PrepareWriting(PGLOBAL g)
|
||||
To_Line[k] = '\0';
|
||||
} else
|
||||
strcat(strcat(strcat(To_Line, qot), Field[i]), qot);
|
||||
}
|
||||
|
||||
else
|
||||
strcat(To_Line, Field[i]);
|
||||
}
|
||||
|
||||
} // endfor i
|
||||
|
||||
#if defined(_DEBUG)
|
||||
|
Reference in New Issue
Block a user