diff options
author | unknown <holyfoot/hf@mysql.com/deer.(none)> | 2006-11-13 20:06:45 +0400 |
---|---|---|
committer | unknown <holyfoot/hf@mysql.com/deer.(none)> | 2006-11-13 20:06:45 +0400 |
commit | ea1f7e4b5697c3275c301011beaa394548f273ae (patch) | |
tree | 24f445de7d3e3981e59c68744b1c7dda5f765e32 | |
parent | 71419317f1955d8ea00cee070e224b2e55857cc2 (diff) | |
download | mariadb-git-ea1f7e4b5697c3275c301011beaa394548f273ae.tar.gz |
several fixes to make tests pass in embedded-server mode
libmysqld/lib_sql.cc:
check for bootstrap added
mysql-test/include/federated.inc:
disabled in embedded
mysql-test/mysql-test-run.pl:
we disable ssh in embedded server
mysql-test/r/bdb.result:
part moved to bdb_notembedded as it uses binlog
mysql-test/r/flush_block_commit.result:
part moved to flush_block_commit_notembedded
mysql-test/r/insert.result:
part moved to insert_notembedded as delayed works differently in embedded server
mysql-test/r/insert_select.result:
part moved to insert_notembedded as GRANTS usually disabled in embedded server
mysql-test/r/join.result:
access rights hidden in result
mysql-test/t/backup.test:
now available in embedded server
mysql-test/t/bdb.test:
part moved to bdb_notembedded as it uses binlog
mysql-test/t/delayed.test:
code trimmed
mysql-test/t/execution_constants.test:
skipped in embedded-server mode
mysql-test/t/flush_block_commit.test:
moved to flush_block_commit_notembedded
mysql-test/t/information_schema_db.test:
skipped in embedded-server
mysql-test/t/innodb.test:
directories replaced to be embedded-server compliant
mysql-test/t/insert.test:
part moved to insert_notembedded
mysql-test/t/insert_select.test:
part moved to insert_notembedded
mysql-test/t/join.test:
access rights hidden
mysql-test/t/status.test:
skipped in embedded server
mysql-test/t/trigger.test:
directories replaced to be embedded-server compliant
sql/item_strfunc.cc:
extra contexts not needed whan access checks disabled
sql/share/errmsg.txt:
bigger paths reserved to prevent test's fails
mysql-test/r/bdb_notembedded.result:
***MISSING WEAVE***
mysql-test/r/flush_block_commit_notembedded.result:
added
mysql-test/r/insert_notembedded.result:
added
mysql-test/t/bdb_notembedded.test:
***MISSING WEAVE***
mysql-test/t/flush_block_commit_notembedded.test:
added
mysql-test/t/insert_notembedded.test:
added
26 files changed, 336 insertions, 371 deletions
diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc index cfa90c2abce..0df7014ba16 100644 --- a/libmysqld/lib_sql.cc +++ b/libmysqld/lib_sql.cc @@ -770,6 +770,8 @@ MYSQL_DATA *THD::alloc_new_dataset() static void write_eof_packet(THD *thd) { + if (!thd->mysql) // bootstrap file handling + return; /* The following test should never be true, but it's better to do it because if 'is_fatal_error' is set the server is not going to execute diff --git a/mysql-test/include/federated.inc b/mysql-test/include/federated.inc index 1c53b9ed2c5..35cd33db3fb 100644 --- a/mysql-test/include/federated.inc +++ b/mysql-test/include/federated.inc @@ -1,3 +1,4 @@ +--source include/not_embedded.inc --source ./include/have_federated_db.inc source ./include/master-slave.inc; diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 13ce7ccc66e..46de66adde4 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -750,6 +750,7 @@ sub command_line_setup () { push(@glob_test_mode, "embedded"); $opt_skip_rpl= 1; # We never run replication with embedded $opt_skip_ndbcluster= 1; + $opt_skip_ssl= 1; if ( $opt_extern ) { diff --git a/mysql-test/r/bdb.result b/mysql-test/r/bdb.result index c5b3b1f86e7..33398d1ddd7 100644 --- a/mysql-test/r/bdb.result +++ b/mysql-test/r/bdb.result @@ -1928,38 +1928,4 @@ create table t1 (a int) engine=bdb; commit; alter table t1 add primary key(a); drop table t1; -set autocommit=1; -reset master; -create table bug16206 (a int); -insert into bug16206 values(1); -start transaction; -insert into bug16206 values(2); -commit; -show binlog events; -Log_name Pos Event_type Server_id End_log_pos Info -f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4 -f n Query 1 n use `test`; create table bug16206 (a int) -f n Query 1 n use `test`; insert into bug16206 values(1) -f n Query 1 n use `test`; insert into bug16206 values(2) -drop table bug16206; -reset master; -create table bug16206 (a int) engine= bdb; -insert into bug16206 values(0); -insert into bug16206 values(1); -start transaction; -insert into bug16206 values(2); -commit; -insert into bug16206 values(3); -show binlog events; -Log_name Pos Event_type Server_id End_log_pos Info -f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4 -f n Query 1 n use `test`; create table bug16206 (a int) engine= bdb -f n Query 1 n use `test`; insert into bug16206 values(0) -f n Query 1 n use `test`; insert into bug16206 values(1) -f n Query 1 n use `test`; BEGIN -f n Query 1 n use `test`; insert into bug16206 values(2) -f n Query 1 n use `test`; COMMIT -f n Query 1 n use `test`; insert into bug16206 values(3) -drop table bug16206; -set autocommit=0; End of 5.0 tests diff --git a/mysql-test/r/flush_block_commit.result b/mysql-test/r/flush_block_commit.result index 2f6aca7e24a..2e9f1920937 100644 --- a/mysql-test/r/flush_block_commit.result +++ b/mysql-test/r/flush_block_commit.result @@ -37,18 +37,3 @@ show create database test; Database Create Database test CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */ drop table t1; -create table t1 (a int) engine=innodb; -reset master; -set autocommit=0; -insert t1 values (1); -flush tables with read lock; -show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 98 - commit; -show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 98 -unlock tables; -drop table t1; -set autocommit=1; diff --git a/mysql-test/r/flush_block_commit_notembedded.result b/mysql-test/r/flush_block_commit_notembedded.result new file mode 100644 index 00000000000..09c1bcafafe --- /dev/null +++ b/mysql-test/r/flush_block_commit_notembedded.result @@ -0,0 +1,15 @@ +create table t1 (a int) engine=innodb; +reset master; +set autocommit=0; +insert t1 values (1); +flush tables with read lock; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 98 + commit; +show master status; +File Position Binlog_Do_DB Binlog_Ignore_DB +master-bin.000001 98 +unlock tables; +drop table t1; +set autocommit=1; diff --git a/mysql-test/r/insert.result b/mysql-test/r/insert.result index 80723d68b5a..78ef6fbccba 100644 --- a/mysql-test/r/insert.result +++ b/mysql-test/r/insert.result @@ -299,12 +299,6 @@ select count(*) from t2; count(*) 25500 drop table t1,t2,t3; -create table t1 (n int); -create view v1 as select * from t1; -insert delayed into v1 values (1); -ERROR HY000: 'test.v1' is not BASE TABLE -drop table t1; -drop view v1; create table t1 (id int primary key, data int); insert into t1 values (1, 1), (2, 2), (3, 3); select row_count(); diff --git a/mysql-test/r/insert_notembedded.result b/mysql-test/r/insert_notembedded.result new file mode 100644 index 00000000000..816060b7ec9 --- /dev/null +++ b/mysql-test/r/insert_notembedded.result @@ -0,0 +1,107 @@ +drop table if exists t1; +create table t1 (n int); +create view v1 as select * from t1; +insert delayed into v1 values (1); +ERROR HY000: 'test.v1' is not BASE TABLE +drop table t1; +drop view v1; +CREATE DATABASE meow; +CREATE TABLE table_target ( mexs_id CHAR(8), messzeit TIMESTAMP, PRIMARY KEY (mexs_id)); +CREATE TABLE table_target2 ( mexs_id CHAR(8), messzeit TIMESTAMP, PRIMARY KEY (mexs_id)); +CREATE TABLE table_target3 ( mexs_id CHAR(8), messzeit TIMESTAMP, PRIMARY KEY (mexs_id)); +CREATE VIEW view_target2 AS SELECT mexs_id,messzeit FROM table_target2; +CREATE SQL SECURITY INVOKER VIEW view_target3 AS SELECT mexs_id,messzeit FROM table_target3; +CREATE TABLE table_stations ( mexs_id VARCHAR(8), icao VARCHAR(4), country CHAR(2), PRIMARY KEY (mexs_id), UNIQUE KEY icao (icao), KEY country (country), CONSTRAINT stations_ibfk_8 FOREIGN KEY (country) REFERENCES countries (country) ON UPDATE CASCADE); +INSERT INTO table_stations VALUES ('87654321','XXXX','YY'); +CREATE TABLE table_countries ( country CHAR(2), iso_short_en VARCHAR(64), PRIMARY KEY (country)); +INSERT INTO table_countries VALUES ('YY','Entenhausen'); +CREATE ALGORITHM=MERGE SQL SECURITY INVOKER VIEW view_stations AS select table_stations.mexs_id AS mexs_id, table_stations.icao AS icao, table_stations.country AS landescode from (table_stations join table_countries on((table_stations.country = table_countries.country))); +CREATE TABLE table_source ( id varchar(4), datetime TIMESTAMP, PRIMARY KEY (id)); +INSERT INTO table_source VALUES ('XXXX','2006-07-12 07:50:00'); +GRANT SELECT ON table_source TO user20989@localhost; +GRANT SELECT ON table_countries TO user20989@localhost; +GRANT SELECT ON table_stations TO user20989@localhost; +GRANT SELECT ON view_stations TO user20989@localhost; +GRANT SELECT ON table_target TO user20989@localhost; +GRANT SELECT ON table_target2 TO user20989@localhost; +GRANT INSERT,DELETE,SELECT ON view_target3 TO user20989@localhost; +REPLACE INTO table_target +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN table_target AS old +USING (mexs_id); +ERROR 42000: INSERT,DELETE command denied to user 'user20989'@'localhost' for table 'table_target' +REPLACE INTO view_target2 +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN view_target2 AS old +USING (mexs_id); +ERROR 42000: INSERT,DELETE command denied to user 'user20989'@'localhost' for table 'view_target2' +REPLACE INTO view_target3 +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN view_target3 AS old +USING (mexs_id); +ERROR HY000: View 'meow.view_target3' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them +GRANT INSERT,DELETE ON table_target TO user20989@localhost; +GRANT INSERT,DELETE,SELECT ON view_target2 TO user20989@localhost; +GRANT INSERT,DELETE,SELECT ON table_target3 TO user20989@localhost; +REPLACE INTO table_target +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN table_target AS old +USING (mexs_id); +REPLACE INTO table_target2 VALUES ('00X45Y78','2006-07-12 07:50:00'); +ERROR 42000: INSERT,DELETE command denied to user 'user20989'@'localhost' for table 'table_target2' +REPLACE INTO view_target2 VALUES ('12X45Y78','2006-07-12 07:50:00'); +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN view_target2 AS old +USING (mexs_id); +mexs_id messzeit +87654321 2006-07-12 07:50:00 +REPLACE INTO view_target2 +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN view_target2 AS old +USING (mexs_id); +REPLACE INTO view_target3 +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN view_target3 AS old +USING (mexs_id); +SELECT * FROM table_target; +mexs_id messzeit +87654321 2006-07-12 07:50:00 +SELECT * FROM view_target2; +mexs_id messzeit +12X45Y78 2006-07-12 07:50:00 +87654321 2006-07-12 07:50:00 +SELECT * FROM view_target3; +mexs_id messzeit +87654321 2006-07-12 07:50:00 +DROP VIEW view_stations; +DROP TABLE table_source; +DROP TABLE table_countries; +DROP TABLE table_stations; +DROP TABLE table_target; +DROP TABLE table_target2; +DROP TABLE table_target3; +DROP VIEW view_target2; +DROP VIEW view_target3; +DROP USER user20989@localhost; +DROP DATABASE meow; diff --git a/mysql-test/r/insert_select.result b/mysql-test/r/insert_select.result index 0af48d27cd5..1453d25ac75 100644 --- a/mysql-test/r/insert_select.result +++ b/mysql-test/r/insert_select.result @@ -705,103 +705,3 @@ use bug21774_1; INSERT INTO bug21774_2.t1 SELECT t1.* FROM t1; DROP DATABASE bug21774_1; DROP DATABASE bug21774_2; -CREATE DATABASE meow; -CREATE TABLE table_target ( mexs_id CHAR(8), messzeit TIMESTAMP, PRIMARY KEY (mexs_id)); -CREATE TABLE table_target2 ( mexs_id CHAR(8), messzeit TIMESTAMP, PRIMARY KEY (mexs_id)); -CREATE TABLE table_target3 ( mexs_id CHAR(8), messzeit TIMESTAMP, PRIMARY KEY (mexs_id)); -CREATE VIEW view_target2 AS SELECT mexs_id,messzeit FROM table_target2; -CREATE SQL SECURITY INVOKER VIEW view_target3 AS SELECT mexs_id,messzeit FROM table_target3; -CREATE TABLE table_stations ( mexs_id VARCHAR(8), icao VARCHAR(4), country CHAR(2), PRIMARY KEY (mexs_id), UNIQUE KEY icao (icao), KEY country (country), CONSTRAINT stations_ibfk_8 FOREIGN KEY (country) REFERENCES countries (country) ON UPDATE CASCADE); -INSERT INTO table_stations VALUES ('87654321','XXXX','YY'); -CREATE TABLE table_countries ( country CHAR(2), iso_short_en VARCHAR(64), PRIMARY KEY (country)); -INSERT INTO table_countries VALUES ('YY','Entenhausen'); -CREATE ALGORITHM=MERGE SQL SECURITY INVOKER VIEW view_stations AS select table_stations.mexs_id AS mexs_id, table_stations.icao AS icao, table_stations.country AS landescode from (table_stations join table_countries on((table_stations.country = table_countries.country))); -CREATE TABLE table_source ( id varchar(4), datetime TIMESTAMP, PRIMARY KEY (id)); -INSERT INTO table_source VALUES ('XXXX','2006-07-12 07:50:00'); -GRANT SELECT ON table_source TO user20989@localhost; -GRANT SELECT ON table_countries TO user20989@localhost; -GRANT SELECT ON table_stations TO user20989@localhost; -GRANT SELECT ON view_stations TO user20989@localhost; -GRANT SELECT ON table_target TO user20989@localhost; -GRANT SELECT ON table_target2 TO user20989@localhost; -GRANT INSERT,DELETE,SELECT ON view_target3 TO user20989@localhost; -REPLACE INTO table_target -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN table_target AS old -USING (mexs_id); -ERROR 42000: INSERT,DELETE command denied to user 'user20989'@'localhost' for table 'table_target' -REPLACE INTO view_target2 -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN view_target2 AS old -USING (mexs_id); -ERROR 42000: INSERT,DELETE command denied to user 'user20989'@'localhost' for table 'view_target2' -REPLACE INTO view_target3 -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN view_target3 AS old -USING (mexs_id); -ERROR HY000: View 'meow.view_target3' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them -GRANT INSERT,DELETE ON table_target TO user20989@localhost; -GRANT INSERT,DELETE,SELECT ON view_target2 TO user20989@localhost; -GRANT INSERT,DELETE,SELECT ON table_target3 TO user20989@localhost; -REPLACE INTO table_target -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN table_target AS old -USING (mexs_id); -REPLACE INTO table_target2 VALUES ('00X45Y78','2006-07-12 07:50:00'); -ERROR 42000: INSERT,DELETE command denied to user 'user20989'@'localhost' for table 'table_target2' -REPLACE INTO view_target2 VALUES ('12X45Y78','2006-07-12 07:50:00'); -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN view_target2 AS old -USING (mexs_id); -mexs_id messzeit -87654321 2006-07-12 07:50:00 -REPLACE INTO view_target2 -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN view_target2 AS old -USING (mexs_id); -REPLACE INTO view_target3 -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN view_target3 AS old -USING (mexs_id); -SELECT * FROM table_target; -mexs_id messzeit -87654321 2006-07-12 07:50:00 -SELECT * FROM view_target2; -mexs_id messzeit -12X45Y78 2006-07-12 07:50:00 -87654321 2006-07-12 07:50:00 -SELECT * FROM view_target3; -mexs_id messzeit -87654321 2006-07-12 07:50:00 -DROP VIEW view_stations; -DROP TABLE table_source; -DROP TABLE table_countries; -DROP TABLE table_stations; -DROP TABLE table_target; -DROP TABLE table_target2; -DROP TABLE table_target3; -DROP VIEW view_target2; -DROP VIEW view_target3; -DROP USER user20989@localhost; -DROP DATABASE meow; diff --git a/mysql-test/r/join.result b/mysql-test/r/join.result index 48b7730481f..8ad6f344c4f 100644 --- a/mysql-test/r/join.result +++ b/mysql-test/r/join.result @@ -700,8 +700,8 @@ ERROR 42S22: Unknown column 't1.b' in 'on clause' select * from information_schema.statistics join information_schema.columns using(table_name,column_name) where table_name='user'; TABLE_NAME COLUMN_NAME TABLE_CATALOG TABLE_SCHEMA NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT TABLE_CATALOG TABLE_SCHEMA ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT -user Host NULL mysql 0 mysql PRIMARY 1 A NULL NULL NULL BTREE NULL mysql 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references -user User NULL mysql 0 mysql PRIMARY 2 A 5 NULL NULL BTREE NULL mysql 2 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references +user Host NULL mysql 0 mysql PRIMARY 1 A NULL NULL NULL BTREE NULL mysql 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI # +user User NULL mysql 0 mysql PRIMARY 2 A 5 NULL NULL BTREE NULL mysql 2 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI # drop table t1; drop table t2; drop table t3; diff --git a/mysql-test/t/backup.test b/mysql-test/t/backup.test index 053e83528e0..a3339ecce69 100644 --- a/mysql-test/t/backup.test +++ b/mysql-test/t/backup.test @@ -1,6 +1,3 @@ -# This test should work in embedded server after we fix mysqltest --- source include/not_embedded.inc - # # This test is a bit tricky as we can't use backup table to overwrite an old # table diff --git a/mysql-test/t/bdb.test b/mysql-test/t/bdb.test index ec05eeb3c34..d017d91bfb1 100644 --- a/mysql-test/t/bdb.test +++ b/mysql-test/t/bdb.test @@ -1019,39 +1019,4 @@ commit; alter table t1 add primary key(a); drop table t1; - -# -# Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit mode -# -set autocommit=1; - -let $VERSION=`select version()`; - -reset master; -create table bug16206 (a int); -insert into bug16206 values(1); -start transaction; -insert into bug16206 values(2); -commit; ---replace_result $VERSION VERSION ---replace_column 1 f 2 n 5 n -show binlog events; -drop table bug16206; - -reset master; -create table bug16206 (a int) engine= bdb; -insert into bug16206 values(0); -insert into bug16206 values(1); -start transaction; -insert into bug16206 values(2); -commit; -insert into bug16206 values(3); ---replace_result $VERSION VERSION ---replace_column 1 f 2 n 5 n -show binlog events; -drop table bug16206; - -set autocommit=0; - - --echo End of 5.0 tests diff --git a/mysql-test/t/delayed.test b/mysql-test/t/delayed.test index f9a7312346f..fe8bc167e0f 100644 --- a/mysql-test/t/delayed.test +++ b/mysql-test/t/delayed.test @@ -5,9 +5,6 @@ # (Can't be tested with purify :( ) # -# This tests not performed with embedded server --- source include/not_embedded.inc - --disable_warnings drop table if exists t1; --enable_warnings diff --git a/mysql-test/t/execution_constants.test b/mysql-test/t/execution_constants.test index 00967b2eeba..4930164d3fa 100644 --- a/mysql-test/t/execution_constants.test +++ b/mysql-test/t/execution_constants.test @@ -1,3 +1,6 @@ +# In embedded server we don't really have a control over stack usage +-- source include/not_embedded.inc + # # Bug#21476: Lost Database Connection During Query # diff --git a/mysql-test/t/flush_block_commit.test b/mysql-test/t/flush_block_commit.test index 4412b2c357c..0c1d2b82df6 100644 --- a/mysql-test/t/flush_block_commit.test +++ b/mysql-test/t/flush_block_commit.test @@ -75,24 +75,3 @@ show create database test; drop table t1; # End of 4.1 tests - -# FLUSH TABLES WITH READ LOCK should block writes to binlog too -connection con1; -create table t1 (a int) engine=innodb; -reset master; -set autocommit=0; -insert t1 values (1); -connection con2; -flush tables with read lock; -show master status; -connection con1; -send commit; -connection con2; -sleep 1; -show master status; -unlock tables; -connection con1; -reap; -drop table t1; -set autocommit=1; - diff --git a/mysql-test/t/flush_block_commit_notembedded.test b/mysql-test/t/flush_block_commit_notembedded.test new file mode 100644 index 00000000000..4650a5a15a8 --- /dev/null +++ b/mysql-test/t/flush_block_commit_notembedded.test @@ -0,0 +1,32 @@ +# Let's see if FLUSH TABLES WITH READ LOCK blocks COMMIT of existing +# transactions. +# We verify that we did not introduce a deadlock. +# This is intended to mimick how mysqldump and innobackup work. + +# And it requires InnoDB +-- source include/not_embedded.inc +-- source include/have_innodb.inc + +connect (con1,localhost,root,,); +connect (con2,localhost,root,,); + +# FLUSH TABLES WITH READ LOCK should block writes to binlog too +connection con1; +create table t1 (a int) engine=innodb; +reset master; +set autocommit=0; +insert t1 values (1); +connection con2; +flush tables with read lock; +show master status; +connection con1; +send commit; +connection con2; +sleep 1; +show master status; +unlock tables; +connection con1; +reap; +drop table t1; +set autocommit=1; + diff --git a/mysql-test/t/information_schema_db.test b/mysql-test/t/information_schema_db.test index 4dfe1ad56b5..e15e50e8766 100644 --- a/mysql-test/t/information_schema_db.test +++ b/mysql-test/t/information_schema_db.test @@ -1,3 +1,7 @@ +# this test mostly test privilege control (what doesn't work +# in the embedded server by default). So disabled in embedded-server mode +-- source include/not_embedded.inc + -- source include/testdb_only.inc --disable_warnings diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test index 0c083ccdfd3..561d47253d2 100644 --- a/mysql-test/t/innodb.test +++ b/mysql-test/t/innodb.test @@ -2154,6 +2154,7 @@ select * from t1, t2 drop table t1, t2; # bug 18934, "InnoDB crashes when table uses column names like DB_ROW_ID" +--replace_result \\ / $MYSQL_TEST_DIR . /var/master-data/ / --error 1005 CREATE TABLE t1 (DB_ROW_ID int) engine=innodb; diff --git a/mysql-test/t/insert.test b/mysql-test/t/insert.test index ac43d0bc818..029c4d19e63 100644 --- a/mysql-test/t/insert.test +++ b/mysql-test/t/insert.test @@ -177,18 +177,6 @@ select count(*) from t2; drop table t1,t2,t3; # -# Test for INSERT DELAYED INTO a <view> -# BUG#13683: INSERT DELAYED into a view creates an infinite loop -# - -create table t1 (n int); -create view v1 as select * from t1; ---error 1347 -insert delayed into v1 values (1); -drop table t1; -drop view v1; - -# # Test for values returned by ROW_COUNT() function # (and thus for values returned by mysql_affected_rows()) # for various forms of INSERT diff --git a/mysql-test/t/insert_notembedded.test b/mysql-test/t/insert_notembedded.test new file mode 100644 index 00000000000..bdea72e9eca --- /dev/null +++ b/mysql-test/t/insert_notembedded.test @@ -0,0 +1,154 @@ +-- source include/not_embedded.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + +# Test for INSERT DELAYED INTO a <view> +# BUG#13683: INSERT DELAYED into a view creates an infinite loop +# + +create table t1 (n int); +create view v1 as select * from t1; +--error 1347 +insert delayed into v1 values (1); +drop table t1; +drop view v1; + +# +# Bug #20989: View '(null).(null)' references invalid table(s)... on +# SQL SECURITY INVOKER +# +# this is really the fact that REPLACE ... SELECT required additional +# INSERT privs (on tables that are part of a view) over the related +# REPLACE, SELECT +# + +CREATE DATABASE meow; + +connect (root,localhost,root,,meow); +connection root; + +CREATE TABLE table_target ( mexs_id CHAR(8), messzeit TIMESTAMP, PRIMARY KEY (mexs_id)); +CREATE TABLE table_target2 ( mexs_id CHAR(8), messzeit TIMESTAMP, PRIMARY KEY (mexs_id)); +CREATE TABLE table_target3 ( mexs_id CHAR(8), messzeit TIMESTAMP, PRIMARY KEY (mexs_id)); +CREATE VIEW view_target2 AS SELECT mexs_id,messzeit FROM table_target2; +CREATE SQL SECURITY INVOKER VIEW view_target3 AS SELECT mexs_id,messzeit FROM table_target3; + +CREATE TABLE table_stations ( mexs_id VARCHAR(8), icao VARCHAR(4), country CHAR(2), PRIMARY KEY (mexs_id), UNIQUE KEY icao (icao), KEY country (country), CONSTRAINT stations_ibfk_8 FOREIGN KEY (country) REFERENCES countries (country) ON UPDATE CASCADE); +INSERT INTO table_stations VALUES ('87654321','XXXX','YY'); + +CREATE TABLE table_countries ( country CHAR(2), iso_short_en VARCHAR(64), PRIMARY KEY (country)); +INSERT INTO table_countries VALUES ('YY','Entenhausen'); + +CREATE ALGORITHM=MERGE SQL SECURITY INVOKER VIEW view_stations AS select table_stations.mexs_id AS mexs_id, table_stations.icao AS icao, table_stations.country AS landescode from (table_stations join table_countries on((table_stations.country = table_countries.country))); + +CREATE TABLE table_source ( id varchar(4), datetime TIMESTAMP, PRIMARY KEY (id)); +INSERT INTO table_source VALUES ('XXXX','2006-07-12 07:50:00'); + +GRANT SELECT ON table_source TO user20989@localhost; +GRANT SELECT ON table_countries TO user20989@localhost; +GRANT SELECT ON table_stations TO user20989@localhost; +GRANT SELECT ON view_stations TO user20989@localhost; +GRANT SELECT ON table_target TO user20989@localhost; +GRANT SELECT ON table_target2 TO user20989@localhost; +GRANT INSERT,DELETE,SELECT ON view_target3 TO user20989@localhost; + +connect (user20989,localhost,user20989,,meow); +connection user20989; + +--error 1142 +REPLACE INTO table_target +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN table_target AS old +USING (mexs_id); + +--error 1142 +REPLACE INTO view_target2 +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN view_target2 AS old +USING (mexs_id); + +--error 1356 +REPLACE INTO view_target3 +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN view_target3 AS old +USING (mexs_id); + +connection root; +disconnect user20989; + +GRANT INSERT,DELETE ON table_target TO user20989@localhost; +GRANT INSERT,DELETE,SELECT ON view_target2 TO user20989@localhost; +GRANT INSERT,DELETE,SELECT ON table_target3 TO user20989@localhost; + +connect (user20989,localhost,user20989,,meow); +connection user20989; + +REPLACE INTO table_target +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN table_target AS old +USING (mexs_id); + +--error 1142 +REPLACE INTO table_target2 VALUES ('00X45Y78','2006-07-12 07:50:00'); +REPLACE INTO view_target2 VALUES ('12X45Y78','2006-07-12 07:50:00'); + +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN view_target2 AS old +USING (mexs_id); + +REPLACE INTO view_target2 +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN view_target2 AS old +USING (mexs_id); + +REPLACE INTO view_target3 +SELECT stations.mexs_id AS mexs_id, datetime AS messzeit +FROM table_source +INNER JOIN view_stations AS stations +ON table_source.id = stations.icao +LEFT JOIN view_target3 AS old +USING (mexs_id); + +connection root; +disconnect user20989; + +SELECT * FROM table_target; +SELECT * FROM view_target2; +SELECT * FROM view_target3; + +DROP VIEW view_stations; +DROP TABLE table_source; +DROP TABLE table_countries; +DROP TABLE table_stations; +DROP TABLE table_target; +DROP TABLE table_target2; +DROP TABLE table_target3; +DROP VIEW view_target2; +DROP VIEW view_target3; +DROP USER user20989@localhost; + +disconnect root; + +connection default; + +DROP DATABASE meow; diff --git a/mysql-test/t/insert_select.test b/mysql-test/t/insert_select.test index 6f86ed897ac..404d67390ab 100644 --- a/mysql-test/t/insert_select.test +++ b/mysql-test/t/insert_select.test @@ -266,140 +266,3 @@ INSERT INTO bug21774_2.t1 SELECT t1.* FROM t1; DROP DATABASE bug21774_1; DROP DATABASE bug21774_2; -# -# Bug #20989: View '(null).(null)' references invalid table(s)... on -# SQL SECURITY INVOKER -# -# this is really the fact that REPLACE ... SELECT required additional -# INSERT privs (on tables that are part of a view) over the related -# REPLACE, SELECT -# - -CREATE DATABASE meow; - -connect (root,localhost,root,,meow); -connection root; - -CREATE TABLE table_target ( mexs_id CHAR(8), messzeit TIMESTAMP, PRIMARY KEY (mexs_id)); -CREATE TABLE table_target2 ( mexs_id CHAR(8), messzeit TIMESTAMP, PRIMARY KEY (mexs_id)); -CREATE TABLE table_target3 ( mexs_id CHAR(8), messzeit TIMESTAMP, PRIMARY KEY (mexs_id)); -CREATE VIEW view_target2 AS SELECT mexs_id,messzeit FROM table_target2; -CREATE SQL SECURITY INVOKER VIEW view_target3 AS SELECT mexs_id,messzeit FROM table_target3; - -CREATE TABLE table_stations ( mexs_id VARCHAR(8), icao VARCHAR(4), country CHAR(2), PRIMARY KEY (mexs_id), UNIQUE KEY icao (icao), KEY country (country), CONSTRAINT stations_ibfk_8 FOREIGN KEY (country) REFERENCES countries (country) ON UPDATE CASCADE); -INSERT INTO table_stations VALUES ('87654321','XXXX','YY'); - -CREATE TABLE table_countries ( country CHAR(2), iso_short_en VARCHAR(64), PRIMARY KEY (country)); -INSERT INTO table_countries VALUES ('YY','Entenhausen'); - -CREATE ALGORITHM=MERGE SQL SECURITY INVOKER VIEW view_stations AS select table_stations.mexs_id AS mexs_id, table_stations.icao AS icao, table_stations.country AS landescode from (table_stations join table_countries on((table_stations.country = table_countries.country))); - -CREATE TABLE table_source ( id varchar(4), datetime TIMESTAMP, PRIMARY KEY (id)); -INSERT INTO table_source VALUES ('XXXX','2006-07-12 07:50:00'); - -GRANT SELECT ON table_source TO user20989@localhost; -GRANT SELECT ON table_countries TO user20989@localhost; -GRANT SELECT ON table_stations TO user20989@localhost; -GRANT SELECT ON view_stations TO user20989@localhost; -GRANT SELECT ON table_target TO user20989@localhost; -GRANT SELECT ON table_target2 TO user20989@localhost; -GRANT INSERT,DELETE,SELECT ON view_target3 TO user20989@localhost; - -connect (user20989,localhost,user20989,,meow); -connection user20989; - ---error 1142 -REPLACE INTO table_target -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN table_target AS old -USING (mexs_id); - ---error 1142 -REPLACE INTO view_target2 -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN view_target2 AS old -USING (mexs_id); - ---error 1356 -REPLACE INTO view_target3 -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN view_target3 AS old -USING (mexs_id); - -connection root; -disconnect user20989; - -GRANT INSERT,DELETE ON table_target TO user20989@localhost; -GRANT INSERT,DELETE,SELECT ON view_target2 TO user20989@localhost; -GRANT INSERT,DELETE,SELECT ON table_target3 TO user20989@localhost; - -connect (user20989,localhost,user20989,,meow); -connection user20989; - -REPLACE INTO table_target -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN table_target AS old -USING (mexs_id); - ---error 1142 -REPLACE INTO table_target2 VALUES ('00X45Y78','2006-07-12 07:50:00'); -REPLACE INTO view_target2 VALUES ('12X45Y78','2006-07-12 07:50:00'); - -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN view_target2 AS old -USING (mexs_id); - -REPLACE INTO view_target2 -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN view_target2 AS old -USING (mexs_id); - -REPLACE INTO view_target3 -SELECT stations.mexs_id AS mexs_id, datetime AS messzeit -FROM table_source -INNER JOIN view_stations AS stations -ON table_source.id = stations.icao -LEFT JOIN view_target3 AS old -USING (mexs_id); - -connection root; -disconnect user20989; - -SELECT * FROM table_target; -SELECT * FROM view_target2; -SELECT * FROM view_target3; - -DROP VIEW view_stations; -DROP TABLE table_source; -DROP TABLE table_countries; -DROP TABLE table_stations; -DROP TABLE table_target; -DROP TABLE table_target2; -DROP TABLE table_target3; -DROP VIEW view_target2; -DROP VIEW view_target3; -DROP USER user20989@localhost; - -disconnect root; - -connection default; - -DROP DATABASE meow; diff --git a/mysql-test/t/join.test b/mysql-test/t/join.test index 27558a31d68..f6804ed3db5 100644 --- a/mysql-test/t/join.test +++ b/mysql-test/t/join.test @@ -520,6 +520,8 @@ select * from v1a join v1b on t1.b = t2.b; # # Bug #17523 natural join and information_schema # +# We mask out the Privileges column because it differs with embedded server +--replace_column 31 # select * from information_schema.statistics join information_schema.columns using(table_name,column_name) where table_name='user'; diff --git a/mysql-test/t/status.test b/mysql-test/t/status.test index 9d5adf57f81..3f7671b18d4 100644 --- a/mysql-test/t/status.test +++ b/mysql-test/t/status.test @@ -1,3 +1,6 @@ +# embedded server causes different stat +-- source include/not_embedded.inc + # PS causes different statistics --disable_ps_protocol diff --git a/mysql-test/t/trigger.test b/mysql-test/t/trigger.test index 6bd812d473e..969047929b9 100644 --- a/mysql-test/t/trigger.test +++ b/mysql-test/t/trigger.test @@ -1140,6 +1140,7 @@ select trigger_schema, trigger_name, event_object_schema, # Trick which makes update of second .TRN file impossible system echo dummy >$MYSQLTEST_VARDIR/master-data/test/t1_ai.TRN~; system chmod 000 $MYSQLTEST_VARDIR/master-data/test/t1_ai.TRN~; +--replace_result $MYSQLTEST_VARDIR . master-data/ '' --error 1 rename table t1 to t2; # 't1' should be still there and triggers should work correctly diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 31c2f44fc3e..b973858b8e5 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -1735,8 +1735,13 @@ bool Item_func_current_user::fix_fields(THD *thd, Item **ref) if (Item_func_sysconst::fix_fields(thd, ref)) return TRUE; - Security_context *ctx= (context->security_ctx + Security_context *ctx= +#ifndef NO_EMBEDDED_ACCESS_CHECKS + (context->security_ctx ? context->security_ctx : thd->security_ctx); +#else + thd->security_ctx; +#endif /*NO_EMBEDDED_ACCESS_CHECKS*/ return init(ctx->priv_user, ctx->priv_host); } diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 2b6d2b18f88..e09629a1f3e 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -78,7 +78,7 @@ ER_CANT_CREATE_TABLE cze "Nemohu vytvo-Bit tabulku '%-.64s' (chybov kd: %d)" dan "Kan ikke oprette tabellen '%-.64s' (Fejlkode: %d)" nla "Kan tabel '%-.64s' niet aanmaken (Errcode: %d)" - eng "Can't create table '%-.64s' (errno: %d)" + eng "Can't create table '%-.200s' (errno: %d)" jps "'%-.64s' e[u܂.(errno: %d)", est "Ei suuda luua tabelit '%-.64s' (veakood: %d)" fre "Ne peut crer la table '%-.64s' (Errcode: %d)" @@ -574,7 +574,7 @@ ER_ERROR_ON_RENAME cze "Chyba p-Bi pejmenovn '%-.64s' na '%-.64s' (chybov kd: %d)" dan "Fejl ved omdbning af '%-.64s' til '%-.64s' (Fejlkode: %d)" nla "Fout bij het hernoemen van '%-.64s' naar '%-.64s' (Errcode: %d)" - eng "Error on rename of '%-.64s' to '%-.64s' (errno: %d)" + eng "Error on rename of '%-.150s' to '%-.150s' (errno: %d)" jps "'%-.64s' '%-.64s' rename ł܂ (errno: %d)", est "Viga faili '%-.64s' mbernimetamisel '%-.64s'-ks (veakood: %d)" fre "Erreur en renommant '%-.64s' en '%-.64s' (Errcode: %d)" |