summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2017-08-10 16:23:26 -0700
committerIgor Babaev <igor@askmonty.org>2017-08-10 16:23:26 -0700
commit5a71e6bd5a61dff6d549d2c4f5927bbbd7ebcfee (patch)
tree98ca05164f4a2bf2fce6e1644bc6335193e69bbd /sql
parent1710dd2bf286f9a240f380925a0067c57c1b29f9 (diff)
parentbf75dcac89d1496032015526dc6ce78d327e329f (diff)
downloadmariadb-git-bb-10-ext-mdev-13369.tar.gz
Merge branch 'bb-10.2-ext' into bb-10-ext-mdev-13369bb-10-ext-mdev-13369
# Conflicts: # mysql-test/r/derived_cond_pushdown.result # mysql-test/t/derived_cond_pushdown.test # sql/sql_derived.cc # sql/sql_select.cc # sql/sql_select.h
Diffstat (limited to 'sql')
-rw-r--r--sql/handler.cc18
-rw-r--r--sql/item_cmpfunc.cc10
-rw-r--r--sql/item_geofunc.cc56
-rw-r--r--sql/item_jsonfunc.cc164
-rw-r--r--sql/item_jsonfunc.h4
-rw-r--r--sql/share/CMakeLists.txt1
-rw-r--r--sql/share/errmsg-utf8.txt287
-rw-r--r--sql/sp.cc207
-rw-r--r--sql/sp.h8
-rw-r--r--sql/sp_head.cc2
-rw-r--r--sql/sp_head.h2
-rw-r--r--sql/spatial.cc99
-rw-r--r--sql/spatial.h23
-rw-r--r--sql/sql_acl.cc25
-rw-r--r--sql/sql_derived.cc13
-rw-r--r--sql/sql_lex.cc63
-rw-r--r--sql/sql_lex.h13
-rw-r--r--sql/sql_locale.cc5
-rw-r--r--sql/sql_parse.cc29
-rw-r--r--sql/sql_parse.h6
-rw-r--r--sql/sql_select.cc31
-rw-r--r--sql/sql_select.h3
-rw-r--r--sql/sql_sequence.cc20
-rw-r--r--sql/sql_sequence.h3
-rw-r--r--sql/sql_yacc.yy48
-rw-r--r--sql/sql_yacc_ora.yy60
26 files changed, 900 insertions, 300 deletions
diff --git a/sql/handler.cc b/sql/handler.cc
index 4a9df5b2bf8..6f83175f16a 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -3356,6 +3356,12 @@ void handler::print_error(int error, myf errflag)
DBUG_ENTER("handler::print_error");
DBUG_PRINT("enter",("error: %d",error));
+ if (ha_thd()->transaction_rollback_request)
+ {
+ /* Ensure this becomes a true error */
+ errflag&= ~(ME_JUST_WARNING | ME_JUST_INFO);
+ }
+
int textno= -1; // impossible value
switch (error) {
case EACCES:
@@ -3501,10 +3507,14 @@ void handler::print_error(int error, myf errflag)
textno=ER_LOCK_TABLE_FULL;
break;
case HA_ERR_LOCK_DEADLOCK:
- textno=ER_LOCK_DEADLOCK;
- /* cannot continue. the statement was already aborted in the engine */
- SET_FATAL_ERROR;
- break;
+ {
+ String str, full_err_msg(ER_DEFAULT(ER_LOCK_DEADLOCK), system_charset_info);
+
+ get_error_message(error, &str);
+ full_err_msg.append(str);
+ my_printf_error(ER_LOCK_DEADLOCK, "%s", errflag, full_err_msg.c_ptr_safe());
+ DBUG_VOID_RETURN;
+ }
case HA_ERR_READ_ONLY_TRANSACTION:
textno=ER_READ_ONLY_TRANSACTION;
break;
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index f4f68e007a0..64f2a447bad 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -545,6 +545,16 @@ bool Arg_comparator::set_cmp_func_string()
if (owner->agg_arg_charsets_for_comparison(&m_compare_collation, a, b))
return true;
}
+
+ if ((*a)->is_json_type() ^ (*b)->is_json_type())
+ {
+ Item **j_item= (*a)->is_json_type() ? a : b;
+ Item *uf= new(thd->mem_root) Item_func_json_unquote(thd, *j_item);
+ if (!uf || uf->fix_fields(thd, &uf))
+ return 1;
+ *j_item= uf;
+ }
+
a= cache_converted_constant(thd, a, &a_cache, compare_type_handler());
b= cache_converted_constant(thd, b, &b_cache, compare_type_handler());
return false;
diff --git a/sql/item_geofunc.cc b/sql/item_geofunc.cc
index e553af6110a..04952739e85 100644
--- a/sql/item_geofunc.cc
+++ b/sql/item_geofunc.cc
@@ -122,13 +122,27 @@ String *Item_func_geometry_from_json::val_str(String *str)
Geometry_buffer buffer;
String *js= args[0]->val_str_ascii(&tmp_js);
uint32 srid= 0;
+ longlong options= 0;
json_engine_t je;
if ((null_value= args[0]->null_value))
return 0;
- if ((arg_count == 2) && !args[1]->null_value)
- srid= (uint32)args[1]->val_int();
+ if (arg_count > 1 && !args[1]->null_value)
+ {
+ options= args[1]->val_int();
+ if (options > 4 || options < 1)
+ {
+ String *sv= args[1]->val_str(&tmp_js);
+ my_error(ER_WRONG_VALUE_FOR_TYPE, MYF(0),
+ "option", sv->c_ptr(), "ST_GeometryFromJSON");
+ null_value= 1;
+ return 0;
+ }
+ }
+
+ if ((arg_count == 3) && !args[2]->null_value)
+ srid= (uint32)args[2]->val_int();
str->set_charset(&my_charset_bin);
if (str->reserve(SRID_SIZE, 512))
@@ -139,7 +153,7 @@ String *Item_func_geometry_from_json::val_str(String *str)
json_scan_start(&je, js->charset(), (const uchar *) js->ptr(),
(const uchar *) js->end());
- if ((null_value= !Geometry::create_from_json(&buffer, &je, str)))
+ if ((null_value= !Geometry::create_from_json(&buffer, &je, options==1, str)))
{
int code= 0;
@@ -154,6 +168,9 @@ String *Item_func_geometry_from_json::val_str(String *str)
case Geometry::GEOJ_POLYGON_NOT_CLOSED:
code= ER_GEOJSON_NOT_CLOSED;
break;
+ case Geometry::GEOJ_DIMENSION_NOT_SUPPORTED:
+ my_error(ER_GIS_INVALID_DATA, MYF(0), "ST_GeometryFromJSON");
+ break;
default:
report_json_error_ex(js, &je, func_name(), 0, Sql_condition::WARN_LEVEL_WARN);
return NULL;
@@ -233,6 +250,8 @@ String *Item_func_as_geojson::val_str_ascii(String *str)
DBUG_ASSERT(fixed == 1);
String arg_val;
String *swkb= args[0]->val_str(&arg_val);
+ uint max_dec= FLOATING_POINT_DECIMALS;
+ longlong options= 0;
Geometry_buffer buffer;
Geometry *geom= NULL;
const char *dummy;
@@ -242,12 +261,41 @@ String *Item_func_as_geojson::val_str_ascii(String *str)
!(geom= Geometry::construct(&buffer, swkb->ptr(), swkb->length())))))
return 0;
+ if (arg_count > 1)
+ {
+ max_dec= (uint) args[1]->val_int();
+ if (args[1]->null_value)
+ max_dec= FLOATING_POINT_DECIMALS;
+ if (arg_count > 2)
+ {
+ options= args[2]->val_int();
+ if (args[2]->null_value)
+ options= 0;
+ }
+ }
+
str->length(0);
str->set_charset(&my_charset_latin1);
- if ((null_value= geom->as_json(str, FLOATING_POINT_DECIMALS, &dummy)))
+
+ if (str->reserve(1, 512))
return 0;
+ str->qs_append('{');
+
+ if (options & 1)
+ {
+ if (geom->bbox_as_json(str) || str->append(", ", 2))
+ goto error;
+ }
+
+ if ((geom->as_json(str, max_dec, &dummy) || str->append("}", 1)))
+ goto error;
+
return str;
+
+error:
+ null_value= 1;
+ return 0;
}
diff --git a/sql/item_jsonfunc.cc b/sql/item_jsonfunc.cc
index 9e9b26e2119..bdfce15b137 100644
--- a/sql/item_jsonfunc.cc
+++ b/sql/item_jsonfunc.cc
@@ -587,24 +587,40 @@ void Item_func_json_unquote::fix_length_and_dec()
}
-String *Item_func_json_unquote::val_str(String *str)
+String *Item_func_json_unquote::read_json(json_engine_t *je)
{
String *js= args[0]->val_json(&tmp_s);
- json_engine_t je;
- int c_len;
if ((null_value= args[0]->null_value))
- return NULL;
+ return 0;
- json_scan_start(&je, js->charset(),(const uchar *) js->ptr(),
+ json_scan_start(je, js->charset(),(const uchar *) js->ptr(),
(const uchar *) js->ptr() + js->length());
- je.value_type= (enum json_value_types) -1; /* To report errors right. */
+ je->value_type= (enum json_value_types) -1; /* To report errors right. */
- if (json_read_value(&je))
+ if (json_read_value(je))
goto error;
- if (je.value_type != JSON_VALUE_STRING)
+ return js;
+
+error:
+ if (je->value_type == JSON_VALUE_STRING)
+ report_json_error(js, je, 0);
+ return js;
+}
+
+
+String *Item_func_json_unquote::val_str(String *str)
+{
+ json_engine_t je;
+ int c_len;
+ String *js;
+
+ if (!(js= read_json(&je)))
+ return NULL;
+
+ if (je.s.error || je.value_type != JSON_VALUE_STRING)
return js;
str->length(0);
@@ -621,13 +637,86 @@ String *Item_func_json_unquote::val_str(String *str)
return str;
error:
- if (je.value_type == JSON_VALUE_STRING)
- report_json_error(js, &je, 0);
- /* We just return the argument's value in the case of error. */
+ report_json_error(js, &je, 0);
return js;
}
+double Item_func_json_unquote::val_real()
+{
+ json_engine_t je;
+ double d= 0.0;
+ String *js;
+
+ if ((js= read_json(&je)) != NULL)
+ {
+ switch (je.value_type)
+ {
+ case JSON_VALUE_NUMBER:
+ {
+ char *end;
+ int err;
+ d= my_strntod(je.s.cs, (char *) je.value, je.value_len, &end, &err);
+ break;
+ }
+ case JSON_VALUE_TRUE:
+ d= 1.0;
+ break;
+ case JSON_VALUE_STRING:
+ {
+ char *end;
+ int err;
+ d= my_strntod(js->charset(), (char *) js->ptr(), js->length(),
+ &end, &err);
+ break;
+ }
+ default:
+ break;
+ };
+ }
+
+ return d;
+}
+
+
+longlong Item_func_json_unquote::val_int()
+{
+ json_engine_t je;
+ longlong i= 0;
+ String *js;
+
+ if ((js= read_json(&je)) != NULL)
+ {
+ switch (je.value_type)
+ {
+ case JSON_VALUE_NUMBER:
+ {
+ char *end;
+ int err;
+ i= my_strntoll(je.s.cs, (char *) je.value, je.value_len, 10,
+ &end, &err);
+ break;
+ }
+ case JSON_VALUE_TRUE:
+ i= 1;
+ break;
+ case JSON_VALUE_STRING:
+ {
+ char *end;
+ int err;
+ i= my_strntoll(js->charset(), (char *) js->ptr(), js->length(), 10,
+ &end, &err);
+ break;
+ }
+ default:
+ break;
+ };
+ }
+
+ return i;
+}
+
+
static int alloc_tmp_paths(THD *thd, uint n_paths,
json_path_with_flags **paths,String **tmp_paths)
{
@@ -1397,6 +1486,8 @@ void Item_func_json_array::fix_length_and_dec()
ulonglong char_length= 2;
uint n_arg;
+ result_limit= 0;
+
if (arg_count == 0)
{
collation.set(&my_charset_utf8_general_ci);
@@ -1413,7 +1504,6 @@ void Item_func_json_array::fix_length_and_dec()
fix_char_length_ulonglong(char_length);
tmp_val.set_charset(collation.collation);
- result_limit= 0;
}
@@ -2692,6 +2782,41 @@ void Item_func_json_keys::fix_length_and_dec()
}
+/*
+ That function is for Item_func_json_keys::val_str exclusively.
+ It utilizes the fact the resulting string is in specific format:
+ ["key1", "key2"...]
+*/
+static int check_key_in_list(String *res,
+ const uchar *key, int key_len)
+{
+ const uchar *c= (const uchar *) res->ptr() + 2; /* beginning '["' */
+ const uchar *end= (const uchar *) res->end() - 1; /* ending '"' */
+
+ while (c < end)
+ {
+ int n_char;
+ for (n_char=0; c[n_char] != '"' && n_char < key_len; n_char++)
+ {
+ if (c[n_char] != key[n_char])
+ break;
+ }
+ if (c[n_char] == '"')
+ {
+ if (n_char == key_len)
+ return 1;
+ }
+ else
+ {
+ while (c[n_char] != '"')
+ n_char++;
+ }
+ c+= n_char + 4; /* skip ', "' */
+ }
+ return 0;
+}
+
+
String *Item_func_json_keys::val_str(String *str)
{
json_engine_t je;
@@ -2748,6 +2873,7 @@ skip_search:
while (json_scan_next(&je) == 0 && je.state != JST_OBJ_END)
{
const uchar *key_start, *key_end;
+ int key_len;
switch (je.state)
{
@@ -2757,13 +2883,19 @@ skip_search:
{
key_end= je.s.c_str;
} while (json_read_keyname_chr(&je) == 0);
- if (je.s.error ||
- (n_keys > 0 && str->append(", ", 2)) ||
+ if (je.s.error)
+ goto err_return;
+ key_len= key_end - key_start;
+
+ if (!check_key_in_list(str, key_start, key_len))
+ {
+ if ((n_keys > 0 && str->append(", ", 2)) ||
str->append("\"", 1) ||
- append_simple(str, key_start, key_end - key_start) ||
+ append_simple(str, key_start, key_len) ||
str->append("\"", 1))
goto err_return;
- n_keys++;
+ n_keys++;
+ }
break;
case JST_OBJ_START:
case JST_ARRAY_START:
diff --git a/sql/item_jsonfunc.h b/sql/item_jsonfunc.h
index 4235bd3ea9f..abed19491e8 100644
--- a/sql/item_jsonfunc.h
+++ b/sql/item_jsonfunc.h
@@ -125,12 +125,14 @@ class Item_func_json_unquote: public Item_str_func
{
protected:
String tmp_s;
-
+ String *read_json(json_engine_t *je);
public:
Item_func_json_unquote(THD *thd, Item *s): Item_str_func(thd, s) {}
const char *func_name() const { return "json_unquote"; }
void fix_length_and_dec();
String *val_str(String *);
+ double val_real();
+ longlong val_int();
Item *get_copy(THD *thd, MEM_ROOT *mem_root)
{ return get_item_copy<Item_func_json_unquote>(thd, mem_root, this); }
};
diff --git a/sql/share/CMakeLists.txt b/sql/share/CMakeLists.txt
index e0d5fb6c1a7..1461c57c5c3 100644
--- a/sql/share/CMakeLists.txt
+++ b/sql/share/CMakeLists.txt
@@ -38,6 +38,7 @@ russian
czech
french
serbian
+hindi
)
SET(files
diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt
index cfc544cc1bd..235ae5cd7c5 100644
--- a/sql/share/errmsg-utf8.txt
+++ b/sql/share/errmsg-utf8.txt
@@ -1,4 +1,4 @@
-languages czech=cze latin2, danish=dan latin1, dutch=nla latin1, english=eng latin1, estonian=est latin7, french=fre latin1, german=ger latin1, greek=greek greek, hungarian=hun latin2, italian=ita latin1, japanese=jpn ujis, korean=kor euckr, norwegian-ny=norwegian-ny latin1, norwegian=nor latin1, polish=pol latin2, portuguese=por latin1, romanian=rum latin2, russian=rus koi8r, serbian=serbian cp1250, slovak=slo latin2, spanish=spa latin1, swedish=swe latin1, ukrainian=ukr koi8u, bulgarian=bgn cp1251;
+languages czech=cze latin2, danish=dan latin1, dutch=nla latin1, english=eng latin1, estonian=est latin7, french=fre latin1, german=ger latin1, greek=greek greek, hungarian=hun latin2, italian=ita latin1, japanese=jpn ujis, korean=kor euckr, norwegian-ny=norwegian-ny latin1, norwegian=nor latin1, polish=pol latin2, portuguese=por latin1, romanian=rum latin2, russian=rus koi8r, serbian=serbian cp1250, slovak=slo latin2, spanish=spa latin1, swedish=swe latin1, ukrainian=ukr koi8u, bulgarian=bgn cp1251, hindi=hindi utf8;
default-language eng
@@ -17,6 +17,7 @@ ER_NO
fre "NON"
ger "Nein"
greek "ΟΧΙ"
+ hindi "नहीं"
hun "NEM"
kor "아니오"
nor "NEI"
@@ -37,6 +38,7 @@ ER_YES
fre "OUI"
ger "Ja"
greek "ÎΑΙ"
+ hindi "हाà¤"
hun "IGEN"
ita "SI"
kor "예"
@@ -59,6 +61,7 @@ ER_CANT_CREATE_FILE
fre "Ne peut créer le fichier '%-.200s' (Errcode: %M)"
ger "Kann Datei '%-.200s' nicht erzeugen (Fehler: %M)"
greek "ΑδÏνατη η δημιουÏγία του αÏχείου '%-.200s' (κωδικός λάθους: %M)"
+ hindi "फ़ाइल '%-.200s' नहीं बन सका (errno: %M)"
hun "A '%-.200s' file nem hozhato letre (hibakod: %M)"
ita "Impossibile creare il file '%-.200s' (errno: %M)"
jpn "ファイル '%-.200s' を作æˆã§ãã¾ã›ã‚“。(エラー番å·: %M)"
@@ -84,6 +87,7 @@ ER_CANT_CREATE_TABLE
fre "Ne peut créer la table %`s.%`s (Errcode: %M)"
ger "Kann Tabelle %`s.%`s nicht erzeugen (Fehler: %M)"
greek "ΑδÏνατη η δημιουÏγία του πίνακα %`s.%`s (κωδικός λάθους: %M)"
+ hindi "टेबल '%`s.%`s' नहीं बन सका (errno: %M)"
hun "A %`s.%`s tabla nem hozhato letre (hibakod: %M)"
ita "Impossibile creare la tabella %`s.%`s (errno: %M)"
jpn "%`s.%`s テーブルãŒä½œã‚Œã¾ã›ã‚“.(errno: %M)"
@@ -108,6 +112,7 @@ ER_CANT_CREATE_DB
fre "Ne peut créer la base '%-.192s' (Erreur %M)"
ger "Kann Datenbank '%-.192s' nicht erzeugen (Fehler: %M)"
greek "ΑδÏνατη η δημιουÏγία της βάσης δεδομένων '%-.192s' (κωδικός λάθους: %M)"
+ hindi "डेटाबेस '%-.192s' नहीं बन सका (errno: %M)"
hun "Az '%-.192s' adatbazis nem hozhato letre (hibakod: %M)"
ita "Impossibile creare il database '%-.192s' (errno: %M)"
jpn "データベース '%-.192s' を作æˆã§ãã¾ã›ã‚“。(エラー番å·: %M)"
@@ -132,6 +137,7 @@ ER_DB_CREATE_EXISTS
fre "Ne peut créer la base '%-.192s'; elle existe déjà"
ger "Kann Datenbank '%-.192s' nicht erzeugen. Datenbank existiert bereits"
greek "ΑδÏνατη η δημιουÏγία της βάσης δεδομένων '%-.192s'; Η βάση δεδομένων υπάÏχει ήδη"
+ hindi "डेटाबेस '%-.192s' नहीं बन सकता है; यह डेटाबेस पहले से ही मौजूद है"
hun "Az '%-.192s' adatbazis nem hozhato letre Az adatbazis mar letezik"
ita "Impossibile creare il database '%-.192s'; il database esiste"
jpn "データベース '%-.192s' を作æˆã§ãã¾ã›ã‚“。データベースã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
@@ -156,6 +162,7 @@ ER_DB_DROP_EXISTS
fre "Ne peut effacer la base '%-.192s'; elle n'existe pas"
ger "Kann Datenbank '%-.192s' nicht löschen; Datenbank nicht vorhanden"
greek "ΑδÏνατη η διαγÏαφή της βάσης δεδομένων '%-.192s'. Η βάση δεδομένων δεν υπάÏχει"
+ hindi "डेटाबेस '%-.192s' डà¥à¤°à¥‰à¤ª नहीं कर सकते हैं; यह डेटाबेस मौजूद नहीं है"
hun "A(z) '%-.192s' adatbazis nem szuntetheto meg. Az adatbazis nem letezik"
ita "Impossibile cancellare '%-.192s'; il database non esiste"
jpn "データベース '%-.192s' を削除ã§ãã¾ã›ã‚“。データベースã¯å­˜åœ¨ã—ã¾ã›ã‚“。"
@@ -180,6 +187,7 @@ ER_DB_DROP_DELETE
fre "Ne peut effacer la base '%-.192s' (erreur %M)"
ger "Fehler beim Löschen der Datenbank ('%-.192s' kann nicht gelöscht werden, Fehler: %M)"
greek "ΠαÏουσιάστηκε Ï€Ïόβλημα κατά τη διαγÏαφή της βάσης δεδομένων (αδÏνατη η διαγÏαφή '%-.192s', κωδικός λάθους: %M)"
+ hindi "डेटाबेस डà¥à¤°à¥‰à¤ª में तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ ('%-.192s' हटा नहीं सकते, errno: %M)"
hun "Adatbazis megszuntetesi hiba ('%-.192s' nem torolheto, hibakod: %M)"
ita "Errore durante la cancellazione del database (impossibile cancellare '%-.192s', errno: %M)"
jpn "データベース削除エラー ('%-.192s' を削除ã§ãã¾ã›ã‚“。エラー番å·: %M)"
@@ -204,6 +212,7 @@ ER_DB_DROP_RMDIR
fre "Erreur en effaçant la base (rmdir '%-.192s', erreur %M)"
ger "Fehler beim Löschen der Datenbank (Verzeichnis '%-.192s' kann nicht gelöscht werden, Fehler: %M)"
greek "ΠαÏουσιάστηκε Ï€Ïόβλημα κατά τη διαγÏαφή της βάσης δεδομένων (αδÏνατη η διαγÏαφή του φακέλλου '%-.192s', κωδικός λάθους: %M)"
+ hindi "डेटाबेस डà¥à¤°à¥‰à¤ª में तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ ('%-.192s' rmdir नहीं कर सकते, errno: %M)"
hun "Adatbazis megszuntetesi hiba ('%-.192s' nem szuntetheto meg, hibakod: %M)"
ita "Errore durante la cancellazione del database (impossibile rmdir '%-.192s', errno: %M)"
jpn "データベース削除エラー (ディレクトリ '%-.192s' を削除ã§ãã¾ã›ã‚“。エラー番å·: %M)"
@@ -228,6 +237,7 @@ ER_CANT_DELETE_FILE
fre "Erreur en effaçant '%-.192s' (Errcode: %M)"
ger "Fehler beim Löschen von '%-.192s' (Fehler: %M)"
greek "ΠαÏουσιάστηκε Ï€Ïόβλημα κατά τη διαγÏαφή '%-.192s' (κωδικός λάθους: %M)"
+ hindi "'%-.192s' के हटाने पर तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ (errno: %M)"
hun "Torlesi hiba: '%-.192s' (hibakod: %M)"
ita "Errore durante la cancellazione di '%-.192s' (errno: %M)"
jpn "ファイル '%-.192s' ã®å‰Šé™¤ã‚¨ãƒ©ãƒ¼ (エラー番å·: %M)"
@@ -252,6 +262,7 @@ ER_CANT_FIND_SYSTEM_REC
fre "Ne peut lire un enregistrement de la table 'system'"
ger "Datensatz in der Systemtabelle nicht lesbar"
greek "ΑδÏνατη η ανάγνωση εγγÏαφής από πίνακα του συστήματος"
+ hindi "सिसà¥à¤Ÿà¤® टेबल से रिकॉरà¥à¤¡ नहीं पढ़ सके"
hun "Nem olvashato rekord a rendszertablaban"
ita "Impossibile leggere il record dalla tabella di sistema"
jpn "システム表ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“。"
@@ -276,6 +287,7 @@ ER_CANT_GET_STAT
fre "Ne peut obtenir le status de '%-.200s' (Errcode: %M)"
ger "Kann Status von '%-.200s' nicht ermitteln (Fehler: %M)"
greek "ΑδÏνατη η λήψη πληÏοφοÏιών για την κατάσταση του '%-.200s' (κωδικός λάθους: %M)"
+ hindi "'%-.200s' की अवसà¥à¤¥à¤¾ पà¥à¤°à¤¾à¤ªà¥à¤¤ नहीं कर सके (errno: %M)"
hun "A(z) '%-.200s' statusza nem allapithato meg (hibakod: %M)"
ita "Impossibile leggere lo stato di '%-.200s' (errno: %M)"
jpn "'%-.200s' ã®çŠ¶æ…‹ã‚’å–å¾—ã§ãã¾ã›ã‚“。(エラー番å·: %M)"
@@ -300,6 +312,7 @@ ER_CANT_GET_WD
fre "Ne peut obtenir le répertoire de travail (Errcode: %M)"
ger "Kann Arbeitsverzeichnis nicht ermitteln (Fehler: %M)"
greek "Ο φάκελλος εÏγασίας δεν βÏέθηκε (κωδικός λάθους: %M)"
+ hindi "Working डाइरेकà¥à¤Ÿà¤°à¥€ पà¥à¤°à¤¾à¤ªà¥à¤¤ नहीं कर सके (errno: %M)"
hun "A munkakonyvtar nem allapithato meg (hibakod: %M)"
ita "Impossibile leggere la directory di lavoro (errno: %M)"
jpn "作業ディレクトリをå–å¾—ã§ãã¾ã›ã‚“。(エラー番å·: %M)"
@@ -324,6 +337,7 @@ ER_CANT_LOCK
fre "Ne peut verrouiller le fichier (Errcode: %M)"
ger "Datei kann nicht gesperrt werden (Fehler: %M)"
greek "Το αÏχείο δεν μποÏεί να κλειδωθεί (κωδικός λάθους: %M)"
+ hindi "फ़ाइल लॉक नहीं कर सके (errno: %M)"
hun "A file nem zarolhato. (hibakod: %M)"
ita "Impossibile il locking il file (errno: %M)"
jpn "ファイルをロックã§ãã¾ã›ã‚“。(エラー番å·: %M)"
@@ -348,6 +362,7 @@ ER_CANT_OPEN_FILE
fre "Ne peut ouvrir le fichier: '%-.200s' (Errcode: %M)"
ger "Kann Datei '%-.200s' nicht öffnen (Fehler: %M)"
greek "Δεν είναι δυνατό να ανοιχτεί το αÏχείο: '%-.200s' (κωδικός λάθους: %M)"
+ hindi "फ़ाइल '%-.200s' नहीं खोल सकते (errno: %M)"
hun "A '%-.200s' file nem nyithato meg (hibakod: %M)"
ita "Impossibile aprire il file: '%-.200s' (errno: %M)"
jpn "ファイル '%-.200s' をオープンã§ãã¾ã›ã‚“。(エラー番å·: %M)"
@@ -372,6 +387,7 @@ ER_FILE_NOT_FOUND
fre "Ne peut trouver le fichier: '%-.200s' (Errcode: %M)"
ger "Kann Datei '%-.200s' nicht finden (Fehler: %M)"
greek "Δεν βÏέθηκε το αÏχείο: '%-.200s' (κωδικός λάθους: %M)"
+ hindi "फ़ाइल '%-.200s' नहीं मिला (errno: %M)"
hun "A(z) '%-.200s' file nem talalhato (hibakod: %M)"
ita "Impossibile trovare il file: '%-.200s' (errno: %M)"
jpn "ファイル '%-.200s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。(エラー番å·: %M)"
@@ -396,6 +412,7 @@ ER_CANT_READ_DIR
fre "Ne peut lire le répertoire de '%-.192s' (Errcode: %M)"
ger "Verzeichnis von '%-.192s' nicht lesbar (Fehler: %M)"
greek "Δεν είναι δυνατό να διαβαστεί ο φάκελλος του '%-.192s' (κωδικός λάθους: %M)"
+ hindi "'%-.192s' की डायरेकà¥à¤Ÿà¤°à¥€ नहीं पढ़ सके (errno: %M)"
hun "A(z) '%-.192s' konyvtar nem olvashato. (hibakod: %M)"
ita "Impossibile leggere la directory di '%-.192s' (errno: %M)"
jpn "ディレクトリ '%-.192s' を読ã¿è¾¼ã‚ã¾ã›ã‚“。(エラー番å·: %M)"
@@ -420,6 +437,7 @@ ER_CANT_SET_WD
fre "Ne peut changer le répertoire pour '%-.192s' (Errcode: %M)"
ger "Kann nicht in das Verzeichnis '%-.192s' wechseln (Fehler: %M)"
greek "ΑδÏνατη η αλλαγή του Ï„Ïέχοντος καταλόγου σε '%-.192s' (κωδικός λάθους: %M)"
+ hindi "'%-.192s' डायरेकà¥à¤Ÿà¤°à¥€ में नहीं बदल सके (errno: %M)"
hun "Konyvtarvaltas nem lehetseges a(z) '%-.192s'-ba. (hibakod: %M)"
ita "Impossibile cambiare la directory in '%-.192s' (errno: %M)"
jpn "ディレクトリ '%-.192s' ã«ç§»å‹•ã§ãã¾ã›ã‚“。(エラー番å·: %M)"
@@ -444,6 +462,7 @@ ER_CHECKREAD
fre "Enregistrement modifié depuis sa dernière lecture dans la table '%-.192s'"
ger "Datensatz hat sich seit dem letzten Zugriff auf Tabelle '%-.192s' geändert"
greek "Η εγγÏαφή έχει αλλάξει από την τελευταία φοÏά που ανασÏÏθηκε από τον πίνακα '%-.192s'"
+ hindi "रिकॉरà¥à¤¡ टेबल '%-.192s' पिछली बार पà¥à¥‡ जाने के बाद से बदल गया है"
hun "A(z) '%-.192s' tablaban talalhato rekord megvaltozott az utolso olvasas ota"
ita "Il record e` cambiato dall'ultima lettura della tabella '%-.192s'"
jpn "表 '%-.192s' ã®æœ€å¾Œã®èª­ã¿è¾¼ã¿æ™‚点ã‹ã‚‰ã€ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒå¤‰åŒ–ã—ã¾ã—ãŸã€‚"
@@ -468,6 +487,7 @@ ER_DISK_FULL
fre "Disque plein (%s). J'attend que quelqu'un libère de l'espace... (Errcode: %M)"
ger "Festplatte voll (%s). Warte, bis jemand Platz schafft ... (Fehler: %M)"
greek "Δεν υπάÏχει χώÏος στο δίσκο (%s). ΠαÏακαλώ, πεÏιμένετε να ελευθεÏωθεί χώÏος... (κωδικός λάθους: %M)"
+ hindi "डिसà¥à¤• पूरी तरह से भरा हà¥à¤† है (%s); कà¥à¤› सà¥à¤¥à¤¾à¤¨ खाली करें (errno: %M)"
hun "A lemez megtelt (%s). (hibakod: %M)"
ita "Disco pieno (%s). In attesa che qualcuno liberi un po' di spazio... (errno: %M)"
jpn "ディスク領域ä¸è¶³ã§ã™(%s)。(エラー番å·: %M)"
@@ -492,6 +512,7 @@ ER_DUP_KEY 23000
fre "Ecriture impossible, doublon dans une clé de la table '%-.192s'"
ger "Kann nicht speichern, Grund: doppelter Schlüssel in Tabelle '%-.192s'"
greek "Δεν είναι δυνατή η καταχώÏηση, η τιμή υπάÏχει ήδη στον πίνακα '%-.192s'"
+ hindi "टेबल '%-.192s' में DUPLICATE KEY मौजूद होने के कारण नहीं लिख सके"
hun "Irasi hiba, duplikalt kulcs a '%-.192s' tablaban"
ita "Scrittura impossibile: chiave duplicata nella tabella '%-.192s'"
jpn "書ãè¾¼ã‚ã¾ã›ã‚“。表 '%-.192s' ã«é‡è¤‡ã™ã‚‹ã‚­ãƒ¼ãŒã‚りã¾ã™ã€‚"
@@ -516,6 +537,7 @@ ER_ERROR_ON_CLOSE
fre "Erreur a la fermeture de '%-.192s' (Errcode: %M)"
ger "Fehler beim Schließen von '%-.192s' (Fehler: %M)"
greek "ΠαÏουσιάστηκε Ï€Ïόβλημα κλείνοντας το '%-.192s' (κωδικός λάθους: %M)"
+ hindi "'%-.192s' के बंद पर तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ (errno: %M)"
hun "Hiba a(z) '%-.192s' zarasakor. (hibakod: %M)"
ita "Errore durante la chiusura di '%-.192s' (errno: %M)"
jpn "'%-.192s' ã®ã‚¯ãƒ­ãƒ¼ã‚ºæ™‚エラー (エラー番å·: %M)"
@@ -540,6 +562,7 @@ ER_ERROR_ON_READ
fre "Erreur en lecture du fichier '%-.200s' (Errcode: %M)"
ger "Fehler beim Lesen der Datei '%-.200s' (Fehler: %M)"
greek "ΠÏόβλημα κατά την ανάγνωση του αÏχείου '%-.200s' (κωδικός λάθους: %M)"
+ hindi "फ़ाइल '%-.200s' पढ़ने में तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ (errno: %M)"
hun "Hiba a '%-.200s'file olvasasakor. (hibakod: %M)"
ita "Errore durante la lettura del file '%-.200s' (errno: %M)"
jpn "ファイル '%-.200s' ã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ (エラー番å·: %M)"
@@ -564,6 +587,7 @@ ER_ERROR_ON_RENAME
fre "Erreur en renommant '%-.210s' en '%-.210s' (Errcode: %M)"
ger "Fehler beim Umbenennen von '%-.210s' in '%-.210s' (Fehler: %M)"
greek "ΠÏόβλημα κατά την μετονομασία του αÏχείου '%-.210s' to '%-.210s' (κωδικός λάθους: %M)"
+ hindi "'%-.210s' का नाम '%-.210s' बदलने पर तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ (errno: %M)"
hun "Hiba a '%-.210s' file atnevezesekor '%-.210s'. (hibakod: %M)"
ita "Errore durante la rinominazione da '%-.210s' a '%-.210s' (errno: %M)"
jpn "'%-.210s' ã®åå‰ã‚’ '%-.210s' ã«å¤‰æ›´ã§ãã¾ã›ã‚“ (エラー番å·: %M)"
@@ -588,6 +612,7 @@ ER_ERROR_ON_WRITE
fre "Erreur d'écriture du fichier '%-.200s' (Errcode: %M)"
ger "Fehler beim Speichern der Datei '%-.200s' (Fehler: %M)"
greek "ΠÏόβλημα κατά την αποθήκευση του αÏχείου '%-.200s' (κωδικός λάθους: %M)"
+ hindi "फ़ाइल '%-.200s' लिखने में तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ (errno: %M)"
hun "Hiba a '%-.200s' file irasakor. (hibakod: %M)"
ita "Errore durante la scrittura del file '%-.200s' (errno: %M)"
jpn "ファイル '%-.200s' ã®æ›¸ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼ (エラー番å·: %M)"
@@ -612,6 +637,7 @@ ER_FILE_USED
fre "'%-.192s' est verrouillé contre les modifications"
ger "'%-.192s' ist für Änderungen gesperrt"
greek "'%-.192s' δεν επιτÏέπονται αλλαγές"
+ hindi "फ़ाइल '%-.192s' में कोई बदलाव नहीं कर सकते"
hun "'%-.192s' a valtoztatas ellen zarolva"
ita "'%-.192s' e` soggetto a lock contro i cambiamenti"
jpn "'%-.192s' ã¯ãƒ­ãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚"
@@ -636,6 +662,7 @@ ER_FILSORT_ABORT
fre "Tri alphabétique abandonné"
ger "Sortiervorgang abgebrochen"
greek "Η διαδικασία ταξινόμισης ακυÏώθηκε"
+ hindi "SORT निरसà¥à¤¤"
hun "Sikertelen rendezes"
ita "Operazione di ordinamento abbandonata"
jpn "ソート処ç†ã‚’中断ã—ã¾ã—ãŸã€‚"
@@ -660,6 +687,7 @@ ER_FORM_NOT_FOUND
fre "La vue (View) '%-.192s' n'existe pas pour '%-.192s'"
ger "View '%-.192s' existiert für '%-.192s' nicht"
greek "Το View '%-.192s' δεν υπάÏχει για '%-.192s'"
+ hindi "VIEW '%-.192s', '%-.192s' के लिठमौजूद नहीं है"
hun "A(z) '%-.192s' nezet nem letezik a(z) '%-.192s'-hoz"
ita "La view '%-.192s' non esiste per '%-.192s'"
jpn "ビュー '%-.192s' 㯠'%-.192s' ã«å­˜åœ¨ã—ã¾ã›ã‚“。"
@@ -681,6 +709,7 @@ ER_GET_ERRNO
fre "Reçu l'erreur %M du handler de la table %s"
ger "Fehler %M von Speicher-Engine %s"
greek "Ελήφθη μήνυμα λάθους %M από τον χειÏιστή πίνακα (table handler) %s"
+ hindi "%M तà¥à¤°à¥à¤Ÿà¤¿ %s सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन से"
ita "Rilevato l'errore %M dal gestore delle tabelle %s"
nor "Mottok feil %M fra tabell håndterer %s"
norwegian-ny "Mottok feil %M fra tabell handterar %s"
@@ -694,6 +723,7 @@ ER_GET_ERRNO
ER_ILLEGAL_HA
eng "Storage engine %s of the table %`s.%`s doesn't have this option"
ger "Diese Option gibt es nicht in Speicher-Engine %s für %`s.%`s"
+ hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s में यह विकलà¥à¤ª उपलबà¥à¤§ नहीं है (टेबल: %`s.%`s)"
rus "Обработчик %s таблицы %`s.%`s не поддерживает Ñту возможноÑть"
ukr "ДеÑкриптор %s таблиці %`s.%`s не має цієї влаÑтивоÑті"
ER_KEY_NOT_FOUND
@@ -705,6 +735,7 @@ ER_KEY_NOT_FOUND
fre "Ne peut trouver l'enregistrement dans '%-.192s'"
ger "Kann Datensatz in '%-.192s' nicht finden"
greek "ΑδÏνατη η ανεÏÏεση εγγÏαφής στο '%-.192s'"
+ hindi "'%-.192s' में रिकॉरà¥à¤¡ नहीं मिला"
hun "Nem talalhato a rekord '%-.192s'-ben"
ita "Impossibile trovare il record in '%-.192s'"
jpn "'%-.192s' ã«ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
@@ -729,6 +760,7 @@ ER_NOT_FORM_FILE
fre "Information erronnée dans le fichier: '%-.200s'"
ger "Falsche Information in Datei '%-.200s'"
greek "Λάθος πληÏοφοÏίες στο αÏχείο: '%-.200s'"
+ hindi "फ़ाइल '%-.200s' में गलत जानकारी है"
hun "Ervenytelen info a file-ban: '%-.200s'"
ita "Informazione errata nel file: '%-.200s'"
jpn "ファイル '%-.200s' å†…ã®æƒ…å ±ãŒä¸æ­£ã§ã™ã€‚"
@@ -753,6 +785,7 @@ ER_NOT_KEYFILE
fre "Index corrompu dans la table: '%-.200s'; essayez de le réparer"
ger "Fehlerhafte Index-Datei für Tabelle '%-.200s'; versuche zu reparieren"
greek "Λάθος αÏχείο ταξινόμισης (key file) για τον πίνακα: '%-.200s'; ΠαÏακαλώ, διοÏθώστε το!"
+ hindi "टेबल '%-.200s' का इंडेकà¥à¤¸ CORRUPT हो गया है; इसे REPAIR करने की कोशिश करें"
hun "Ervenytelen kulcsfile a tablahoz: '%-.200s'; probalja kijavitani!"
ita "File chiave errato per la tabella : '%-.200s'; prova a riparalo"
jpn "表 '%-.200s' ã®ç´¢å¼•ファイル(key file)ã®å†…容ãŒä¸æ­£ã§ã™ã€‚修復を試行ã—ã¦ãã ã•ã„。"
@@ -777,6 +810,7 @@ ER_OLD_KEYFILE
fre "Vieux fichier d'index pour la table '%-.192s'; réparez le!"
ger "Alte Index-Datei für Tabelle '%-.192s'. Bitte reparieren"
greek "Παλαιό αÏχείο ταξινόμισης (key file) για τον πίνακα '%-.192s'; ΠαÏακαλώ, διοÏθώστε το!"
+ hindi "टेबल '%-.192s' के लिठपà¥à¤°à¤¾à¤¨à¥€ KEY फ़ाइल; इसे REPAIR करने की कोशिश करें"
hun "Regi kulcsfile a '%-.192s'tablahoz; probalja kijavitani!"
ita "File chiave vecchio per la tabella '%-.192s'; riparalo!"
jpn "表 '%-.192s' ã®ç´¢å¼•ファイル(key file)ã¯å¤ã„å½¢å¼ã§ã™ã€‚修復ã—ã¦ãã ã•ã„。"
@@ -801,6 +835,7 @@ ER_OPEN_AS_READONLY
fre "'%-.192s' est en lecture seulement"
ger "Tabelle '%-.192s' ist nur lesbar"
greek "'%-.192s' επιτÏέπεται μόνο η ανάγνωση"
+ hindi "टेबल '%-.192s' READ-ONLY है"
hun "'%-.192s' irasvedett"
ita "'%-.192s' e` di sola lettura"
jpn "表 '%-.192s' ã¯èª­ã¿è¾¼ã¿å°‚用ã§ã™ã€‚"
@@ -897,6 +932,7 @@ ER_CON_COUNT_ERROR 08004
fre "Trop de connexions"
ger "Zu viele Verbindungen"
greek "ΥπάÏχουν πολλές συνδέσεις..."
+ hindi "अतà¥à¤¯à¤§à¤¿à¤• कनेकà¥à¤¶à¤¨"
hun "Tul sok kapcsolat"
ita "Troppe connessioni"
jpn "接続ãŒå¤šã™ãŽã¾ã™ã€‚"
@@ -945,6 +981,7 @@ ER_BAD_HOST_ERROR 08S01
fre "Ne peut obtenir de hostname pour votre adresse"
ger "Kann Hostnamen für diese Adresse nicht erhalten"
greek "Δεν έγινε γνωστό το hostname για την address σας"
+ hindi "आपके I.P. à¤à¤¡à¥à¤°à¥‡à¤¸ के लिठहोसà¥à¤Ÿà¤¨à¥‡à¤® पà¥à¤°à¤¾à¤ªà¥à¤¤ करने में विफल रहे"
hun "A gepnev nem allapithato meg a cimbol"
ita "Impossibile risalire al nome dell'host dall'indirizzo (risoluzione inversa)"
jpn "IPアドレスã‹ã‚‰ãƒ›ã‚¹ãƒˆåを解決ã§ãã¾ã›ã‚“。"
@@ -969,6 +1006,7 @@ ER_HANDSHAKE_ERROR 08S01
fre "Mauvais 'handshake'"
ger "Ungültiger Handshake"
greek "Η αναγνώÏιση (handshake) δεν έγινε σωστά"
+ hindi "संपरà¥à¤• सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ करते समय तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ (BAD HANDSHAKE)"
hun "A kapcsolatfelvetel nem sikerult (Bad handshake)"
ita "Negoziazione impossibile"
jpn "ãƒãƒ³ãƒ‰ã‚·ã‚§ã‚¤ã‚¯ã‚¨ãƒ©ãƒ¼"
@@ -994,6 +1032,7 @@ ER_DBACCESS_DENIED_ERROR 42000
ger "Benutzer '%s'@'%s' hat keine Zugriffsberechtigung für Datenbank '%-.192s'"
greek "Δεν επιτέÏεται η Ï€Ïόσβαση στο χÏήστη: '%s'@'%s' στη βάση δεδομένων '%-.192s'"
hun "A(z) '%s'@'%s' felhasznalo szamara tiltott eleres az '%-.192s' adabazishoz"
+ hindi "यूज़र '%s'@'%s' को डेटाबेस '%-.192s' की अनà¥à¤®à¤¤à¤¿ नहीं है"
ita "Accesso non consentito per l'utente: '%s'@'%s' al database '%-.192s'"
jpn "ユーザー '%s'@'%s' ã® '%-.192s' データベースã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ã¾ã™"
kor "'%s'@'%s' 사용ìžëŠ” '%-.192s' ë°ì´íƒ€ë² ì´ìŠ¤ì— ì ‘ê·¼ì´ ê±°ë¶€ ë˜ì—ˆìŠµë‹ˆë‹¤."
@@ -1017,6 +1056,7 @@ ER_ACCESS_DENIED_ERROR 28000
fre "Accès refusé pour l'utilisateur: '%s'@'%s' (mot de passe: %s)"
ger "Benutzer '%s'@'%s' hat keine Zugriffsberechtigung (verwendetes Passwort: %s)"
greek "Δεν επιτέÏεται η Ï€Ïόσβαση στο χÏήστη: '%s'@'%s' (χÏήση password: %s)"
+ hindi "यूज़र '%s'@'%s' को अनà¥à¤®à¤¤à¤¿ नहीं है (पासवरà¥à¤¡ का उपयोग: %s)"
hun "A(z) '%s'@'%s' felhasznalo szamara tiltott eleres. (Hasznalja a jelszot: %s)"
ita "Accesso non consentito per l'utente: '%s'@'%s' (Password: %s)"
jpn "ユーザー '%s'@'%s' ã‚’æ‹’å¦ã—ã¾ã™.uUsing password: %s)"
@@ -1040,6 +1080,7 @@ ER_NO_DB_ERROR 3D000
fre "Aucune base n'a été sélectionnée"
ger "Keine Datenbank ausgewählt"
greek "Δεν επιλέχθηκε βάση δεδομένων"
+ hindi "किसी भी डेटाबेस का चयन नहीं किया गया है"
hun "Nincs kivalasztott adatbazis"
ita "Nessun database selezionato"
jpn "データベースãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。"
@@ -1064,6 +1105,7 @@ ER_UNKNOWN_COM_ERROR 08S01
fre "Commande inconnue"
ger "Unbekannter Befehl"
greek "Αγνωστη εντολή"
+ hindi "अजà¥à¤žà¤¾à¤¤ आदेश"
hun "Ervenytelen parancs"
ita "Comando sconosciuto"
jpn "䏿˜Žãªã‚³ãƒžãƒ³ãƒ‰ã§ã™ã€‚"
@@ -1088,6 +1130,7 @@ ER_BAD_NULL_ERROR 23000
fre "Le champ '%-.192s' ne peut être vide (null)"
ger "Feld '%-.192s' darf nicht NULL sein"
greek "Το πεδίο '%-.192s' δεν μποÏεί να είναι κενό (null)"
+ hindi "काà¤à¤²à¤® '%-.192s' NULL नहीं हो सकता"
hun "A(z) '%-.192s' oszlop erteke nem lehet nulla"
ita "La colonna '%-.192s' non puo` essere nulla"
jpn "列 '%-.192s' 㯠null ã«ã§ãã¾ã›ã‚“。"
@@ -1112,6 +1155,7 @@ ER_BAD_DB_ERROR 42000
fre "Base '%-.192s' inconnue"
ger "Unbekannte Datenbank '%-.192s'"
greek "Αγνωστη βάση δεδομένων '%-.192s'"
+ hindi "अजà¥à¤žà¤¾à¤¤ डाटाबेस '%-.192s'"
hun "Ervenytelen adatbazis: '%-.192s'"
ita "Database '%-.192s' sconosciuto"
jpn "'%-.192s' ã¯ä¸æ˜Žãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã§ã™ã€‚"
@@ -1136,6 +1180,7 @@ ER_TABLE_EXISTS_ERROR 42S01
fre "La table '%-.192s' existe déjà"
ger "Tabelle '%-.192s' bereits vorhanden"
greek "Ο πίνακας '%-.192s' υπάÏχει ήδη"
+ hindi "टेबल '%-.192s' पहले से ही मौजूद है"
hun "A(z) '%-.192s' tabla mar letezik"
ita "La tabella '%-.192s' esiste gia`"
jpn "表 '%-.192s' ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
@@ -1160,6 +1205,7 @@ ER_BAD_TABLE_ERROR 42S02
fre "Table '%-.100s' inconnue"
ger "Unbekannte Tabelle '%-.100s'"
greek "Αγνωστος πίνακας '%-.100s'"
+ hindi "अजà¥à¤žà¤¾à¤¤ टेबल '%-.100s'"
hun "Ervenytelen tabla: '%-.100s'"
ita "Tabella '%-.100s' sconosciuta"
jpn "'%-.100s' ã¯ä¸æ˜Žãªè¡¨ã§ã™ã€‚"
@@ -1184,6 +1230,7 @@ ER_NON_UNIQ_ERROR 23000
fre "Champ: '%-.192s' dans %-.192s est ambigu"
ger "Feld '%-.192s' in %-.192s ist nicht eindeutig"
greek "Το πεδίο: '%-.192s' σε %-.192s δεν έχει καθοÏιστεί"
+ hindi "काà¤à¤²à¤® '%-.192s' असà¥à¤ªà¤·à¥à¤Ÿ है (टेबल: %-.192s)"
hun "A(z) '%-.192s' oszlop %-.192s-ben ketertelmu"
ita "Colonna: '%-.192s' di %-.192s e` ambigua"
jpn "列 '%-.192s' 㯠%-.192s å†…ã§æ›–昧ã§ã™ã€‚"
@@ -1208,6 +1255,7 @@ ER_SERVER_SHUTDOWN 08S01
fre "Arrêt du serveur en cours"
ger "Der Server wird heruntergefahren"
greek "ΕναÏξη διαδικασίας αποσÏνδεσης του εξυπηÏετητή (server shutdown)"
+ hindi "सरà¥à¤µà¤° बंद हो रहा है"
hun "A szerver leallitasa folyamatban"
ita "Shutdown del server in corso"
jpn "サーãƒãƒ¼ã‚’シャットダウン中ã§ã™ã€‚"
@@ -1232,6 +1280,7 @@ ER_BAD_FIELD_ERROR 42S22 S0022
fre "Champ '%-.192s' inconnu dans %-.192s"
ger "Unbekanntes Tabellenfeld '%-.192s' in %-.192s"
greek "Αγνωστο πεδίο '%-.192s' σε '%-.192s'"
+ hindi "अजà¥à¤žà¤¾à¤¤ काà¤à¤²à¤® '%-.192s'(टेबल: '%-.192s')"
hun "A(z) '%-.192s' oszlop ervenytelen '%-.192s'-ben"
ita "Colonna sconosciuta '%-.192s' in '%-.192s'"
jpn "列 '%-.192s' 㯠'%-.192s' ã«ã¯ã‚りã¾ã›ã‚“。"
@@ -1256,6 +1305,7 @@ ER_WRONG_FIELD_WITH_GROUP 42000 S1009
fre "'%-.192s' n'est pas dans 'group by'"
ger "'%-.192s' ist nicht in GROUP BY vorhanden"
greek "ΧÏησιμοποιήθηκε '%-.192s' που δεν υπήÏχε στο group by"
+ hindi "'%-.192s' GROUP BY में नहीं है"
hun "Used '%-.192s' with wasn't in group by"
ita "Usato '%-.192s' che non e` nel GROUP BY"
jpn "'%-.192s' ã¯GROUP BYå¥ã§æŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。"
@@ -1280,6 +1330,7 @@ ER_WRONG_GROUP_FIELD 42000 S1009
fre "Ne peut regrouper '%-.192s'"
ger "Gruppierung über '%-.192s' nicht möglich"
greek "ΑδÏνατη η ομαδοποίηση (group on) '%-.192s'"
+ hindi "'%-.192s' पर GROUP नहीं कर सकते"
hun "A group nem hasznalhato: '%-.192s'"
ita "Impossibile raggruppare per '%-.192s'"
jpn "'%-.192s' ã§ã®ã‚°ãƒ«ãƒ¼ãƒ—化ã¯ã§ãã¾ã›ã‚“。"
@@ -1326,6 +1377,7 @@ ER_WRONG_VALUE_COUNT 21S01
est "Tulpade arv erineb väärtuste arvust"
ger "Die Anzahl der Spalten entspricht nicht der Anzahl der Werte"
greek "Το Column count δεν ταιÏιάζει με το value count"
+ hindi "कॉलम की गिनती मूलà¥à¤¯ की गिनती के समान नही है"
hun "Az oszlopban levo ertek nem egyezik meg a szamitott ertekkel"
ita "Il numero delle colonne non e` uguale al numero dei valori"
jpn "列数ãŒå€¤ã®å€‹æ•°ã¨ä¸€è‡´ã—ã¾ã›ã‚“。"
@@ -1350,6 +1402,7 @@ ER_TOO_LONG_IDENT 42000 S1009
fre "Le nom de l'identificateur '%-.100s' est trop long"
ger "Name des Bezeichners '%-.100s' ist zu lang"
greek "Το identifier name '%-.100s' είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿"
+ hindi "पहचानकरà¥à¤¤à¤¾ का नाम '%-.100s' बहà¥à¤¤ लंबा है"
hun "A(z) '%-.100s' azonositonev tul hosszu"
ita "Il nome dell'identificatore '%-.100s' e` troppo lungo"
jpn "識別å­å '%-.100s' ã¯é•·ã™ãŽã¾ã™ã€‚"
@@ -1374,6 +1427,7 @@ ER_DUP_FIELDNAME 42S21 S1009
fre "Nom du champ '%-.192s' déjà utilisé"
ger "Doppelter Spaltenname: '%-.192s'"
greek "Επανάληψη column name '%-.192s'"
+ hindi "समान कॉलम '%-.192s' मौजूद है"
hun "Duplikalt oszlopazonosito: '%-.192s'"
ita "Nome colonna duplicato '%-.192s'"
jpn "列å '%-.192s' ã¯é‡è¤‡ã—ã¦ã¾ã™ã€‚"
@@ -1398,6 +1452,7 @@ ER_DUP_KEYNAME 42000 S1009
fre "Nom de clef '%-.192s' déjà utilisé"
ger "Doppelter Name für Schlüssel vorhanden: '%-.192s'"
greek "Επανάληψη key name '%-.192s'"
+ hindi "समान KEY '%-.192s' मौजूद है"
hun "Duplikalt kulcsazonosito: '%-.192s'"
ita "Nome chiave duplicato '%-.192s'"
jpn "索引å '%-.192s' ã¯é‡è¤‡ã—ã¦ã„ã¾ã™ã€‚"
@@ -1424,6 +1479,7 @@ ER_DUP_ENTRY 23000 S1009
fre "Duplicata du champ '%-.192s' pour la clef %d"
ger "Doppelter Eintrag '%-.192s' für Schlüssel %d"
greek "Διπλή εγγÏαφή '%-.192s' για το κλειδί %d"
+ hindi "सामान पà¥à¤°à¤µà¥‡à¤¶ '%-.192s' KEY %d के लिà¤"
hun "Duplikalt bejegyzes '%-.192s' a %d kulcs szerint"
ita "Valore duplicato '%-.192s' per la chiave %d"
jpn "'%-.192s' ã¯ç´¢å¼• %d ã§é‡è¤‡ã—ã¦ã„ã¾ã™ã€‚"
@@ -1448,6 +1504,7 @@ ER_WRONG_FIELD_SPEC 42000 S1009
fre "Mauvais paramètre de champ pour le champ '%-.192s'"
ger "Falsche Spezifikation für Feld '%-.192s'"
greek "Εσφαλμένο column specifier για το πεδίο '%-.192s'"
+ hindi "कॉलम '%-.192s' के लिठगलत कॉलम विनिरà¥à¤¦à¥‡à¤¶à¤•"
hun "Rossz oszlopazonosito: '%-.192s'"
ita "Specifica errata per la colonna '%-.192s'"
jpn "列 '%-.192s' ã®å®šç¾©ãŒä¸æ­£ã§ã™ã€‚"
@@ -1472,6 +1529,7 @@ ER_PARSE_ERROR 42000 s1009
fre "%s près de '%-.80s' à la ligne %d"
ger "%s bei '%-.80s' in Zeile %d"
greek "%s πλησίον '%-.80s' στη γÏαμμή %d"
+ hindi "%s के पास '%-.80s' लाइन %d में"
hun "A %s a '%-.80s'-hez kozeli a %d sorban"
ita "%s vicino a '%-.80s' linea %d"
jpn "%s : '%-.80s' 付近 %d 行目"
@@ -1496,6 +1554,7 @@ ER_EMPTY_QUERY 42000
fre "Query est vide"
ger "Leere Abfrage"
greek "Το εÏώτημα (query) που θέσατε ήταν κενό"
+ hindi "कà¥à¤µà¥‡à¤°à¥€ खली थी"
hun "Ures lekerdezes"
ita "La query e` vuota"
jpn "クエリãŒç©ºã§ã™ã€‚"
@@ -1520,6 +1579,7 @@ ER_NONUNIQ_TABLE 42000 S1009
fre "Table/alias: '%-.192s' non unique"
ger "Tabellenname/Alias '%-.192s' nicht eindeutig"
greek "ΑδÏνατη η ανεÏÏεση unique table/alias: '%-.192s'"
+ hindi "टेबल या उसका उपनाम '%-.192s' अदà¥à¤µà¤¿à¤¤à¥€à¤¯ नहीं है"
hun "Nem egyedi tabla/alias: '%-.192s'"
ita "Tabella/alias non unico: '%-.192s'"
jpn "表åï¼åˆ¥å '%-.192s' ã¯ä¸€æ„ã§ã¯ã‚りã¾ã›ã‚“。"
@@ -1544,6 +1604,7 @@ ER_INVALID_DEFAULT 42000 S1009
fre "Valeur par défaut invalide pour '%-.192s'"
ger "Fehlerhafter Vorgabewert (DEFAULT) für '%-.192s'"
greek "Εσφαλμένη Ï€ÏοκαθοÏισμένη τιμή (default value) για '%-.192s'"
+ hindi "'%-.192s' के लिठअवैध डिफ़ॉलà¥à¤Ÿ मान"
hun "Ervenytelen ertek: '%-.192s'"
ita "Valore di default non valido per '%-.192s'"
jpn "'%-.192s' ã¸ã®ãƒ‡ãƒ•ォルト値ãŒç„¡åйã§ã™ã€‚"
@@ -1568,6 +1629,7 @@ ER_MULTIPLE_PRI_KEY 42000 S1009
fre "Plusieurs clefs primaires définies"
ger "Mehrere Primärschlüssel (PRIMARY KEY) definiert"
greek "ΠεÏισσότεÏα από ένα primary key οÏίστηκαν"
+ hindi "कई PRIMARY KEY परिभाषित"
hun "Tobbszoros elsodleges kulcs definialas"
ita "Definite piu` chiave primarie"
jpn "PRIMARY KEY ãŒè¤‡æ•°å®šç¾©ã•れã¦ã„ã¾ã™ã€‚"
@@ -1593,6 +1655,7 @@ ER_TOO_MANY_KEYS 42000 S1009
ger "Zu viele Schlüssel definiert. Maximal %d Schlüssel erlaubt"
greek "ΠάÏα πολλά key οÏίσθηκαν. Το Ï€Î¿Î»Ï %d επιτÏέπονται"
hun "Tul sok kulcs. Maximum %d kulcs engedelyezett"
+ hindi "बहà¥à¤¤ सारी KEYS निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ हैं; अधिकतम %d KEYS की अनà¥à¤®à¤¤à¤¿ है"
ita "Troppe chiavi. Sono ammesse max %d chiavi"
jpn "ç´¢å¼•ã®æ•°ãŒå¤šã™ãŽã¾ã™ã€‚最大 %d 個ã¾ã§ã§ã™ã€‚"
kor "너무 ë§Žì€ í‚¤ê°€ ì •ì˜ë˜ì–´ 있ì니다.. 최대 %dì˜ í‚¤ê°€ 가능함"
@@ -1616,6 +1679,7 @@ ER_TOO_MANY_KEY_PARTS 42000 S1009
fre "Trop de parties specifiées dans la clef. Maximum de %d parties"
ger "Zu viele Teilschlüssel definiert. Maximal %d Teilschlüssel erlaubt"
greek "ΠάÏα πολλά key parts οÏίσθηκαν. Το Ï€Î¿Î»Ï %d επιτÏέπονται"
+ hindi "बहà¥à¤¤ सारे KEY के भाग निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ हैं; अधिकतम %d भागों की अनà¥à¤®à¤¤à¤¿ है"
hun "Tul sok kulcsdarabot definialt. Maximum %d resz engedelyezett"
ita "Troppe parti di chiave specificate. Sono ammesse max %d parti"
jpn "索引ã®ã‚­ãƒ¼åˆ—指定ãŒå¤šã™ãŽã¾ã™ã€‚最大 %d 個ã¾ã§ã§ã™ã€‚"
@@ -1640,6 +1704,7 @@ ER_TOO_LONG_KEY 42000 S1009
fre "La clé est trop longue. Longueur maximale: %d"
ger "Schlüssel ist zu lang. Die maximale Schlüssellänge beträgt %d"
greek "Το κλειδί που οÏίσθηκε είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿. Το μέγιστο μήκος είναι %d"
+ hindi "निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ KEY बहà¥à¤¤ लंबी थी; KEY की अधिकतम लंबाई %d बाइट है"
hun "A megadott kulcs tul hosszu. Maximalis kulcshosszusag: %d"
ita "La chiave specificata e` troppo lunga. La max lunghezza della chiave e` %d"
jpn "索引ã®ã‚­ãƒ¼ãŒé•·ã™ãŽã¾ã™ã€‚最大 %d ãƒã‚¤ãƒˆã¾ã§ã§ã™ã€‚"
@@ -1664,6 +1729,7 @@ ER_KEY_COLUMN_DOES_NOT_EXITS 42000 S1009
fre "La clé '%-.192s' n'existe pas dans la table"
ger "In der Tabelle gibt es kein Schlüsselfeld '%-.192s'"
greek "Το πεδίο κλειδί '%-.192s' δεν υπάÏχει στον πίνακα"
+ hindi "KEY कॉलम '%-.192s' टेबल में मौजूद नहीं है"
hun "A(z) '%-.192s'kulcsoszlop nem letezik a tablaban"
ita "La colonna chiave '%-.192s' non esiste nella tabella"
jpn "キー列 '%-.192s' ã¯è¡¨ã«ã‚りã¾ã›ã‚“。"
@@ -1682,6 +1748,7 @@ ER_KEY_COLUMN_DOES_NOT_EXITS 42000 S1009
ER_BLOB_USED_AS_KEY 42000 S1009
eng "BLOB column %`s can't be used in key specification in the %s table"
ger "BLOB-Feld %`s kann beim %s Tabellen nicht als Schlüssel verwendet werden"
+ hindi "BLOB कॉलम %`s टेबल %s में KEY विनिरà¥à¤¦à¥‡à¤¶ में इसà¥à¤¤à¥‡à¤®à¤¾à¤² नहीं किया जा सकता"
rus "Столбец типа BLOB %`s не может быть иÑпользован как значение ключа в %s таблице"
ukr "BLOB Ñтовбець %`s не може бути викориÑтаний у визначенні ключа в %s таблиці"
ER_TOO_BIG_FIELDLENGTH 42000 S1009
@@ -1693,6 +1760,7 @@ ER_TOO_BIG_FIELDLENGTH 42000 S1009
fre "Champ '%-.192s' trop long (max = %lu). Utilisez un BLOB"
ger "Feldlänge für Feld '%-.192s' zu groß (maximal %lu). BLOB- oder TEXT-Spaltentyp verwenden!"
greek "Î Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿ μήκος για το πεδίο '%-.192s' (max = %lu). ΠαÏακαλώ χÏησιμοποιείστε τον Ï„Ïπο BLOB"
+ hindi "कॉलम की लंबाई कॉलम '%-.192s' के लिठबड़ी है (अधिकतम = %lu); BLOB या TEXT का उपयोग करें"
hun "A(z) '%-.192s' oszlop tul hosszu. (maximum = %lu). Hasznaljon BLOB tipust inkabb"
ita "La colonna '%-.192s' e` troppo grande (max=%lu). Utilizza un BLOB"
jpn "列 '%-.192s' ã®ã‚µã‚¤ã‚ºå®šç¾©ãŒå¤§ãã™ãŽã¾ã™ (最大 %lu ã¾ã§)。代ã‚り㫠BLOB ã¾ãŸã¯ TEXT を使用ã—ã¦ãã ã•ã„。"
@@ -1717,6 +1785,7 @@ ER_WRONG_AUTO_KEY 42000 S1009
fre "Un seul champ automatique est permis et il doit être indexé"
ger "Falsche Tabellendefinition. Es darf nur eine AUTO_INCREMENT-Spalte geben, und diese muss als Schlüssel definiert werden"
greek "ΜποÏεί να υπάÏχει μόνο ένα auto field και Ï€Ïέπει να έχει οÏισθεί σαν key"
+ hindi "गलत टेबल परिभाषा; टेबल में केवल à¤à¤• AUTO_INCREMENT कॉलम हो सकता है और इसे à¤à¤• KEY के रूप में परिभाषित किया जाना चाहिà¤"
hun "Csak egy auto mezo lehetseges, es azt kulcskent kell definialni"
ita "Puo` esserci solo un campo AUTO e deve essere definito come chiave"
jpn "䏿­£ãªè¡¨å®šç¾©ã§ã™ã€‚AUTO_INCREMENT列ã¯ï¼‘個ã¾ã§ã§ã€ç´¢å¼•を定義ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
@@ -1743,6 +1812,7 @@ ER_NORMAL_SHUTDOWN
fre "%s (%s): Arrêt normal du serveur\n"
ger "%s (%s): Normal heruntergefahren\n"
greek "%s (%s): Φυσιολογική διαδικασία shutdown\n"
+ hindi "%s (%s): सामानà¥à¤¯ शटडाउन\n"
hun "%s (%s): Normal leallitas\n"
ita "%s (%s): Shutdown normale\n"
jpn "%s (%s): 通常シャットダウン\n"
@@ -1767,6 +1837,7 @@ ER_GOT_SIGNAL
fre "%s: Reçu le signal %d. Abandonne!\n"
ger "%s: Signal %d erhalten. Abbruch!\n"
greek "%s: Ελήφθη το μήνυμα %d. Η διαδικασία εγκαταλείπεται!\n"
+ hindi "%s: सिगà¥à¤¨à¤² %d मिलने के कारण सिसà¥à¤Ÿà¤® बंद किया जा रहा है!\n"
hun "%s: %d jelzes. Megszakitva!\n"
ita "%s: Ricevuto segnale %d. Interruzione!\n"
jpn "%s: シグナル %d ã‚’å—ä¿¡ã—ã¾ã—ãŸã€‚強制終了ã—ã¾ã™ï¼\n"
@@ -1791,6 +1862,7 @@ ER_SHUTDOWN_COMPLETE
fre "%s: Arrêt du serveur terminé\n"
ger "%s: Herunterfahren beendet\n"
greek "%s: Η διαδικασία Shutdown ολοκληÏώθηκε\n"
+ hindi "%s: शटडाउन पूरà¥à¤£\n"
hun "%s: A leallitas kesz\n"
ita "%s: Shutdown completato\n"
jpn "%s: シャットダウン完了\n"
@@ -1815,6 +1887,7 @@ ER_FORCING_CLOSE 08S01
fre "%s: Arrêt forcé de la tâche (thread) %ld utilisateur: '%-.48s'\n"
ger "%s: Thread %ld zwangsweise beendet. Benutzer: '%-.48s'\n"
greek "%s: Το thread θα κλείσει %ld user: '%-.48s'\n"
+ hindi "%s: %ld थà¥à¤°à¥‡à¤¡ बंद किया जा रहा है (यूज़र: '%-.48s')\n"
hun "%s: A(z) %ld thread kenyszeritett zarasa. Felhasznalo: '%-.48s'\n"
ita "%s: Forzata la chiusura del thread %ld utente: '%-.48s'\n"
jpn "%s: スレッド %ld を強制終了ã—ã¾ã™ (ユーザー: '%-.48s')\n"
@@ -1839,6 +1912,7 @@ ER_IPSOCK_ERROR 08S01
fre "Ne peut créer la connexion IP (socket)"
ger "Kann IP-Socket nicht erzeugen"
greek "Δεν είναι δυνατή η δημιουÏγία IP socket"
+ hindi "IP SOCKET नहीं बना सकते"
hun "Az IP socket nem hozhato letre"
ita "Impossibile creare il socket IP"
jpn "IPソケットを作æˆã§ãã¾ã›ã‚“。"
@@ -1863,6 +1937,7 @@ ER_NO_SUCH_INDEX 42S12 S1009
fre "La table '%-.192s' n'a pas d'index comme celle utilisée dans CREATE INDEX. Recréez la table"
ger "Tabelle '%-.192s' besitzt keinen wie den in CREATE INDEX verwendeten Index. Tabelle neu anlegen"
greek "Ο πίνακας '%-.192s' δεν έχει ευÏετήÏιο (index) σαν αυτό που χÏησιμοποιείτε στην CREATE INDEX. ΠαÏακαλώ, ξαναδημιουÏγήστε τον πίνακα"
+ hindi "CREATE INDEX में इसà¥à¤¤à¥‡à¤®à¤¾à¤² की गयी सूचि टेबल '%-.192s' में उपलबà¥à¤§ नहीं है; टेबल को पà¥à¤¨à¤ƒ बनायें"
hun "A(z) '%-.192s' tablahoz nincs meg a CREATE INDEX altal hasznalt index. Alakitsa at a tablat"
ita "La tabella '%-.192s' non ha nessun indice come quello specificatato dalla CREATE INDEX. Ricrea la tabella"
jpn "表 '%-.192s' ã«ä»¥å‰CREATE INDEXã§ä½œæˆã•れãŸç´¢å¼•ãŒã‚りã¾ã›ã‚“。表を作り直ã—ã¦ãã ã•ã„。"
@@ -1887,6 +1962,7 @@ ER_WRONG_FIELD_TERMINATORS 42000 S1009
fre "Séparateur de champs inconnu. Vérifiez dans le manuel"
ger "Feldbegrenzer-Argument ist nicht in der erwarteten Form. Bitte im Handbuch nachlesen"
greek "Ο διαχωÏιστής πεδίων δεν είναι αυτός που αναμενόταν. ΠαÏακαλώ ανατÏέξτε στο manual"
+ hindi "फीलà¥à¤¡ विभाजक आरà¥à¤—à¥à¤®à¥‡à¤‚ट गलत है; मैनà¥à¤…ल की जाà¤à¤š करें"
hun "A mezoelvalaszto argumentumok nem egyeznek meg a varttal. Nezze meg a kezikonyvben!"
ita "L'argomento 'Field separator' non e` quello atteso. Controlla il manuale"
jpn "フィールド区切り文字ãŒäºˆæœŸã›ã¬ä½¿ã‚れ方をã—ã¦ã„ã¾ã™ã€‚マニュアルを確èªã—ã¦ä¸‹ã•ã„。"
@@ -1911,6 +1987,7 @@ ER_BLOBS_AND_NO_TERMINATED 42000 S1009
fre "Vous ne pouvez utiliser des lignes de longueur fixe avec des BLOBs. Utiliser 'fields terminated by'"
ger "Eine feste Zeilenlänge kann für BLOB-Felder nicht verwendet werden. Bitte 'fields terminated by' verwenden"
greek "Δεν μποÏείτε να χÏησιμοποιήσετε fixed rowlength σε BLOBs. ΠαÏακαλώ χÏησιμοποιείστε 'fields terminated by'"
+ hindi "BLOBs को निशà¥à¤šà¤¿à¤¤ लंबाई की पंकà¥à¤¤à¤¿ के साथ पà¥à¤°à¤¯à¥‹à¤— नहीं किया जा सकता है; 'FIELDS TERMINATED BY' का इसà¥à¤¤à¥‡à¤®à¤¾à¤² करें"
hun "Fix hosszusagu BLOB-ok nem hasznalhatok. Hasznalja a 'mezoelvalaszto jelet' "
ita "Non possono essere usate righe a lunghezza fissa con i BLOB. Usa 'FIELDS TERMINATED BY'"
jpn "BLOBã«ã¯å›ºå®šé•·ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒä½¿ç”¨ã§ãã¾ã›ã‚“。'FIELDS TERMINATED BY'å¥ã‚’使用ã—ã¦ä¸‹ã•ã„。"
@@ -1935,6 +2012,7 @@ ER_TEXTFILE_NOT_READABLE
fre "Le fichier '%-.128s' doit être dans le répertoire de la base et lisible par tous"
ger "Datei '%-.128s' muss im Datenbank-Verzeichnis vorhanden oder lesbar für alle sein"
greek "Το αÏχείο '%-.128s' Ï€Ïέπει να υπάÏχει στο database directory ή να μποÏεί να διαβαστεί από όλους"
+ hindi "फ़ाइल '%-.128s' डेटाबेस डायरेकà¥à¤Ÿà¤°à¥€ में या सभी के दà¥à¤µà¤¾à¤°à¤¾ पठनीय होना चाहिà¤"
hun "A(z) '%-.128s'-nak az adatbazis konyvtarban kell lennie, vagy mindenki szamara olvashatonak"
ita "Il file '%-.128s' deve essere nella directory del database e deve essere leggibile da tutti"
jpn "ファイル '%-.128s' ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã‚ã‚‹ã‹ã€å…¨ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰èª­ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
@@ -1959,6 +2037,7 @@ ER_FILE_EXISTS_ERROR
fre "Le fichier '%-.200s' existe déjà"
ger "Datei '%-.200s' bereits vorhanden"
greek "Το αÏχείο '%-.200s' υπάÏχει ήδη"
+ hindi "फ़ाइल '%-.200s' पहले से मौजूद है"
hun "A '%-.200s' file mar letezik"
ita "Il file '%-.200s' esiste gia`"
jpn "ファイル '%-.200s' ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
@@ -1983,6 +2062,7 @@ ER_LOAD_INFO
fre "Enregistrements: %ld Effacés: %ld Non traités: %ld Avertissements: %ld"
ger "Datensätze: %ld Gelöscht: %ld Ausgelassen: %ld Warnungen: %ld"
greek "ΕγγÏαφές: %ld ΔιαγÏαφές: %ld ΠαÏεκάμφθησαν: %ld ΠÏοειδοποιήσεις: %ld"
+ hindi "रिकॉरà¥à¤¡: %ld हटाठगà¤: %ld छोड़ दिठगà¤: %ld चेतावनी: %ld"
hun "Rekordok: %ld Torolve: %ld Skipped: %ld Warnings: %ld"
ita "Records: %ld Cancellati: %ld Saltati: %ld Avvertimenti: %ld"
jpn "レコード数: %ld 削除: %ld スキップ: %ld 警告: %ld"
@@ -2007,6 +2087,7 @@ ER_ALTER_INFO
fre "Enregistrements: %ld Doublons: %ld"
ger "Datensätze: %ld Duplikate: %ld"
greek "ΕγγÏαφές: %ld Επαναλήψεις: %ld"
+ hindi "रिकॉरà¥à¤¡: %ld डà¥à¤ªà¥à¤²à¤¿à¤•ेट: %ld"
hun "Rekordok: %ld Duplikalva: %ld"
ita "Records: %ld Duplicati: %ld"
jpn "レコード数: %ld é‡è¤‡: %ld"
@@ -2055,6 +2136,7 @@ ER_CANT_REMOVE_ALL_FIELDS 42000
fre "Vous ne pouvez effacer tous les champs avec ALTER TABLE. Utilisez DROP TABLE"
ger "Mit ALTER TABLE können nicht alle Felder auf einmal gelöscht werden. Dafür DROP TABLE verwenden"
greek "Δεν είναι δυνατή η διαγÏαφή όλων των πεδίων με ALTER TABLE. ΠαÏακαλώ χÏησιμοποιείστε DROP TABLE"
+ hindi "ALTER TABLE का इसà¥à¤¤à¥‡à¤®à¤¾à¤² कर सभी कॉलमà¥à¤¸ को हटाया नहीं जा सकता; DROP TABLE का इसà¥à¤¤à¥‡à¤®à¤¾à¤² करें"
hun "Az osszes mezo nem torolheto az ALTER TABLE-lel. Hasznalja a DROP TABLE-t helyette"
ita "Non si possono cancellare tutti i campi con una ALTER TABLE. Utilizzare DROP TABLE"
jpn "ALTER TABLE ã§ã¯å…¨ã¦ã®åˆ—ã®å‰Šé™¤ã¯ã§ãã¾ã›ã‚“。DROP TABLE を使用ã—ã¦ãã ã•ã„。"
@@ -2079,6 +2161,7 @@ ER_CANT_DROP_FIELD_OR_KEY 42000
fre "Ne peut effacer (DROP %s) %`-.192s. Vérifiez s'il existe"
ger "DROP %s: Kann %`-.192s nicht löschen. Existiert es?"
greek "ΑδÏνατη η διαγÏαφή (DROP %s) %`-.192s. ΠαÏακαλώ ελέγξτε αν το πεδίο/κλειδί υπάÏχει"
+ hindi "%s %`-.192s को डà¥à¤°à¥‰à¤ª नहीं कर सकते हैं; कृपया जाà¤à¤š करें कि यह मौजूद है"
hun "A DROP %s %`-.192s nem lehetseges. Ellenorizze, hogy a mezo/kulcs letezik-e"
ita "Impossibile cancellare (DROP %s) %`-.192s. Controllare che il campo chiave esista"
nor "Kan ikke DROP %s %`-.192s. Undersøk om felt/nøkkel eksisterer"
@@ -2101,6 +2184,7 @@ ER_INSERT_INFO
fre "Enregistrements: %ld Doublons: %ld Avertissements: %ld"
ger "Datensätze: %ld Duplikate: %ld Warnungen: %ld"
greek "ΕγγÏαφές: %ld Επαναλήψεις: %ld ΠÏοειδοποιήσεις: %ld"
+ hindi "रिकॉरà¥à¤¡: %ld डà¥à¤ªà¥à¤²à¤¿à¤•ेट: %ld चेतावनी: %ld"
hun "Rekordok: %ld Duplikalva: %ld Warnings: %ld"
ita "Records: %ld Duplicati: %ld Avvertimenti: %ld"
jpn "レコード数: %ld é‡è¤‡æ•°: %ld 警告: %ld"
@@ -2128,6 +2212,7 @@ ER_NO_SUCH_THREAD
fre "Numéro de tâche inconnu: %lu"
ger "Unbekannte Thread-ID: %lu"
greek "Αγνωστο thread id: %lu"
+ hindi "अजà¥à¤žà¤¾à¤¤ थà¥à¤°à¥‡à¤¡ ID: %lu"
hun "Ervenytelen szal (thread) id: %lu"
ita "Thread id: %lu sconosciuto"
jpn "䏿˜Žãªã‚¹ãƒ¬ãƒƒãƒ‰IDã§ã™: %lu"
@@ -2152,6 +2237,7 @@ ER_KILL_DENIED_ERROR
fre "Vous n'êtes pas propriétaire de la tâche no: %lu"
ger "Sie sind nicht Eigentümer von Thread %lu"
greek "Δεν είσθε owner του thread %lu"
+ hindi "आप थà¥à¤°à¥‡à¤¡ %lu के OWNER नहीं हैं"
hun "A %lu thread-nek mas a tulajdonosa"
ita "Utente non proprietario del thread %lu"
jpn "スレッド %lu ã®ã‚ªãƒ¼ãƒŠãƒ¼ã§ã¯ã‚りã¾ã›ã‚“。"
@@ -2176,6 +2262,7 @@ ER_NO_TABLES_USED
fre "Aucune table utilisée"
ger "Keine Tabellen verwendet"
greek "Δεν χÏησιμοποιήθηκαν πίνακες"
+ hindi "कोई टेबल का इसà¥à¤¤à¥‡à¤®à¤¾à¤² नहीं हà¥à¤†"
hun "Nincs hasznalt tabla"
ita "Nessuna tabella usata"
jpn "è¡¨ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。"
@@ -2224,6 +2311,7 @@ ER_NO_UNIQUE_LOGFILE
fre "Ne peut générer un unique nom de journal %-.200s.(1-999)\n"
ger "Kann keinen eindeutigen Dateinamen für die Logdatei %-.200s(1-999) erzeugen\n"
greek "ΑδÏνατη η δημιουÏγία unique log-filename %-.200s.(1-999)\n"
+ hindi "à¤à¤• अनूठा लॉग-फ़ाइल नाम %-.200s.(1-999) उतà¥à¤ªà¤¨à¥à¤¨ नहीं कर सके\n"
hun "Egyedi log-filenev nem generalhato: %-.200s.(1-999)\n"
ita "Impossibile generare un nome del file log unico %-.200s.(1-999)\n"
jpn "一æ„ãªãƒ­ã‚°ãƒ•ァイルå %-.200s.(1-999) を生æˆã§ãã¾ã›ã‚“。\n"
@@ -2248,6 +2336,7 @@ ER_TABLE_NOT_LOCKED_FOR_WRITE
fre "Table '%-.192s' verrouillée lecture (READ): modification impossible"
ger "Tabelle '%-.192s' ist mit Lesesperre versehen und kann nicht aktualisiert werden"
greek "Ο πίνακας '%-.192s' έχει κλειδωθεί με READ lock και δεν επιτÏέπονται αλλαγές"
+ hindi "टेबल '%-.192s' READ लॉक से बंद है और उसे बदल नहीं सकते"
hun "A(z) '%-.192s' tabla zarolva lett (READ lock) es nem lehet frissiteni"
ita "La tabella '%-.192s' e` soggetta a lock in lettura e non puo` essere aggiornata"
jpn "表 '%-.192s' ã¯READロックã•れã¦ã„ã¦ã€æ›´æ–°ã§ãã¾ã›ã‚“。"
@@ -2272,6 +2361,7 @@ ER_TABLE_NOT_LOCKED
fre "Table '%-.192s' non verrouillée: utilisez LOCK TABLES"
ger "Tabelle '%-.192s' wurde nicht mit LOCK TABLES gesperrt"
greek "Ο πίνακας '%-.192s' δεν έχει κλειδωθεί με LOCK TABLES"
+ hindi "टेबल '%-.192s' LOCK TABLES से बंद नहीं है"
hun "A(z) '%-.192s' tabla nincs zarolva a LOCK TABLES-szel"
ita "Non e` stato impostato il lock per la tabella '%-.192s' con LOCK TABLES"
jpn "表 '%-.192s' 㯠LOCK TABLES ã§ãƒ­ãƒƒã‚¯ã•れã¦ã„ã¾ã›ã‚“。"
@@ -2296,6 +2386,7 @@ ER_BLOB_CANT_HAVE_DEFAULT 42000
fre "BLOB '%-.192s' ne peut avoir de valeur par défaut"
ger "BLOB/TEXT-Feld '%-.192s' darf keinen Vorgabewert (DEFAULT) haben"
greek "Τα Blob πεδία '%-.192s' δεν μποÏοÏν να έχουν Ï€ÏοκαθοÏισμένες τιμές (default value)"
+ hindi "BLOB/TEXT कॉलम '%-.192s' का डिफ़ॉलà¥à¤Ÿ मान नहीं हो सकता"
hun "A(z) '%-.192s' blob objektumnak nem lehet alapertelmezett erteke"
ita "Il campo BLOB '%-.192s' non puo` avere un valore di default"
jpn "BLOB/TEXT 列 '%-.192s' ã«ã¯ãƒ‡ãƒ•ォルト値を指定ã§ãã¾ã›ã‚“。"
@@ -2320,6 +2411,7 @@ ER_WRONG_DB_NAME 42000
fre "Nom de base de donnée illégal: '%-.100s'"
ger "Unerlaubter Datenbankname '%-.100s'"
greek "Λάθος όνομα βάσης δεδομένων '%-.100s'"
+ hindi "डेटाबेस नाम '%-.100s' गलत है"
hun "Hibas adatbazisnev: '%-.100s'"
ita "Nome database errato '%-.100s'"
jpn "データベースå '%-.100s' ã¯ä¸æ­£ã§ã™ã€‚"
@@ -2344,6 +2436,7 @@ ER_WRONG_TABLE_NAME 42000
fre "Nom de table illégal: '%-.100s'"
ger "Unerlaubter Tabellenname '%-.100s'"
greek "Λάθος όνομα πίνακα '%-.100s'"
+ hindi "टेबल नाम '%-.100s' गलत है"
hun "Hibas tablanev: '%-.100s'"
ita "Nome tabella errato '%-.100s'"
jpn "表å '%-.100s' ã¯ä¸æ­£ã§ã™ã€‚"
@@ -2369,6 +2462,7 @@ ER_TOO_BIG_SELECT 42000
ger "Die Ausführung des SELECT würde zu viele Datensätze untersuchen und wahrscheinlich sehr lange dauern. Bitte WHERE-Klausel überprüfen und gegebenenfalls SET SQL_BIG_SELECTS=1 oder SET MAX_JOIN_SIZE=# verwenden"
greek "Το SELECT θα εξετάσει μεγάλο αÏιθμό εγγÏαφών και πιθανώς θα καθυστεÏήσει. ΠαÏακαλώ εξετάστε τις παÏαμέτÏους του WHERE και χÏησιμοποιείστε SET SQL_BIG_SELECTS=1 αν το SELECT είναι σωστό"
hun "A SELECT tul sok rekordot fog megvizsgalni es nagyon sokaig fog tartani. Ellenorizze a WHERE-t es hasznalja a SET SQL_BIG_SELECTS=1 beallitast, ha a SELECT okay"
+ hindi "SELECT कमांड MAX_JOIN_SIZE पंकà¥à¤¤à¤¿à¤¯à¥‹à¤‚ से भी जà¥à¤¯à¤¾à¤¦à¤¾ की जांच करेगा; कृपया WHERE कà¥à¤²à¥‰à¥› को जाचें अथवा SET SQL_BIG_SELECTS=1 या SET MAX_JOIN_SIZE=# का इसà¥à¤¤à¥‡à¤®à¤¾à¤² करें"
ita "La SELECT dovrebbe esaminare troppi record e usare troppo tempo. Controllare la WHERE e usa SET SQL_BIG_SELECTS=1 se e` tutto a posto"
jpn "SELECTãŒMAX_JOIN_SIZEã‚’è¶…ãˆã‚‹è¡Œæ•°ã‚’処ç†ã—ã¾ã—ãŸã€‚WHEREå¥ã‚’確èªã—ã€SELECTæ–‡ã«å•題ãŒãªã‘れã°ã€ SET SQL_BIG_SELECTS=1 ã¾ãŸã¯ SET MAX_JOIN_SIZE=# を使用ã—ã¦ä¸‹ã•ã„。"
kor "SELECT 명령ì—서 너무 ë§Žì€ ë ˆì½”ë“œë¥¼ 찾기 ë•Œë¬¸ì— ë§Žì€ ì‹œê°„ì´ ì†Œìš”ë©ë‹ˆë‹¤. ë”°ë¼ì„œ WHERE ë¬¸ì„ ì ê²€í•˜ê±°ë‚˜, 만약 SELECTê°€ okë˜ë©´ SET SQL_BIG_SELECTS=1 ì˜µì…˜ì„ ì‚¬ìš©í•˜ì„¸ìš”."
@@ -2392,6 +2486,7 @@ ER_UNKNOWN_ERROR
fre "Erreur inconnue"
ger "Unbekannter Fehler"
greek "ΠÏοέκυψε άγνωστο λάθος"
+ hindi "अजà¥à¤žà¤¾à¤¤ तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
hun "Ismeretlen hiba"
ita "Errore sconosciuto"
jpn "䏿˜Žãªã‚¨ãƒ©ãƒ¼"
@@ -2415,6 +2510,7 @@ ER_UNKNOWN_PROCEDURE 42000
fre "Procédure %-.192s inconnue"
ger "Unbekannte Prozedur '%-.192s'"
greek "Αγνωστη διαδικασία '%-.192s'"
+ hindi "अजà¥à¤žà¤¾à¤¤ पà¥à¤°à¥‹à¤¸à¥€à¤œà¤° '%-.192s'"
hun "Ismeretlen eljaras: '%-.192s'"
ita "Procedura '%-.192s' sconosciuta"
jpn "'%-.192s' ã¯ä¸æ˜Žãªãƒ—ロシージャã§ã™ã€‚"
@@ -2439,6 +2535,7 @@ ER_WRONG_PARAMCOUNT_TO_PROCEDURE 42000
fre "Mauvais nombre de paramètres pour la procedure %-.192s"
ger "Falsche Parameterzahl für Prozedur '%-.192s'"
greek "Λάθος αÏιθμός παÏαμέτÏων στη διαδικασία '%-.192s'"
+ hindi "पà¥à¤°à¥‹à¤¸à¥€à¤œà¤° '%-.192s' के लिठपैरामीटर की संखà¥à¤¯à¤¾ गलत है"
hun "Rossz parameter a(z) '%-.192s'eljaras szamitasanal"
ita "Numero di parametri errato per la procedura '%-.192s'"
jpn "プロシージャ '%-.192s' ã¸ã®ãƒ‘ラメータ数ãŒä¸æ­£ã§ã™ã€‚"
@@ -2463,6 +2560,7 @@ ER_WRONG_PARAMETERS_TO_PROCEDURE
fre "Paramètre erroné pour la procedure %-.192s"
ger "Falsche Parameter für Prozedur '%-.192s'"
greek "Λάθος παÏάμετÏοι στην διαδικασία '%-.192s'"
+ hindi "पà¥à¤°à¥‹à¤¸à¥€à¤œà¤° '%-.192s' के लिठपैरामीटरà¥à¤¸ गलत हैं"
hun "Rossz parameter a(z) '%-.192s' eljarasban"
ita "Parametri errati per la procedura '%-.192s'"
jpn "プロシージャ '%-.192s' ã¸ã®ãƒ‘ラメータãŒä¸æ­£ã§ã™ã€‚"
@@ -2487,6 +2585,7 @@ ER_UNKNOWN_TABLE 42S02
fre "Table inconnue '%-.192s' dans %-.32s"
ger "Unbekannte Tabelle '%-.192s' in '%-.32s'"
greek "Αγνωστος πίνακας '%-.192s' σε %-.32s"
+ hindi "टेबल '%-.192s', %-.32s में नहीं मिला"
hun "Ismeretlen tabla: '%-.192s' %-.32s-ban"
ita "Tabella '%-.192s' sconosciuta in %-.32s"
jpn "'%-.192s' 㯠%-.32s ã§ã¯ä¸æ˜Žãªè¡¨ã§ã™ã€‚"
@@ -2511,6 +2610,7 @@ ER_FIELD_SPECIFIED_TWICE 42000
fre "Champ '%-.192s' spécifié deux fois"
ger "Feld '%-.192s' wurde zweimal angegeben"
greek "Το πεδίο '%-.192s' έχει οÏισθεί δÏο φοÏές"
+ hindi "कॉलम '%-.192s' दो बार निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया गया है"
hun "A(z) '%-.192s' mezot ketszer definialta"
ita "Campo '%-.192s' specificato 2 volte"
jpn "列 '%-.192s' ã¯2回指定ã•れã¦ã„ã¾ã™ã€‚"
@@ -2535,6 +2635,7 @@ ER_INVALID_GROUP_FUNC_USE
fre "Utilisation invalide de la clause GROUP"
ger "Falsche Verwendung einer Gruppierungsfunktion"
greek "Εσφαλμένη χÏήση της group function"
+ hindi "गà¥à¤°à¥à¤ª फंकà¥à¤¶à¤¨ का अवैध उपयोग"
hun "A group funkcio ervenytelen hasznalata"
ita "Uso non valido di una funzione di raggruppamento"
jpn "集計関数ã®ä½¿ç”¨æ–¹æ³•ãŒä¸æ­£ã§ã™ã€‚"
@@ -2556,6 +2657,7 @@ ER_UNSUPPORTED_EXTENSION 42000
fre "Table '%-.192s' : utilise une extension invalide pour cette version de MariaDB"
ger "Tabelle '%-.192s' verwendet eine Erweiterung, die in dieser MariaDB-Version nicht verfügbar ist"
greek "Ο πίνακς '%-.192s' χÏησιμοποιεί κάποιο extension που δεν υπάÏχει στην έκδοση αυτή της MariaDB"
+ hindi "टेबल '%-.192s' जिस इकà¥à¤¸à¥à¤Ÿà¥‡à¤¨à¥à¤¶à¤¨ का उपयोग कर रहा है, वह इस MariaDB संसà¥à¤•रण में उपलबà¥à¤§ नहीं है"
hun "A(z) '%-.192s' tabla olyan bovitest hasznal, amely nem letezik ebben a MariaDB versioban"
ita "La tabella '%-.192s' usa un'estensione che non esiste in questa versione di MariaDB"
jpn "表 '%-.192s' ã¯ã€ã“ã®MySQLãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã¯ç„¡ã„機能を使用ã—ã¦ã„ã¾ã™ã€‚"
@@ -2580,6 +2682,7 @@ ER_TABLE_MUST_HAVE_COLUMNS 42000
fre "Une table doit comporter au moins une colonne"
ger "Eine Tabelle muss mindestens eine Spalte besitzen"
greek "Ενας πίνακας Ï€Ïέπει να έχει τουλάχιστον ένα πεδίο"
+ hindi "à¤à¤• टेबल में कम से कम à¤à¤• कॉलम होना चाहिà¤"
hun "A tablanak legalabb egy oszlopot tartalmazni kell"
ita "Una tabella deve avere almeno 1 colonna"
jpn "表ã«ã¯æœ€ä½Žã§ã‚‚1個ã®åˆ—ãŒå¿…è¦ã§ã™ã€‚"
@@ -2601,6 +2704,7 @@ ER_RECORD_FILE_FULL
fre "La table '%-.192s' est pleine"
ger "Tabelle '%-.192s' ist voll"
greek "Ο πίνακας '%-.192s' είναι γεμάτος"
+ hindi "टेबल '%-.192s' पूरा भरा है"
hun "A '%-.192s' tabla megtelt"
ita "La tabella '%-.192s' e` piena"
jpn "表 '%-.192s' ã¯æº€æ¯ã§ã™ã€‚"
@@ -2622,6 +2726,7 @@ ER_UNKNOWN_CHARACTER_SET 42000
fre "Jeu de caractères inconnu: '%-.64s'"
ger "Unbekannter Zeichensatz: '%-.64s'"
greek "Αγνωστο character set: '%-.64s'"
+ hindi "अजà¥à¤žà¤¾à¤¤ CHARACTER SET: '%-.64s'"
hun "Ervenytelen karakterkeszlet: '%-.64s'"
ita "Set di caratteri '%-.64s' sconosciuto"
jpn "䏿˜Žãªæ–‡å­—コードセット: '%-.64s'"
@@ -2643,6 +2748,7 @@ ER_TOO_MANY_TABLES
fre "Trop de tables. MariaDB ne peut utiliser que %d tables dans un JOIN"
ger "Zu viele Tabellen. MariaDB kann in einem Join maximal %d Tabellen verwenden"
greek "Î Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿Ï‚ αÏιθμός πινάκων. Η MariaDB μποÏεί να χÏησιμοποιήσει %d πίνακες σε διαδικασία join"
+ hindi "बहà¥à¤¤ अधिक टेबलà¥à¤¸, MariaDB à¤à¤• JOIN में केवल %d टेबलà¥à¤¸ का उपयोग कर सकता है"
hun "Tul sok tabla. A MariaDB csak %d tablat tud kezelni osszefuzeskor"
ita "Troppe tabelle. MariaDB puo` usare solo %d tabelle in una join"
jpn "表ãŒå¤šã™ãŽã¾ã™ã€‚MySQLãŒJOINã§ãる表㯠%d 個ã¾ã§ã§ã™ã€‚"
@@ -2664,6 +2770,7 @@ ER_TOO_MANY_FIELDS
fre "Trop de champs"
ger "Zu viele Felder"
greek "Î Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿Ï‚ αÏιθμός πεδίων"
+ hindi "बहà¥à¤¤ अधिक कॉलमà¥à¤¸"
hun "Tul sok mezo"
ita "Troppi campi"
jpn "列ãŒå¤šã™ãŽã¾ã™ã€‚"
@@ -2749,6 +2856,7 @@ ER_CANT_FIND_UDF
fre "Imposible de charger la fonction '%-.192s'"
ger "Kann Funktion '%-.192s' nicht laden"
greek "Δεν είναι δυνατή η διαδικασία load για τη συνάÏτηση '%-.192s'"
+ hindi "फंकà¥à¤¶à¤¨ '%-.192s' लोड नहीं किया जा सका"
hun "A(z) '%-.192s' fuggveny nem toltheto be"
ita "Impossibile caricare la funzione '%-.192s'"
jpn "関数 '%-.192s' をロードã§ãã¾ã›ã‚“。"
@@ -2770,6 +2878,7 @@ ER_CANT_INITIALIZE_UDF
fre "Impossible d'initialiser la fonction '%-.192s'; %-.80s"
ger "Kann Funktion '%-.192s' nicht initialisieren: %-.80s"
greek "Δεν είναι δυνατή η έναÏξη της συνάÏτησης '%-.192s'; %-.80s"
+ hindi "फंकà¥à¤¶à¤¨ '%-.192s' को पà¥à¤°à¤¾à¤°à¤‚भ नहीं किया जा सका; %-.80s"
hun "A(z) '%-.192s' fuggveny nem inicializalhato; %-.80s"
ita "Impossibile inizializzare la funzione '%-.192s'; %-.80s"
jpn "関数 '%-.192s' ã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“。; %-.80s"
@@ -2812,6 +2921,7 @@ ER_UDF_EXISTS
fre "La fonction '%-.192s' existe déjà"
ger "Funktion '%-.192s' existiert schon"
greek "Η συνάÏτηση '%-.192s' υπάÏχει ήδη"
+ hindi "फंकà¥à¤¶à¤¨ '%-.192s' पहले से मौजूद है"
hun "A '%-.192s' fuggveny mar letezik"
ita "La funzione '%-.192s' esiste gia`"
jpn "関数 '%-.192s' ã¯ã™ã§ã«å®šç¾©ã•れã¦ã„ã¾ã™ã€‚"
@@ -2878,6 +2988,7 @@ ER_FUNCTION_NOT_DEFINED
fre "La fonction '%-.192s' n'est pas définie"
ger "Funktion '%-.192s' ist nicht definiert"
greek "Η συνάÏτηση '%-.192s' δεν έχει οÏισθεί"
+ hindi "फंकà¥à¤¶à¤¨ '%-.192s' की परिभाषा नहीं मिली"
hun "A '%-.192s' fuggveny nem definialt"
ita "La funzione '%-.192s' non e` definita"
jpn "関数 '%-.192s' ã¯å®šç¾©ã•れã¦ã„ã¾ã›ã‚“。"
@@ -2899,6 +3010,7 @@ ER_HOST_IS_BLOCKED
fre "L'hôte '%-.64s' est bloqué à cause d'un trop grand nombre d'erreur de connexion. Débloquer le par 'mysqladmin flush-hosts'"
ger "Host '%-.64s' blockiert wegen zu vieler Verbindungsfehler. Aufheben der Blockierung mit 'mysqladmin flush-hosts'"
greek "Ο υπολογιστής '%-.64s' έχει αποκλεισθεί λόγω πολλαπλών λαθών σÏνδεσης. ΠÏοσπαθήστε να διοÏώσετε με 'mysqladmin flush-hosts'"
+ hindi "होसà¥à¤Ÿ '%-.64s' को कई कनेकà¥à¤¶à¤¨ में तà¥à¤°à¥à¤Ÿà¤¿à¤¯à¥‹à¤‚ के कारण बà¥à¤²à¥‰à¤• कर दिया गया है; 'mysqladmin flush-hosts' का इसà¥à¤¤à¥‡à¤®à¤¾à¤² कर अनबà¥à¤²à¥‰à¤• करें"
hun "A '%-.64s' host blokkolodott, tul sok kapcsolodasi hiba miatt. Hasznalja a 'mysqladmin flush-hosts' parancsot"
ita "Sistema '%-.64s' bloccato a causa di troppi errori di connessione. Per sbloccarlo: 'mysqladmin flush-hosts'"
jpn "接続エラーãŒå¤šã„ãŸã‚ã€ãƒ›ã‚¹ãƒˆ '%-.64s' ã¯æ‹’å¦ã•れã¾ã—ãŸã€‚'mysqladmin flush-hosts' ã§è§£é™¤ã§ãã¾ã™ã€‚"
@@ -2919,6 +3031,7 @@ ER_HOST_NOT_PRIVILEGED
fre "Le hôte '%-.64s' n'est pas authorisé à se connecter à ce serveur MariaDB"
ger "Host '%-.64s' hat keine Berechtigung, sich mit diesem MariaDB-Server zu verbinden"
greek "Ο υπολογιστής '%-.64s' δεν έχει δικαίωμα σÏνδεσης με τον MariaDB server"
+ hindi "होसà¥à¤Ÿ '%-.64s' को इस MariaDB सरà¥à¤µà¤° से कनेकà¥à¤Ÿ करने के लिठअनà¥à¤®à¤¤à¤¿ नहीं है"
hun "A '%-.64s' host szamara nem engedelyezett a kapcsolodas ehhez a MariaDB szerverhez"
ita "Al sistema '%-.64s' non e` consentita la connessione a questo server MariaDB"
jpn "ホスト '%-.64s' ã‹ã‚‰ã®ã“ã® MySQL server ã¸ã®æŽ¥ç¶šã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“。"
@@ -2939,6 +3052,7 @@ ER_PASSWORD_ANONYMOUS_USER 42000
fre "Vous utilisez un utilisateur anonyme et les utilisateurs anonymes ne sont pas autorisés à changer les mots de passe"
ger "Sie benutzen MariaDB als anonymer Benutzer und dürfen daher keine Passwörter ändern"
greek "ΧÏησιμοποιείτε την MariaDB σαν anonymous user και έτσι δεν μποÏείτε να αλλάξετε τα passwords άλλων χÏηστών"
+ hindi "आप MariaDB का उपयोग à¤à¤• बेनाम यूज़र की तरह कर रहे हैं; बेनाम यूज़रà¥à¤¸ को 'यूज़र सेटिंगà¥à¤¸' बदलने की अनà¥à¤®à¤¤à¤¿ नहीं है"
hun "Nevtelen (anonymous) felhasznalokent nem negedelyezett a jelszovaltoztatas"
ita "Impossibile cambiare la password usando MariaDB come utente anonimo"
jpn "MySQL を匿åユーザーã§ä½¿ç”¨ã—ã¦ã„ã‚‹ã®ã§ã€ãƒ‘スワードã®å¤‰æ›´ã¯ã§ãã¾ã›ã‚“。"
@@ -2979,6 +3093,7 @@ ER_PASSWORD_NO_MATCH 28000
fre "Impossible de trouver un enregistrement correspondant dans la table user"
ger "Kann keinen passenden Datensatz in Tabelle 'user' finden"
greek "Δεν είναι δυνατή η ανεÏÏεση της αντίστοιχης εγγÏαφής στον πίνακα των χÏηστών"
+ hindi "यूज़र टेबल में रिकॉरà¥à¤¡ नहीं मिला"
hun "Nincs megegyezo sor a user tablaban"
ita "Impossibile trovare la riga corrispondente nella tabella user"
jpn "ユーザーテーブルã«è©²å½“ã™ã‚‹ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
@@ -3057,6 +3172,7 @@ ER_CANT_REOPEN_TABLE
est "Ei suuda taasavada tabelit '%-.192s'"
fre "Impossible de réouvrir la table: '%-.192s"
ger "Kann Tabelle'%-.192s' nicht erneut öffnen"
+ hindi "टेबल '%-.192s' फिर से खोल नहीं सकते"
hun "Nem lehet ujra-megnyitni a tablat: '%-.192s"
ita "Impossibile riaprire la tabella: '%-.192s'"
jpn "表をå†ã‚ªãƒ¼ãƒ—ンã§ãã¾ã›ã‚“。: '%-.192s'"
@@ -3080,6 +3196,7 @@ ER_INVALID_USE_OF_NULL 22004
est "NULL väärtuse väärkasutus"
fre "Utilisation incorrecte de la valeur NULL"
ger "Unerlaubte Verwendung eines NULL-Werts"
+ hindi "NULL मान का अवैध उपयोग"
hun "A NULL ervenytelen hasznalata"
ita "Uso scorretto del valore NULL"
jpn "NULL 値ã®ä½¿ç”¨æ–¹æ³•ãŒä¸é©åˆ‡ã§ã™ã€‚"
@@ -3099,6 +3216,7 @@ ER_REGEXP_ERROR 42000
est "regexp tagastas vea '%-.64s'"
fre "Erreur '%-.64s' provenant de regexp"
ger "regexp lieferte Fehler '%-.64s'"
+ hindi "regexp में '%-.64s' तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
hun "'%-.64s' hiba a regularis kifejezes hasznalata soran (regexp)"
ita "Errore '%-.64s' da regexp"
jpn "regexp ãŒã‚¨ãƒ©ãƒ¼ '%-.64s' ã‚’è¿”ã—ã¾ã—ãŸã€‚"
@@ -3220,6 +3338,7 @@ ER_GRANT_WRONG_HOST_OR_USER 42000
est "Masina või kasutaja nimi GRANT lauses on liiga pikk"
fre "L'hôte ou l'utilisateur donné en argument à GRANT est trop long"
ger "Das Host- oder User-Argument für GRANT ist zu lang"
+ hindi "GRANT के लिठहोसà¥à¤Ÿ या यूज़र आरà¥à¤—à¥à¤®à¥‡à¤‚ट बहà¥à¤¤ लंबा है"
hun "A host vagy felhasznalo argumentuma tul hosszu a GRANT parancsban"
ita "L'argomento host o utente per la GRANT e` troppo lungo"
jpn "GRANTコマンドã¸ã®ã€ãƒ›ã‚¹ãƒˆåやユーザーåãŒé•·ã™ãŽã¾ã™ã€‚"
@@ -3239,6 +3358,7 @@ ER_NO_SUCH_TABLE 42S02
est "Tabelit '%-.192s.%-.192s' ei eksisteeri"
fre "La table '%-.192s.%-.192s' n'existe pas"
ger "Tabelle '%-.192s.%-.192s' existiert nicht"
+ hindi "टेबल '%-.192s.%-.192s' मौजूद नहीं है"
hun "A '%-.192s.%-.192s' tabla nem letezik"
ita "La tabella '%-.192s.%-.192s' non esiste"
jpn "表 '%-.192s.%-.192s' ã¯å­˜åœ¨ã—ã¾ã›ã‚“。"
@@ -3281,6 +3401,7 @@ ER_NOT_ALLOWED_COMMAND 42000
est "Antud käsk ei ole lubatud käesolevas MariaDB versioonis"
fre "Cette commande n'existe pas dans cette version de MariaDB"
ger "Der verwendete Befehl ist in dieser MariaDB-Version nicht zulässig"
+ hindi "यह कमांड इस MariaDB संसà¥à¤•रण के साथ इसà¥à¤¤à¥‡à¤®à¤¾à¤² नहीं किया जा सकता है"
hun "A hasznalt parancs nem engedelyezett ebben a MariaDB verzioban"
ita "Il comando utilizzato non e` supportato in questa versione di MariaDB"
jpn "ã“ã®MySQLãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯åˆ©ç”¨ã§ããªã„コマンドã§ã™ã€‚"
@@ -3301,6 +3422,7 @@ ER_SYNTAX_ERROR 42000
fre "Erreur de syntaxe"
ger "Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen"
greek "You have an error in your SQL syntax"
+ hindi "आपके SQL सिंटेकà¥à¤¸ मैं गलती है; सही सिंटेकà¥à¤¸ के लिठअपने MariaDB सरà¥à¤µà¤° संसà¥à¤•रण के मैनà¥à¤¯à¥à¤…ल की सहायता लें"
hun "Szintaktikai hiba"
ita "Errore di sintassi nella query SQL"
jpn "SQL構文エラーã§ã™ã€‚ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«å¯¾å¿œã™ã‚‹ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã‚’å‚ç…§ã—ã¦æ­£ã—ã„æ§‹æ–‡ã‚’確èªã—ã¦ãã ã•ã„。"
@@ -3343,6 +3465,7 @@ ER_TOO_MANY_DELAYED_THREADS
est "Liiga palju DELAYED lõimesid kasutusel"
fre "Trop de tâche 'delayed' en cours"
ger "Zu viele verzögerte (DELAYED) Threads in Verwendung"
+ hindi "बहà¥à¤¤ से DELAYED थà¥à¤°à¥‡à¤¡à¥à¤¸ उपयोग में हैं"
hun "Tul sok kesletetett thread (delayed)"
ita "Troppi threads ritardati in uso"
jpn "'Delayed insert'スレッドãŒå¤šã™ãŽã¾ã™ã€‚"
@@ -3385,6 +3508,7 @@ ER_NET_PACKET_TOO_LARGE 08S01
est "Saabus suurem pakett kui lubatud 'max_allowed_packet' muutujaga"
fre "Paquet plus grand que 'max_allowed_packet' reçu"
ger "Empfangenes Paket ist größer als 'max_allowed_packet' Bytes"
+ hindi "'max_allowed_packet' से भी बड़ा à¤à¤• पैकेट मिला"
hun "A kapott csomag nagyobb, mint a maximalisan engedelyezett: 'max_allowed_packet'"
ita "Ricevuto un pacchetto piu` grande di 'max_allowed_packet'"
jpn "'max_allowed_packet'よりも大ããªãƒ‘ケットをå—ä¿¡ã—ã¾ã—ãŸã€‚"
@@ -3404,6 +3528,7 @@ ER_NET_READ_ERROR_FROM_PIPE 08S01
est "Viga ühendustoru lugemisel"
fre "Erreur de lecture reçue du pipe de connexion"
ger "Lese-Fehler bei einer Verbindungs-Pipe"
+ hindi "कनेकà¥à¤¶à¤¨ पाइप से à¤à¤• READ तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
hun "Olvasasi hiba a kapcsolat soran"
ita "Rilevato un errore di lettura dalla pipe di connessione"
jpn "接続パイプã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚"
@@ -3423,6 +3548,7 @@ ER_NET_FCNTL_ERROR 08S01
est "fcntl() tagastas vea"
fre "Erreur reçue de fcntl() "
ger "fcntl() lieferte einen Fehler"
+ hindi "fcntl() से à¤à¤• तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
hun "Hiba a fcntl() fuggvenyben"
ita "Rilevato un errore da fcntl()"
jpn "fcntl()ãŒã‚¨ãƒ©ãƒ¼ã‚’è¿”ã—ã¾ã—ãŸã€‚"
@@ -3442,6 +3568,7 @@ ER_NET_PACKETS_OUT_OF_ORDER 08S01
est "Paketid saabusid vales järjekorras"
fre "Paquets reçus dans le désordre"
ger "Pakete nicht in der richtigen Reihenfolge empfangen"
+ hindi "पैकेटà¥à¤¸ कà¥à¤°à¤® में नहीं पà¥à¤°à¤¾à¤ªà¥à¤¤ हà¥à¤"
hun "Helytelen sorrendben erkezett adatcsomagok"
ita "Ricevuti pacchetti non in ordine"
jpn "䏿­£ãªé †åºã®ãƒ‘ケットをå—ä¿¡ã—ã¾ã—ãŸã€‚"
@@ -3461,6 +3588,7 @@ ER_NET_UNCOMPRESS_ERROR 08S01
est "Viga andmepaketi lahtipakkimisel"
fre "Impossible de décompresser le paquet reçu"
ger "Kommunikationspaket lässt sich nicht entpacken"
+ hindi "संचार पैकेट UNCOMPRESS नहीं कर सके"
hun "A kommunikacios adatcsomagok nem tomorithetok ki"
ita "Impossibile scompattare i pacchetti di comunicazione"
jpn "圧縮パケットã®å±•é–‹ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
@@ -3480,6 +3608,7 @@ ER_NET_READ_ERROR 08S01
est "Viga andmepaketi lugemisel"
fre "Erreur de lecture des paquets reçus"
ger "Fehler beim Lesen eines Kommunikationspakets"
+ hindi "संचार पैकेटà¥à¤¸ पढ़ते समय à¤à¤• तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
hun "HIba a kommunikacios adatcsomagok olvasasa soran"
ita "Rilevato un errore ricevendo i pacchetti di comunicazione"
jpn "パケットã®å—ä¿¡ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
@@ -3499,6 +3628,7 @@ ER_NET_READ_INTERRUPTED 08S01
est "Kontrollaja ületamine andmepakettide lugemisel"
fre "Timeout en lecture des paquets reçus"
ger "Zeitüberschreitung beim Lesen eines Kommunikationspakets"
+ hindi "संचार पैकेटà¥à¤¸ पà¥à¤¨à¥‡ के दौरान टाइमआउट"
hun "Idotullepes a kommunikacios adatcsomagok olvasasa soran"
ita "Rilevato un timeout ricevendo i pacchetti di comunicazione"
jpn "パケットã®å—ä¿¡ã§ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
@@ -3518,6 +3648,7 @@ ER_NET_ERROR_ON_WRITE 08S01
est "Viga andmepaketi kirjutamisel"
fre "Erreur d'écriture des paquets envoyés"
ger "Fehler beim Schreiben eines Kommunikationspakets"
+ hindi "संचार पैकेटà¥à¤¸ लिखते समय à¤à¤• तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
hun "Hiba a kommunikacios csomagok irasa soran"
ita "Rilevato un errore inviando i pacchetti di comunicazione"
jpn "パケットã®é€ä¿¡ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
@@ -3537,6 +3668,7 @@ ER_NET_WRITE_INTERRUPTED 08S01
est "Kontrollaja ületamine andmepakettide kirjutamisel"
fre "Timeout d'écriture des paquets envoyés"
ger "Zeitüberschreitung beim Schreiben eines Kommunikationspakets"
+ hindi "संचार पैकेटà¥à¤¸ लिखने के दौरान टाइमआउट"
hun "Idotullepes a kommunikacios csomagok irasa soran"
ita "Rilevato un timeout inviando i pacchetti di comunicazione"
jpn "パケットã®é€ä¿¡ã§ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
@@ -3556,6 +3688,7 @@ ER_TOO_LONG_STRING 42000
est "Tulemus on pikem kui lubatud 'max_allowed_packet' muutujaga"
fre "La chaîne résultat est plus grande que 'max_allowed_packet'"
ger "Ergebnis-String ist länger als 'max_allowed_packet' Bytes"
+ hindi "रिजलà¥à¤Ÿ सà¥à¤Ÿà¥à¤°à¤¿à¤‚ग 'max_allowed_packet' से लंबा है"
hun "Ez eredmeny sztring nagyobb, mint a lehetseges maximum: 'max_allowed_packet'"
ita "La stringa di risposta e` piu` lunga di 'max_allowed_packet'"
jpn "çµæžœã®æ–‡å­—列㌠'max_allowed_packet' よりも大ãã„ã§ã™ã€‚"
@@ -3574,6 +3707,7 @@ ER_TABLE_CANT_HANDLE_BLOB 42000
est "Valitud tabelitüüp (%s) ei toeta BLOB/TEXT tüüpi välju"
fre "Ce type de table (%s) ne supporte pas les colonnes BLOB/TEXT"
ger "Der verwendete Tabellentyp (%s) unterstützt keine BLOB- und TEXT-Felder"
+ hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s BLOB/TEXT कॉलमà¥à¤¸ को सपोरà¥à¤Ÿ नहीं करता"
hun "A hasznalt tabla tipus (%s) nem tamogatja a BLOB/TEXT mezoket"
ita "Il tipo di tabella usata (%s) non supporta colonne di tipo BLOB/TEXT"
por "Tipo de tabela usado (%s) não permite colunas BLOB/TEXT"
@@ -3591,6 +3725,7 @@ ER_TABLE_CANT_HANDLE_AUTO_INCREMENT 42000
est "Valitud tabelitüüp (%s) ei toeta AUTO_INCREMENT tüüpi välju"
fre "Ce type de table (%s) ne supporte pas les colonnes AUTO_INCREMENT"
ger "Der verwendete Tabellentyp (%s) unterstützt keine AUTO_INCREMENT-Felder"
+ hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s AUTO_INCREMENT कॉलमà¥à¤¸ को सपोरà¥à¤Ÿ नहीं करता"
hun "A hasznalt tabla tipus (%s) nem tamogatja az AUTO_INCREMENT tipusu mezoket"
ita "Il tipo di tabella usata (%s) non supporta colonne di tipo AUTO_INCREMENT"
por "Tipo de tabela usado (%s) não permite colunas AUTO_INCREMENT"
@@ -3632,6 +3767,7 @@ ER_WRONG_COLUMN_NAME 42000
est "Vigane tulba nimi '%-.100s'"
fre "Nom de colonne '%-.100s' incorrect"
ger "Falscher Spaltenname '%-.100s'"
+ hindi "कॉलम नाम '%-.100s' गलत है"
hun "Ervenytelen mezonev: '%-.100s'"
ita "Nome colonna '%-.100s' non corretto"
jpn "列å '%-.100s' ã¯ä¸æ­£ã§ã™ã€‚"
@@ -3645,6 +3781,7 @@ ER_WRONG_COLUMN_NAME 42000
ER_WRONG_KEY_COLUMN 42000
eng "The storage engine %s can't index column %`s"
ger "Die Speicher-Engine %s kann die Spalte %`s nicht indizieren"
+ hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s, कॉलम %`s को इंडेकà¥à¤¸ नहीं कर सकता"
rus "Обработчик таблиц %s не может проиндекÑировать Ñтолбец %`s"
ukr "Вказівник таблиц %s не може індекÑувати Ñтовбець %`s"
ER_WRONG_MRG_TABLE
@@ -3720,6 +3857,7 @@ ER_PRIMARY_CANT_HAVE_NULL 42000
est "Kõik PRIMARY KEY peavad olema määratletud NOT NULL piiranguga; vajadusel kasuta UNIQUE tüüpi võtit"
fre "Toutes les parties d'un index PRIMARY KEY doivent être NOT NULL; Si vous avez besoin d'un NULL dans l'index, utilisez un index UNIQUE"
ger "Alle Teile eines PRIMARY KEY müssen als NOT NULL definiert sein. Wenn NULL in einem Schlüssel benötigt wird, muss ein UNIQUE-Schlüssel verwendet werden"
+ hindi "PRIMARY KEY के सभी भागों को NOT NULL होना चाहिà¤; यदि आपको à¤à¤• KEY में NULL की जरूरत है, तो UNIQUE का उपयोग करें"
hun "Az elsodleges kulcs teljes egeszeben csak NOT NULL tipusu lehet; Ha NULL mezot szeretne a kulcskent, hasznalja inkabb a UNIQUE-ot"
ita "Tutte le parti di una chiave primaria devono essere dichiarate NOT NULL; se necessitano valori NULL nelle chiavi utilizzare UNIQUE"
jpn "PRIMARY KEYã®åˆ—ã¯å…¨ã¦NOT NULLã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“。UNIQUE索引ã§ã‚れã°NULLã‚’å«ã‚€ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚"
@@ -3738,6 +3876,7 @@ ER_TOO_MANY_ROWS 42000
est "Tulemis oli rohkem kui üks kirje"
fre "Le résultat contient plus d'un enregistrement"
ger "Ergebnis besteht aus mehr als einer Zeile"
+ hindi "परिणाम à¤à¤• से अधिक पंकà¥à¤¤à¤¿ का है"
hun "Az eredmeny tobb, mint egy sort tartalmaz"
ita "Il risultato consiste di piu` di una riga"
jpn "çµæžœãŒ2行以上ã§ã™ã€‚"
@@ -3756,6 +3895,7 @@ ER_REQUIRES_PRIMARY_KEY 42000
est "Antud tabelitüüp nõuab primaarset võtit"
fre "Ce type de table nécessite une clé primaire (PRIMARY KEY)"
ger "Dieser Tabellentyp benötigt einen Primärschlüssel (PRIMARY KEY)"
+ hindi "इस पà¥à¤°à¤•ार के टेबल को à¤à¤• PRIMARY KEY की आवशà¥à¤¯à¤•ता है"
hun "Az adott tablatipushoz elsodleges kulcs hasznalata kotelezo"
ita "Questo tipo di tabella richiede una chiave primaria"
jpn "使用ã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚¨ãƒ³ã‚¸ãƒ³ã§ã¯ã€PRIMARY KEYãŒå¿…è¦ã§ã™ã€‚"
@@ -3774,6 +3914,7 @@ ER_NO_RAID_COMPILED
est "Antud MariaDB versioon on kompileeritud ilma RAID toeta"
fre "Cette version de MariaDB n'est pas compilée avec le support RAID"
ger "Diese MariaDB-Version ist nicht mit RAID-Unterstützung kompiliert"
+ hindi "MariaDB का यह संसà¥à¤•रण RAID सपोरà¥à¤Ÿ के साथ कॉमà¥à¤ªà¤¾à¤ˆà¤²à¥à¤¡ नहीं है"
hun "Ezen leforditott MariaDB verzio nem tartalmaz RAID support-ot"
ita "Questa versione di MYSQL non e` compilata con il supporto RAID"
jpn "ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®MySQLã¯RAIDサãƒãƒ¼ãƒˆã‚’å«ã‚ã¦ã‚³ãƒ³ãƒ‘イルã•れã¦ã„ã¾ã›ã‚“。"
@@ -3809,6 +3950,7 @@ ER_KEY_DOES_NOT_EXITS 42000 S1009
est "Võti '%-.192s' ei eksisteeri tabelis '%-.192s'"
fre "L'index '%-.192s' n'existe pas sur la table '%-.192s'"
ger "Schlüssel '%-.192s' existiert in der Tabelle '%-.192s' nicht"
+ hindi "KEY '%-.192s', टेबल '%-.192s' में मौजूद नहीं है"
hun "A '%-.192s' kulcs nem letezik a '%-.192s' tablaban"
ita "La chiave '%-.192s' non esiste nella tabella '%-.192s'"
jpn "索引 '%-.192s' ã¯è¡¨ '%-.192s' ã«ã¯å­˜åœ¨ã—ã¾ã›ã‚“。"
@@ -3826,6 +3968,7 @@ ER_CHECK_NO_SUCH_TABLE 42000
est "Ei suuda avada tabelit"
fre "Impossible d'ouvrir la table"
ger "Kann Tabelle nicht öffnen"
+ hindi "टेबल नहीं खà¥à¤² सकता है"
hun "Nem tudom megnyitni a tablat"
ita "Impossibile aprire la tabella"
jpn "表をオープンã§ãã¾ã›ã‚“。"
@@ -3844,6 +3987,7 @@ ER_CHECK_NOT_IMPLEMENTED 42000
fre "Ce type de table ne supporte pas les %s"
ger "Die Speicher-Engine für diese Tabelle unterstützt kein %s"
greek "The handler for the table doesn't support %s"
+ hindi "इस टेबल का सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन '%s' को सपोरà¥à¤Ÿ नहीं करता"
hun "A tabla kezeloje (handler) nem tamogatja az %s"
ita "Il gestore per la tabella non supporta il %s"
jpn "ã“ã®è¡¨ã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚¨ãƒ³ã‚¸ãƒ³ã¯ '%s' を利用ã§ãã¾ã›ã‚“。"
@@ -3884,6 +4028,7 @@ ER_ERROR_DURING_COMMIT
est "Viga %M käsu COMMIT täitmisel"
fre "Erreur %M lors du COMMIT"
ger "Fehler %M beim COMMIT"
+ hindi "COMMIT के दौरान %M तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
hun "%M hiba a COMMIT vegrehajtasa soran"
ita "Rilevato l'errore %M durante il COMMIT"
jpn "COMMIT中ã«ã‚¨ãƒ©ãƒ¼ %M ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
@@ -3901,6 +4046,7 @@ ER_ERROR_DURING_ROLLBACK
est "Viga %M käsu ROLLBACK täitmisel"
fre "Erreur %M lors du ROLLBACK"
ger "Fehler %M beim ROLLBACK"
+ hindi "ROLLBACK के दौरान %M तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
hun "%M hiba a ROLLBACK vegrehajtasa soran"
ita "Rilevato l'errore %M durante il ROLLBACK"
jpn "ROLLBACK中ã«ã‚¨ãƒ©ãƒ¼ %M ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
@@ -3918,6 +4064,7 @@ ER_ERROR_DURING_FLUSH_LOGS
est "Viga %M käsu FLUSH_LOGS täitmisel"
fre "Erreur %M lors du FLUSH_LOGS"
ger "Fehler %M bei FLUSH_LOGS"
+ hindi "FLUSH_LOGS के दौरान %M तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
hun "%M hiba a FLUSH_LOGS vegrehajtasa soran"
ita "Rilevato l'errore %M durante il FLUSH_LOGS"
jpn "FLUSH_LOGS中ã«ã‚¨ãƒ©ãƒ¼ %M ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
@@ -3935,6 +4082,7 @@ ER_ERROR_DURING_CHECKPOINT
est "Viga %M käsu CHECKPOINT täitmisel"
fre "Erreur %M lors du CHECKPOINT"
ger "Fehler %M bei CHECKPOINT"
+ hindi "CHECKPOINT के दौरान %M तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
hun "%M hiba a CHECKPOINT vegrehajtasa soran"
ita "Rilevato l'errore %M durante il CHECKPOINT"
jpn "CHECKPOINT中ã«ã‚¨ãƒ©ãƒ¼ %M ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
@@ -4071,6 +4219,7 @@ ER_UNKNOWN_SYSTEM_VARIABLE
est "Tundmatu süsteemne muutuja '%-.*s'"
fre "Variable système '%-.*s' inconnue"
ger "Unbekannte Systemvariable '%-.*s'"
+ hindi "अजà¥à¤žà¤¾à¤¤ सिसà¥à¤Ÿà¤® वैरिà¤à¤¬à¤² '%-.*s'"
ita "Variabile di sistema '%-.*s' sconosciuta"
jpn "'%-.*s' ã¯ä¸æ˜Žãªã‚·ã‚¹ãƒ†ãƒ å¤‰æ•°ã§ã™ã€‚"
por "Variável de sistema '%-.*s' desconhecida"
@@ -4209,6 +4358,7 @@ ER_TOO_MANY_USER_CONNECTIONS 42000
est "Kasutajal %-.64s on juba rohkem ühendusi kui lubatud 'max_user_connections' muutujaga"
fre "L'utilisateur %-.64s possède déjà plus de 'max_user_connections' connexions actives"
ger "Benutzer '%-.64s' hat mehr als 'max_user_connections' aktive Verbindungen"
+ hindi "यूज़र %-.64s के पहले से ही 'max_user_connections' से अधिक सकà¥à¤°à¤¿à¤¯ कनेकà¥à¤¶à¤¨à¥à¤¸ हैं"
ita "L'utente %-.64s ha gia' piu' di 'max_user_connections' connessioni attive"
jpn "ユーザー '%-.64s' ã¯ã™ã§ã« 'max_user_connections' 以上ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªæŽ¥ç¶šã‚’è¡Œã£ã¦ã„ã¾ã™ã€‚"
por "Usuário '%-.64s' já possui mais que o valor máximo de conexões (max_user_connections) ativas"
@@ -4224,6 +4374,7 @@ ER_SET_CONSTANTS_ONLY
est "Ainult konstantsed suurused on lubatud SET klauslis"
fre "Seules les expressions constantes sont autorisées avec SET"
ger "Bei diesem Befehl dürfen nur konstante Ausdrücke verwendet werden"
+ hindi "इस सà¥à¤Ÿà¥‡à¤Ÿà¤®à¥‡à¤‚ट में आप केवल CONSTANT EXPRESSIONS का उपयोग कर सकते हैं"
ita "Si possono usare solo espressioni costanti con SET"
jpn "SET処ç†ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚"
por "Você pode usar apenas expressões constantes com SET"
@@ -4254,6 +4405,7 @@ ER_LOCK_TABLE_FULL
est "Lukkude koguarv ületab lukutabeli suuruse"
fre "Le nombre total de verrou dépasse la taille de la table des verrous"
ger "Die Gesamtzahl der Sperren überschreitet die Größe der Sperrtabelle"
+ hindi "लॉकà¥à¤¸ की कà¥à¤² संखà¥à¤¯à¤¾ लॉक टेबल के साइज से अधिक है"
ita "Il numero totale di lock e' maggiore della grandezza della tabella di lock"
jpn "ãƒ­ãƒƒã‚¯ã®æ•°ãŒå¤šã™ãŽã¾ã™ã€‚"
por "O número total de travamentos excede o tamanho da tabela de travamentos"
@@ -4313,6 +4465,7 @@ ER_WRONG_ARGUMENTS
est "Vigased parameetrid %s-le"
fre "Mauvais arguments à %s"
ger "Falsche Argumente für %s"
+ hindi "%s को गलत आरà¥à¤—à¥à¤¯à¥‚मेंटà¥à¤¸"
ita "Argomenti errati a %s"
jpn "%s ã®å¼•æ•°ãŒä¸æ­£ã§ã™"
por "Argumentos errados para %s"
@@ -4327,6 +4480,7 @@ ER_NO_PERMISSION_TO_CREATE_USER 42000
est "Kasutajal '%s'@'%s' ei ole lubatud luua uusi kasutajaid"
fre "'%s'@'%s' n'est pas autorisé à créer de nouveaux utilisateurs"
ger "'%s'@'%s' ist nicht berechtigt, neue Benutzer hinzuzufügen"
+ hindi "'%s'@'%s' को नठयूज़रà¥à¤¸ बनाने की अनà¥à¤®à¤¤à¤¿ नहीं है"
ita "A '%s'@'%s' non e' permesso creare nuovi utenti"
por "Não é permitido a '%s'@'%s' criar novos usuários"
rus "'%s'@'%s' не разрешаетÑÑ Ñоздавать новых пользователей"
@@ -4366,6 +4520,7 @@ ER_TABLE_CANT_HANDLE_FT
est "Antud tabelitüüp (%s) ei toeta FULLTEXT indekseid"
fre "Le type de table utilisé (%s) ne supporte pas les index FULLTEXT"
ger "Der verwendete Tabellentyp (%s) unterstützt keine FULLTEXT-Indizes"
+ hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन '%s' FULLTEXT इनà¥à¤¡à¥‡à¤•à¥à¤¸à¥‡à¤¸ को सपोरà¥à¤Ÿ नहीं करता"
ita "La tabella usata (%s) non supporta gli indici FULLTEXT"
por "O tipo de tabela utilizado (%s) não suporta índices de texto completo (fulltext indexes)"
rus "ИÑпользуемый тип таблиц (%s) не поддерживает полнотекÑтовых индекÑов"
@@ -4840,6 +4995,7 @@ WARN_DATA_TRUNCATED 01000
ER_WARN_USING_OTHER_HANDLER
eng "Using storage engine %s for table '%s'"
ger "Speicher-Engine %s wird für Tabelle '%s' benutzt"
+ hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s का इसà¥à¤¤à¥‡à¤®à¤¾à¤² टेबल '%s' के लिठकिया जा रहा है"
jpn "ストレージエンジン %s ãŒè¡¨ '%s' ã«åˆ©ç”¨ã•れã¦ã„ã¾ã™ã€‚"
por "Usando engine de armazenamento %s para tabela '%s'"
spa "Usando motor de almacenamiento %s para tabla '%s'"
@@ -4967,6 +5123,7 @@ ER_WARN_HOSTNAME_WONT_WORK
ER_UNKNOWN_STORAGE_ENGINE 42000
eng "Unknown storage engine '%s'"
ger "Unbekannte Speicher-Engine '%s'"
+ hindi "अजà¥à¤žà¤¾à¤¤ सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन '%s'"
jpn "'%s' ã¯ä¸æ˜Žãªã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚¨ãƒ³ã‚¸ãƒ³ã§ã™ã€‚"
por "Motor de tabela desconhecido '%s'"
spa "Desconocido motor de tabla '%s'"
@@ -5061,15 +5218,19 @@ ER_SP_NO_RECURSIVE_CREATE 2F003
ER_SP_ALREADY_EXISTS 42000
eng "%s %s already exists"
ger "%s %s existiert bereits"
+ hindi "%s %s पहले से ही मौजूद है"
ER_SP_DOES_NOT_EXIST 42000
eng "%s %s does not exist"
ger "%s %s existiert nicht"
+ hindi "%s %s मौजूद नहीं है"
ER_SP_DROP_FAILED
eng "Failed to DROP %s %s"
ger "DROP %s %s ist fehlgeschlagen"
+ hindi "%s %s को डà¥à¤°à¥‰à¤ª करने में असफल रहे"
ER_SP_STORE_FAILED
eng "Failed to CREATE %s %s"
ger "CREATE %s %s ist fehlgeschlagen"
+ hindi "%s %s को बनाने में असफल रहे"
ER_SP_LILABEL_MISMATCH 42000
eng "%s with no matching label: %s"
ger "%s ohne passende Marke: %s"
@@ -5088,9 +5249,11 @@ ER_SP_BADSELECT 0A000
ER_SP_BADRETURN 42000
eng "RETURN is only allowed in a FUNCTION"
ger "RETURN ist nur innerhalb einer FUNCTION erlaubt"
+ hindi "RETURN को केवल FUNCTION में इसà¥à¤¤à¥‡à¤®à¤¾à¤² किया जा सकता है"
ER_SP_BADSTATEMENT 0A000
eng "%s is not allowed in stored procedures"
ger "%s ist in gespeicherten Prozeduren nicht erlaubt"
+ hindi "%s को STORED PROCEDURE में इसà¥à¤¤à¥‡à¤®à¤¾à¤² नहीं किया जा सकता है"
ER_UPDATE_LOG_DEPRECATED_IGNORED 42000
eng "The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored. This option will be removed in MariaDB 5.6"
ger "Das Update-Log ist veraltet und wurde durch das Binär-Log ersetzt. SET SQL_LOG_UPDATE wird ignoriert. Diese Option wird in MariaDB 5.6 entfernt"
@@ -5109,9 +5272,11 @@ ER_SP_COND_MISMATCH 42000
ER_SP_NORETURN 42000
eng "No RETURN found in FUNCTION %s"
ger "Kein RETURN in FUNCTION %s gefunden"
+ hindi "FUNCTION %s में कोई RETURN है"
ER_SP_NORETURNEND 2F005
eng "FUNCTION %s ended without RETURN"
ger "FUNCTION %s endete ohne RETURN"
+ hindi "FUNCTION %s RETURN के बिना समापà¥à¤¤ हो गया"
ER_SP_BAD_CURSOR_QUERY 42000
eng "Cursor statement must be a SELECT"
ger "Cursor-Anweisung muss ein SELECT sein"
@@ -5121,9 +5286,11 @@ ER_SP_BAD_CURSOR_SELECT 42000
ER_SP_CURSOR_MISMATCH 42000
eng "Undefined CURSOR: %s"
ger "Undefinierter CURSOR: %s"
+ hindi "CURSOR %s अपरिभाषित है"
ER_SP_CURSOR_ALREADY_OPEN 24000
eng "Cursor is already open"
ger "Cursor ist schon geöffnet"
+ hindi "CURSOR पहले से ही खà¥à¤²à¤¾ है"
ER_SP_CURSOR_NOT_OPEN 24000
eng "Cursor is not open"
ger "Cursor ist nicht geöffnet"
@@ -5151,6 +5318,7 @@ ER_SP_DUP_CURS 42000
ER_SP_CANT_ALTER
eng "Failed to ALTER %s %s"
ger "ALTER %s %s fehlgeschlagen"
+ hindi "%s %s को ALTER करने में असफल रहे"
ER_SP_SUBSELECT_NYI 0A000
eng "Subquery value not supported"
ger "Subquery-Wert wird nicht unterstützt"
@@ -5259,9 +5427,11 @@ ER_SP_GOTO_IN_HNDLR
ER_TRG_ALREADY_EXISTS
eng "Trigger '%s' already exists"
ger "Trigger '%s' existiert bereits"
+ hindi "TRIGGER '%s' पहले से मौजूद है"
ER_TRG_DOES_NOT_EXIST
eng "Trigger does not exist"
ger "Trigger existiert nicht"
+ hindi "TRIGGER मौजूद नहीं है"
ER_TRG_ON_VIEW_OR_TEMP_TABLE
eng "Trigger's '%-.192s' is view or temporary table"
ger "'%-.192s' des Triggers ist View oder temporäre Tabelle"
@@ -5277,6 +5447,7 @@ ER_NO_DEFAULT_FOR_FIELD
ER_DIVISION_BY_ZERO 22012
eng "Division by 0"
ger "Division durch 0"
+ hindi "0 से विभाजन"
ER_TRUNCATED_WRONG_VALUE_FOR_FIELD 22007
eng "Incorrect %-.32s value: '%-.128s' for column '%.192s' at row %lu"
ger "Falscher %-.32s-Wert: '%-.128s' für Feld '%.192s' in Zeile %lu"
@@ -5314,6 +5485,7 @@ ER_BINLOG_PURGE_PROHIBITED
ER_FSEEK_FAIL
eng "Failed on fseek()"
ger "fseek() fehlgeschlagen"
+ hindi "fseek() विफल रहा"
ER_BINLOG_PURGE_FATAL_ERR
eng "Fatal error during log purge"
ger "Schwerwiegender Fehler bei der Log-Bereinigung"
@@ -5597,12 +5769,15 @@ ER_REMOVED_SPACES
ER_AUTOINC_READ_FAILED
eng "Failed to read auto-increment value from storage engine"
ger "Lesen des Autoincrement-Werts von der Speicher-Engine fehlgeschlagen"
+ hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन से auto-increment का मान पà¥à¤¨à¥‡ में असफल रहे"
ER_USERNAME
eng "user name"
ger "Benutzername"
+ hindi "यूज़र का नाम"
ER_HOSTNAME
eng "host name"
ger "Hostname"
+ hindi "होसà¥à¤Ÿ का नाम"
ER_WRONG_STRING_LENGTH
eng "String '%-.70s' is too long for %s (should be no longer than %d)"
ger "String '%-.70s' ist zu lang für %s (sollte nicht länger sein als %d)"
@@ -5823,9 +5998,11 @@ ER_FILEGROUP_OPTION_ONLY_ONCE
ER_CREATE_FILEGROUP_FAILED
eng "Failed to create %s"
ger "Anlegen von %s fehlgeschlagen"
+ hindi "%s को बनाने में असफल रहे"
ER_DROP_FILEGROUP_FAILED
eng "Failed to drop %s"
ger "Löschen von %s fehlgeschlagen"
+ hindi "%s को हटाने में असफल रहे"
ER_TABLESPACE_AUTO_EXTEND_ERROR
eng "The handler doesn't support autoextend of tablespaces"
ger "Der Handler unterstützt keine automatische Erweiterung (Autoextend) von Tablespaces"
@@ -5838,6 +6015,7 @@ ER_SIZE_OVERFLOW_ERROR
ER_ALTER_FILEGROUP_FAILED
eng "Failed to alter: %s"
ger "Änderung von %s fehlgeschlagen"
+ hindi "%s को ALTER करने में असफल रहे"
ER_BINLOG_ROW_LOGGING_FAILED
eng "Writing one row to the row-based binary log failed"
ger "Schreiben einer Zeilen ins zeilenbasierte Binärlog fehlgeschlagen"
@@ -5859,9 +6037,11 @@ ER_EVENT_DOES_NOT_EXIST
ER_EVENT_CANT_ALTER
eng "Failed to alter event '%-.192s'"
ger "Ändern des Events '%-.192s' fehlgeschlagen"
+ hindi "'%-.192s' EVENT को ALTER करने में असफल रहे"
ER_EVENT_DROP_FAILED
eng "Failed to drop %s"
ger "Löschen von %s fehlgeschlagen"
+ hindi "%s को हटाने में असफल रहे"
ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG
eng "INTERVAL is either not positive or too big"
ger "INTERVAL ist entweder nicht positiv oder zu groß"
@@ -5874,6 +6054,7 @@ ER_EVENT_EXEC_TIME_IN_THE_PAST
ER_EVENT_OPEN_TABLE_FAILED
eng "Failed to open mysql.event"
ger "Öffnen von mysql.event fehlgeschlagen"
+ hindi "mysql.event को खोलने में असफल रहे"
ER_EVENT_NEITHER_M_EXPR_NOR_M_AT
eng "No datetime expression provided"
ger "Kein DATETIME-Ausdruck angegeben"
@@ -5885,6 +6066,7 @@ ER_UNUSED_3
ER_EVENT_CANNOT_DELETE
eng "Failed to delete the event from mysql.event"
ger "Löschen des Events aus mysql.event fehlgeschlagen"
+ hindi "EVENT को mysql.event से हटाने मैं असफल रहे"
ER_EVENT_COMPILE_ERROR
eng "Error during compilation of event's body"
ger "Fehler beim Kompilieren des Event-Bodys"
@@ -5924,6 +6106,7 @@ ER_UNUSED_13
ER_PARTITION_NO_TEMPORARY
eng "Cannot create temporary table with partitions"
ger "Anlegen temporärer Tabellen mit Partitionen nicht möglich"
+ hindi "असà¥à¤¥à¤¾à¤ˆ टेबल को पारà¥à¤Ÿà¤¿à¤¶à¤¨à¥à¤¸ के साथ नहीं बनाया जा सकता"
ER_PARTITION_CONST_DOMAIN_ERROR
eng "Partition constant is out of partition function domain"
ger "Partitionskonstante liegt außerhalb der Partitionsfunktionsdomäne"
@@ -5935,6 +6118,7 @@ ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
ER_DDL_LOG_ERROR
eng "Error in DDL log"
ger "Fehler im DDL-Log"
+ hindi "DDL लॉग में तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ"
ER_NULL_IN_VALUES_LESS_THAN
eng "Not allowed to use NULL value in VALUES LESS THAN"
ger "In VALUES LESS THAN dürfen keine NULL-Werte verwendet werden"
@@ -5942,6 +6126,7 @@ ER_NULL_IN_VALUES_LESS_THAN
ER_WRONG_PARTITION_NAME
eng "Incorrect partition name"
ger "Falscher Partitionsname"
+ hindi "पारà¥à¤Ÿà¥€à¤¶à¤¨ का नाम गलत है"
swe "Felaktigt partitionsnamn"
ER_CANT_CHANGE_TX_CHARACTERISTICS 25001
eng "Transaction characteristics can't be changed while a transaction is in progress"
@@ -5980,6 +6165,7 @@ ER_ONLY_INTEGERS_ALLOWED
ER_UNSUPORTED_LOG_ENGINE
eng "Storage engine %s cannot be used for log tables"
ger "Speicher-Engine %s kann für Logtabellen nicht verwendet werden"
+ hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s को लॉग टेबलà¥à¤¸ के लिठइसà¥à¤¤à¥‡à¤®à¤¾à¤² नहीं किया जा सकता है"
ER_BAD_LOG_STATEMENT
eng "You cannot '%s' a log table if logging is enabled"
ger "Sie können eine Logtabelle nicht '%s', wenn Loggen angeschaltet ist"
@@ -6055,6 +6241,7 @@ ER_SLAVE_RELAY_LOG_WRITE_FAILURE
ER_SLAVE_CREATE_EVENT_FAILURE
eng "Failed to create %s"
ger "Erzeugen von %s fehlgeschlagen"
+ hindi "%s को बनाने मैं असफल रहे"
ER_SLAVE_MASTER_COM_FAILURE
eng "Master command %s failed: %s"
ger "Master-Befehl %s fehlgeschlagen: %s"
@@ -6162,22 +6349,27 @@ ER_DATABASE_NAME
eng "Database"
swe "Databas"
ger "Datenbank"
+ hindi "डेटाबेस"
ER_TABLE_NAME
eng "Table"
swe "Tabell"
ger "Tabelle"
+ hindi "टेबल"
ER_PARTITION_NAME
eng "Partition"
swe "Partition"
ger "Partition"
+ hindi "पारà¥à¤Ÿà¥€à¤¶à¤¨"
ER_SUBPARTITION_NAME
eng "Subpartition"
swe "Subpartition"
ger "Unterpartition"
+ hindi "सब-पारà¥à¤Ÿà¥€à¤¶à¤¨"
ER_TEMPORARY_NAME
eng "Temporary"
swe "Temporär"
ger "Temporär"
+ hindi "असà¥à¤¥à¤¾à¤¯à¥€"
ER_RENAMED_NAME
eng "Renamed"
swe "Namnändrad"
@@ -6299,6 +6491,7 @@ ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT
eng "Cannot modify @@session.binlog_format inside a transaction"
ER_PATH_LENGTH
eng "The path specified for %.64s is too long"
+ hindi "%.64s के लिठनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿ पथ बहà¥à¤¤ लंबा है"
ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT
eng "'%s' is deprecated and will be removed in a future release"
ger "'%s' ist veraltet und wird in einer zukünftigen Version entfernt werden"
@@ -6308,6 +6501,7 @@ ER_WRONG_NATIVE_TABLE_STRUCTURE
ER_WRONG_PERFSCHEMA_USAGE
eng "Invalid performance_schema usage"
+ hindi "performance_schema का अवैध उपयोग"
ER_WARN_I_S_SKIPPED_TABLE
eng "Table '%s'.'%s' was skipped since its definition is being modified by concurrent DDL statement"
@@ -6344,6 +6538,7 @@ ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN
ER_FAILED_READ_FROM_PAR_FILE
eng "Failed to read from the .par file"
+ hindi ".par फ़ाइल से पढ़ने में असफल रहे"
swe "Misslyckades läsa från .par filen"
ER_VALUES_IS_NOT_INT_TYPE_ERROR
@@ -6359,6 +6554,7 @@ ER_ACCESS_DENIED_NO_PASSWORD_ERROR 28000
fre "Accès refusé pour l'utilisateur: '%s'@'%s'"
ger "Benutzer '%s'@'%s' hat keine Zugriffsberechtigung"
greek "Δεν επιτέÏεται η Ï€Ïόσβαση στο χÏήστη: '%s'@'%s'"
+ hindi "यूज़र '%s'@'%s' को अनà¥à¤®à¤¤à¤¿ नहीं है"
hun "A(z) '%s'@'%s' felhasznalo szamara tiltott eleres"
ita "Accesso non consentito per l'utente: '%s'@'%s'"
kor "'%s'@'%s' 사용ìžëŠ” ì ‘ê·¼ì´ ê±°ë¶€ ë˜ì—ˆìŠµë‹ˆë‹¤."
@@ -6935,6 +7131,7 @@ ER_ACCESS_DENIED_CHANGE_USER_ERROR 28000
ER_INNODB_READ_ONLY
eng "InnoDB is in read only mode"
+ hindi "InnoDB केवल READ-ONLY मोड में है"
ER_STOP_SLAVE_SQL_THREAD_TIMEOUT
eng "STOP SLAVE command execution is incomplete: Slave SQL thread got the stop signal, thread is busy, SQL thread will stop once the current task is complete"
@@ -6987,10 +7184,13 @@ ER_UNUSED_21
eng ""
ER_UNSUPPORTED_ENGINE_FOR_GENERATED_COLUMNS
eng "%s storage engine does not support generated columns"
+ hindi "सà¥à¤Ÿà¥‹à¤°à¥‡à¤œ इंजन %s COMPUTED कॉलमà¥à¤¸ को सपोरà¥à¤Ÿ नहीं करता"
ER_UNKNOWN_OPTION
eng "Unknown option '%-.64s'"
+ hindi "अजà¥à¤žà¤¾à¤¤ विकलà¥à¤ª '%-.64s'"
ER_BAD_OPTION_VALUE
eng "Incorrect value '%-.64s' for option '%-.64s'"
+ hindi "गलत मान '%-.64s' विकलà¥à¤ª '%-.64s' के लिà¤"
ER_UNUSED_6
eng "You should never see it"
ER_UNUSED_7
@@ -7013,14 +7213,17 @@ ER_DYN_COL_WRONG_CHARSET
eng "Dynamic column contains unknown character set"
ER_ILLEGAL_SUBQUERY_OPTIMIZER_SWITCHES
eng "At least one of the 'in_to_exists' or 'materialization' optimizer_switch flags must be 'on'"
+ hindi "कम से कम 'in_to_exists' या 'materialization' optimizer_switch फà¥à¤²à¥ˆà¤— 'ON' होना चाहिà¤"
ER_QUERY_CACHE_IS_DISABLED
eng "Query cache is disabled (resize or similar command in progress); repeat this command later"
ER_QUERY_CACHE_IS_GLOBALY_DISABLED
eng "Query cache is globally disabled and you can't enable it only for this session"
+ hindi "कà¥à¤µà¥‡à¤°à¥€ कैश गà¥à¤²à¥‹à¤¬à¤² सà¥à¤¤à¤° पर DISABLED है और आप इसे केवल सतà¥à¤° के लिठENABLE नहीं कर सकते"
ER_VIEW_ORDERBY_IGNORED
eng "View '%-.192s'.'%-.192s' ORDER BY clause ignored because there is other ORDER BY clause already"
ER_CONNECTION_KILLED 70100
eng "Connection was killed"
+ hindi "कनेकà¥à¤¶à¤¨ को समापà¥à¤¤ कर दिया गया है"
ER_UNUSED_12
eng "You should never see it"
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SKIP_REPLICATION
@@ -7031,6 +7234,7 @@ ER_QUERY_EXCEEDED_ROWS_EXAMINED_LIMIT
eng "Query execution was interrupted. The query examined at least %llu rows, which exceeds LIMIT ROWS EXAMINED (%llu). The query result may be incomplete"
ER_NO_SUCH_TABLE_IN_ENGINE 42S02
eng "Table '%-.192s.%-.192s' doesn't exist in engine"
+ hindi "टेबल '%-.192s.%-.192s' इंजन में मौजूद नहीं है"
swe "Det finns ingen tabell som heter '%-.192s.%-.192s' i handlern"
ER_TARGET_NOT_EXPLAINABLE
eng "Target is not running an EXPLAINable command"
@@ -7084,20 +7288,25 @@ ER_BINLOG_MUST_BE_EMPTY
ER_NO_SUCH_QUERY
eng "Unknown query id: %lld"
ger "Unbekannte Abfrage-ID: %lld"
+ hindi "अजà¥à¤žà¤¾à¤¤ कà¥à¤µà¥‡à¤°à¥€ ID: %lld"
rus "ÐеизвеÑтный номер запроÑа: %lld"
ER_BAD_BASE64_DATA
eng "Bad base64 data as position %u"
ER_INVALID_ROLE OP000
eng "Invalid role specification %`s"
+ hindi "अमानà¥à¤¯ रोल विनिरà¥à¤¦à¥‡à¤¶ %`s"
rum "Rolul %`s este invalid"
ER_INVALID_CURRENT_USER 0L000
eng "The current user is invalid"
+ hindi "वरà¥à¤¤à¤®à¤¾à¤¨ यूज़र अमानà¥à¤¯ है"
rum "Utilizatorul curent este invalid"
ER_CANNOT_GRANT_ROLE
eng "Cannot grant role '%s' to: %s"
+ hindi "रोल '%s', %s को पà¥à¤°à¤¦à¤¾à¤¨ नहीं कर सकते"
rum "Rolul '%s' nu poate fi acordat catre: %s"
ER_CANNOT_REVOKE_ROLE
eng "Cannot revoke role '%s' from: %s"
+ hindi "रोल '%s', %s से हटाया नहीं जा सका"
rum "Rolul '%s' nu poate fi revocat de la: %s"
ER_CHANGE_SLAVE_PARALLEL_THREADS_ACTIVE
eng "Cannot change @@slave_parallel_threads while another change is in progress"
@@ -7105,12 +7314,15 @@ ER_PRIOR_COMMIT_FAILED
eng "Commit failed due to failure of an earlier commit on which this one depends"
ER_IT_IS_A_VIEW 42S02
eng "'%-.192s' is a view"
+ hindi "'%-.192s' à¤à¤• VIEW है"
ER_SLAVE_SKIP_NOT_IN_GTID
eng "When using parallel replication and GTID with multiple replication domains, @@sql_slave_skip_counter can not be used. Instead, setting @@gtid_slave_pos explicitly can be used to skip to after a given GTID position"
ER_TABLE_DEFINITION_TOO_BIG
eng "The definition for table %`s is too big"
+ hindi "टेबल %`s की परिभाषा बहà¥à¤¤ बड़ी है"
ER_PLUGIN_INSTALLED
eng "Plugin '%-.192s' already installed"
+ hindi "पà¥à¤²à¤—-इन '%-.192s' पहले से ही इनà¥à¤¸à¥à¤Ÿà¥‰à¤²à¥à¤¡ है"
rus "Плагин '%-.192s' уже уÑтановлен"
ER_STATEMENT_TIMEOUT 70100
eng "Query execution was interrupted (max_statement_time exceeded)"
@@ -7122,22 +7334,29 @@ ER_UNUSED_17
eng "You should never see it"
ER_USER_CREATE_EXISTS
eng "Can't create user '%-.64s'@'%-.64s'; it already exists"
+ hindi "यूज़र '%-.64s'@'%-.64s' को नहीं बना सकते; यह पहले से ही मौजूद है"
ER_USER_DROP_EXISTS
eng "Can't drop user '%-.64s'@'%-.64s'; it doesn't exist"
+ hindi "यूज़र '%-.64s'@'%-.64s' को डà¥à¤°à¥‰à¤ª नहीं कर सकते; यह मौजूद नहीं है"
ER_ROLE_CREATE_EXISTS
eng "Can't create role '%-.64s'; it already exists"
+ hindi "रोल '%-.64s' को नहीं बना सकते; यह पहले से ही मौजूद है"
ER_ROLE_DROP_EXISTS
eng "Can't drop role '%-.64s'; it doesn't exist"
+ hindi "रोल '%-.64s' को डà¥à¤°à¥‰à¤ª नहीं कर सकते; यह मौजूद नहीं है"
ER_CANNOT_CONVERT_CHARACTER
eng "Cannot convert '%s' character 0x%-.64s to '%s'"
ER_INVALID_DEFAULT_VALUE_FOR_FIELD 22007
eng "Incorrect default value '%-.128s' for column '%.192s'"
+ hindi "गलत डिफ़ॉलà¥à¤Ÿ मान '%-.128s' कॉलम '%.192s' के लिà¤"
ER_KILL_QUERY_DENIED_ERROR
eng "You are not owner of query %lu"
ger "Sie sind nicht Eigentümer von Abfrage %lu"
+ hindi "आप कà¥à¤µà¥‡à¤°à¥€ %lu के OWNER नहीं हैं"
rus "Ð’Ñ‹ не ÑвлÑетеÑÑŒ владельцем запроÑа %lu"
ER_NO_EIS_FOR_FIELD
eng "Engine-independent statistics are not collected for column '%s'"
+ hindi "Engine-independent सांखà¥à¤¯à¤¿à¤•ी कॉलम '%s' के लिठà¤à¤•तà¥à¤°à¤¿à¤¤ नहीं किया जा रहा है"
ukr "Ðезалежна від типу таблиці ÑтатиÑтика не збираєтьÑÑ Ð´Ð»Ñ ÑÑ‚Ð¾Ð²Ð±Ñ†Ñ '%s'"
ER_WARN_AGGFUNC_DEPENDENCE
eng "Aggregate function '%-.192s)' of SELECT #%d belongs to SELECT #%d"
@@ -7455,6 +7674,72 @@ ER_SLAVE_SAME_ID
eng "A slave with the same server_uuid/server_id as this slave has connected to the master"
ER_FLASHBACK_NOT_SUPPORTED
eng "Flashback does not support %s %s"
+
+# MARIAROCKS-TODO: Should we add RocksDB error messages here or use some other
+# solution?
+ER_KEYS_OUT_OF_ORDER
+ eng "Keys are out order during bulk load"
+
+ER_OVERLAPPING_KEYS
+ eng "Bulk load rows overlap existing rows"
+
+ER_REQUIRE_ROW_BINLOG_FORMAT
+ eng "Can't execute updates on master with binlog_format != ROW."
+
+ER_ISOLATION_MODE_NOT_SUPPORTED
+ eng "MyRocks supports only READ COMMITTED and REPEATABLE READ isolation levels. Please change from current isolation level %s"
+
+ER_ON_DUPLICATE_DISABLED
+ eng "When unique checking is disabled in MyRocks, INSERT,UPDATE,LOAD statements with clauses that update or replace the key (i.e. INSERT ON DUPLICATE KEY UPDATE, REPLACE) are not allowed. Query: %s"
+
+ER_UPDATES_WITH_CONSISTENT_SNAPSHOT
+ eng "Can't execute updates when you started a transaction with START TRANSACTION WITH CONSISTENT [ROCKSDB] SNAPSHOT."
+
+ER_ROLLBACK_ONLY
+ eng "This transaction was rolled back and cannot be committed. Only supported operation is to roll it back, so all pending changes will be discarded. Please restart another transaction."
+
+ER_ROLLBACK_TO_SAVEPOINT
+ eng "MyRocks currently does not support ROLLBACK TO SAVEPOINT if modifying rows."
+
+ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
+ eng "Only REPEATABLE READ isolation level is supported for START TRANSACTION WITH CONSISTENT SNAPSHOT in RocksDB Storage Engine."
+
+ER_UNSUPPORTED_COLLATION
+ eng "Unsupported collation on string indexed column %s.%s Use binary collation (%s)."
+
+ER_METADATA_INCONSISTENCY
+ eng "Table '%s' does not exist, but metadata information exists inside MyRocks. This is a sign of data inconsistency. Please check if '%s.frm' exists, and try to restore it if it does not exist."
+
+ER_KEY_CREATE_DURING_ALTER
+ eng "MyRocks failed creating new key definitions during alter."
+
+ER_SK_POPULATE_DURING_ALTER
+ eng "MyRocks failed populating secondary key during alter."
+
+ER_CF_DIFFERENT
+ eng "Column family ('%s') flag (%d) is different from an existing flag (%d). Assign a new CF flag, or do not change existing CF flag."
+
+ER_RDB_STATUS_GENERAL
+ eng "Status error %d received from RocksDB: %s"
+
+ER_RDB_STATUS_MSG
+ eng "%s, Status error %d received from RocksDB: %s"
+
+ER_NET_OK_PACKET_TOO_LARGE
+ eng "OK packet too large"
+
+ER_RDB_TTL_UNSUPPORTED
+ eng "TTL support is currently disabled when table has secondary indexes or hidden PK."
+
+ER_RDB_TTL_COL_FORMAT
+ eng "TTL column (%s) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration."
+
+ER_RDB_TTL_DURATION_FORMAT
+ eng "TTL duration (%s) in MyRocks must be an unsigned non-null 64-bit integer."
+
+ER_PER_INDEX_CF_DEPRECATED
+ eng "The per-index column family option has been deprecated"
+
ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
eng "Illegal parameter data types %s and %s for operation '%s'"
ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
diff --git a/sql/sp.cc b/sql/sp.cc
index 87061315987..015e2f77b21 100644
--- a/sql/sp.cc
+++ b/sql/sp.cc
@@ -711,6 +711,23 @@ Sp_handler::db_find_routine(THD *thd,
}
+int
+Sp_handler::db_find_and_cache_routine(THD *thd,
+ const Database_qualified_name *name,
+ sp_head **sp) const
+{
+ int rc= db_find_routine(thd, name, sp);
+ if (rc == SP_OK)
+ {
+ sp_cache_insert(get_cache(thd), *sp);
+ DBUG_PRINT("info", ("added new: 0x%lx, level: %lu, flags %x",
+ (ulong) sp[0], sp[0]->m_recursion_level,
+ sp[0]->m_flags));
+ }
+ return rc;
+}
+
+
/**
Silence DEPRECATED SYNTAX warnings when loading a stored procedure
into the cache.
@@ -1335,6 +1352,26 @@ done:
}
+static bool
+append_suid(String *buf, enum_sp_suid_behaviour suid)
+{
+ return suid == SP_IS_NOT_SUID &&
+ buf->append(STRING_WITH_LEN(" SQL SECURITY INVOKER\n"));
+}
+
+
+static bool
+append_comment(String *buf, const LEX_CSTRING &comment)
+{
+ if (!comment.length)
+ return false;
+ if (buf->append(STRING_WITH_LEN(" COMMENT ")))
+ return true;
+ append_unescaped(buf, comment.str, comment.length);
+ return buf->append('\n');
+}
+
+
/**
Delete the record for the stored routine object from mysql.proc
and do binary logging.
@@ -1711,6 +1748,85 @@ Sp_handler::sp_show_create_routine(THD *thd,
}
+/*
+ In case of recursions, we create multiple copies of the same SP.
+ This methods checks the current recursion depth.
+ In case if the recursion limit exceeded, it throws an error
+ and returns NULL.
+ Otherwise, depending on the current recursion level, it:
+ - either returns the original SP,
+ - or makes and returns a new clone of SP
+*/
+sp_head *
+Sp_handler::sp_clone_and_link_routine(THD *thd,
+ const Database_qualified_name *name,
+ sp_head *sp) const
+{
+ DBUG_ENTER("sp_link_routine");
+ ulong level;
+ sp_head *new_sp;
+ LEX_CSTRING returns= empty_clex_str;
+
+ /*
+ String buffer for RETURNS data type must have system charset;
+ 64 -- size of "returns" column of mysql.proc.
+ */
+ String retstr(64);
+ retstr.set_charset(sp->get_creation_ctx()->get_client_cs());
+
+ DBUG_PRINT("info", ("found: 0x%lx", (ulong)sp));
+ if (sp->m_first_free_instance)
+ {
+ DBUG_PRINT("info", ("first free: 0x%lx level: %lu flags %x",
+ (ulong)sp->m_first_free_instance,
+ sp->m_first_free_instance->m_recursion_level,
+ sp->m_first_free_instance->m_flags));
+ DBUG_ASSERT(!(sp->m_first_free_instance->m_flags & sp_head::IS_INVOKED));
+ if (sp->m_first_free_instance->m_recursion_level > recursion_depth(thd))
+ {
+ recursion_level_error(thd, sp);
+ DBUG_RETURN(0);
+ }
+ DBUG_RETURN(sp->m_first_free_instance);
+ }
+ /*
+ Actually depth could be +1 than the actual value in case a SP calls
+ SHOW CREATE PROCEDURE. Hence, the linked list could hold up to one more
+ instance.
+ */
+
+ level= sp->m_last_cached_sp->m_recursion_level + 1;
+ if (level > recursion_depth(thd))
+ {
+ recursion_level_error(thd, sp);
+ DBUG_RETURN(0);
+ }
+
+ if (type() == TYPE_ENUM_FUNCTION)
+ {
+ sp_returns_type(thd, retstr, sp);
+ returns= retstr.lex_cstring();
+ }
+ if (db_load_routine(thd, name, &new_sp,
+ sp->m_sql_mode, sp->m_params, returns,
+ sp->m_body, sp->chistics(),
+ sp->m_definer,
+ sp->m_created, sp->m_modified,
+ sp->get_creation_ctx()) == SP_OK)
+ {
+ sp->m_last_cached_sp->m_next_cached_sp= new_sp;
+ new_sp->m_recursion_level= level;
+ new_sp->m_first_instance= sp;
+ sp->m_last_cached_sp= sp->m_first_free_instance= new_sp;
+ DBUG_PRINT("info", ("added level: 0x%lx, level: %lu, flags %x",
+ (ulong)new_sp, new_sp->m_recursion_level,
+ new_sp->m_flags));
+ DBUG_RETURN(new_sp);
+ }
+ DBUG_RETURN(0);
+}
+
+
/**
Obtain object representing stored procedure/function by its name from
stored procedures cache and looking into mysql.proc if needed.
@@ -1731,88 +1847,18 @@ sp_head *
Sp_handler::sp_find_routine(THD *thd, const Database_qualified_name *name,
bool cache_only) const
{
- sp_cache **cp= get_cache(thd);
- sp_head *sp;
DBUG_ENTER("sp_find_routine");
DBUG_PRINT("enter", ("name: %.*s.%.*s type: %s cache only %d",
(int) name->m_db.length, name->m_db.str,
(int) name->m_name.length, name->m_name.str,
type_str(), cache_only));
+ sp_cache **cp= get_cache(thd);
+ sp_head *sp;
if ((sp= sp_cache_lookup(cp, name)))
- {
- ulong level;
- sp_head *new_sp;
- LEX_CSTRING returns= empty_clex_str;
-
- /*
- String buffer for RETURNS data type must have system charset;
- 64 -- size of "returns" column of mysql.proc.
- */
- String retstr(64);
- retstr.set_charset(sp->get_creation_ctx()->get_client_cs());
-
- DBUG_PRINT("info", ("found: 0x%lx", (ulong)sp));
- if (sp->m_first_free_instance)
- {
- DBUG_PRINT("info", ("first free: 0x%lx level: %lu flags %x",
- (ulong)sp->m_first_free_instance,
- sp->m_first_free_instance->m_recursion_level,
- sp->m_first_free_instance->m_flags));
- DBUG_ASSERT(!(sp->m_first_free_instance->m_flags & sp_head::IS_INVOKED));
- if (sp->m_first_free_instance->m_recursion_level > recursion_depth(thd))
- {
- recursion_level_error(thd, sp);
- DBUG_RETURN(0);
- }
- DBUG_RETURN(sp->m_first_free_instance);
- }
- /*
- Actually depth could be +1 than the actual value in case a SP calls
- SHOW CREATE PROCEDURE. Hence, the linked list could hold up to one more
- instance.
- */
-
- level= sp->m_last_cached_sp->m_recursion_level + 1;
- if (level > recursion_depth(thd))
- {
- recursion_level_error(thd, sp);
- DBUG_RETURN(0);
- }
-
- if (type() == TYPE_ENUM_FUNCTION)
- {
- sp_returns_type(thd, retstr, sp);
- returns= retstr.lex_cstring();
- }
- if (db_load_routine(thd, name, &new_sp,
- sp->m_sql_mode, sp->m_params, returns,
- sp->m_body, sp->chistics(),
- sp->m_definer,
- sp->m_created, sp->m_modified,
- sp->get_creation_ctx()) == SP_OK)
- {
- sp->m_last_cached_sp->m_next_cached_sp= new_sp;
- new_sp->m_recursion_level= level;
- new_sp->m_first_instance= sp;
- sp->m_last_cached_sp= sp->m_first_free_instance= new_sp;
- DBUG_PRINT("info", ("added level: 0x%lx, level: %lu, flags %x",
- (ulong)new_sp, new_sp->m_recursion_level,
- new_sp->m_flags));
- DBUG_RETURN(new_sp);
- }
- DBUG_RETURN(0);
- }
+ DBUG_RETURN(sp_clone_and_link_routine(thd, name, sp));
if (!cache_only)
- {
- if (db_find_routine(thd, name, &sp) == SP_OK)
- {
- sp_cache_insert(cp, sp);
- DBUG_PRINT("info", ("added new: 0x%lx, level: %lu, flags %x",
- (ulong)sp, sp->m_recursion_level,
- sp->m_flags));
- }
- }
+ db_find_and_cache_routine(thd, name, &sp);
DBUG_RETURN(sp);
}
@@ -2137,10 +2183,9 @@ int Sp_handler::sp_cache_routine(THD *thd,
DBUG_RETURN(SP_OK);
}
- switch ((ret= db_find_routine(thd, name, sp)))
+ switch ((ret= db_find_and_cache_routine(thd, name, sp)))
{
case SP_OK:
- sp_cache_insert(spc, *sp);
break;
case SP_KEY_NOT_FOUND:
ret= SP_OK;
@@ -2243,14 +2288,8 @@ Sp_handler::show_create_sp(THD *thd, String *buf,
}
if (chistics.detistic)
buf->append(STRING_WITH_LEN(" DETERMINISTIC\n"));
- if (chistics.suid == SP_IS_NOT_SUID)
- buf->append(STRING_WITH_LEN(" SQL SECURITY INVOKER\n"));
- if (chistics.comment.length)
- {
- buf->append(STRING_WITH_LEN(" COMMENT "));
- append_unescaped(buf, chistics.comment.str, chistics.comment.length);
- buf->append('\n');
- }
+ append_suid(buf, chistics.suid);
+ append_comment(buf, chistics.comment);
buf->append(body);
thd->variables.sql_mode= old_sql_mode;
return false;
diff --git a/sql/sp.h b/sql/sp.h
index 94638299ca3..ab307a3064e 100644
--- a/sql/sp.h
+++ b/sql/sp.h
@@ -60,6 +60,9 @@ class Sp_handler
TABLE *table) const;
int db_find_routine(THD *thd, const Database_qualified_name *name,
sp_head **sphp) const;
+ int db_find_and_cache_routine(THD *thd,
+ const Database_qualified_name *name,
+ sp_head **sp) const;
int db_load_routine(THD *thd, const Database_qualified_name *name,
sp_head **sphp,
sql_mode_t sql_mode,
@@ -73,7 +76,12 @@ class Sp_handler
int sp_drop_routine_internal(THD *thd,
const Database_qualified_name *name,
TABLE *table) const;
+
+ sp_head *sp_clone_and_link_routine(THD *thd,
+ const Database_qualified_name *name,
+ sp_head *sp) const;
public:
+ virtual ~Sp_handler() {}
static const Sp_handler *handler(enum enum_sql_command cmd);
static const Sp_handler *handler(stored_procedure_type type);
static const Sp_handler *handler(MDL_key::enum_mdl_namespace ns);
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index 9737169ede6..1f71139b9af 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -480,7 +480,7 @@ sp_name::sp_name(const MDL_key *key, char *qname_buff)
*/
bool
-check_routine_name(LEX_CSTRING *ident)
+check_routine_name(const LEX_CSTRING *ident)
{
DBUG_ASSERT(ident);
DBUG_ASSERT(ident->str);
diff --git a/sql/sp_head.h b/sql/sp_head.h
index f1d89a083ab..f9a021d535e 100644
--- a/sql/sp_head.h
+++ b/sql/sp_head.h
@@ -125,7 +125,7 @@ public:
bool
-check_routine_name(LEX_CSTRING *ident);
+check_routine_name(const LEX_CSTRING *ident);
class sp_head :private Query_arena,
public Database_qualified_name
diff --git a/sql/spatial.cc b/sql/spatial.cc
index 7c9d8bb771e..1ba754b6b13 100644
--- a/sql/spatial.cc
+++ b/sql/spatial.cc
@@ -21,6 +21,10 @@
#include "gstream.h" // Gis_read_stream
#include "sql_string.h" // String
+/* This is from item_func.h. Didn't want to #include the whole file. */
+double my_double_round(double value, longlong dec, bool dec_unsigned,
+ bool truncate);
+
#ifdef HAVE_SPATIAL
/*
@@ -250,6 +254,8 @@ static const uchar feature_type[]= "feature";
static const int feature_type_len= 7;
static const uchar feature_coll_type[]= "featurecollection";
static const int feature_coll_type_len= 17;
+static const uchar bbox_keyname[]= "bbox";
+static const int bbox_keyname_len= 4;
int Geometry::as_json(String *wkt, uint max_dec_digits, const char **end)
@@ -258,7 +264,7 @@ int Geometry::as_json(String *wkt, uint max_dec_digits, const char **end)
if (wkt->reserve(4 + type_keyname_len + 2 + len + 2 + 2 +
coord_keyname_len + 4, 512))
return 1;
- wkt->qs_append("{\"", 2);
+ wkt->qs_append("\"", 1);
wkt->qs_append((const char *) type_keyname, type_keyname_len);
wkt->qs_append("\": \"", 4);
wkt->qs_append(get_class_info()->m_geojson_name.str, len);
@@ -269,10 +275,35 @@ int Geometry::as_json(String *wkt, uint max_dec_digits, const char **end)
wkt->qs_append((const char *) coord_keyname, coord_keyname_len);
wkt->qs_append("\": ", 3);
- if (get_data_as_json(wkt, max_dec_digits, end) ||
- wkt->reserve(1))
+ if (get_data_as_json(wkt, max_dec_digits, end))
+ return 1;
+
+ return 0;
+}
+
+
+int Geometry::bbox_as_json(String *wkt)
+{
+ MBR mbr;
+ const char *end;
+ if (wkt->reserve(5 + bbox_keyname_len + (FLOATING_POINT_DECIMALS+2)*4, 512))
+ return 1;
+ wkt->qs_append("\"", 1);
+ wkt->qs_append((const char *) bbox_keyname, bbox_keyname_len);
+ wkt->qs_append("\": [", 4);
+
+ if (get_mbr(&mbr, &end))
return 1;
- wkt->qs_append('}');
+
+ wkt->qs_append(mbr.xmin);
+ wkt->qs_append(", ", 2);
+ wkt->qs_append(mbr.ymin);
+ wkt->qs_append(", ", 2);
+ wkt->qs_append(mbr.xmax);
+ wkt->qs_append(", ", 2);
+ wkt->qs_append(mbr.ymax);
+ wkt->qs_append("]", 1);
+
return 0;
}
@@ -339,7 +370,7 @@ Geometry *Geometry::create_from_wkb(Geometry_buffer *buffer,
Geometry *Geometry::create_from_json(Geometry_buffer *buffer,
- json_engine_t *je, String *res)
+ json_engine_t *je, bool er_on_3D, String *res)
{
Class_info *ci= NULL;
const uchar *coord_start= NULL, *geom_start= NULL,
@@ -514,14 +545,14 @@ create_geom:
result= (*ci->m_create_func)(buffer->data);
res->q_append((char) wkb_ndr);
res->q_append((uint32) result->get_class_info()->m_type_id);
- if (result->init_from_json(je, res))
+ if (result->init_from_json(je, er_on_3D, res))
goto err_return;
return result;
handle_geometry_key:
json_scan_start(je, je->s.cs, geometry_start, je->s.str_end);
- return create_from_json(buffer, je, res);
+ return create_from_json(buffer, je, er_on_3D, res);
err_return:
return NULL;
@@ -670,6 +701,11 @@ static void append_json_point(String *txt, uint max_dec, const char *data)
{
double x,y;
get_point(&x, &y, data);
+ if (max_dec < FLOATING_POINT_DECIMALS)
+ {
+ x= my_double_round(x, max_dec, FALSE, FALSE);
+ y= my_double_round(y, max_dec, FALSE, FALSE);
+ }
txt->qs_append('[');
txt->qs_append(x);
txt->qs_append(", ", 2);
@@ -780,7 +816,8 @@ uint Gis_point::init_from_wkb(const char *wkb, uint len,
}
-static int read_point_from_json(json_engine_t *je, double *x, double *y)
+static int read_point_from_json(json_engine_t *je, bool er_on_3D,
+ double *x, double *y)
{
int n_coord= 0, err;
double tmp, *d;
@@ -803,14 +840,17 @@ static int read_point_from_json(json_engine_t *je, double *x, double *y)
n_coord++;
}
- return 0;
+ if (n_coord <= 2 || !er_on_3D)
+ return 0;
+ je->s.error= Geometry::GEOJ_DIMENSION_NOT_SUPPORTED;
+ return 1;
bad_coordinates:
je->s.error= Geometry::GEOJ_INCORRECT_GEOJSON;
return 1;
}
-bool Gis_point::init_from_json(json_engine_t *je, String *wkb)
+bool Gis_point::init_from_json(json_engine_t *je, bool er_on_3D, String *wkb)
{
double x, y;
if (json_read_value(je))
@@ -822,7 +862,7 @@ bool Gis_point::init_from_json(json_engine_t *je, String *wkb)
return TRUE;
}
- if (read_point_from_json(je, &x, &y) ||
+ if (read_point_from_json(je, er_on_3D, &x, &y) ||
wkb->reserve(POINT_DATA_SIZE))
return TRUE;
@@ -971,7 +1011,8 @@ uint Gis_line_string::init_from_wkb(const char *wkb, uint len,
}
-bool Gis_line_string::init_from_json(json_engine_t *je, String *wkb)
+bool Gis_line_string::init_from_json(json_engine_t *je, bool er_on_3D,
+ String *wkb)
{
uint32 n_points= 0;
uint32 np_pos= wkb->length();
@@ -994,7 +1035,7 @@ bool Gis_line_string::init_from_json(json_engine_t *je, String *wkb)
{
DBUG_ASSERT(je->state == JST_VALUE);
- if (p.init_from_json(je, wkb))
+ if (p.init_from_json(je, er_on_3D, wkb))
return TRUE;
n_points++;
}
@@ -1364,7 +1405,7 @@ uint Gis_polygon::init_from_wkb(const char *wkb, uint len, wkbByteOrder bo,
}
-bool Gis_polygon::init_from_json(json_engine_t *je, String *wkb)
+bool Gis_polygon::init_from_json(json_engine_t *je, bool er_on_3D, String *wkb)
{
uint32 n_linear_rings= 0;
uint32 lr_pos= wkb->length();
@@ -1389,7 +1430,7 @@ bool Gis_polygon::init_from_json(json_engine_t *je, String *wkb)
DBUG_ASSERT(je->state == JST_VALUE);
uint32 ls_pos=wkb->length();
- if (ls.init_from_json(je, wkb))
+ if (ls.init_from_json(je, er_on_3D, wkb))
return TRUE;
ls.set_data_ptr(wkb->ptr() + ls_pos, wkb->length() - ls_pos);
if (ls.is_closed(&closed) || !closed)
@@ -1855,7 +1896,8 @@ uint Gis_multi_point::init_from_wkb(const char *wkb, uint len, wkbByteOrder bo,
}
-bool Gis_multi_point::init_from_json(json_engine_t *je, String *wkb)
+bool Gis_multi_point::init_from_json(json_engine_t *je, bool er_on_3D,
+ String *wkb)
{
uint32 n_points= 0;
uint32 np_pos= wkb->length();
@@ -1883,7 +1925,7 @@ bool Gis_multi_point::init_from_json(json_engine_t *je, String *wkb)
wkb->q_append((char) wkb_ndr);
wkb->q_append((uint32) wkb_point);
- if (p.init_from_json(je, wkb))
+ if (p.init_from_json(je, er_on_3D, wkb))
return TRUE;
n_points++;
}
@@ -2123,7 +2165,8 @@ uint Gis_multi_line_string::init_from_wkb(const char *wkb, uint len,
}
-bool Gis_multi_line_string::init_from_json(json_engine_t *je, String *wkb)
+bool Gis_multi_line_string::init_from_json(json_engine_t *je, bool er_on_3D,
+ String *wkb)
{
uint32 n_line_strings= 0;
uint32 ls_pos= wkb->length();
@@ -2151,7 +2194,7 @@ bool Gis_multi_line_string::init_from_json(json_engine_t *je, String *wkb)
wkb->q_append((char) wkb_ndr);
wkb->q_append((uint32) wkb_linestring);
- if (ls.init_from_json(je, wkb))
+ if (ls.init_from_json(je, er_on_3D, wkb))
return TRUE;
n_line_strings++;
@@ -2511,7 +2554,8 @@ uint Gis_multi_polygon::init_from_opresult(String *bin,
}
-bool Gis_multi_polygon::init_from_json(json_engine_t *je, String *wkb)
+bool Gis_multi_polygon::init_from_json(json_engine_t *je, bool er_on_3D,
+ String *wkb)
{
uint32 n_polygons= 0;
int np_pos= wkb->length();
@@ -2539,7 +2583,7 @@ bool Gis_multi_polygon::init_from_json(json_engine_t *je, String *wkb)
wkb->q_append((char) wkb_ndr);
wkb->q_append((uint32) wkb_polygon);
- if (p.init_from_json(je, wkb))
+ if (p.init_from_json(je, er_on_3D, wkb))
return TRUE;
n_polygons++;
@@ -2986,7 +3030,8 @@ uint Gis_geometry_collection::init_from_wkb(const char *wkb, uint len,
}
-bool Gis_geometry_collection::init_from_json(json_engine_t *je, String *wkb)
+bool Gis_geometry_collection::init_from_json(json_engine_t *je, bool er_on_3D,
+ String *wkb)
{
uint32 n_objects= 0;
uint32 no_pos= wkb->length();
@@ -3012,7 +3057,7 @@ bool Gis_geometry_collection::init_from_json(json_engine_t *je, String *wkb)
DBUG_ASSERT(je->state == JST_VALUE);
- if (!(g= create_from_json(&buffer, je, wkb)))
+ if (!(g= create_from_json(&buffer, je, er_on_3D, wkb)))
return TRUE;
*je= sav_je;
@@ -3097,12 +3142,14 @@ bool Gis_geometry_collection::get_data_as_json(String *txt, uint max_dec_digits,
if (!(geom= create_by_typeid(&buffer, wkb_type)))
return 1;
geom->set_data_ptr(data, (uint) (m_data_end - data));
- if (geom->as_json(txt, max_dec_digits, &data) ||
- txt->append(STRING_WITH_LEN(", "), 512))
+ if (txt->append("{", 1) ||
+ geom->as_json(txt, max_dec_digits, &data) ||
+ txt->append(STRING_WITH_LEN("}, "), 512))
return 1;
}
txt->length(txt->length() - 2);
- txt->qs_append(']');
+ if (txt->append("]", 1))
+ return 1;
*end= data;
return 0;
diff --git a/sql/spatial.h b/sql/spatial.h
index 3858c0d2e51..78e850dc2d7 100644
--- a/sql/spatial.h
+++ b/sql/spatial.h
@@ -255,6 +255,7 @@ public:
GEOJ_INCORRECT_GEOJSON= 1,
GEOJ_TOO_FEW_POINTS= 2,
GEOJ_POLYGON_NOT_CLOSED= 3,
+ GEOJ_DIMENSION_NOT_SUPPORTED= 4,
};
@@ -281,7 +282,8 @@ public:
virtual uint init_from_opresult(String *bin,
const char *opres, uint res_len)
{ return init_from_wkb(opres + 4, UINT_MAX32, wkb_ndr, bin) + 4; }
- virtual bool init_from_json(json_engine_t *je, String *wkb) {return true;}
+ virtual bool init_from_json(json_engine_t *je, bool er_on_3D, String *wkb)
+ { return true; }
virtual bool get_data_as_wkt(String *txt, const char **end) const=0;
virtual bool get_data_as_json(String *txt, uint max_dec_digits,
@@ -315,12 +317,13 @@ public:
bool init_stream=1);
static Geometry *create_from_wkb(Geometry_buffer *buffer,
const char *wkb, uint32 len, String *res);
- static Geometry *create_from_json(Geometry_buffer *buffer,
- json_engine_t *je, String *res);
+ static Geometry *create_from_json(Geometry_buffer *buffer, json_engine_t *je,
+ bool er_on_3D, String *res);
static Geometry *create_from_opresult(Geometry_buffer *g_buf,
String *res, Gcalc_result_receiver &rr);
int as_wkt(String *wkt, const char **end);
int as_json(String *wkt, uint max_dec_digits, const char **end);
+ int bbox_as_json(String *wkt);
inline void set_data_ptr(const char *data, uint32 data_len)
{
@@ -395,7 +398,7 @@ public:
uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
- bool init_from_json(json_engine_t *je, String *wkb);
+ bool init_from_json(json_engine_t *je, bool er_on_3D, String *wkb);
bool get_data_as_wkt(String *txt, const char **end) const;
bool get_data_as_json(String *txt, uint max_dec_digits,
const char **end) const;
@@ -450,7 +453,7 @@ public:
uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
- bool init_from_json(json_engine_t *je, String *wkb);
+ bool init_from_json(json_engine_t *je, bool er_on_3D, String *wkb);
bool get_data_as_wkt(String *txt, const char **end) const;
bool get_data_as_json(String *txt, uint max_dec_digits,
const char **end) const;
@@ -484,7 +487,7 @@ public:
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
uint init_from_opresult(String *bin, const char *opres, uint res_len);
- bool init_from_json(json_engine_t *je, String *wkb);
+ bool init_from_json(json_engine_t *je, bool er_on_3D, String *wkb);
bool get_data_as_wkt(String *txt, const char **end) const;
bool get_data_as_json(String *txt, uint max_dec_digits,
const char **end) const;
@@ -521,7 +524,7 @@ public:
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
uint init_from_opresult(String *bin, const char *opres, uint res_len);
- bool init_from_json(json_engine_t *je, String *wkb);
+ bool init_from_json(json_engine_t *je, bool er_on_3D, String *wkb);
bool get_data_as_wkt(String *txt, const char **end) const;
bool get_data_as_json(String *txt, uint max_dec_digits,
const char **end) const;
@@ -550,7 +553,7 @@ public:
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
uint init_from_opresult(String *bin, const char *opres, uint res_len);
- bool init_from_json(json_engine_t *je, String *wkb);
+ bool init_from_json(json_engine_t *je, bool er_on_3D, String *wkb);
bool get_data_as_wkt(String *txt, const char **end) const;
bool get_data_as_json(String *txt, uint max_dec_digits,
const char **end) const;
@@ -580,7 +583,7 @@ public:
uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
- bool init_from_json(json_engine_t *je, String *wkb);
+ bool init_from_json(json_engine_t *je, bool er_on_3D, String *wkb);
bool get_data_as_wkt(String *txt, const char **end) const;
bool get_data_as_json(String *txt, uint max_dec_digits,
const char **end) const;
@@ -612,7 +615,7 @@ public:
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
uint init_from_opresult(String *bin, const char *opres, uint res_len);
- bool init_from_json(json_engine_t *je, String *wkb);
+ bool init_from_json(json_engine_t *je, bool er_on_3D, String *wkb);
bool get_data_as_wkt(String *txt, const char **end) const;
bool get_data_as_json(String *txt, uint max_dec_digits,
const char **end) const;
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index c2b2bdc54b5..f82c68e1889 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -362,8 +362,8 @@ static bool show_database_privileges(THD *, const char *, const char *,
char *, size_t);
static bool show_table_and_column_privileges(THD *, const char *, const char *,
char *, size_t);
-static int show_routine_grants(THD *, const char *, const char *, HASH *,
- const char *, int, char *, int);
+static int show_routine_grants(THD *, const char *, const char *,
+ const Sp_handler *sph, char *, int);
class Grant_tables;
class User_table;
@@ -8484,12 +8484,12 @@ static bool print_grants_for_role(THD *thd, ACL_ROLE * role)
if (show_table_and_column_privileges(thd, role->user.str, "", buff, sizeof(buff)))
return TRUE;
- if (show_routine_grants(thd, role->user.str, "", &proc_priv_hash,
- STRING_WITH_LEN("PROCEDURE"), buff, sizeof(buff)))
+ if (show_routine_grants(thd, role->user.str, "", &sp_handler_procedure,
+ buff, sizeof(buff)))
return TRUE;
- if (show_routine_grants(thd, role->user.str, "", &func_priv_hash,
- STRING_WITH_LEN("FUNCTION"), buff, sizeof(buff)))
+ if (show_routine_grants(thd, role->user.str, "", &sp_handler_function,
+ buff, sizeof(buff)))
return TRUE;
return FALSE;
@@ -8709,12 +8709,12 @@ bool mysql_show_grants(THD *thd, LEX_USER *lex_user)
if (show_table_and_column_privileges(thd, username, hostname, buff, sizeof(buff)))
goto end;
- if (show_routine_grants(thd, username, hostname, &proc_priv_hash,
- STRING_WITH_LEN("PROCEDURE"), buff, sizeof(buff)))
+ if (show_routine_grants(thd, username, hostname, &sp_handler_procedure,
+ buff, sizeof(buff)))
goto end;
- if (show_routine_grants(thd, username, hostname, &func_priv_hash,
- STRING_WITH_LEN("FUNCTION"), buff, sizeof(buff)))
+ if (show_routine_grants(thd, username, hostname, &sp_handler_function,
+ buff, sizeof(buff)))
goto end;
if (show_proxy_grants(thd, username, hostname, buff, sizeof(buff)))
@@ -9094,12 +9094,13 @@ static bool show_table_and_column_privileges(THD *thd, const char *username,
static int show_routine_grants(THD* thd,
const char *username, const char *hostname,
- HASH *hash, const char *type, int typelen,
+ const Sp_handler *sph,
char *buff, int buffsize)
{
uint counter, index;
int error= 0;
Protocol *protocol= thd->protocol;
+ HASH *hash= sph->get_priv_hash();
/* Add routine access */
for (index=0 ; index < hash->records ; index++)
{
@@ -9153,7 +9154,7 @@ static int show_routine_grants(THD* thd,
}
}
global.append(STRING_WITH_LEN(" ON "));
- global.append(type,typelen);
+ global.append(sph->type_lex_cstring());
global.append(' ');
append_identifier(thd, &global, grant_proc->db,
strlen(grant_proc->db));
diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc
index e274e20d7e1..56909364f2a 100644
--- a/sql/sql_derived.cc
+++ b/sql/sql_derived.cc
@@ -1055,11 +1055,20 @@ bool mysql_derived_fill(THD *thd, LEX *lex, TABLE_LIST *derived)
select_unit *derived_result= derived->derived_result;
SELECT_LEX *save_current_select= lex->current_select;
- if (!derived_is_recursive && (unit->uncacheable & UNCACHEABLE_DEPENDENT))
+ if (unit->executed && !derived_is_recursive &&
+ (unit->uncacheable & UNCACHEABLE_DEPENDENT))
{
if ((res= derived->table->file->ha_delete_all_rows()))
goto err;
- unit->first_select()->join->first_record= false;
+ JOIN *join= unit->first_select()->join;
+ join->first_record= false;
+ for (uint i= join->top_join_tab_count;
+ i < join->top_join_tab_count + join->aggr_tables;
+ i++)
+ {
+ if ((res= join->join_tab[i].table->file->ha_delete_all_rows()))
+ goto err;
+ }
}
if (derived_is_recursive)
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 5978de06437..034cb62bbf4 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -5803,7 +5803,7 @@ bool LEX::sp_block_finalize(THD *thd, const Lex_spblock_st spblock,
}
-sp_name *LEX::make_sp_name(THD *thd, LEX_CSTRING *name)
+sp_name *LEX::make_sp_name(THD *thd, const LEX_CSTRING *name)
{
sp_name *res;
LEX_CSTRING db;
@@ -5815,16 +5815,20 @@ sp_name *LEX::make_sp_name(THD *thd, LEX_CSTRING *name)
}
-sp_name *LEX::make_sp_name(THD *thd, LEX_CSTRING *name1, LEX_CSTRING *name2)
+sp_name *LEX::make_sp_name(THD *thd, const LEX_CSTRING *name1,
+ const LEX_CSTRING *name2)
{
sp_name *res;
- if (!name1->str || check_db_name((LEX_STRING*) name1))
+ LEX_CSTRING norm_name1;
+ if (!name1->str ||
+ !thd->make_lex_string(&norm_name1, name1->str, name1->length) ||
+ check_db_name((LEX_STRING *) &norm_name1))
{
my_error(ER_WRONG_DB_NAME, MYF(0), name1->str);
return NULL;
}
if (check_routine_name(name2) ||
- (!(res= new (thd->mem_root) sp_name(name1, name2, true))))
+ (!(res= new (thd->mem_root) sp_name(&norm_name1, name2, true))))
return NULL;
return res;
}
@@ -6575,6 +6579,18 @@ Item *LEX::create_item_limit(THD *thd,
}
+bool LEX::set_user_variable(THD *thd, const LEX_CSTRING *name, Item *val)
+{
+ Item_func_set_user_var *item;
+ set_var_user *var;
+ if (!(item= new (thd->mem_root) Item_func_set_user_var(thd, name, val)) ||
+ !(var= new (thd->mem_root) set_var_user(item)))
+ return true;
+ var_list.push_back(var, thd->mem_root);
+ return false;
+}
+
+
/*
Perform assignment for a trigger, a system variable, or an SP variable.
"variable" be previously set by init_internal_variable(variable, name).
@@ -7106,3 +7122,42 @@ bool LEX::add_create_view(THD *thd, DDL_options_st ddl,
return true;
return create_or_alter_view_finalize(thd, table_ident);
}
+
+
+bool LEX::call_statement_start(THD *thd, sp_name *name)
+{
+ sql_command= SQLCOM_CALL;
+ spname= name;
+ value_list.empty();
+ sp_handler_procedure.add_used_routine(this, thd, name);
+ return false;
+}
+
+
+bool LEX::call_statement_start(THD *thd, const LEX_CSTRING *name)
+{
+ sp_name *spname= make_sp_name(thd, name);
+ return !spname || call_statement_start(thd, spname);
+}
+
+
+bool LEX::call_statement_start(THD *thd, const LEX_CSTRING *name1,
+ const LEX_CSTRING *name2)
+{
+ sp_name *spname= make_sp_name(thd, name1, name2);
+ return !spname || call_statement_start(thd, spname);
+}
+
+
+bool LEX::add_grant_command(THD *thd, enum_sql_command sql_command_arg,
+ stored_procedure_type type_arg)
+{
+ if (columns.elements)
+ {
+ thd->parse_error();
+ return true;
+ }
+ sql_command= sql_command_arg,
+ type= type_arg;
+ return false;
+}
diff --git a/sql/sql_lex.h b/sql/sql_lex.h
index d92decd12e2..6bd7f78822c 100644
--- a/sql/sql_lex.h
+++ b/sql/sql_lex.h
@@ -3154,9 +3154,11 @@ public:
bool set_trigger_new_row(LEX_CSTRING *name, Item *val);
bool set_system_variable(struct sys_var_with_base *tmp,
enum enum_var_type var_type, Item *val);
+ bool set_user_variable(THD *thd, const LEX_CSTRING *name, Item *val);
void set_stmt_init();
- sp_name *make_sp_name(THD *thd, LEX_CSTRING *name);
- sp_name *make_sp_name(THD *thd, LEX_CSTRING *name1, LEX_CSTRING *name2);
+ sp_name *make_sp_name(THD *thd, const LEX_CSTRING *name);
+ sp_name *make_sp_name(THD *thd, const LEX_CSTRING *name1,
+ const LEX_CSTRING *name2);
sp_head *make_sp_head(THD *thd, const sp_name *name, const Sp_handler *sph);
sp_head *make_sp_head_no_recursive(THD *thd, const sp_name *name,
const Sp_handler *sph)
@@ -3174,6 +3176,10 @@ public:
return NULL;
return make_sp_head_no_recursive(thd, name, sph);
}
+ bool call_statement_start(THD *thd, sp_name *name);
+ bool call_statement_start(THD *thd, const LEX_CSTRING *name);
+ bool call_statement_start(THD *thd, const LEX_CSTRING *name1,
+ const LEX_CSTRING *name2);
bool init_internal_variable(struct sys_var_with_base *variable,
const LEX_CSTRING *name);
bool init_internal_variable(struct sys_var_with_base *variable,
@@ -3652,6 +3658,9 @@ public:
bool add_create_view(THD *thd, DDL_options_st ddl,
uint16 algorithm, enum_view_suid suid,
Table_ident *table_ident);
+
+ bool add_grant_command(THD *thd, enum_sql_command sql_command_arg,
+ stored_procedure_type type_arg);
};
diff --git a/sql/sql_locale.cc b/sql/sql_locale.cc
index 58443a9a977..a2efa5e072c 100644
--- a/sql/sql_locale.cc
+++ b/sql/sql_locale.cc
@@ -32,7 +32,7 @@ enum err_msgs_index
{
en_US= 0, cs_CZ, da_DK, nl_NL, et_EE, fr_FR, de_DE, el_GR, hu_HU, it_IT,
ja_JP, ko_KR, no_NO, nn_NO, pl_PL, pt_PT, ro_RO, ru_RU, sr_RS, sk_SK,
- es_ES, sv_SE, uk_UA
+ es_ES, sv_SE, uk_UA, hi_IN
} ERR_MSGS_INDEX;
@@ -61,6 +61,7 @@ MY_LOCALE_ERRMSGS global_errmsgs[]=
{"spanish", NULL},
{"swedish", NULL},
{"ukrainian", NULL},
+ {"hindi", NULL},
{NULL, NULL}
};
@@ -889,7 +890,7 @@ MY_LOCALE my_locale_hi_IN
'.', /* decimal point hi_IN */
',', /* thousands_sep hi_IN */
"\x03", /* grouping hi_IN */
- &global_errmsgs[en_US]
+ &global_errmsgs[hi_IN]
);
/***** LOCALE END hi_IN *****/
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 056f4cefe16..c64ca8961ae 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -124,14 +124,6 @@ static void wsrep_mysql_parse(THD *thd, char *rawbuf, uint length,
@{
*/
-/* Used in error handling only */
-#define SP_COM_STRING(LP) \
- ((LP)->sql_command == SQLCOM_CREATE_SPFUNCTION || \
- (LP)->sql_command == SQLCOM_ALTER_FUNCTION || \
- (LP)->sql_command == SQLCOM_SHOW_CREATE_FUNC || \
- (LP)->sql_command == SQLCOM_DROP_FUNCTION ? \
- "FUNCTION" : "PROCEDURE")
-
static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables);
static void sql_kill(THD *thd, longlong id, killed_state state, killed_type type);
static void sql_kill_user(THD *thd, LEX_USER *user, killed_state state);
@@ -5007,7 +4999,8 @@ end_with_restore_list:
goto error;
if (!(res= sql_set_variables(thd, lex_var_list, true)))
{
- my_ok(thd);
+ if (!thd->is_error())
+ my_ok(thd);
}
else
{
@@ -5841,11 +5834,11 @@ end_with_restore_list:
break;
case SP_KEY_NOT_FOUND:
my_error(ER_SP_DOES_NOT_EXIST, MYF(0),
- SP_COM_STRING(lex), ErrConvDQName(lex->spname).ptr());
+ sph->type_str(), ErrConvDQName(lex->spname).ptr());
goto error;
default:
my_error(ER_SP_CANT_ALTER, MYF(0),
- SP_COM_STRING(lex), ErrConvDQName(lex->spname).ptr());
+ sph->type_str(), ErrConvDQName(lex->spname).ptr());
goto error;
}
break;
@@ -5950,18 +5943,18 @@ end_with_restore_list:
res= write_bin_log(thd, TRUE, thd->query(), thd->query_length());
push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
ER_SP_DOES_NOT_EXIST, ER_THD(thd, ER_SP_DOES_NOT_EXIST),
- SP_COM_STRING(lex),
+ sph->type_str(),
ErrConvDQName(lex->spname).ptr());
if (!res)
my_ok(thd);
break;
}
my_error(ER_SP_DOES_NOT_EXIST, MYF(0),
- SP_COM_STRING(lex), ErrConvDQName(lex->spname).ptr());
+ sph->type_str(), ErrConvDQName(lex->spname).ptr());
goto error;
default:
my_error(ER_SP_DROP_FAILED, MYF(0),
- SP_COM_STRING(lex), ErrConvDQName(lex->spname).ptr());
+ sph->type_str(), ErrConvDQName(lex->spname).ptr());
goto error;
}
break;
@@ -5992,7 +5985,7 @@ end_with_restore_list:
{
/* We don't distinguish between errors for now */
my_error(ER_SP_DOES_NOT_EXIST, MYF(0),
- SP_COM_STRING(lex), lex->spname->m_name.str);
+ sph->type_str(), lex->spname->m_name.str);
goto error;
}
break;
@@ -9677,7 +9670,7 @@ LEX_USER *create_definer(THD *thd, LEX_CSTRING *user_name,
The function is not used in existing code but can be useful later?
*/
-bool check_string_byte_length(LEX_CSTRING *str, uint err_msg,
+bool check_string_byte_length(const LEX_CSTRING *str, uint err_msg,
uint max_byte_length)
{
if (str->length <= max_byte_length)
@@ -9707,7 +9700,7 @@ bool check_string_byte_length(LEX_CSTRING *str, uint err_msg,
*/
-bool check_string_char_length(LEX_CSTRING *str, uint err_msg,
+bool check_string_char_length(const LEX_CSTRING *str, uint err_msg,
uint max_char_length, CHARSET_INFO *cs,
bool no_error)
{
@@ -9726,7 +9719,7 @@ bool check_string_char_length(LEX_CSTRING *str, uint err_msg,
}
-bool check_ident_length(LEX_CSTRING *ident)
+bool check_ident_length(const LEX_CSTRING *ident)
{
if (check_string_char_length(ident, 0, NAME_CHAR_LEN, system_charset_info, 1))
{
diff --git a/sql/sql_parse.h b/sql/sql_parse.h
index c97d824ffa1..b8d7bb46e08 100644
--- a/sql/sql_parse.h
+++ b/sql/sql_parse.h
@@ -73,12 +73,12 @@ LEX_USER *create_default_definer(THD *thd, bool role);
LEX_USER *create_definer(THD *thd, LEX_CSTRING *user_name, LEX_CSTRING *host_name);
LEX_USER *get_current_user(THD *thd, LEX_USER *user, bool lock=true);
bool sp_process_definer(THD *thd);
-bool check_string_byte_length(LEX_CSTRING *str, uint err_msg,
+bool check_string_byte_length(const LEX_CSTRING *str, uint err_msg,
uint max_byte_length);
-bool check_string_char_length(LEX_CSTRING *str, uint err_msg,
+bool check_string_char_length(const LEX_CSTRING *str, uint err_msg,
uint max_char_length, CHARSET_INFO *cs,
bool no_error);
-bool check_ident_length(LEX_CSTRING *ident);
+bool check_ident_length(const LEX_CSTRING *ident);
CHARSET_INFO* merge_charset_and_collation(CHARSET_INFO *cs, CHARSET_INFO *cl);
CHARSET_INFO *find_bin_collation(CHARSET_INFO *cs);
bool check_host_name(LEX_CSTRING *str);
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 4f3251ede91..da2862654b5 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -8686,7 +8686,7 @@ JOIN_TAB *first_top_level_tab(JOIN *join, enum enum_with_const_tables const_tbls
JOIN_TAB *tab= join->join_tab;
if (const_tbls == WITHOUT_CONST_TABLES)
{
- if (join->const_tables == join->table_count)
+ if (join->const_tables == join->table_count || !tab)
return NULL;
tab += join->const_tables;
}
@@ -8709,6 +8709,10 @@ JOIN_TAB *first_linear_tab(JOIN *join,
enum enum_with_const_tables const_tbls)
{
JOIN_TAB *first= join->join_tab;
+
+ if (!first)
+ return NULL;
+
if (const_tbls == WITHOUT_CONST_TABLES)
first+= join->const_tables;
@@ -8795,7 +8799,7 @@ JOIN_TAB *first_depth_first_tab(JOIN* join)
{
JOIN_TAB* tab;
/* This means we're starting the enumeration */
- if (join->const_tables == join->top_join_tab_count)
+ if (join->const_tables == join->top_join_tab_count || !join->join_tab)
return NULL;
tab= join->join_tab + join->const_tables;
@@ -8866,6 +8870,7 @@ bool key_can_be_used_to_split_by_fields(KEY *key_info, uint used_key_parts,
bool JOIN::check_for_splittable_grouping_derived(THD *thd)
{
+ partition_list= 0;
st_select_lex_unit *unit= select_lex->master_unit();
TABLE_LIST *derived= unit->derived;
if (!optimizer_flag(thd, OPTIMIZER_SWITCH_SPLIT_GROUPING_DERIVED))
@@ -8878,15 +8883,26 @@ bool JOIN::check_for_splittable_grouping_derived(THD *thd)
return false;
if (derived->is_recursive_with_table())
return false;
- if (!group_list)
+ if (group_list)
+ {
+ if (!select_lex->have_window_funcs())
+ partition_list= group_list;
+ }
+ else if (select_lex->have_window_funcs() &&
+ select_lex->window_specs.elements == 1)
+ {
+ partition_list=
+ select_lex->window_specs.head()->partition_list->first;
+ }
+ if (!partition_list)
return false;
-
+
ORDER *ord;
TABLE *table= 0;
key_map ref_keys;
uint group_fields= 0;
ref_keys.set_all();
- for (ord= group_list; ord; ord= ord->next, group_fields++)
+ for (ord= partition_list; ord; ord= ord->next, group_fields++)
{
Item *ord_item= *ord->item;
if (ord_item->real_item()->type() != Item::FIELD_ITEM)
@@ -8905,7 +8921,7 @@ bool JOIN::check_for_splittable_grouping_derived(THD *thd)
List<Field> grouping_fields;
List<Field> splitting_fields;
List_iterator<Item> li(fields_list);
- for (ord= group_list; ord; ord= ord->next)
+ for (ord= partition_list; ord; ord= ord->next)
{
Item *item;
i= 0;
@@ -8981,7 +8997,8 @@ Item *JOIN_TAB::get_splitting_cond_for_grouping_derived(THD *thd)
KEY_PART_INFO *end= start + table->splitting_fields.elements;
List_iterator_fast<Field> li(table->splitting_fields);
Field *fld= li++;
- for (ORDER *ord= sel->join->group_list; ord; ord= ord->next, fld= li++)
+ for (ORDER *ord= sel->join->partition_list; ord;
+ ord= ord->next, fld= li++)
{
Item *left_item= (*ord->item)->build_clone(thd, thd->mem_root);
uint i= 0;
diff --git a/sql/sql_select.h b/sql/sql_select.h
index 08c5887c857..6350cd73189 100644
--- a/sql/sql_select.h
+++ b/sql/sql_select.h
@@ -1411,7 +1411,8 @@ public:
bool group_sent;
bool is_for_splittable_grouping_derived;
- bool with_two_phase_optimization;
+ bool with_two_phase_optimization;
+ ORDER *partition_list;
JOIN_TAB *sort_and_group_aggr_tab;
diff --git a/sql/sql_sequence.cc b/sql/sql_sequence.cc
index be360c59e34..eb9dfe012f7 100644
--- a/sql/sql_sequence.cc
+++ b/sql/sql_sequence.cc
@@ -341,7 +341,7 @@ bool sequence_insert(THD *thd, LEX *lex, TABLE_LIST *table_list)
/* Create a SQUENCE object */
-SEQUENCE::SEQUENCE() :all_values_used(0), initialized(SEQ_UNINTIALIZED), table(0)
+SEQUENCE::SEQUENCE() :all_values_used(0), initialized(SEQ_UNINTIALIZED)
{
mysql_rwlock_init(key_LOCK_SEQUENCE, &mutex);
}
@@ -389,7 +389,7 @@ void SEQUENCE::read_unlock(TABLE *table)
This is called from ha_open() when the table is not yet locked
*/
-int SEQUENCE::read_initial_values(TABLE *table_arg)
+int SEQUENCE::read_initial_values(TABLE *table)
{
int error= 0;
enum thr_lock_type save_lock_type;
@@ -398,7 +398,6 @@ int SEQUENCE::read_initial_values(TABLE *table_arg)
if (likely(initialized != SEQ_UNINTIALIZED))
DBUG_RETURN(0);
- table= table_arg;
write_lock(table);
if (likely(initialized == SEQ_UNINTIALIZED))
{
@@ -438,7 +437,8 @@ int SEQUENCE::read_initial_values(TABLE *table_arg)
thd->mdl_context.release_lock(mdl_request.ticket);
DBUG_RETURN(HA_ERR_LOCK_WAIT_TIMEOUT);
}
- if (!(error= read_stored_values()))
+ DBUG_ASSERT(table->reginfo.lock_type == TL_READ);
+ if (!(error= read_stored_values(table)))
initialized= SEQ_READY_TO_USE;
mysql_unlock_tables(thd, lock, 0);
if (mdl_lock_used)
@@ -467,7 +467,7 @@ int SEQUENCE::read_initial_values(TABLE *table_arg)
Called once from when table is opened
*/
-int SEQUENCE::read_stored_values()
+int SEQUENCE::read_stored_values(TABLE *table)
{
int error;
my_bitmap_map *save_read_set;
@@ -595,6 +595,12 @@ int sequence_definition::write(TABLE *table, bool all_fields)
else
table->rpl_write_set= &table->s->all_set;
+ /*
+ The following is needed to fix comparison of rows in
+ ha_update_first_row() for InnoDB
+ */
+ memcpy(table->record[1],table->s->default_values, table->s->reclength);
+
/* Update table */
save_write_set= table->write_set;
save_read_set= table->read_set;
@@ -621,7 +627,7 @@ int sequence_definition::write(TABLE *table, bool all_fields)
push_warning_printf(WARN_LEVEL_WARN) has been called
-  @retval 0 Next number or error. Check error variable
+ @retval 0 Next number or error. Check error variable
# Next sequence number
NOTES:
@@ -755,7 +761,7 @@ void SEQUENCE_LAST_VALUE::set_version(TABLE *table)
@param in next_round Round for 'next_value' (in cace of cycles)
@param in is_used 1 if next_val is already used
-  @retval 0 ok, value adjusted
+ @retval 0 ok, value adjusted
1 value was less than current value or
error when storing value
diff --git a/sql/sql_sequence.h b/sql/sql_sequence.h
index 1dc777657d5..b61e4ffe40d 100644
--- a/sql/sql_sequence.h
+++ b/sql/sql_sequence.h
@@ -93,7 +93,7 @@ public:
SEQUENCE();
~SEQUENCE();
int read_initial_values(TABLE *table);
- int read_stored_values();
+ int read_stored_values(TABLE *table);
void write_lock(TABLE *table);
void write_unlock(TABLE *table);
void read_lock(TABLE *table);
@@ -132,7 +132,6 @@ public:
seq_init initialized;
private:
- TABLE *table;
mysql_rwlock_t mutex;
};
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 40850ccc43f..e7ea40ca334 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -3040,12 +3040,8 @@ sp_suid:
call:
CALL_SYM sp_name
{
- LEX *lex = Lex;
-
- lex->sql_command= SQLCOM_CALL;
- lex->spname= $2;
- lex->value_list.empty();
- sp_handler_procedure.add_used_routine(lex, thd, $2);
+ if (Lex->call_statement_start(thd, $2))
+ MYSQL_YYABORT;
}
opt_sp_cparam_list {}
;
@@ -15172,14 +15168,8 @@ option_value_no_option_type:
}
| '@' ident_or_text equal expr
{
- Item_func_set_user_var *item;
- item= new (thd->mem_root) Item_func_set_user_var(thd, &$2, $4);
- if (item == NULL)
- MYSQL_YYABORT;
- set_var_user *var= new (thd->mem_root) set_var_user(item);
- if (var == NULL)
+ if (Lex->set_user_variable(thd, &$2, $4))
MYSQL_YYABORT;
- Lex->var_list.push_back(var, thd->mem_root);
}
| '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default
{
@@ -15584,25 +15574,13 @@ revoke_command:
}
| grant_privileges ON FUNCTION_SYM grant_ident FROM user_and_role_list
{
- LEX *lex= Lex;
- if (lex->columns.elements)
- {
- thd->parse_error();
+ if (Lex->add_grant_command(thd, SQLCOM_REVOKE, TYPE_ENUM_FUNCTION))
MYSQL_YYABORT;
- }
- lex->sql_command= SQLCOM_REVOKE;
- lex->type= TYPE_ENUM_FUNCTION;
}
| grant_privileges ON PROCEDURE_SYM grant_ident FROM user_and_role_list
{
- LEX *lex= Lex;
- if (lex->columns.elements)
- {
- thd->parse_error();
+ if (Lex->add_grant_command(thd, SQLCOM_REVOKE, TYPE_ENUM_PROCEDURE))
MYSQL_YYABORT;
- }
- lex->sql_command= SQLCOM_REVOKE;
- lex->type= TYPE_ENUM_PROCEDURE;
}
| ALL opt_privileges ',' GRANT OPTION FROM user_and_role_list
{
@@ -15646,26 +15624,14 @@ grant_command:
| grant_privileges ON FUNCTION_SYM grant_ident TO_SYM grant_list
opt_require_clause opt_grant_options
{
- LEX *lex= Lex;
- if (lex->columns.elements)
- {
- thd->parse_error();
+ if (Lex->add_grant_command(thd, SQLCOM_GRANT, TYPE_ENUM_FUNCTION))
MYSQL_YYABORT;
- }
- lex->sql_command= SQLCOM_GRANT;
- lex->type= TYPE_ENUM_FUNCTION;
}
| grant_privileges ON PROCEDURE_SYM grant_ident TO_SYM grant_list
opt_require_clause opt_grant_options
{
- LEX *lex= Lex;
- if (lex->columns.elements)
- {
- thd->parse_error();
+ if (Lex->add_grant_command(thd, SQLCOM_GRANT, TYPE_ENUM_PROCEDURE))
MYSQL_YYABORT;
- }
- lex->sql_command= SQLCOM_GRANT;
- lex->type= TYPE_ENUM_PROCEDURE;
}
| PROXY_SYM ON user TO_SYM grant_list opt_grant_option
{
diff --git a/sql/sql_yacc_ora.yy b/sql/sql_yacc_ora.yy
index 7c4d8cb5c81..9a5ebe45468 100644
--- a/sql/sql_yacc_ora.yy
+++ b/sql/sql_yacc_ora.yy
@@ -2486,12 +2486,8 @@ sp_suid:
call:
CALL_SYM sp_name
{
- LEX *lex = Lex;
-
- lex->sql_command= SQLCOM_CALL;
- lex->spname= $2;
- lex->value_list.empty();
- sp_handler_procedure.add_used_routine(lex, thd, $2);
+ if (Lex->call_statement_start(thd, $2))
+ MYSQL_YYABORT;
}
opt_sp_cparam_list {}
;
@@ -3374,22 +3370,14 @@ sp_statement:
| ident_directly_assignable
{
// Direct procedure call (without the CALL keyword)
- LEX *lex = Lex;
- if (!(lex->spname= lex->make_sp_name(thd, &$1)))
+ if (Lex->call_statement_start(thd, &$1))
MYSQL_YYABORT;
- lex->sql_command= SQLCOM_CALL;
- lex->value_list.empty();
- sp_handler_procedure.add_used_routine(lex, thd, lex->spname);
}
opt_sp_cparam_list
| ident_directly_assignable '.' ident
{
- LEX *lex = Lex;
- if (!(lex->spname= lex->make_sp_name(thd, &$1, &$3)))
+ if (Lex->call_statement_start(thd, &$1, &$3))
MYSQL_YYABORT;
- lex->sql_command= SQLCOM_CALL;
- lex->value_list.empty();
- sp_handler_procedure.add_used_routine(lex, thd, lex->spname);
}
opt_sp_cparam_list
;
@@ -15385,14 +15373,8 @@ option_value_no_option_type:
}
| '@' ident_or_text equal expr
{
- Item_func_set_user_var *item;
- item= new (thd->mem_root) Item_func_set_user_var(thd, &$2, $4);
- if (item == NULL)
- MYSQL_YYABORT;
- set_var_user *var= new (thd->mem_root) set_var_user(item);
- if (var == NULL)
+ if (Lex->set_user_variable(thd, &$2, $4))
MYSQL_YYABORT;
- Lex->var_list.push_back(var, thd->mem_root);
}
| '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default
{
@@ -15821,25 +15803,13 @@ revoke_command:
}
| grant_privileges ON FUNCTION_SYM grant_ident FROM user_and_role_list
{
- LEX *lex= Lex;
- if (lex->columns.elements)
- {
- thd->parse_error();
+ if (Lex->add_grant_command(thd, SQLCOM_REVOKE, TYPE_ENUM_FUNCTION))
MYSQL_YYABORT;
- }
- lex->sql_command= SQLCOM_REVOKE;
- lex->type= TYPE_ENUM_FUNCTION;
}
| grant_privileges ON PROCEDURE_SYM grant_ident FROM user_and_role_list
{
- LEX *lex= Lex;
- if (lex->columns.elements)
- {
- thd->parse_error();
+ if (Lex->add_grant_command(thd, SQLCOM_REVOKE, TYPE_ENUM_PROCEDURE))
MYSQL_YYABORT;
- }
- lex->sql_command= SQLCOM_REVOKE;
- lex->type= TYPE_ENUM_PROCEDURE;
}
| ALL opt_privileges ',' GRANT OPTION FROM user_and_role_list
{
@@ -15883,26 +15853,14 @@ grant_command:
| grant_privileges ON FUNCTION_SYM grant_ident TO_SYM grant_list
opt_require_clause opt_grant_options
{
- LEX *lex= Lex;
- if (lex->columns.elements)
- {
- thd->parse_error();
+ if (Lex->add_grant_command(thd, SQLCOM_GRANT, TYPE_ENUM_FUNCTION))
MYSQL_YYABORT;
- }
- lex->sql_command= SQLCOM_GRANT;
- lex->type= TYPE_ENUM_FUNCTION;
}
| grant_privileges ON PROCEDURE_SYM grant_ident TO_SYM grant_list
opt_require_clause opt_grant_options
{
- LEX *lex= Lex;
- if (lex->columns.elements)
- {
- thd->parse_error();
+ if (Lex->add_grant_command(thd, SQLCOM_GRANT, TYPE_ENUM_PROCEDURE))
MYSQL_YYABORT;
- }
- lex->sql_command= SQLCOM_GRANT;
- lex->type= TYPE_ENUM_PROCEDURE;
}
| PROXY_SYM ON user TO_SYM grant_list opt_grant_option
{