Commit 60fab5af authored by unknown's avatar unknown

Merge bk-internal.mysql.com:/data0/bk/mysql-5.1-new

into  bk-internal.mysql.com:/data0/bk/mysql-5.1-kt


sql/sql_parse.cc:
  Auto merged
parents 20334ba6 53949a26
...@@ -172,6 +172,6 @@ c2h ...@@ -172,6 +172,6 @@ c2h
ab_def ab_def
drop table t1; drop table t1;
SET NAMES sjis; SET NAMES sjis;
SELECT HEX('佐淘 \圭') FROM DUAL; SELECT HEX('@\') FROM DUAL;
HEX('佐淘 圭') HEX('@\')
8DB2939181408C5C 8DB2939181408C5C
This diff is collapsed.
...@@ -78,6 +78,6 @@ SET collation_connection='sjis_bin'; ...@@ -78,6 +78,6 @@ SET collation_connection='sjis_bin';
--character_set sjis --character_set sjis
SET NAMES sjis; SET NAMES sjis;
SELECT HEX('@\\') FROM DUAL; SELECT HEX('@\') FROM DUAL;
# End of 4.1 tests # End of 4.1 tests
#######################################
# Author: JBM #
# Date: 2006-03-09 #
# Purpose: To test the replication of #
# Cluster Disk Data using partitions #
#######################################
--source include/have_ndb.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
--echo --- Doing pre test cleanup ---
connection master;
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_query_log
# Start by creating a logfile group
##################################
CREATE LOGFILE GROUP lg1
ADD UNDOFILE 'undofile.dat'
INITIAL_SIZE 16M
UNDO_BUFFER_SIZE = 1M
ENGINE=NDB;
ALTER LOGFILE GROUP lg1
ADD UNDOFILE 'undofile02.dat'
INITIAL_SIZE = 4M
ENGINE=NDB;
###################################################
# Create a tablespace connected to the logfile group
###################################################
CREATE TABLESPACE ts1
ADD DATAFILE 'datafile.dat'
USE LOGFILE GROUP lg1
INITIAL_SIZE 12M
ENGINE NDB;
ALTER TABLESPACE ts1
ADD DATAFILE 'datafile02.dat'
INITIAL_SIZE = 4M
ENGINE=NDB;
#################################################################
--echo --- Start test 2 partition RANGE testing --
--echo --- Do setup --
#################################################
# Requirment: Create table that is partitioned #
# by range on year i.e. year(t) and replicate #
# basice operations such at insert, update #
# delete between 2 different storage engines #
# Alter table and ensure table is handled #
# Correctly on the slave #
#################################################
CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63),
bc CHAR(63), d DECIMAL(10,4) DEFAULT 0,
f FLOAT DEFAULT 0, total BIGINT UNSIGNED,
y YEAR, t DATE)
TABLESPACE ts1 STORAGE DISK
ENGINE=NDB
PARTITION BY RANGE (YEAR(t))
(PARTITION p0 VALUES LESS THAN (1901),
PARTITION p1 VALUES LESS THAN (1946),
PARTITION p2 VALUES LESS THAN (1966),
PARTITION p3 VALUES LESS THAN (1986),
PARTITION p4 VALUES LESS THAN (2005),
PARTITION p5 VALUES LESS THAN MAXVALUE);
--echo --- Show table on master ---
SHOW CREATE TABLE t1;
--echo --- Show table on slave --
sync_slave_with_master;
SHOW CREATE TABLE t1;
--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---
--source include/rpl_multi_engine3.inc
--echo --- Check that simple Alter statements are replicated correctly ---
ALTER TABLE t1 MODIFY vc VARCHAR(255);
--echo --- Show the new improved table on the master ---
SHOW CREATE TABLE t1;
--echo --- Make sure that our tables on slave are still same engine ---
--echo --- and that the alter statements replicated correctly ---
sync_slave_with_master;
SHOW CREATE TABLE t1;
--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---
--enable_query_log
--source include/rpl_multi_engine3.inc
--echo --- End test 2 partition RANGE testing ---
--echo --- Do Cleanup ---
DROP TABLE IF EXISTS t1;
########################################################
--echo --- Start test 3 partition LIST testing ---
--echo --- Do setup ---
#################################################
CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63),
bc CHAR(63), d DECIMAL(10,4) DEFAULT 0,
f FLOAT DEFAULT 0, total BIGINT UNSIGNED,
y YEAR, t DATE)
TABLESPACE ts1 STORAGE DISK
ENGINE=NDB
PARTITION BY LIST(id)
(PARTITION p0 VALUES IN (2, 4),
PARTITION p1 VALUES IN (42, 142));
--echo --- Test 3 Alter to add partition ---
ALTER TABLE t1 ADD PARTITION (PARTITION p2 VALUES IN (412));
--echo --- Show table on master ---
SHOW CREATE TABLE t1;
--echo --- Show table on slave ---
sync_slave_with_master;
SHOW CREATE TABLE t1;
--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---
--source include/rpl_multi_engine3.inc
--echo --- Check that simple Alter statements are replicated correctly ---
ALTER TABLE t1 MODIFY vc VARCHAR(255);
--echo --- Show the new improved table on the master ---
SHOW CREATE TABLE t1;
--echo --- Make sure that our tables on slave are still same engine ---
--echo --- and that the alter statements replicated correctly ---
sync_slave_with_master;
SHOW CREATE TABLE t1;
--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---
--source include/rpl_multi_engine3.inc
--echo --- End test 3 partition LIST testing ---
--echo --- Do Cleanup --
DROP TABLE IF EXISTS t1;
########################################################
--echo --- Start test 4 partition HASH testing ---
--echo --- Do setup ---
#################################################
CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63),
bc CHAR(63), d DECIMAL(10,4) DEFAULT 0,
f FLOAT DEFAULT 0, total BIGINT UNSIGNED,
y YEAR, t DATE)
TABLESPACE ts1 STORAGE DISK
ENGINE=NDB
PARTITION BY HASH( YEAR(t) )
PARTITIONS 4;
--echo --- show that tables have been created correctly ---
SHOW CREATE TABLE t1;
sync_slave_with_master;
SHOW CREATE TABLE t1;
--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---
--source include/rpl_multi_engine3.inc
--echo --- Check that simple Alter statements are replicated correctly ---
ALTER TABLE t1 MODIFY vc VARCHAR(255);
--echo --- Show the new improved table on the master ---
SHOW CREATE TABLE t1;
--echo --- Make sure that our tables on slave are still same engine ---
--echo --- and that the alter statements replicated correctly ---
sync_slave_with_master;
SHOW CREATE TABLE t1;
--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---
--source include/rpl_multi_engine3.inc
--echo --- End test 4 partition HASH testing ---
--echo --- Do Cleanup --
DROP TABLE IF EXISTS t1;
########################################################
--echo --- Start test 5 partition by key testing ---
--echo --- Create Table Section ---
#################################################
CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63),
bc CHAR(63), d DECIMAL(10,4) DEFAULT 0,
f FLOAT DEFAULT 0, total BIGINT UNSIGNED,
y YEAR, t DATE,PRIMARY KEY(id))
TABLESPACE ts1 STORAGE DISK
ENGINE=NDB
PARTITION BY KEY()
PARTITIONS 4;
--echo --- Show that tables on master are ndbcluster tables ---
SHOW CREATE TABLE t1;
--echo --- Show that tables on slave ---
sync_slave_with_master;
SHOW CREATE TABLE t1;
--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---
--source include/rpl_multi_engine3.inc
# Okay lets see how it holds up to table changes
--echo --- Check that simple Alter statements are replicated correctly ---
ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(id, total);
--echo --- Show the new improved table on the master ---
SHOW CREATE TABLE t1;
--echo --- Make sure that our tables on slave are still right type ---
--echo --- and that the alter statements replicated correctly ---
sync_slave_with_master;
SHOW CREATE TABLE t1;
--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---
--source include/rpl_multi_engine3.inc
--echo --- Check that simple Alter statements are replicated correctly ---
ALTER TABLE t1 MODIFY vc VARCHAR(255);
--echo --- Show the new improved table on the master ---
SHOW CREATE TABLE t1;
--echo --- Make sure that our tables on slave are still same engine ---
--echo --- and that the alter statements replicated correctly ---
sync_slave_with_master;
SHOW CREATE TABLE t1;
--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---
--source include/rpl_multi_engine3.inc
--echo --- End test 5 key partition testing ---
--echo --- Do Cleanup ---
DROP TABLE IF EXISTS t1;
alter tablespace ts1
drop datafile 'datafile.dat'
engine=ndb;
alter tablespace ts1
drop datafile 'datafile02.dat'
engine=ndb;
DROP TABLESPACE ts1 ENGINE=NDB;
DROP LOGFILE GROUP lg1 ENGINE=NDB;
--sync_slave_with_master
# End of 5.1 test case
...@@ -3546,14 +3546,17 @@ void ha_ndbcluster::info(uint flag) ...@@ -3546,14 +3546,17 @@ void ha_ndbcluster::info(uint flag)
Ndb *ndb= get_ndb(); Ndb *ndb= get_ndb();
Ndb_tuple_id_range_guard g(m_share); Ndb_tuple_id_range_guard g(m_share);
Uint64 auto_increment_value64;
if (ndb->readAutoIncrementValue(m_table, g.range, if (ndb->readAutoIncrementValue(m_table, g.range,
auto_increment_value) == -1) auto_increment_value64) == -1)
{ {
const NdbError err= ndb->getNdbError(); const NdbError err= ndb->getNdbError();
sql_print_error("Error %lu in readAutoIncrementValue(): %s", sql_print_error("Error %lu in readAutoIncrementValue(): %s",
(ulong) err.code, err.message); (ulong) err.code, err.message);
auto_increment_value= ~(Uint64)0; auto_increment_value= ~(Uint64)0;
} }
else
auto_increment_value= (ulonglong)auto_increment_value64;
} }
} }
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
......
...@@ -319,18 +319,7 @@ static char *get_text(LEX *lex) ...@@ -319,18 +319,7 @@ static char *get_text(LEX *lex)
found_escape=1; found_escape=1;
if (lex->ptr == lex->end_of_query) if (lex->ptr == lex->end_of_query)
return 0; return 0;
#ifdef USE_MB yySkip();
int l;
if (use_mb(cs) &&
(l = my_ismbchar(cs,
(const char *)lex->ptr,
(const char *)lex->end_of_query))) {
lex->ptr += l;
continue;
}
else
#endif
yySkip();
} }
else if (c == sep) else if (c == sep)
{ {
...@@ -360,9 +349,6 @@ static char *get_text(LEX *lex) ...@@ -360,9 +349,6 @@ static char *get_text(LEX *lex)
{ {
uchar *to; uchar *to;
/* Re-use found_escape for tracking state of escapes */
found_escape= 0;
for (to=start ; str != end ; str++) for (to=start ; str != end ; str++)
{ {
#ifdef USE_MB #ifdef USE_MB
...@@ -376,8 +362,7 @@ static char *get_text(LEX *lex) ...@@ -376,8 +362,7 @@ static char *get_text(LEX *lex)
continue; continue;
} }
#endif #endif
if (!found_escape && if (!(lex->thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) &&
!(lex->thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) &&
*str == '\\' && str+1 != end) *str == '\\' && str+1 != end)
{ {
switch(*++str) { switch(*++str) {
...@@ -404,20 +389,14 @@ static char *get_text(LEX *lex) ...@@ -404,20 +389,14 @@ static char *get_text(LEX *lex)
*to++= '\\'; // remember prefix for wildcard *to++= '\\'; // remember prefix for wildcard
/* Fall through */ /* Fall through */
default: default:
found_escape= 1; *to++= *str;
str--;
break; break;
} }
} }
else if (!found_escape && *str == sep) else if (*str == sep)
{ *to++= *str++; // Two ' or "
found_escape= 1;
}
else else
{
*to++ = *str; *to++ = *str;
found_escape= 0;
}
} }
*to=0; *to=0;
lex->yytoklen=(uint) (to-start); lex->yytoklen=(uint) (to-start);
......
...@@ -12794,25 +12794,26 @@ from t2);"); ...@@ -12794,25 +12794,26 @@ from t2);");
static void test_bug8378() static void test_bug8378()
{ {
#if defined(HAVE_CHARSET_gbk) && !defined(EMBEDDED_LIBRARY) #if defined(HAVE_CHARSET_gbk) && !defined(EMBEDDED_LIBRARY)
MYSQL *lmysql; MYSQL *old_mysql=mysql;
char out[9]; /* strlen(TEST_BUG8378)*2+1 */ char out[9]; /* strlen(TEST_BUG8378)*2+1 */
int len; char buf[256];
int len, rc;
myheader("test_bug8378"); myheader("test_bug8378");
if (!opt_silent) if (!opt_silent)
fprintf(stdout, "\n Establishing a test connection ..."); fprintf(stdout, "\n Establishing a test connection ...");
if (!(lmysql= mysql_init(NULL))) if (!(mysql= mysql_init(NULL)))
{ {
myerror("mysql_init() failed"); myerror("mysql_init() failed");
exit(1); exit(1);
} }
if (mysql_options(lmysql, MYSQL_SET_CHARSET_NAME, "gbk")) if (mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "gbk"))
{ {
myerror("mysql_options() failed"); myerror("mysql_options() failed");
exit(1); exit(1);
} }
if (!(mysql_real_connect(lmysql, opt_host, opt_user, if (!(mysql_real_connect(mysql, opt_host, opt_user,
opt_password, current_db, opt_port, opt_password, current_db, opt_port,
opt_unix_socket, 0))) opt_unix_socket, 0)))
{ {
...@@ -12822,12 +12823,18 @@ static void test_bug8378() ...@@ -12822,12 +12823,18 @@ static void test_bug8378()
if (!opt_silent) if (!opt_silent)
fprintf(stdout, " OK"); fprintf(stdout, " OK");
len= mysql_real_escape_string(lmysql, out, TEST_BUG8378_IN, 4); len= mysql_real_escape_string(mysql, out, TEST_BUG8378_IN, 4);
/* No escaping should have actually happened. */ /* No escaping should have actually happened. */
DIE_UNLESS(memcmp(out, TEST_BUG8378_OUT, len) == 0); DIE_UNLESS(memcmp(out, TEST_BUG8378_OUT, len) == 0);
mysql_close(lmysql); sprintf(buf, "SELECT '%s'", out);
rc=mysql_real_query(mysql, buf, strlen(buf));
myquery(rc);
mysql_close(mysql);
mysql=old_mysql;
#endif #endif
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment