mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge mysql.com:/home/jonas/src/mysql-4.1
into mysql.com:/home/jonas/src/mysql-5.0 libmysql_r/Makefile.am: Auto merged mysql-test/r/analyse.result: Auto merged sql/sql_analyse.cc: Auto merged
This commit is contained in:
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
target = libmysqlclient_r.la
|
target = libmysqlclient_r.la
|
||||||
target_defs = -DDONT_USE_RAID -DMYSQL_CLIENT @LIB_EXTRA_CCFLAGS@
|
target_defs = -DDONT_USE_RAID -DMYSQL_CLIENT @LIB_EXTRA_CCFLAGS@
|
||||||
LIBS = @LIBS@ @openssl_libs@
|
LIBS = @LIBS@ @ZLIB_LIBS@ @openssl_libs@
|
||||||
|
|
||||||
INCLUDES = @MT_INCLUDES@ \
|
INCLUDES = @MT_INCLUDES@ \
|
||||||
-I$(top_srcdir)/include $(openssl_includes) @ZLIB_INCLUDES@ \
|
-I$(top_srcdir)/include $(openssl_includes) @ZLIB_INCLUDES@ \
|
||||||
|
@ -191,7 +191,7 @@ if ( cd "$fs_ndb" ; $exec_mgmtsrvr -f config.ini ) ; then :; else
|
|||||||
echo "Unable to start $exec_mgmtsrvr from `pwd`"
|
echo "Unable to start $exec_mgmtsrvr from `pwd`"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if sleep_until_file_created $fs_ndb/ndb_3.pid 30
|
if sleep_until_file_created $fs_ndb/ndb_3.pid 120
|
||||||
then :; else
|
then :; else
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@ -201,7 +201,7 @@ cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile"
|
|||||||
|
|
||||||
echo "Starting ndbd"
|
echo "Starting ndbd"
|
||||||
( cd "$fs_ndb" ; $exec_ndb $flags_ndb & )
|
( cd "$fs_ndb" ; $exec_ndb $flags_ndb & )
|
||||||
if sleep_until_file_created $fs_ndb/ndb_1.pid 30
|
if sleep_until_file_created $fs_ndb/ndb_1.pid 120
|
||||||
then :; else
|
then :; else
|
||||||
stop_default_ndbcluster
|
stop_default_ndbcluster
|
||||||
exit 1
|
exit 1
|
||||||
@ -212,7 +212,7 @@ cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile"
|
|||||||
|
|
||||||
echo "Starting ndbd"
|
echo "Starting ndbd"
|
||||||
( cd "$fs_ndb" ; $exec_ndb $flags_ndb & )
|
( cd "$fs_ndb" ; $exec_ndb $flags_ndb & )
|
||||||
if sleep_until_file_created $fs_ndb/ndb_2.pid 30
|
if sleep_until_file_created $fs_ndb/ndb_2.pid 120
|
||||||
then :; else
|
then :; else
|
||||||
stop_default_ndbcluster
|
stop_default_ndbcluster
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -96,3 +96,9 @@ select * from t2;
|
|||||||
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
|
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
|
||||||
test.t1.a 1 2 1 1 0 0 1.5000 0.5000 ENUM('1','2') NOT NULL
|
test.t1.a 1 2 1 1 0 0 1.5000 0.5000 ENUM('1','2') NOT NULL
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
create table t1 (v varchar(128));
|
||||||
|
insert into t1 values ('abc'),('abc\'def\\hij\"klm\0opq'),('\''),('\"'),('\\'),('a\0'),('b\''),('c\"'),('d\\'),('\'b'),('\"c'),('\\d'),('a\0\0\0b'),('a\'\'\'\'b'),('a\"\"\"\"b'),('a\\\\\\\\b'),('\'\0\\\"'),('\'\''),('\"\"'),('\\\\'),('The\ZEnd');
|
||||||
|
select * from t1 procedure analyse();
|
||||||
|
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
|
||||||
|
test.t1.v " \\ 1 19 0 0 3.7619 NULL ENUM('"','""','"c','\'\0\\"','\'','\'\'','\'b','a\0\0\0b','a\0','a""""b','a\'\'\'\'b','abc','abc\'def\\hij"klm\0opq','a\\\\\\\\b','b\'','c"','d\\','The\ZEnd','\\','\\d','\\\\') NOT NULL
|
||||||
|
drop table t1;
|
||||||
|
@ -38,3 +38,7 @@ select * from t2;
|
|||||||
insert into t2 select * from t1 procedure analyse();
|
insert into t2 select * from t1 procedure analyse();
|
||||||
select * from t2;
|
select * from t2;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
create table t1 (v varchar(128));
|
||||||
|
insert into t1 values ('abc'),('abc\'def\\hij\"klm\0opq'),('\''),('\"'),('\\'),('a\0'),('b\''),('c\"'),('d\\'),('\'b'),('\"c'),('\\d'),('a\0\0\0b'),('a\'\'\'\'b'),('a\"\"\"\"b'),('a\\\\\\\\b'),('\'\0\\\"'),('\'\''),('\"\"'),('\\\\'),('The\ZEnd');
|
||||||
|
select * from t1 procedure analyse();
|
||||||
|
drop table t1;
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
0, 0, \
|
0, 0, \
|
||||||
0, \
|
0, \
|
||||||
(desc), \
|
(desc), \
|
||||||
(void *)(value) }
|
(value) }
|
||||||
|
|
||||||
#define CPC_ARG(name, type, opt, desc) \
|
#define CPC_ARG(name, type, opt, desc) \
|
||||||
{ (name), \
|
{ (name), \
|
||||||
@ -351,17 +351,12 @@ SimpleCpcClient::define_process(Process & p, Properties& reply){
|
|||||||
|
|
||||||
int
|
int
|
||||||
SimpleCpcClient::list_processes(Vector<Process> &procs, Properties& reply) {
|
SimpleCpcClient::list_processes(Vector<Process> &procs, Properties& reply) {
|
||||||
enum Proclist {
|
int start, end, entry;
|
||||||
Proclist_Start,
|
|
||||||
Proclist_End,
|
|
||||||
Proclist_Entry
|
|
||||||
};
|
|
||||||
const ParserRow_t list_reply[] = {
|
const ParserRow_t list_reply[] = {
|
||||||
CPC_CMD("start processes", Proclist_Start, ""),
|
CPC_CMD("start processes", &start, ""),
|
||||||
|
CPC_CMD("end processes", &end, ""),
|
||||||
|
|
||||||
CPC_CMD("end processes", Proclist_End, ""),
|
CPC_CMD("process", &entry, ""),
|
||||||
|
|
||||||
CPC_CMD("process", Proclist_Entry, ""),
|
|
||||||
CPC_ARG("id", Int, Mandatory, "Id of process."),
|
CPC_ARG("id", Int, Mandatory, "Id of process."),
|
||||||
CPC_ARG("name", String, Mandatory, "Name of process"),
|
CPC_ARG("name", String, Mandatory, "Name of process"),
|
||||||
CPC_ARG("group", String, Mandatory, "Group of process"),
|
CPC_ARG("group", String, Mandatory, "Group of process"),
|
||||||
@ -390,26 +385,29 @@ SimpleCpcClient::list_processes(Vector<Process> &procs, Properties& reply) {
|
|||||||
bool done = false;
|
bool done = false;
|
||||||
while(!done) {
|
while(!done) {
|
||||||
const Properties *proc;
|
const Properties *proc;
|
||||||
enum Proclist p;
|
void *p;
|
||||||
cpc_recv(list_reply, &proc, (void **)&p);
|
cpc_recv(list_reply, &proc, &p);
|
||||||
|
|
||||||
switch(p) {
|
if(p == &start)
|
||||||
case Proclist_Start:
|
{
|
||||||
/* do nothing */
|
/* do nothing */
|
||||||
break;
|
}
|
||||||
case Proclist_End:
|
else if(p == &end)
|
||||||
|
{
|
||||||
done = true;
|
done = true;
|
||||||
break;
|
}
|
||||||
case Proclist_Entry:
|
else if(p == &entry)
|
||||||
|
{
|
||||||
if(proc != NULL){
|
if(proc != NULL){
|
||||||
Process p;
|
Process p;
|
||||||
convert(* proc, p);
|
convert(* proc, p);
|
||||||
procs.push_back(p);
|
procs.push_back(p);
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
default:
|
else
|
||||||
/* ignore */
|
{
|
||||||
break;
|
ndbout_c("internal error: %d", __LINE__);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -121,6 +121,7 @@ SUFFIXES = .sh
|
|||||||
-e 's!@''CXXFLAGS''@!@SAVE_CXXFLAGS@!'\
|
-e 's!@''CXXFLAGS''@!@SAVE_CXXFLAGS@!'\
|
||||||
-e 's!@''LDFLAGS''@!@SAVE_LDFLAGS@!'\
|
-e 's!@''LDFLAGS''@!@SAVE_LDFLAGS@!'\
|
||||||
-e 's!@''CLIENT_LIBS''@!@CLIENT_LIBS@!' \
|
-e 's!@''CLIENT_LIBS''@!@CLIENT_LIBS@!' \
|
||||||
|
-e 's!@''ZLIB_LIBS''@!@ZLIB_LIBS@!' \
|
||||||
-e 's!@''LIBS''@!@LIBS@!' \
|
-e 's!@''LIBS''@!@LIBS@!' \
|
||||||
-e 's!@''WRAPLIBS''@!@WRAPLIBS@!' \
|
-e 's!@''WRAPLIBS''@!@WRAPLIBS@!' \
|
||||||
-e 's!@''innodb_system_libs''@!@innodb_system_libs@!' \
|
-e 's!@''innodb_system_libs''@!@innodb_system_libs@!' \
|
||||||
|
@ -59,6 +59,7 @@ int compare_ulonglong2(void* cmp_arg __attribute__((unused)),
|
|||||||
return compare_ulonglong(s,t);
|
return compare_ulonglong(s,t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool append_escaped(String *to_str, String *from_str);
|
||||||
|
|
||||||
Procedure *
|
Procedure *
|
||||||
proc_analyse_init(THD *thd, ORDER *param, select_result *result,
|
proc_analyse_init(THD *thd, ORDER *param, select_result *result,
|
||||||
@ -890,7 +891,8 @@ int collect_string(String *element,
|
|||||||
else
|
else
|
||||||
info->found = 1;
|
info->found = 1;
|
||||||
info->str->append('\'');
|
info->str->append('\'');
|
||||||
info->str->append(*element);
|
if (append_escaped(info->str, element))
|
||||||
|
return 1;
|
||||||
info->str->append('\'');
|
info->str->append('\'');
|
||||||
return 0;
|
return 0;
|
||||||
} // collect_string
|
} // collect_string
|
||||||
@ -1025,3 +1027,58 @@ uint check_ulonglong(const char *str, uint length)
|
|||||||
while (*cmp && *cmp++ == *str++) ;
|
while (*cmp && *cmp++ == *str++) ;
|
||||||
return ((uchar) str[-1] <= (uchar) cmp[-1]) ? smaller : bigger;
|
return ((uchar) str[-1] <= (uchar) cmp[-1]) ? smaller : bigger;
|
||||||
} /* check_ulonlong */
|
} /* check_ulonlong */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
FUNCTION: append_escaped()
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
append_escaped() takes a String type variable, where it appends
|
||||||
|
escaped the second argument. Only characters that require escaping
|
||||||
|
will be escaped.
|
||||||
|
|
||||||
|
ARGUMENTS
|
||||||
|
A pointer to a String variable, where results will be appended
|
||||||
|
A pointer to a String variable, which is appended to the result
|
||||||
|
String, escaping those characters that require it.
|
||||||
|
|
||||||
|
RETURN VALUES
|
||||||
|
0 Success
|
||||||
|
1 Out of memory
|
||||||
|
*/
|
||||||
|
|
||||||
|
static bool append_escaped(String *to_str, String *from_str)
|
||||||
|
{
|
||||||
|
char *from, *end, c;
|
||||||
|
|
||||||
|
if (to_str->realloc(to_str->length() + from_str->length()))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
from= (char*) from_str->ptr();
|
||||||
|
end= from + from_str->length();
|
||||||
|
for (; from < end; from++)
|
||||||
|
{
|
||||||
|
c= *from;
|
||||||
|
switch (c) {
|
||||||
|
case '\0':
|
||||||
|
c= '0';
|
||||||
|
break;
|
||||||
|
case '\032':
|
||||||
|
c= 'Z';
|
||||||
|
break;
|
||||||
|
case '\\':
|
||||||
|
case '\'':
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
goto normal_character;
|
||||||
|
}
|
||||||
|
if (to_str->append('\\'))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
normal_character:
|
||||||
|
if (to_str->append(c))
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user