mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 14:02:32 +01:00
a62e9a83c0
Make mysqltest to use --ps-protocol more use prepared statements for everything that server supports with the exception of CALL (for now). Fix discovered test failures and bugs. tests: * PROCESSLIST shows Execute state, not Query * SHOW STATUS increments status variables more than in text protocol * multi-statements should be avoided (see tests with a wrong delimiter) * performance_schema events have different names in --ps-protocol * --enable_prepare_warnings mysqltest.cc: * make sure run_query_stmt() doesn't crash if there's no active connection (in wait_until_connected_again.inc) * prepare all statements that server supports protocol.h * Protocol_discard::send_result_set_metadata() should not send anything to the client. sql_acl.cc: * extract the functionality of getting the user for SHOW GRANTS from check_show_access(), so that mysql_test_show_grants() could generate the correct column names in the prepare step sql_class.cc: * result->prepare() can fail, don't ignore its return value * use correct number of decimals for EXPLAIN columns sql_parse.cc: * discard profiling for SHOW PROFILE. In text protocol it's done in prepare_schema_table(), but in --ps it is called on prepare only, so nothing was discarding profiling during execute. * move the permission checking code for SHOW CREATE VIEW to mysqld_show_create_get_fields(), so that it would be called during prepare step too. * only set sel_result when it was created here and needs to be destroyed in the same block. Avoid destroying lex->result. * use the correct number of tables in check_show_access(). Saying "as many as possible" doesn't work when first_not_own_table isn't set yet. sql_prepare.cc: * use correct user name for SHOW GRANTS columns * don't ignore verbose flag for SHOW SLAVE STATUS * support preparing REVOKE ALL and ROLLBACK TO SAVEPOINT * don't ignore errors from thd->prepare_explain_fields() * use select_send result for sending ANALYZE and EXPLAIN, but don't overwrite lex->result, because it might be needed to issue execute-time errors (select_dumpvar - too many rows) sql_show.cc: * check grants for SHOW CREATE VIEW here, not in mysql_execute_command sql_view.cc: * use the correct function to check privileges. Old code was doing check_access() for thd->security_ctx, which is invoker's sctx, not definer's sctx. Hide various view related errors from the invoker. sql_yacc.yy: * initialize lex->select_lex for LOAD, otherwise it'll contain garbage data that happen to fail tests with views in --ps (but not otherwise). |
||
---|---|---|
.. | ||
bitdata | ||
cursors | ||
datadict | ||
include | ||
lib | ||
r | ||
storedproc | ||
t | ||
triggers | ||
views | ||
disabled.def | ||
README.txt |
2008-02-29 Matthias Leich ========================= 1. The testsuite "funcs_1" is mostly intended for additional (compared to the common regression tests stored in mysql-test/t) checks of features (VIEWS, INFORMATION_SCHEMA, STORED PROCEDURES,...) introduced with MySQL 5.0. 2. There were some extensions of this suite when new information_schema views were introduced. But in most cases the tests for these views were stored within the regression testsuite (mysql-test/t). INFORMATION_SCHEMA views introduced with MySQL 5.1 ================================================== ENGINES (partially tested here) EVENTS (partially tested here) FILES GLOBAL_STATUS GLOBAL_VARIABLES PARTITIONS PLUGINS PROCESSLIST (full tested here) PROFILING REFERENTIAL_CONSTRAINTS SESSION_STATUS SESSION_VARIABLES 3. Some hints for maintainers of this suite: - SHOW TABLES ... LIKE '<pattern>' does a case sensitive comparison between the tablename and the pattern. The names of the tables within the informationschema are in uppercase. So please use something like SHOW TABLES FOR information_schema LIKE 'TABLES' when you intend to get the same non empty result set on OS with and without case sensitive filesystems and default configuration. - The name of the data dictionary is 'information_schema' (lowercase). - Server on OS with filesystem with case sensitive filenames (= The files 'abc' and 'Abc' can coexist.) + default configuration Example of behaviour: DROP DATABASE information_schema; ERROR 42000: Access denied for user ... to database 'information_schema' DROP DATABASE INFORMATION_SCHEMA; ERROR 42000: Access denied for user ... to database 'INFORMATION_SCHEMA' - Try to unify results by --replace_result $engine_type <engine_to_be_tested> if we could expect that the results for storage engine variants of a test differ only in the engine names. This makes future maintenance easier. - Avoid the use of include/show_msg*.inc. They produce "SQL" noise which annoys during server debugging and can be easy replaced by "--echo ...".