mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
longer regex error messages
This commit is contained in:
@ -31,6 +31,7 @@
|
|||||||
#include <m_string.h>
|
#include <m_string.h>
|
||||||
#include <my_getopt.h>
|
#include <my_getopt.h>
|
||||||
#include <my_dir.h>
|
#include <my_dir.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
#define MAX_ROWS 3000
|
#define MAX_ROWS 3000
|
||||||
#define ERRORS_PER_RANGE 1000
|
#define ERRORS_PER_RANGE 1000
|
||||||
@ -749,18 +750,19 @@ static struct message *find_message(struct errors *err, const char *lang,
|
|||||||
for the format specifiers
|
for the format specifiers
|
||||||
|
|
||||||
RETURN VALUE
|
RETURN VALUE
|
||||||
Returns the checksum for all the characters of the
|
Returns the checksum for all letters of the
|
||||||
format specifiers
|
format specifiers
|
||||||
|
|
||||||
Ex.
|
Ex.
|
||||||
"text '%-64.s' text part 2 %d'"
|
"text '%-.64s' text part 2 %zu'"
|
||||||
^^^^^^ ^^
|
^ ^^
|
||||||
characters will be xored to form checksum
|
characters will be xored to form checksum
|
||||||
|
|
||||||
|
Non-letters are skipped, because they do not change the type
|
||||||
|
of the argument.
|
||||||
|
|
||||||
NOTE:
|
NOTE:
|
||||||
Does not support format specifiers with positional args
|
Does not support format specifiers with positional args like "%2$s"
|
||||||
like "%2$s" but that is not yet supported by my_vsnprintf
|
|
||||||
either.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static ha_checksum checksum_format_specifier(const char* msg)
|
static ha_checksum checksum_format_specifier(const char* msg)
|
||||||
@ -777,20 +779,17 @@ static ha_checksum checksum_format_specifier(const char* msg)
|
|||||||
start= p+1; /* Entering format specifier */
|
start= p+1; /* Entering format specifier */
|
||||||
num_format_specifiers++;
|
num_format_specifiers++;
|
||||||
}
|
}
|
||||||
else if (start)
|
else if (start && isalpha(*p))
|
||||||
{
|
{
|
||||||
|
chksum= my_checksum(chksum, p, 1);
|
||||||
switch(*p) {
|
switch(*p) {
|
||||||
case 'd':
|
case 'd':
|
||||||
case 'u':
|
case 'u':
|
||||||
case 'x':
|
case 'x':
|
||||||
case 's':
|
case 's':
|
||||||
case 'M':
|
case 'M':
|
||||||
chksum= my_checksum(chksum, (uchar*) start, (uint) (p + 1 - start));
|
|
||||||
start= 0; /* Not in format specifier anymore */
|
start= 0; /* Not in format specifier anymore */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -793,7 +793,7 @@ SELECT 'a\nb' RLIKE '(?-s)a.b';
|
|||||||
'a\nb' RLIKE 'a.b'
|
'a\nb' RLIKE 'a.b'
|
||||||
1
|
1
|
||||||
SELECT 'a\nb' RLIKE '(?-s)a.b';
|
SELECT 'a\nb' RLIKE '(?-s)a.b';
|
||||||
'a\nb' RLIKE '(?-s)a.b'
|
'a\nb' RLIKE '(?-s)a.b'
|
||||||
0
|
0
|
||||||
SET default_regex_flags=DEFAULT;
|
SET default_regex_flags=DEFAULT;
|
||||||
SELECT REGEXP_SUBSTR('Monday Mon','^((?<DN>Mon|Fri|Sun)day|(?<DN>Tue)sday).*(?P=DN)$');
|
SELECT REGEXP_SUBSTR('Monday Mon','^((?<DN>Mon|Fri|Sun)day|(?<DN>Tue)sday).*(?P=DN)$');
|
||||||
@ -817,10 +817,10 @@ SELECT 'AB' RLIKE 'A# this is a comment\nB';
|
|||||||
'AB' RLIKE 'A B'
|
'AB' RLIKE 'A B'
|
||||||
1
|
1
|
||||||
SELECT 'AB' RLIKE 'A# this is a comment\nB';
|
SELECT 'AB' RLIKE 'A# this is a comment\nB';
|
||||||
'AB' RLIKE 'A# this is a comment\nB'
|
'AB' RLIKE 'A# this is a comment\nB'
|
||||||
1
|
1
|
||||||
SET default_regex_flags=DEFAULT;
|
SET default_regex_flags=DEFAULT;
|
||||||
SELECT 'Aq' RLIKE 'A\\q';
|
SELECT 'Aq' RLIKE 'A\\q';
|
||||||
ERROR 42000: Regex error 'unrecognized character follows \ at offset 2'
|
ERROR 42000: Regex error 'unrecognized character follows \ at offset 2'
|
||||||
SET default_regex_flags='EXTRA';
|
SET default_regex_flags='EXTRA';
|
||||||
SELECT 'Aq' RLIKE 'A\\q';
|
SELECT 'Aq' RLIKE 'A\\q';
|
||||||
@ -860,7 +860,7 @@ SELECT 0xE001 REGEXP @regCheck;
|
|||||||
# Testing a warning
|
# Testing a warning
|
||||||
SET NAMES latin1;
|
SET NAMES latin1;
|
||||||
SET @regCheck= '\\xE0\\x01';
|
SET @regCheck= '\\xE0\\x01';
|
||||||
SELECT 0xE001 REGEXP @regCheck;
|
SELECT 0xE001 REGEXP @regCheck;
|
||||||
0xE001 REGEXP @regCheck
|
0xE001 REGEXP @regCheck
|
||||||
0
|
0
|
||||||
Warnings:
|
Warnings:
|
||||||
|
@ -3,7 +3,7 @@ SELECT 'a' RLIKE 'a';
|
|||||||
'a' RLIKE 'a'
|
'a' RLIKE 'a'
|
||||||
0
|
0
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1139 Got error 'pcre_exec: Internal error (-123)' from regexp
|
Warning 1139 Regex error 'pcre_exec: Internal error (-123)'
|
||||||
SET debug_dbug='';
|
SET debug_dbug='';
|
||||||
SELECT 'a' RLIKE 'a';
|
SELECT 'a' RLIKE 'a';
|
||||||
'a' RLIKE 'a'
|
'a' RLIKE 'a'
|
||||||
|
@ -3186,13 +3186,13 @@ ER_INVALID_USE_OF_NULL 22004
|
|||||||
swe "Felaktig använding av NULL"
|
swe "Felaktig använding av NULL"
|
||||||
ukr "Хибне використання значення NULL"
|
ukr "Хибне використання значення NULL"
|
||||||
ER_REGEXP_ERROR 42000
|
ER_REGEXP_ERROR 42000
|
||||||
cze "Regulární výraz vrátil chybu '%-.64s'"
|
cze "Regulární výraz vrátil chybu: %s"
|
||||||
dan "Fik fejl '%-.64s' fra regexp"
|
dan "Fik fejl '%-.64s' fra regexp"
|
||||||
nla "Fout '%-.64s' ontvangen van regexp"
|
nla "Fout '%-.64s' ontvangen van regexp"
|
||||||
eng "Got error '%-.64s' from regexp"
|
eng "Regex error '%s'"
|
||||||
est "regexp tagastas vea '%-.64s'"
|
est "regexp tagastas vea: %s"
|
||||||
fre "Erreur '%-.64s' provenant de regexp"
|
fre "Erreur '%-.64s' provenant de regexp"
|
||||||
ger "regexp lieferte Fehler '%-.64s'"
|
ger "Regexp Fehler %s"
|
||||||
hindi "regexp में '%-.64s' त्रुटि हुई"
|
hindi "regexp में '%-.64s' त्रुटि हुई"
|
||||||
hun "'%-.64s' hiba a regularis kifejezes hasznalata soran (regexp)"
|
hun "'%-.64s' hiba a regularis kifejezes hasznalata soran (regexp)"
|
||||||
ita "Errore '%-.64s' da regexp"
|
ita "Errore '%-.64s' da regexp"
|
||||||
@ -3200,11 +3200,11 @@ ER_REGEXP_ERROR 42000
|
|||||||
kor "regexp에서 '%-.64s'가 났습니다."
|
kor "regexp에서 '%-.64s'가 났습니다."
|
||||||
por "Obteve erro '%-.64s' em regexp"
|
por "Obteve erro '%-.64s' em regexp"
|
||||||
rum "Eroarea '%-.64s' obtinuta din expresia regulara (regexp)"
|
rum "Eroarea '%-.64s' obtinuta din expresia regulara (regexp)"
|
||||||
rus "Получена ошибка '%-.64s' от регулярного выражения"
|
rus "Ошибка регулярного выражения: %s"
|
||||||
serbian "Funkcija regexp je vratila grešku '%-.64s'"
|
serbian "Funkcija regexp je vratila grešku: %s"
|
||||||
spa "Obtenido error '%-.64s' de regexp"
|
spa "Obtenido error '%-.64s' de regexp"
|
||||||
swe "Fick fel '%-.64s' från REGEXP"
|
swe "Fick fel '%-.64s' från REGEXP"
|
||||||
ukr "Отримано помилку '%-.64s' від регулярного виразу"
|
ukr "Помилка регулярного виразу: %s"
|
||||||
ER_MIX_OF_GROUP_FUNC_AND_FIELDS 42000
|
ER_MIX_OF_GROUP_FUNC_AND_FIELDS 42000
|
||||||
cze "Pokud není žádná GROUP BY klauzule, není dovoleno současné použití GROUP položek (MIN(),MAX(),COUNT()...) s ne GROUP položkami"
|
cze "Pokud není žádná GROUP BY klauzule, není dovoleno současné použití GROUP položek (MIN(),MAX(),COUNT()...) s ne GROUP položkami"
|
||||||
dan "Sammenblanding af GROUP kolonner (MIN(),MAX(),COUNT()...) uden GROUP kolonner er ikke tilladt, hvis der ikke er noget GROUP BY prædikat"
|
dan "Sammenblanding af GROUP kolonner (MIN(),MAX(),COUNT()...) uden GROUP kolonner er ikke tilladt, hvis der ikke er noget GROUP BY prædikat"
|
||||||
|
Reference in New Issue
Block a user