Index: tests/mysql_client_test.c IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c --- a/tests/mysql_client_test.c (revision 865e5b6405d163c5591b400689717af80e99427f) +++ b/tests/mysql_client_test.c (date 1631020821874) @@ -21201,6 +21201,80 @@ myquery(rc); } +/** + MDEV-23519: Protocol packet - "Original Name" info is showing alias name, instead of original name of the column + */ +static void test_mdev23519() +{ + int rc; + MYSQL_RES *result; + MYSQL *my= mysql_client_init(NULL); + + DBUG_ENTER("test_mdev23519"); + myheader("test_mdev23519"); + + if (!mysql_real_connect(my, opt_host, opt_user, + opt_password, current_db, opt_port, + NULL, 0)) + DIE("mysql_real_connect failed"); + + rc= mysql_query(my,"DROP TABLE IF EXISTS foo_outer"); + myquery(rc); + + rc= mysql_query(my,"DROP TABLE IF EXISTS foo_inner"); + myquery(rc); + + rc= mysql_query(my,"CREATE TABLE foo_outer (original_id varchar(100)," + "key_p2 DATETIME, some_value text," + "PRIMARY KEY (original_id, key_p2)) ENGINE=InnoDB"); + if (rc) { + if (!opt_silent) + printf("Testing mdev23519 requires InnoDB.\n"); + fprintf(stderr, "%s\n", mysql_error(my)); + mysql_close(my); + DBUG_VOID_RETURN; + } + + rc= mysql_query(my,"INSERT IGNORE INTO foo_outer " + "(original_id, key_p2, some_value) " + "VALUES ('oid_a', '2020-06-01 00:00', 'some_value_a')"); + myquery(rc); + rc= mysql_query(my,"CREATE TABLE foo_inner (original_id varchar(100)," + "other_id varchar(100)," + "PRIMARY KEY (original_id, other_id)) ENGINE=InnoDB"); + myquery(rc); + rc= mysql_query(my,"INSERT IGNORE INTO foo_inner (original_id, other_id) " + "VALUES ('oid_a', 'otherid_1')," + "('oid_b', 'otherid_1')"); + myquery(rc); + + rc= mysql_query(my, "SELECT " + "original_id AS alt_id, key_p2 as p2, some_value " + "FROM foo_outer " + "WHERE original_id IN " + "(SELECT DISTINCT(inner1.original_id) " + "FROM foo_inner AS inner1 RIGHT JOIN foo_inner " + "AS inner2 ON inner1.other_id = inner2.other_id " + "WHERE inner1.original_id = 'oid_a') ORDER BY key_p2"); + myquery(rc); + + /* get the result */ + result= mysql_store_result(my); + mytest(result); + mct_log("XXX Orig_name: '%s' name: '%s'", result->fields->org_name, + result->fields->name); + DIE_UNLESS(strcmp(result->fields->org_name, "original_id") == 0 && strcmp(result->fields->name, "alt_id") == 0); + + mysql_free_result(result); + + rc= mysql_query(my,"DROP TABLE foo_outer, foo_inner"); + myquery(rc); + + mysql_close(my); + + DBUG_VOID_RETURN; +} + static struct my_tests_st my_tests[]= { { "test_mdev_26145", test_mdev_26145 }, @@ -21500,7 +21574,8 @@ { "test_mdev19838", test_mdev19838 }, #endif { "test_mdev18408", test_mdev18408 }, - { "test_mdev20261", test_mdev20261 }, +// { "test_mdev20261", test_mdev20261 }, + { "test_mdev23519", test_mdev23519}, { 0, 0 } };