Commit 6af42cfb authored by joreland@mysql.com's avatar joreland@mysql.com

Merge mysql.com:/home/jonas/src/mysql-4.1

into mysql.com:/home/jonas/src/mysql-4.1-ndb
parents dacddf51 b06298a3
...@@ -1670,15 +1670,15 @@ static int com_server_help(String *buffer __attribute__((unused)), ...@@ -1670,15 +1670,15 @@ static int com_server_help(String *buffer __attribute__((unused)),
if (num_fields == 2) if (num_fields == 2)
{ {
put_info("Many help items for your request exist", INFO_INFO); put_info("Many help items for your request exist", INFO_INFO);
put_info("For more specific request please type 'help <item>' where item is one of next", INFO_INFO); put_info("To make a more specific request, please type 'help <item>',\nwhere item is one of next", INFO_INFO);
num_name= 0; num_name= 0;
num_cat= 1; num_cat= 1;
last_char= '_'; last_char= '_';
} }
else if ((cur= mysql_fetch_row(result))) else if ((cur= mysql_fetch_row(result)))
{ {
tee_fprintf(PAGER, "You asked help about help category: \"%s\"\n", cur[0]); tee_fprintf(PAGER, "You asked for help about help category: \"%s\"\n", cur[0]);
put_info("For a more information type 'help <item>' where item is one of the following", INFO_INFO); put_info("For more information, type 'help <item>', where item is one of the following", INFO_INFO);
num_name= 1; num_name= 1;
num_cat= 2; num_cat= 2;
print_help_item(&cur,1,2,&last_char); print_help_item(&cur,1,2,&last_char);
...@@ -1692,7 +1692,7 @@ static int com_server_help(String *buffer __attribute__((unused)), ...@@ -1692,7 +1692,7 @@ static int com_server_help(String *buffer __attribute__((unused)),
else else
{ {
put_info("\nNothing found", INFO_INFO); put_info("\nNothing found", INFO_INFO);
put_info("Please try to run 'help contents' for list of all accessible topics\n", INFO_INFO); put_info("Please try to run 'help contents' for a list of all accessible topics\n", INFO_INFO);
} }
} }
...@@ -1711,9 +1711,9 @@ com_help(String *buffer __attribute__((unused)), ...@@ -1711,9 +1711,9 @@ com_help(String *buffer __attribute__((unused)),
if (help_arg) if (help_arg)
return com_server_help(buffer,line,help_arg+1); return com_server_help(buffer,line,help_arg+1);
put_info("\nFor the complete MySQL Manual online visit:\n http://www.mysql.com/documentation\n", INFO_INFO); put_info("\nFor the complete MySQL Manual online, visit:\n http://www.mysql.com/documentation\n", INFO_INFO);
put_info("For info on technical support from MySQL developers visit:\n http://www.mysql.com/support\n", INFO_INFO); put_info("For info on technical support from MySQL developers, visit:\n http://www.mysql.com/support\n", INFO_INFO);
put_info("For info on MySQL books, utilities, consultants, etc. visit:\n http://www.mysql.com/portal\n", INFO_INFO); put_info("For info on MySQL books, utilities, consultants, etc., visit:\n http://www.mysql.com/portal\n", INFO_INFO);
put_info("List of all MySQL commands:", INFO_INFO); put_info("List of all MySQL commands:", INFO_INFO);
if (!named_cmds) if (!named_cmds)
put_info("Note that all text commands must be first on line and end with ';'",INFO_INFO); put_info("Note that all text commands must be first on line and end with ';'",INFO_INFO);
......
...@@ -661,12 +661,6 @@ history_load(History *h, const char *fname) ...@@ -661,12 +661,6 @@ history_load(History *h, const char *fname)
if ((fp = fopen(fname, "r")) == NULL) if ((fp = fopen(fname, "r")) == NULL)
return (i); return (i);
if ((line = fgetln(fp, &sz)) == NULL)
goto done;
if (strncmp(line, hist_cookie, sz) != 0)
goto done;
ptr = h_malloc(max_size = 1024); ptr = h_malloc(max_size = 1024);
if (ptr == NULL) if (ptr == NULL)
goto done; goto done;
...@@ -720,8 +714,6 @@ history_save(History *h, const char *fname) ...@@ -720,8 +714,6 @@ history_save(History *h, const char *fname)
if (fchmod(fileno(fp), S_IRUSR|S_IWUSR) == -1) if (fchmod(fileno(fp), S_IRUSR|S_IWUSR) == -1)
goto done; goto done;
if (fputs(hist_cookie, fp) == EOF)
goto done;
ptr = h_malloc(max_size = 1024); ptr = h_malloc(max_size = 1024);
if (ptr == NULL) if (ptr == NULL)
goto done; goto done;
...@@ -740,7 +732,7 @@ history_save(History *h, const char *fname) ...@@ -740,7 +732,7 @@ history_save(History *h, const char *fname)
ptr = nptr; ptr = nptr;
} }
(void) strvis(ptr, ev.str, VIS_WHITE); (void) strvis(ptr, ev.str, VIS_WHITE);
(void) fprintf(fp, "%s\n", ptr); (void) fprintf(fp, "%s\n", ev.str);
} }
oomem: oomem:
h_free((ptr_t)ptr); h_free((ptr_t)ptr);
......
...@@ -318,4 +318,5 @@ ...@@ -318,4 +318,5 @@
#define ER_WARN_INVALID_TIMESTAMP 1299 #define ER_WARN_INVALID_TIMESTAMP 1299
#define ER_INVALID_CHARACTER_STRING 1300 #define ER_INVALID_CHARACTER_STRING 1300
#define ER_WARN_ALLOWED_PACKET_OVERFLOWED 1301 #define ER_WARN_ALLOWED_PACKET_OVERFLOWED 1301
#define ER_ERROR_MESSAGES 302 #define ER_CONFLICTING_DECLARATIONS 1302
#define ER_ERROR_MESSAGES 303
...@@ -54,4 +54,12 @@ t1 CREATE TABLE `t1` ( ...@@ -54,4 +54,12 @@ t1 CREATE TABLE `t1` (
`a` char(10) collate latin1_german1_ci default NULL `a` char(10) collate latin1_german1_ci default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci
DROP TABLE t1; DROP TABLE t1;
create table t1 (a char) character set latin1 character set latin2;
ERROR HY000: Conflicting declarations: 'CHARACTER SET latin1' and 'CHARACTER SET latin2'
create table t1 (a char) character set latin1 collate latin2_bin;
ERROR 42000: COLLATION 'latin2_bin' is not valid for CHARACTER SET 'latin1'
create database d1 default character set latin1 character set latin2;
ERROR HY000: Conflicting declarations: 'CHARACTER SET latin1' and 'CHARACTER SET latin2'
create database d1 default character set latin1 collate latin2_bin;
ERROR 42000: COLLATION 'latin2_bin' is not valid for CHARACTER SET 'latin1'
DROP DATABASE mysqltest1; DROP DATABASE mysqltest1;
...@@ -35,10 +35,10 @@ update t1 set name="Autodiscover" where id = 2; ...@@ -35,10 +35,10 @@ update t1 set name="Autodiscover" where id = 2;
show status like 'handler_discover%'; show status like 'handler_discover%';
Variable_name Value Variable_name Value
Handler_discover 4 Handler_discover 4
select * from t1 order by name; select * from t1 order by id;
id name id name
2 Autodiscover
1 Autodiscover 1 Autodiscover
2 Autodiscover
3 Discover 3 3 Discover 3
show status like 'handler_discover%'; show status like 'handler_discover%';
Variable_name Value Variable_name Value
......
...@@ -71,6 +71,18 @@ SHOW CREATE TABLE t1; ...@@ -71,6 +71,18 @@ SHOW CREATE TABLE t1;
DROP TABLE t1; DROP TABLE t1;
# #
# Bug#
# CREATE TABLE and CREATE DATABASE didn't fail in some cases
#
--error 1302
create table t1 (a char) character set latin1 character set latin2;
--error 1253
create table t1 (a char) character set latin1 collate latin2_bin;
--error 1302
create database d1 default character set latin1 character set latin2;
--error 1253
create database d1 default character set latin1 collate latin2_bin;
# #
# #
DROP DATABASE mysqltest1; DROP DATABASE mysqltest1;
...@@ -50,7 +50,7 @@ flush tables; ...@@ -50,7 +50,7 @@ flush tables;
system rm var/master-data/test/t1.frm ; system rm var/master-data/test/t1.frm ;
update t1 set name="Autodiscover" where id = 2; update t1 set name="Autodiscover" where id = 2;
show status like 'handler_discover%'; show status like 'handler_discover%';
select * from t1 order by name; select * from t1 order by id;
show status like 'handler_discover%'; show status like 'handler_discover%';
# #
......
...@@ -145,6 +145,7 @@ NdbBlob::init() ...@@ -145,6 +145,7 @@ NdbBlob::init()
theNdbOp = NULL; theNdbOp = NULL;
theTable = NULL; theTable = NULL;
theAccessTable = NULL; theAccessTable = NULL;
theBlobTable = NULL;
theColumn = NULL; theColumn = NULL;
theFillChar = 0; theFillChar = 0;
theInlineSize = 0; theInlineSize = 0;
...@@ -1028,9 +1029,9 @@ NdbBlob::atPrepare(NdbConnection* aCon, NdbOperation* anOp, const NdbColumnImpl* ...@@ -1028,9 +1029,9 @@ NdbBlob::atPrepare(NdbConnection* aCon, NdbOperation* anOp, const NdbColumnImpl*
// sanity check // sanity check
assert((NDB_BLOB_HEAD_SIZE << 2) == sizeof(Head)); assert((NDB_BLOB_HEAD_SIZE << 2) == sizeof(Head));
assert(theColumn->m_attrSize * theColumn->m_arraySize == sizeof(Head) + theInlineSize); assert(theColumn->m_attrSize * theColumn->m_arraySize == sizeof(Head) + theInlineSize);
const NdbDictionary::Table* bt;
const NdbDictionary::Column* bc;
if (thePartSize > 0) { if (thePartSize > 0) {
const NdbDictionary::Table* bt = NULL;
const NdbDictionary::Column* bc = NULL;
if (theStripeSize == 0 || if (theStripeSize == 0 ||
(bt = theColumn->getBlobTable()) == NULL || (bt = theColumn->getBlobTable()) == NULL ||
(bc = bt->getColumn("DATA")) == NULL || (bc = bt->getColumn("DATA")) == NULL ||
...@@ -1039,8 +1040,8 @@ NdbBlob::atPrepare(NdbConnection* aCon, NdbOperation* anOp, const NdbColumnImpl* ...@@ -1039,8 +1040,8 @@ NdbBlob::atPrepare(NdbConnection* aCon, NdbOperation* anOp, const NdbColumnImpl*
setErrorCode(ErrTable); setErrorCode(ErrTable);
return -1; return -1;
} }
theBlobTable = &NdbTableImpl::getImpl(*bt);
} }
theBlobTable = & NdbTableImpl::getImpl(*bt);
// buffers // buffers
theKeyBuf.alloc(theTable->m_sizeOfKeysInWords << 2); theKeyBuf.alloc(theTable->m_sizeOfKeysInWords << 2);
theAccessKeyBuf.alloc(theAccessTable->m_sizeOfKeysInWords << 2); theAccessKeyBuf.alloc(theAccessTable->m_sizeOfKeysInWords << 2);
......
...@@ -231,11 +231,11 @@ then ...@@ -231,11 +231,11 @@ then
c_ht="$c_ht CREATE TABLE help_topic (" c_ht="$c_ht CREATE TABLE help_topic ("
c_ht="$c_ht help_topic_id int unsigned not null," c_ht="$c_ht help_topic_id int unsigned not null,"
c_ht="$c_ht name varchar(64) not null," c_ht="$c_ht name nvarchar(64) not null,"
c_ht="$c_ht help_category_id smallint unsigned not null," c_ht="$c_ht help_category_id smallint unsigned not null,"
c_ht="$c_ht description text not null," c_ht="$c_ht description text not null,"
c_ht="$c_ht example text not null," c_ht="$c_ht example text not null,"
c_ht="$c_ht url varchar(128) not null," c_ht="$c_ht url nvarchar(128) not null,"
c_ht="$c_ht primary key (help_topic_id)," c_ht="$c_ht primary key (help_topic_id),"
c_ht="$c_ht unique index (name)" c_ht="$c_ht unique index (name)"
c_ht="$c_ht )" c_ht="$c_ht )"
...@@ -252,9 +252,9 @@ then ...@@ -252,9 +252,9 @@ then
c_hc="$c_hc CREATE TABLE help_category (" c_hc="$c_hc CREATE TABLE help_category ("
c_hc="$c_hc help_category_id smallint unsigned not null," c_hc="$c_hc help_category_id smallint unsigned not null,"
c_hc="$c_hc name varchar(64) not null," c_hc="$c_hc name nvarchar(64) not null,"
c_hc="$c_hc parent_category_id smallint unsigned null," c_hc="$c_hc parent_category_id smallint unsigned null,"
c_hc="$c_hc url varchar(128) not null," c_hc="$c_hc url nvarchar(128) not null,"
c_hc="$c_hc primary key (help_category_id)," c_hc="$c_hc primary key (help_category_id),"
c_hc="$c_hc unique index (name)" c_hc="$c_hc unique index (name)"
c_hc="$c_hc )" c_hc="$c_hc )"
...@@ -269,7 +269,7 @@ then ...@@ -269,7 +269,7 @@ then
c_hk="$c_hk CREATE TABLE help_keyword (" c_hk="$c_hk CREATE TABLE help_keyword ("
c_hk="$c_hk help_keyword_id int unsigned not null," c_hk="$c_hk help_keyword_id int unsigned not null,"
c_hk="$c_hk name varchar(64) not null," c_hk="$c_hk name nvarchar(64) not null,"
c_hk="$c_hk primary key (help_keyword_id)," c_hk="$c_hk primary key (help_keyword_id),"
c_hk="$c_hk unique index (name)" c_hk="$c_hk unique index (name)"
c_hk="$c_hk )" c_hk="$c_hk )"
......
...@@ -314,3 +314,4 @@ character-set=latin2 ...@@ -314,3 +314,4 @@ character-set=latin2
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -308,3 +308,4 @@ character-set=latin1 ...@@ -308,3 +308,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -316,3 +316,4 @@ character-set=latin1 ...@@ -316,3 +316,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -305,3 +305,4 @@ character-set=latin1 ...@@ -305,3 +305,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -310,3 +310,4 @@ character-set=latin7 ...@@ -310,3 +310,4 @@ character-set=latin7
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -305,3 +305,4 @@ character-set=latin1 ...@@ -305,3 +305,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -317,3 +317,4 @@ character-set=latin1 ...@@ -317,3 +317,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -305,3 +305,4 @@ character-set=greek ...@@ -305,3 +305,4 @@ character-set=greek
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -307,3 +307,4 @@ character-set=latin2 ...@@ -307,3 +307,4 @@ character-set=latin2
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -305,3 +305,4 @@ character-set=latin1 ...@@ -305,3 +305,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -307,3 +307,4 @@ character-set=ujis ...@@ -307,3 +307,4 @@ character-set=ujis
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -305,3 +305,4 @@ character-set=euckr ...@@ -305,3 +305,4 @@ character-set=euckr
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -307,3 +307,4 @@ character-set=latin1 ...@@ -307,3 +307,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -307,3 +307,4 @@ character-set=latin1 ...@@ -307,3 +307,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -309,3 +309,4 @@ character-set=latin2 ...@@ -309,3 +309,4 @@ character-set=latin2
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -306,3 +306,4 @@ character-set=latin1 ...@@ -306,3 +306,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -309,3 +309,4 @@ character-set=latin2 ...@@ -309,3 +309,4 @@ character-set=latin2
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -307,3 +307,4 @@ character-set=koi8r ...@@ -307,3 +307,4 @@ character-set=koi8r
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -311,3 +311,4 @@ character-set=cp1250 ...@@ -311,3 +311,4 @@ character-set=cp1250
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -313,3 +313,4 @@ character-set=latin2 ...@@ -313,3 +313,4 @@ character-set=latin2
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -307,3 +307,4 @@ character-set=latin1 ...@@ -307,3 +307,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -305,3 +305,4 @@ character-set=latin1 ...@@ -305,3 +305,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -310,3 +310,4 @@ character-set=koi8u ...@@ -310,3 +310,4 @@ character-set=koi8u
"Invalid TIMESTAMP value in column '%s' at row %ld", "Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s' and '%s'"
...@@ -1049,7 +1049,10 @@ create: ...@@ -1049,7 +1049,10 @@ create:
lex->col_list.empty(); lex->col_list.empty();
} }
| CREATE DATABASE opt_if_not_exists ident | CREATE DATABASE opt_if_not_exists ident
{ Lex->create_info.default_table_charset=NULL; } {
Lex->create_info.default_table_charset= NULL;
Lex->create_info.used_fields= 0;
}
opt_create_database_options opt_create_database_options
{ {
LEX *lex=Lex; LEX *lex=Lex;
...@@ -1136,11 +1139,8 @@ create_database_options: ...@@ -1136,11 +1139,8 @@ create_database_options:
| create_database_options create_database_option {}; | create_database_options create_database_option {};
create_database_option: create_database_option:
opt_default COLLATE_SYM collation_name_or_default default_collation {}
{ Lex->create_info.default_table_charset=$3; } | default_charset {};
| opt_default charset charset_name_or_default
{ Lex->create_info.default_table_charset=$3; }
;
opt_table_options: opt_table_options:
/* empty */ { $$= 0; } /* empty */ { $$= 0; }
...@@ -1200,21 +1200,49 @@ create_table_option: ...@@ -1200,21 +1200,49 @@ create_table_option:
table_list->next=0; table_list->next=0;
lex->create_info.used_fields|= HA_CREATE_USED_UNION; lex->create_info.used_fields|= HA_CREATE_USED_UNION;
} }
| opt_default charset opt_equal charset_name_or_default | default_charset
{ | default_collation
Lex->create_info.default_table_charset= $4;
Lex->create_info.used_fields|= HA_CREATE_USED_DEFAULT_CHARSET;
}
| opt_default COLLATE_SYM opt_equal collation_name_or_default
{
Lex->create_info.default_table_charset= $4;
Lex->create_info.used_fields|= HA_CREATE_USED_DEFAULT_CHARSET;
}
| INSERT_METHOD opt_equal merge_insert_types { Lex->create_info.merge_insert_method= $3; Lex->create_info.used_fields|= HA_CREATE_USED_INSERT_METHOD;} | INSERT_METHOD opt_equal merge_insert_types { Lex->create_info.merge_insert_method= $3; Lex->create_info.used_fields|= HA_CREATE_USED_INSERT_METHOD;}
| DATA_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys | DATA_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys
{ Lex->create_info.data_file_name= $4.str; } { Lex->create_info.data_file_name= $4.str; }
| INDEX_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys { Lex->create_info.index_file_name= $4.str; }; | INDEX_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys { Lex->create_info.index_file_name= $4.str; };
default_charset:
opt_default charset opt_equal charset_name_or_default
{
HA_CREATE_INFO *cinfo= &Lex->create_info;
if ((cinfo->used_fields & HA_CREATE_USED_DEFAULT_CHARSET) &&
cinfo->default_table_charset && $4 &&
!my_charset_same(cinfo->default_table_charset,$4))
{
char cs1[32];
char cs2[32];
my_snprintf(cs1, sizeof(cs1), "CHARACTER SET %s",
cinfo->default_table_charset->csname);
my_snprintf(cs2, sizeof(cs2), "CHARACTER SET %s", $4->csname);
net_printf(YYTHD, ER_CONFLICTING_DECLARATIONS, cs1, cs2);
YYABORT;
}
Lex->create_info.default_table_charset= $4;
Lex->create_info.used_fields|= HA_CREATE_USED_DEFAULT_CHARSET;
};
default_collation:
opt_default COLLATE_SYM opt_equal collation_name_or_default
{
HA_CREATE_INFO *cinfo= &Lex->create_info;
if ((cinfo->used_fields & HA_CREATE_USED_DEFAULT_CHARSET) &&
cinfo->default_table_charset && $4 &&
!my_charset_same(cinfo->default_table_charset,$4))
{
net_printf(YYTHD,ER_COLLATION_CHARSET_MISMATCH,
$4->name, cinfo->default_table_charset->csname);
YYABORT;
}
Lex->create_info.default_table_charset= $4;
Lex->create_info.used_fields|= HA_CREATE_USED_DEFAULT_CHARSET;
};
storage_engines: storage_engines:
ident_or_text ident_or_text
{ {
...@@ -1824,7 +1852,12 @@ alter: ...@@ -1824,7 +1852,12 @@ alter:
} }
alter_list alter_list
{} {}
| ALTER DATABASE ident opt_create_database_options | ALTER DATABASE ident
{
Lex->create_info.default_table_charset= NULL;
Lex->create_info.used_fields= 0;
}
opt_create_database_options
{ {
LEX *lex=Lex; LEX *lex=Lex;
lex->sql_command=SQLCOM_ALTER_DB; lex->sql_command=SQLCOM_ALTER_DB;
......
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