mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into dl145b.mysql.com:/home/ndbdev/tomas/mysql-5.1 sql/sql_lex.h: Auto merged storage/ndb/src/common/transporter/TransporterRegistry.cpp: Auto merged
This commit is contained in:
@ -823,3 +823,15 @@ GRANT SELECT ON *.* TO 'user4'@'localhost'
|
|||||||
drop user user1@localhost, user2@localhost, user3@localhost, user4@localhost;
|
drop user user1@localhost, user2@localhost, user3@localhost, user4@localhost;
|
||||||
use test;
|
use test;
|
||||||
drop database mysqltest;
|
drop database mysqltest;
|
||||||
|
create procedure p1 () modifies sql data set @a = 5;
|
||||||
|
create procedure p2 () set @a = 5;
|
||||||
|
select sql_data_access from information_schema.routines
|
||||||
|
where specific_name like 'p%';
|
||||||
|
sql_data_access
|
||||||
|
MODIFIES SQL DATA
|
||||||
|
CONTAINS SQL
|
||||||
|
drop procedure p1;
|
||||||
|
drop procedure p2;
|
||||||
|
show create database information_schema;
|
||||||
|
Database Create Database
|
||||||
|
information_schema CREATE DATABASE `information_schema` /*!40100 DEFAULT CHARACTER SET utf8 */
|
||||||
|
@ -2699,3 +2699,6 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 5 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 5 Using where
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
|
||||||
|
x'10' + 0 X'10' + 0 b'10' + 0 B'10' + 0
|
||||||
|
16 16 2 2
|
||||||
|
@ -542,3 +542,18 @@ connection default;
|
|||||||
drop user user1@localhost, user2@localhost, user3@localhost, user4@localhost;
|
drop user user1@localhost, user2@localhost, user3@localhost, user4@localhost;
|
||||||
use test;
|
use test;
|
||||||
drop database mysqltest;
|
drop database mysqltest;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #11055 information_schema: routines.sql_data_access has wrong value
|
||||||
|
#
|
||||||
|
create procedure p1 () modifies sql data set @a = 5;
|
||||||
|
create procedure p2 () set @a = 5;
|
||||||
|
select sql_data_access from information_schema.routines
|
||||||
|
where specific_name like 'p%';
|
||||||
|
drop procedure p1;
|
||||||
|
drop procedure p2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #9434 SHOW CREATE DATABASE information_schema;
|
||||||
|
#
|
||||||
|
show create database information_schema;
|
||||||
|
@ -2271,3 +2271,8 @@ EXPLAIN SELECT t1.a FROM t1 INNER JOIN t2 ON t1.a=t2.a;
|
|||||||
|
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #10650
|
||||||
|
#
|
||||||
|
|
||||||
|
select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
|
||||||
|
@ -97,7 +97,7 @@ static my_bool init_state_maps(CHARSET_INFO *cs)
|
|||||||
|
|
||||||
/* Special handling of hex and binary strings */
|
/* Special handling of hex and binary strings */
|
||||||
state_map[(uchar)'x']= state_map[(uchar)'X']= (uchar) MY_LEX_IDENT_OR_HEX;
|
state_map[(uchar)'x']= state_map[(uchar)'X']= (uchar) MY_LEX_IDENT_OR_HEX;
|
||||||
state_map[(uchar)'b']= state_map[(uchar)'b']= (uchar) MY_LEX_IDENT_OR_BIN;
|
state_map[(uchar)'b']= state_map[(uchar)'B']= (uchar) MY_LEX_IDENT_OR_BIN;
|
||||||
state_map[(uchar)'n']= state_map[(uchar)'N']= (uchar) MY_LEX_IDENT_OR_NCHAR;
|
state_map[(uchar)'n']= state_map[(uchar)'N']= (uchar) MY_LEX_IDENT_OR_NCHAR;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -114,6 +114,14 @@ enum enum_sp_data_access
|
|||||||
SP_MODIFIES_SQL_DATA
|
SP_MODIFIES_SQL_DATA
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const LEX_STRING sp_data_access_name[]=
|
||||||
|
{
|
||||||
|
{ (char*) STRING_WITH_LEN("") },
|
||||||
|
{ (char*) STRING_WITH_LEN("CONTAINS SQL") },
|
||||||
|
{ (char*) STRING_WITH_LEN("NO SQL") },
|
||||||
|
{ (char*) STRING_WITH_LEN("READS SQL DATA") },
|
||||||
|
{ (char*) STRING_WITH_LEN("MODIFIES SQL DATA") }
|
||||||
|
};
|
||||||
|
|
||||||
#define DERIVED_SUBQUERY 1
|
#define DERIVED_SUBQUERY 1
|
||||||
#define DERIVED_VIEW 2
|
#define DERIVED_VIEW 2
|
||||||
|
@ -448,25 +448,32 @@ bool mysqld_show_create_db(THD *thd, char *dbname,
|
|||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
if (!my_strcasecmp(system_charset_info, dbname,
|
||||||
(void) sprintf(path,"%s/%s",mysql_data_home, dbname);
|
information_schema_name.str))
|
||||||
length=unpack_dirname(path,path); // Convert if not unix
|
|
||||||
found_libchar= 0;
|
|
||||||
if (length && path[length-1] == FN_LIBCHAR)
|
|
||||||
{
|
{
|
||||||
found_libchar= 1;
|
dbname= information_schema_name.str;
|
||||||
path[length-1]=0; // remove ending '\'
|
create.default_table_charset= system_charset_info;
|
||||||
}
|
}
|
||||||
if (access(path,F_OK))
|
else
|
||||||
{
|
{
|
||||||
my_error(ER_BAD_DB_ERROR, MYF(0), dbname);
|
(void) sprintf(path,"%s/%s",mysql_data_home, dbname);
|
||||||
DBUG_RETURN(TRUE);
|
length=unpack_dirname(path,path); // Convert if not unix
|
||||||
|
found_libchar= 0;
|
||||||
|
if (length && path[length-1] == FN_LIBCHAR)
|
||||||
|
{
|
||||||
|
found_libchar= 1;
|
||||||
|
path[length-1]=0; // remove ending '\'
|
||||||
|
}
|
||||||
|
if (access(path,F_OK))
|
||||||
|
{
|
||||||
|
my_error(ER_BAD_DB_ERROR, MYF(0), dbname);
|
||||||
|
DBUG_RETURN(TRUE);
|
||||||
|
}
|
||||||
|
if (found_libchar)
|
||||||
|
path[length-1]= FN_LIBCHAR;
|
||||||
|
strmov(path+length, MY_DB_OPT_FILE);
|
||||||
|
load_db_opt(thd, path, &create);
|
||||||
}
|
}
|
||||||
if (found_libchar)
|
|
||||||
path[length-1]= FN_LIBCHAR;
|
|
||||||
strmov(path+length, MY_DB_OPT_FILE);
|
|
||||||
load_db_opt(thd, path, &create);
|
|
||||||
|
|
||||||
List<Item> field_list;
|
List<Item> field_list;
|
||||||
field_list.push_back(new Item_empty_string("Database",NAME_LEN));
|
field_list.push_back(new Item_empty_string("Database",NAME_LEN));
|
||||||
field_list.push_back(new Item_empty_string("Create Database",1024));
|
field_list.push_back(new Item_empty_string("Create Database",1024));
|
||||||
@ -2645,6 +2652,7 @@ bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table,
|
|||||||
restore_record(table, s->default_values);
|
restore_record(table, s->default_values);
|
||||||
if (!wild || !wild[0] || !wild_compare(sp_name, wild, 0))
|
if (!wild || !wild[0] || !wild_compare(sp_name, wild, 0))
|
||||||
{
|
{
|
||||||
|
int enum_idx= proc_table->field[5]->val_int();
|
||||||
table->field[3]->store(sp_name, strlen(sp_name), cs);
|
table->field[3]->store(sp_name, strlen(sp_name), cs);
|
||||||
get_field(thd->mem_root, proc_table->field[3], &tmp_string);
|
get_field(thd->mem_root, proc_table->field[3], &tmp_string);
|
||||||
table->field[0]->store(tmp_string.ptr(), tmp_string.length(), cs);
|
table->field[0]->store(tmp_string.ptr(), tmp_string.length(), cs);
|
||||||
@ -2666,10 +2674,8 @@ bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table,
|
|||||||
table->field[10]->store("SQL", 3, cs);
|
table->field[10]->store("SQL", 3, cs);
|
||||||
get_field(thd->mem_root, proc_table->field[6], &tmp_string);
|
get_field(thd->mem_root, proc_table->field[6], &tmp_string);
|
||||||
table->field[11]->store(tmp_string.ptr(), tmp_string.length(), cs);
|
table->field[11]->store(tmp_string.ptr(), tmp_string.length(), cs);
|
||||||
if (proc_table->field[5]->val_int() == SP_CONTAINS_SQL)
|
table->field[12]->store(sp_data_access_name[enum_idx].str,
|
||||||
{
|
sp_data_access_name[enum_idx].length , cs);
|
||||||
table->field[12]->store("CONTAINS SQL", 12 , cs);
|
|
||||||
}
|
|
||||||
get_field(thd->mem_root, proc_table->field[7], &tmp_string);
|
get_field(thd->mem_root, proc_table->field[7], &tmp_string);
|
||||||
table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs);
|
table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs);
|
||||||
bzero((char *)&time, sizeof(time));
|
bzero((char *)&time, sizeof(time));
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
struct st_table;
|
struct st_table;
|
||||||
class Field;
|
class Field;
|
||||||
|
|
||||||
|
#define STRING_WITH_LEN(X) X, (sizeof(X)-1)
|
||||||
|
|
||||||
typedef struct st_lex_string
|
typedef struct st_lex_string
|
||||||
{
|
{
|
||||||
char *str;
|
char *str;
|
||||||
|
@ -1208,7 +1208,7 @@ TransporterRegistry::report_connect(NodeId node_id)
|
|||||||
void
|
void
|
||||||
TransporterRegistry::report_disconnect(NodeId node_id, int errnum)
|
TransporterRegistry::report_disconnect(NodeId node_id, int errnum)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("TransporterRegistry::report_connect");
|
DBUG_ENTER("TransporterRegistry::report_disconnect");
|
||||||
DBUG_PRINT("info",("performStates[%d]=DISCONNECTED",node_id));
|
DBUG_PRINT("info",("performStates[%d]=DISCONNECTED",node_id));
|
||||||
performStates[node_id] = DISCONNECTED;
|
performStates[node_id] = DISCONNECTED;
|
||||||
reportDisconnect(callbackObj, node_id, errnum);
|
reportDisconnect(callbackObj, node_id, errnum);
|
||||||
|
Reference in New Issue
Block a user