• Nayuta Yanagisawa's avatar
    MDEV-25116 Spider: IF(COUNT( trigger SQL Error (1054)_ Unknown column '' in field list · 4194f7b6
    Nayuta Yanagisawa authored
    The original query "SELECT IF(COUNT(a.`id`)>=0,'Y','N') FROM t" is
    transformed to "SELECT COUNT(a.`id`), IF(ref >= 0, 'Y', 'N') FROM t",
    where ref is Item_ref to "COUNT(a.`id`)", by split_sum_func().
    
    Spider walks the item list twice, invoking spider_db_print_item_type().
    The first invocation is in spider_create_group_by_handler() with
    str == NULL. The second one is in spider_group_by_handler::init_scan()
    with str != NULL.
    
    spider_db_print_item_type() prints nothing at the first invocation,
    and it prints item at the second invocation. However, at the second
    invocation, the above mentioned ref to "COUNT(a.`id`)" points to
    a field in a temporary table where the result will be stored. Thus,
    to look behind the item_ref, Spider need to generate the query earlier.
    
    A possible fix would be to generate a query to send in
    spider_create_group_by_handler(). However, the fix requires a
    considerable amount of changes of the Spider's GROUP BY handler.
    I'd like to avoid that.
    
    So, I fix the problem by not to use the GROUP BY handler when a
    query contains Item_ref whose table_name, name, and alias_name_used
    are not set.
    4194f7b6
spd_db_conn.cc 393 KB