dictGet('name', ...) should check for XML dictionary 'name' if XML dict=name does not exists then use SQL dictionary from the currectDatabase()

"Third argument of function ({}) must be tuple when dictionary is complex. Actual type ({}).",
                    getName(),
                    key_col_with_type.type->getName());
            const auto & key_columns = typeid_cast<const ColumnTuple &>(*key_column_full).getColumnsCopy();
            const auto & key_types = static_cast<const DataTypeTuple &>(*key_col_with_type.type).getElements();
            if (attribute_names.size() > 1)
            {
                const auto & result_tuple_type = assert_cast<const DataTypeTuple &>(*result_type);
                Columns result_columns = dictionary->getColumns(
                    attribute_names,
                    result_tuple_type.getElements(),
                    key_columns,
                    key_types,
                    default_cols);
                result = ColumnTuple::create(std::move(result_columns));
            }
            else
                result = dictionary->getColumn(
                    attribute_names[0],
                    result_type,
                    key_columns,
                    key_types,
                    default_cols.front());
        }
        else if (dictionary_key_type == DictionaryKeyType::range)
        {
            if (!WhichDataType(key_col_with_type.type).isUInt64())
                 throw Exception(
                     ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT,
                     "Third argument of function ({}) must be uint64 when dictionary is range. Actual type ({}).",