summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <jan@hundin.mysql.fi>2005-01-13 08:14:25 +0200
committerunknown <jan@hundin.mysql.fi>2005-01-13 08:14:25 +0200
commiteb798f9be4d6fa43520762726ef6ef4e4118e742 (patch)
tree99eb6cb6acc33069615a413f86bd40d51dcd93fa
parente2e85d7df63b540388ccf4501eaf589d3fc5f4d2 (diff)
parent4dd5858b4e42b63e79e37108fcafd04ce7c86d1d (diff)
downloadmariadb-git-eb798f9be4d6fa43520762726ef6ef4e4118e742.tar.gz
Merge jlindstrom@bk-internal.mysql.com:/home/bk/mysql-4.1
into hundin.mysql.fi:/home/jan/mysql-4.1
-rwxr-xr-xBuild-tools/Do-compile28
-rw-r--r--libmysql/libmysql.def1
-rw-r--r--libmysqld/libmysqld.def1
-rw-r--r--mysql-test/t/analyse.test5
-rw-r--r--ndb/src/mgmsrv/ConfigInfo.cpp29
-rw-r--r--ndb/test/src/CpcClient.cpp42
-rw-r--r--sql/sql_analyse.cc15
-rw-r--r--sql/sql_parse.cc4
-rw-r--r--sql/sql_prepare.cc5
-rw-r--r--tests/client_test.c24
10 files changed, 104 insertions, 50 deletions
diff --git a/Build-tools/Do-compile b/Build-tools/Do-compile
index 78dcd634f7c..1e7041e8f7a 100755
--- a/Build-tools/Do-compile
+++ b/Build-tools/Do-compile
@@ -11,7 +11,7 @@ $opt_distribution=$opt_user=$opt_config_env=$opt_config_extra_env="";
$opt_dbd_options=$opt_perl_options=$opt_config_options=$opt_make_options=$opt_suffix="";
$opt_tmp=$opt_version_suffix="";
$opt_bundled_zlib=$opt_help=$opt_delete=$opt_debug=$opt_stage=$opt_no_test=$opt_no_perl=$opt_one_error=$opt_with_low_memory=$opt_fast_benchmark=$opt_static_client=$opt_static_server=$opt_static_perl=$opt_sur=$opt_with_small_disk=$opt_local_perl=$opt_tcpip=$opt_build_thread=$opt_use_old_distribution=$opt_enable_shared=$opt_no_crash_me=$opt_no_strip=$opt_with_archive=$opt_with_cluster=$opt_with_csv=$opt_with_example=$opt_with_debug=$opt_no_benchmark=$opt_no_mysqltest=$opt_without_embedded=$opt_readline=0;
-$opt_embedded_test=$opt_ps_test=$opt_innodb=$opt_bdb=$opt_raid=$opt_libwrap=$opt_clearlogs=0;
+$opt_skip_embedded_test=$opt_skip_ps_test=$opt_innodb=$opt_bdb=$opt_raid=$opt_libwrap=$opt_clearlogs=0;
GetOptions(
"bdb",
@@ -25,7 +25,6 @@ GetOptions(
"delete",
"distribution=s",
"enable-shared",
- "embedded-test",
"fast-benchmark",
"help|Information",
"innodb",
@@ -41,9 +40,10 @@ GetOptions(
"one-error",
"perl-files=s",
"perl-options=s",
- "ps-test",
"raid",
"readline",
+ "skip-embedded-test",
+ "skip-ps-test",
"stage=i",
"static-client",
"static-perl",
@@ -57,8 +57,8 @@ GetOptions(
"version-suffix=s",
"with-archive",
"with-cluster",
- "with-csv",
- "with-example",
+ "with-csv",
+ "with-example",
"with-debug",
"with-low-memory",
"with-other-libc=s",
@@ -278,7 +278,7 @@ if ($opt_stage <= 1)
$opt_config_options.= " --with-libedit";
}
$opt_config_options.= " --with-embedded-server" unless ($opt_without_embedded);
- $opt_embedded_test= 0 if ($opt_without_embedded);
+ $opt_skip_embedded_test= 1 if ($opt_without_embedded);
$opt_config_options.= " --with-archive-storage-engine" if ($opt_with_archive);
$opt_config_options.= " --with-ndbcluster" if ($opt_with_cluster);
$opt_config_options.= " --with-csv-storage-engine" if ($opt_with_csv);
@@ -391,14 +391,14 @@ if ($opt_stage <= 5 && !$opt_no_test && !$opt_no_mysqltest)
safe_cd("${test_dir}/mysql-test");
check_system("./mysql-test-run $flags --tmpdir=$bench_tmpdir --master_port=$mysql_tcp_port --slave_port=$slave_port --ndbcluster_port=$ndbcluster_port --manager-port=$manager_port --no-manager --sleep=10", "tests were successful");
- if ($opt_ps_test)
+ unless ($opt_skip_ps_test)
{
log_timestamp();
info("Running test suite using prepared statements");
check_system("./mysql-test-run $flags --ps-protocol --tmpdir=$bench_tmpdir --master_port=$mysql_tcp_port --slave_port=$slave_port --ndbcluster_port=$ndbcluster_port --manager-port=$manager_port --no-manager --sleep=10", "tests were successful");
}
- if ($opt_embedded_test)
+ unless ($opt_skip_embedded_test)
{
log_timestamp();
info("Running embedded server test suite");
@@ -551,9 +551,6 @@ Delete the distribution file.
--distribution=<distribution_file>
Name of the MySQL source distribution file.
---embedded-test
-Run the test suite against the embedded server
-
--enable-shared
Compile with shared libraries
@@ -602,15 +599,18 @@ Compile and install the given perl modules.
--perl-options=<options>
Build Perl modules with the additional options
---ps-test
-Run an additional test run, using prepared statements
-
--raid
Compile with RAID support
--readline
Compile against readline library instead of libedit
+--skip-embedded-test
+Skip running the test suite against the embedded server
+
+--skip-ps-test
+Skip running the additional test run that uses the prepared statement protocol
+
--stage=[1-6]
Start script from some specific point.
diff --git a/libmysql/libmysql.def b/libmysql/libmysql.def
index c9ff70f208d..c5579e9ec2b 100644
--- a/libmysql/libmysql.def
+++ b/libmysql/libmysql.def
@@ -146,3 +146,4 @@ EXPORTS
mysql_rpl_query_type
mysql_slave_query
mysql_embedded
+ get_defaults_files
diff --git a/libmysqld/libmysqld.def b/libmysqld/libmysqld.def
index 14c6725bcb5..ea3133594f5 100644
--- a/libmysqld/libmysqld.def
+++ b/libmysqld/libmysqld.def
@@ -157,3 +157,4 @@ EXPORTS
mysql_stmt_attr_get
mysql_stmt_attr_set
mysql_stmt_field_count
+ get_defaults_files
diff --git a/mysql-test/t/analyse.test b/mysql-test/t/analyse.test
index 34343c2b7bf..52e367769a2 100644
--- a/mysql-test/t/analyse.test
+++ b/mysql-test/t/analyse.test
@@ -38,6 +38,11 @@ select * from t2;
insert into t2 select * from t1 procedure analyse();
select * from t2;
drop table t1,t2;
+
+#
+# Bug#2813 - analyse does not quote string values in enums from string
+#
+
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();
diff --git a/ndb/src/mgmsrv/ConfigInfo.cpp b/ndb/src/mgmsrv/ConfigInfo.cpp
index 800ffe2e361..fa77bc14762 100644
--- a/ndb/src/mgmsrv/ConfigInfo.cpp
+++ b/ndb/src/mgmsrv/ConfigInfo.cpp
@@ -98,6 +98,7 @@ static bool fixDepricated(InitConfigFileParser::Context & ctx, const char *);
static bool saveInConfigValues(InitConfigFileParser::Context & ctx, const char *);
static bool fixFileSystemPath(InitConfigFileParser::Context & ctx, const char * data);
static bool fixBackupDataDir(InitConfigFileParser::Context & ctx, const char * data);
+static bool fixShmUniqueId(InitConfigFileParser::Context & ctx, const char * data);
const ConfigInfo::SectionRule
ConfigInfo::m_SectionRules[] = {
@@ -111,6 +112,8 @@ ConfigInfo::m_SectionRules[] = {
{ "REP", transformNode, 0 },
{ "EXTERNAL REP", transformExtNode, 0 },
+ { MGM_TOKEN, fixShmUniqueId, 0 },
+
{ "TCP", checkConnectionSupport, 0 },
{ "SHM", checkConnectionSupport, 0 },
{ "SCI", checkConnectionSupport, 0 },
@@ -3155,19 +3158,39 @@ fixPortNumber(InitConfigFileParser::Context & ctx, const char * data){
DBUG_RETURN(true);
}
+static bool
+fixShmUniqueId(InitConfigFileParser::Context & ctx, const char * data)
+{
+ DBUG_ENTER("fixShmUniqueId");
+ Uint32 nodes= 0;
+ ctx.m_userProperties.get(ctx.fname, &nodes);
+ if (nodes == 1) // first management server
+ {
+ Uint32 portno= atoi(NDB_PORT);
+ ctx.m_currentSection->get("PortNumber", &portno);
+ ctx.m_userProperties.put("ShmUniqueId", portno);
+ }
+ DBUG_RETURN(true);
+}
+
static
bool
fixShmKey(InitConfigFileParser::Context & ctx, const char *)
{
+ DBUG_ENTER("fixShmKey");
Uint32 id1= 0, id2= 0, key= 0;
require(ctx.m_currentSection->get("NodeId1", &id1));
require(ctx.m_currentSection->get("NodeId2", &id2));
if(ctx.m_currentSection->get("ShmKey", &key))
- return true;
+ {
+ DBUG_RETURN(true);
+ }
- key= (id1 > id2 ? id1 << 16 | id2 : id2 << 16 | id1);
+ require(ctx.m_userProperties.get("ShmUniqueId", &key));
+ key= key << 16 | (id1 > id2 ? id1 << 8 | id2 : id2 << 8 | id1);
ctx.m_currentSection->put("ShmKey", key);
- return true;
+ DBUG_PRINT("info",("Added ShmKey=0x%x", key));
+ DBUG_RETURN(true);
}
/**
diff --git a/ndb/test/src/CpcClient.cpp b/ndb/test/src/CpcClient.cpp
index 2ef23528360..1d1b4fcb977 100644
--- a/ndb/test/src/CpcClient.cpp
+++ b/ndb/test/src/CpcClient.cpp
@@ -30,7 +30,7 @@
0, 0, \
0, \
(desc), \
- (void *)(value) }
+ (value) }
#define CPC_ARG(name, type, opt, desc) \
{ (name), \
@@ -351,17 +351,12 @@ SimpleCpcClient::define_process(Process & p, Properties& reply){
int
SimpleCpcClient::list_processes(Vector<Process> &procs, Properties& reply) {
- enum Proclist {
- Proclist_Start,
- Proclist_End,
- Proclist_Entry
- };
+ int start, end, entry;
const ParserRow_t list_reply[] = {
- CPC_CMD("start processes", Proclist_Start, ""),
-
- CPC_CMD("end processes", Proclist_End, ""),
+ CPC_CMD("start processes", &start, ""),
+ CPC_CMD("end processes", &end, ""),
- CPC_CMD("process", Proclist_Entry, ""),
+ CPC_CMD("process", &entry, ""),
CPC_ARG("id", Int, Mandatory, "Id of process."),
CPC_ARG("name", String, Mandatory, "Name 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;
while(!done) {
const Properties *proc;
- enum Proclist p;
- cpc_recv(list_reply, &proc, (void **)&p);
+ void *p;
+ cpc_recv(list_reply, &proc, &p);
- switch(p) {
- case Proclist_Start:
+ if(p == &start)
+ {
/* do nothing */
- break;
- case Proclist_End:
+ }
+ else if(p == &end)
+ {
done = true;
- break;
- case Proclist_Entry:
+ }
+ else if(p == &entry)
+ {
if(proc != NULL){
Process p;
convert(* proc, p);
procs.push_back(p);
}
- break;
- default:
- /* ignore */
- break;
+ }
+ else
+ {
+ ndbout_c("internal error: %d", __LINE__);
+ return -1;
}
}
return 0;
diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc
index 5265857f3b1..33ce62bc5cf 100644
--- a/sql/sql_analyse.cc
+++ b/sql/sql_analyse.cc
@@ -1029,20 +1029,19 @@ uint check_ulonglong(const char *str, uint length)
} /* check_ulonlong */
-
/*
- FUNCTION: append_escaped()
-
+ Quote special characters in a string.
+
+ SYNOPSIS
+ append_escaped(to_str, from_str)
+ to_str (in) A pointer to a String.
+ from_str (to) A pointer to an allocated string
+
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
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index cd8e73c446d..4d802ad4f34 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -64,7 +64,7 @@ const char *command_name[]={
"Drop DB", "Refresh", "Shutdown", "Statistics", "Processlist",
"Connect","Kill","Debug","Ping","Time","Delayed insert","Change user",
"Binlog Dump","Table Dump", "Connect Out", "Register Slave",
- "Prepare", "Prepare Execute", "Long Data", "Close stmt",
+ "Prepare", "Execute", "Long Data", "Close stmt",
"Reset stmt", "Set option",
"Error" // Last command number
};
@@ -1547,7 +1547,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
packet, (uint) (pend-packet), thd->charset());
table_list.alias= table_list.real_name= conv_name.str;
packet= pend+1;
- // command not cachable => no gap for data base name
+ thd->query_length= strlen(packet); // for simplicity: don't optimize
if (!(thd->query=fields=thd->memdup(packet,thd->query_length+1)))
break;
mysql_log.write(thd,command,"%s %s",table_list.real_name,fields);
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc
index 20ebc23e240..ecf01824755 100644
--- a/sql/sql_prepare.cc
+++ b/sql/sql_prepare.cc
@@ -1592,7 +1592,7 @@ int mysql_stmt_prepare(THD *thd, char *packet, uint packet_length,
DBUG_RETURN(1);
}
- mysql_log.write(thd, COM_PREPARE, "%s", packet);
+ mysql_log.write(thd, COM_PREPARE, "[%lu] %s", stmt->id, packet);
thd->current_arena= stmt;
mysql_init_query(thd, (uchar *) thd->query, thd->query_length);
@@ -1792,6 +1792,9 @@ void mysql_stmt_execute(THD *thd, char *packet, uint packet_length)
if (stmt->param_count && stmt->set_params_data(stmt, &expanded_query))
goto set_params_data_err;
#endif
+ mysql_log.write(thd, COM_EXECUTE, "[%lu] %s", stmt->id,
+ expanded_query.length() ? expanded_query.c_ptr() :
+ stmt->query);
thd->protocol= &thd->protocol_prep; // Switch to binary protocol
execute_stmt(thd, stmt, &expanded_query, TRUE);
thd->protocol= &thd->protocol_simple; // Use normal protocol
diff --git a/tests/client_test.c b/tests/client_test.c
index dc18929341c..beaff795d0e 100644
--- a/tests/client_test.c
+++ b/tests/client_test.c
@@ -11503,6 +11503,29 @@ static void test_rewind(void)
rc= mysql_stmt_close(stmt);
}
+
+/* Bug#6761 - mysql_list_fields doesn't work */
+
+static void test_bug6761(void)
+{
+ const char *stmt_text;
+ MYSQL_RES *res;
+ int rc;
+ myheader("test_bug6761");
+
+ stmt_text= "CREATE TABLE t1 (a int, b char(255), c decimal)";
+ rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+ myquery(rc);
+
+ res= mysql_list_fields(mysql, "t1", "%");
+ DIE_UNLESS(res && mysql_num_fields(res) == 3);
+ mysql_free_result(res);
+
+ stmt_text= "DROP TABLE t1";
+ rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
+ myquery(rc);
+}
+
/*
Read and parse arguments and MySQL options from my.cnf
*/
@@ -11709,6 +11732,7 @@ static struct my_tests_st my_tests[]= {
{ "test_bug4172", test_bug4172 },
{ "test_conversion", test_conversion },
{ "test_rewind", test_rewind },
+ { "test_bug6761", test_bug6761 },
{ 0, 0 }
};