mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 19:06:14 +01:00 
			
		
		
		
	 f862fe8b2b
			
		
	
	
	
	
	f862fe8b2bTABLE::use_all_columns turn on all bits of read_set, which is interpreted by innodb as a request to read all columns. Without doing so before calling init_read_record(), innodb will not retrieve any columns if mysql.servers table has been altered to use innodb as the engine, and any foreign servers stored in the table are "lost".
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| set sql_mode="";
 | |
| #
 | |
| # MDEV-4594 - CREATE SERVER crashes embedded
 | |
| #
 | |
| CREATE SERVER s1 FOREIGN DATA WRAPPER mysql OPTIONS(HOST 'localhost');
 | |
| SELECT * FROM mysql.servers;
 | |
| Server_name	Host	Db	Username	Password	Port	Socket	Wrapper	Owner
 | |
| s1	localhost				3306		mysql	
 | |
| DROP SERVER s1;
 | |
| CREATE SERVER s1 FOREIGN DATA WRAPPER foo OPTIONS(USER 'bar');
 | |
| SELECT * FROM mysql.servers;
 | |
| Server_name	Host	Db	Username	Password	Port	Socket	Wrapper	Owner
 | |
| s1			bar		0		foo	
 | |
| DROP SERVER s1;
 | |
| CREATE SERVER s1 FOREIGN DATA WRAPPER mysql OPTIONS(USER 'bar');
 | |
| ERROR HY000: Can't create federated table. Foreign data src error:  either HOST or SOCKET must be set
 | |
| CREATE SERVER s1 FOREIGN DATA WRAPPER mysql OPTIONS(HOST 'bar');
 | |
| SELECT * FROM mysql.servers;
 | |
| Server_name	Host	Db	Username	Password	Port	Socket	Wrapper	Owner
 | |
| s1	bar				3306		mysql	
 | |
| DROP SERVER s1;
 | |
| CREATE SERVER s1 FOREIGN DATA WRAPPER mysql OPTIONS(SOCKET 'bar');
 | |
| SELECT * FROM mysql.servers;
 | |
| Server_name	Host	Db	Username	Password	Port	Socket	Wrapper	Owner
 | |
| s1					3306	bar	mysql	
 | |
| DROP SERVER s1;
 | |
| CREATE SERVER s1 FOREIGN DATA WRAPPER mysql OPTIONS(SOCKET '/tmp/1234567890_1234567890_1234567890_1234567890_1234567890_1234567890.sock');
 | |
| SELECT Socket FROM mysql.servers where Server_name = 's1';
 | |
| Socket
 | |
| /tmp/1234567890_1234567890_1234567890_1234567890_1234567890_1234567890.sock
 | |
| DROP SERVER s1;
 | |
| #
 | |
| # MDEV-33783 CREATE SERVER segfaults on wrong mysql.servers
 | |
| #
 | |
| create server s1 foreign data wrapper foo options(user 'a');
 | |
| alter server s1 options(host 'server.example.org');
 | |
| rename table mysql.servers to mysql.servers_save;
 | |
| create table mysql.servers (x int);
 | |
| alter server s1 options(host 'server.example.org');
 | |
| ERROR HY000: The foreign server name you are trying to reference does not exist. Data source error:  s1
 | |
| create server s2 foreign data wrapper foo options(user 'a');
 | |
| ERROR HY000: Can't read record in system table
 | |
| drop table mysql.servers;
 | |
| rename table mysql.servers_save to mysql.servers;
 | |
| drop server s1;
 | |
| #
 | |
| # MDEV-35641 foreign server "disappears" after ALTERing the servers system table to use innodb and FLUSH PRIVILEGES
 | |
| #
 | |
| CREATE SERVER s1 FOREIGN DATA WRAPPER mysql OPTIONS (HOST '127.0.0.1');
 | |
| ALTER TABLE mysql.servers ENGINE=innodb;
 | |
| FLUSH PRIVILEGES;
 | |
| drop server s1;
 |