I think this way of doing type conversion is a little opaque. Could you be a bit less clever? Something like

    if typeof(values) != Vector{UTF8String}
        values = convert(UTF8String, values)
    end

would be preferable

More importantly, it's not clear to why this would ever come up. If you're forcing the types of columns, there shouldn't be an uncertainty about the type of values at any point in the computation.