mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
Merge pgalbraith@bk-internal.mysql.com:/home/bk/mysql-5.0
into krsna.patg.net:/home/patg/mysql-build/mysql-5.0
This commit is contained in:
commit
e13ffdae40
3 changed files with 127 additions and 2 deletions
|
@ -975,6 +975,22 @@ static my_bool test_if_special_chars(const char *str)
|
|||
|
||||
|
||||
|
||||
/*
|
||||
quote_name(name, buff, force)
|
||||
|
||||
Quotes char string, taking into account compatible mode
|
||||
|
||||
Args
|
||||
|
||||
name Unquoted string containing that which will be quoted
|
||||
buff The buffer that contains the quoted value, also returned
|
||||
force Flag to make it ignore 'test_if_special_chars'
|
||||
|
||||
Returns
|
||||
|
||||
buff quoted string
|
||||
|
||||
*/
|
||||
static char *quote_name(const char *name, char *buff, my_bool force)
|
||||
{
|
||||
char *to= buff;
|
||||
|
@ -1782,14 +1798,19 @@ continue_xml:
|
|||
|
||||
static void dump_triggers_for_table (char *table, char *db)
|
||||
{
|
||||
MYSQL_RES *result;
|
||||
MYSQL_ROW row;
|
||||
char *result_table;
|
||||
char name_buff[NAME_LEN*4+3], table_buff[NAME_LEN*2+3];
|
||||
char query_buff[512];
|
||||
uint old_opt_compatible_mode=opt_compatible_mode;
|
||||
FILE *sql_file = md_result_file;
|
||||
MYSQL_RES *result;
|
||||
MYSQL_ROW row;
|
||||
|
||||
DBUG_ENTER("dump_triggers_for_table");
|
||||
DBUG_PRINT("enter", ("db: %s, table: %s", db, table));
|
||||
|
||||
/* Do not use ANSI_QUOTES on triggers in dump */
|
||||
opt_compatible_mode&= ~MASK_ANSI_QUOTES;
|
||||
result_table= quote_name(table, table_buff, 1);
|
||||
|
||||
my_snprintf(query_buff, sizeof(query_buff),
|
||||
|
@ -1822,6 +1843,11 @@ DELIMITER ;;\n");
|
|||
"DELIMITER ;\n"
|
||||
"/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE */;\n");
|
||||
mysql_free_result(result);
|
||||
/*
|
||||
make sure to set back opt_compatible mode to
|
||||
original value
|
||||
*/
|
||||
opt_compatible_mode=old_opt_compatible_mode;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
|
|
@ -2309,3 +2309,68 @@ UNLOCK TABLES;
|
|||
drop table t1;
|
||||
set global time_zone=default;
|
||||
set time_zone=default;
|
||||
DROP TABLE IF EXISTS `t1 test`;
|
||||
CREATE TABLE `t1 test` (
|
||||
`a1` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
DROP TABLE IF EXISTS `t2 test`;
|
||||
CREATE TABLE `t2 test` (
|
||||
`a2` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
CREATE TRIGGER `test trig` BEFORE INSERT ON `t1 test` FOR EACH ROW BEGIN
|
||||
INSERT INTO `t2 test` SET a2 = NEW.a1; END //
|
||||
INSERT INTO `t1 test` VALUES (1);
|
||||
INSERT INTO `t1 test` VALUES (2);
|
||||
INSERT INTO `t1 test` VALUES (3);
|
||||
SELECT * FROM `t2 test`;
|
||||
a2
|
||||
1
|
||||
2
|
||||
3
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO,ANSI' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
DROP TABLE IF EXISTS "t1 test";
|
||||
CREATE TABLE "t1 test" (
|
||||
"a1" int(11) default NULL
|
||||
);
|
||||
|
||||
|
||||
/*!40000 ALTER TABLE "t1 test" DISABLE KEYS */;
|
||||
LOCK TABLES "t1 test" WRITE;
|
||||
INSERT INTO "t1 test" VALUES (1),(2),(3);
|
||||
UNLOCK TABLES;
|
||||
/*!40000 ALTER TABLE "t1 test" ENABLE KEYS */;
|
||||
|
||||
/*!50003 SET @OLD_SQL_MODE=@@SQL_MODE*/;
|
||||
DELIMITER ;;
|
||||
/*!50003 SET SESSION SQL_MODE="" */;;
|
||||
/*!50003 CREATE TRIGGER `test trig` BEFORE INSERT ON `t1 test` FOR EACH ROW BEGIN
|
||||
INSERT INTO `t2 test` SET a2 = NEW.a1; END */;;
|
||||
|
||||
DELIMITER ;
|
||||
/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE */;
|
||||
DROP TABLE IF EXISTS "t2 test";
|
||||
CREATE TABLE "t2 test" (
|
||||
"a2" int(11) default NULL
|
||||
);
|
||||
|
||||
|
||||
/*!40000 ALTER TABLE "t2 test" DISABLE KEYS */;
|
||||
LOCK TABLES "t2 test" WRITE;
|
||||
INSERT INTO "t2 test" VALUES (1),(2),(3);
|
||||
UNLOCK TABLES;
|
||||
/*!40000 ALTER TABLE "t2 test" ENABLE KEYS */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
DROP TRIGGER `test trig`;
|
||||
DROP TABLE `t1 test`;
|
||||
DROP TABLE `t2 test`;
|
||||
|
|
|
@ -928,3 +928,37 @@ set global time_zone='Europe/Moscow';
|
|||
drop table t1;
|
||||
set global time_zone=default;
|
||||
set time_zone=default;
|
||||
|
||||
#
|
||||
# Test of fix to BUG 13146 - ansi quotes break loading of triggers
|
||||
#
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS `t1 test`;
|
||||
CREATE TABLE `t1 test` (
|
||||
`a1` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
DROP TABLE IF EXISTS `t2 test`;
|
||||
CREATE TABLE `t2 test` (
|
||||
`a2` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
--enable_warnings
|
||||
|
||||
DELIMITER //;
|
||||
CREATE TRIGGER `test trig` BEFORE INSERT ON `t1 test` FOR EACH ROW BEGIN
|
||||
INSERT INTO `t2 test` SET a2 = NEW.a1; END //
|
||||
DELIMITER ;//
|
||||
|
||||
INSERT INTO `t1 test` VALUES (1);
|
||||
INSERT INTO `t1 test` VALUES (2);
|
||||
INSERT INTO `t1 test` VALUES (3);
|
||||
SELECT * FROM `t2 test`;
|
||||
# dump with compatible=ansi. Everything except triggers should be double
|
||||
# quoted
|
||||
--exec $MYSQL_DUMP --skip-comments --compatible=ansi --triggers test
|
||||
|
||||
--disable_warnings
|
||||
DROP TRIGGER `test trig`;
|
||||
DROP TABLE `t1 test`;
|
||||
DROP TABLE `t2 test`;
|
||||
--enable_warnings
|
||||
|
|
Loading…
Add table
Reference in a new issue