| 790 | } |
| 791 | |
| 792 | static void test_locking(void *p) { |
| 793 | char buffer[STRING_BUFFER_SIZE]; |
| 794 | MYSQL_SESSION session_1, session_2, session_3; |
| 795 | |
| 796 | DBUG_TRACE; |
| 797 | struct st_plugin_ctx *plugin_ctx = new st_plugin_ctx(); |
| 798 | |
| 799 | /* Open session 1 and session 2 */ |
| 800 | WRITE_STR("\nOpening Session 1\n"); |
| 801 | session_1 = srv_session_open(nullptr, plugin_ctx); |
| 802 | if (!session_1) |
| 803 | LogPluginErr(ERROR_LEVEL, ER_LOG_PRINTF_MSG, "open session_1 failed."); |
| 804 | |
| 805 | WRITE_STR("Opening Session 2\n"); |
| 806 | session_2 = srv_session_open(nullptr, plugin_ctx); |
| 807 | if (!session_2) |
| 808 | LogPluginErr(ERROR_LEVEL, ER_LOG_PRINTF_MSG, "open session_2 failed."); |
| 809 | |
| 810 | WRITE_STR("Opening Session 3\n"); |
| 811 | session_3 = srv_session_open(nullptr, plugin_ctx); |
| 812 | if (!session_3) |
| 813 | LogPluginErr(ERROR_LEVEL, ER_LOG_PRINTF_MSG, "open session_3 failed."); |
| 814 | |
| 815 | /* Locking */ |
| 816 | WRITE_STR( |
| 817 | "===================================================================\n"); |
| 818 | WRITE_STR("Locking using LOCK TABLE\n"); |
| 819 | WRITE_STR( |
| 820 | "===================================================================\n"); |
| 821 | |
| 822 | WRITE_STR( |
| 823 | "-------------------------------------------------------------------\n"); |
| 824 | WRITE_STR("Session 1 :\n"); |
| 825 | WRITE_STR( |
| 826 | "-------------------------------------------------------------------\n"); |
| 827 | exec_test_cmd(session_1, "LOCK TABLE test.t1 READ", p, plugin_ctx); |
| 828 | /* Following statement should return an error because table t1 is locked with |
| 829 | * a READ lock */ |
| 830 | exec_test_cmd(session_1, |
| 831 | "/*statement should return an error because table t1 is locked " |
| 832 | "with a READ lock*/\nINSERT INTO test.t1 VALUES (11,7)", |
| 833 | p, plugin_ctx); |
| 834 | exec_test_cmd(session_1, "SHOW OPEN TABLES FROM test LIKE 't1'", p, |
| 835 | plugin_ctx); |
| 836 | |
| 837 | WRITE_STR( |
| 838 | "-------------------------------------------------------------------\n"); |
| 839 | WRITE_STR("Session 2 :\n"); |
| 840 | WRITE_STR( |
| 841 | "-------------------------------------------------------------------\n"); |
| 842 | exec_test_cmd(session_2, "LOCK TABLE test.t2 WRITE", p, plugin_ctx); |
| 843 | exec_test_cmd(session_2, "SHOW OPEN TABLES FROM test LIKE 't1'", p, |
| 844 | plugin_ctx); |
| 845 | exec_test_cmd(session_2, "SHOW OPEN TABLES FROM test LIKE 't2'", p, |
| 846 | plugin_ctx); |
| 847 | |
| 848 | WRITE_STR( |
| 849 | "-------------------------------------------------------------------\n"); |
no test coverage detected