\c postgres postgres CREATE EXTENSION mysql_fdw; CREATE SERVER mysql_svr FOREIGN DATA WRAPPER mysql_fdw; CREATE USER MAPPING FOR postgres SERVER mysql_svr OPTIONS(username 'foo', password 'bar'); CREATE FOREIGN TABLE department(department_id int, department_name text) SERVER mysql_svr OPTIONS(dbname 'testdb', table_name 'department'); CREATE FOREIGN TABLE employee(emp_id int, emp_name text, emp_dept_id int) SERVER mysql_svr OPTIONS(dbname 'testdb', table_name 'employee'); CREATE FOREIGN TABLE empdata(emp_id int, emp_dat bytea) SERVER mysql_svr OPTIONS(dbname 'testdb', table_name 'empdata'); SELECT * FROM department LIMIT 10; SELECT * FROM employee LIMIT 10; SELECT * FROM empdata LIMIT 10; INSERT INTO department VALUES(generate_series(1,100), 'dept - ' || generate_series(1,100)); INSERT INTO employee VALUES(generate_series(1,100), 'emp - ' || generate_series(1,100), generate_series(1,100)); INSERT INTO empdata VALUES(1, decode ('01234567', 'hex')); SELECT count(*) FROM department; SELECT count(*) FROM employee; SELECT count(*) FROM empdata; EXPLAIN (COSTS FALSE) SELECT * FROM department d, employee e WHERE d.department_id = e.emp_dept_id LIMIT 10; EXPLAIN (COSTS FALSE) SELECT * FROM department d, employee e WHERE d.department_id IN (SELECT department_id FROM department) LIMIT 10; SELECT * FROM department d, employee e WHERE d.department_id = e.emp_dept_id LIMIT 10; SELECT * FROM department d, employee e WHERE d.department_id IN (SELECT department_id FROM department) LIMIT 10; SELECT * FROM empdata; DELETE FROM employee WHERE emp_id = 10; SELECT COUNT(*) FROM department LIMIT 10; SELECT COUNT(*) FROM employee WHERE emp_id = 10; UPDATE employee SET emp_name = 'Updated emp' WHERE emp_id = 20; SELECT emp_id, emp_name FROM employee WHERE emp_name like 'Updated emp'; UPDATE empdata SET emp_dat = decode ('0123', 'hex'); SELECT * FROM empdata; SELECT * FROM employee LIMIT 10; SELECT * FROM employee WHERE emp_id IN (1); SELECT * FROM employee WHERE emp_id IN (1,3,4,5); SELECT * FROM employee WHERE emp_id IN (10000,1000); SELECT * FROM employee WHERE emp_id NOT IN (1) LIMIT 5; SELECT * FROM employee WHERE emp_id NOT IN (1,3,4,5) LIMIT 5; SELECT * FROM employee WHERE emp_id NOT IN (10000,1000) LIMIT 5; SELECT * FROM employee WHERE emp_id NOT IN (SELECT emp_id FROM employee WHERE emp_id IN (1,10)); SELECT * FROM employee WHERE emp_name NOT IN ('emp - 1', 'emp - 2') LIMIT 5; SELECT * FROM employee WHERE emp_name NOT IN ('emp - 10') LIMIT 5; DELETE FROM employee; DELETE FROM department; DELETE FROM empdata; DROP FOREIGN TABLE department; DROP FOREIGN TABLE employee; DROP FOREIGN TABLE empdata; DROP USER MAPPING FOR postgres SERVER mysql_svr; DROP SERVER mysql_svr; DROP EXTENSION mysql_fdw CASCADE;