| 1846 | |
| 1847 | |
| 1848 | static bool get_field_default_value(THD *thd, Field *field, String *def_value, |
| 1849 | bool quoted) |
| 1850 | { |
| 1851 | bool has_default; |
| 1852 | enum enum_field_types field_type= field->type(); |
| 1853 | |
| 1854 | has_default= (field->default_value || |
| 1855 | (!(field->flags & NO_DEFAULT_VALUE_FLAG) && |
| 1856 | !field->vers_sys_field() && |
| 1857 | field->unireg_check != Field::NEXT_NUMBER)); |
| 1858 | |
| 1859 | def_value->length(0); |
| 1860 | if (has_default) |
| 1861 | { |
| 1862 | StringBuffer<MAX_FIELD_WIDTH> str(&my_charset_utf8mb4_general_ci); |
| 1863 | if (field->default_value) |
| 1864 | { |
| 1865 | field->default_value->print(&str); |
| 1866 | if (field->default_value->expr->need_parentheses_in_default()) |
| 1867 | { |
| 1868 | def_value->set_charset(&my_charset_utf8mb4_general_ci); |
| 1869 | def_value->append('('); |
| 1870 | def_value->append(str); |
| 1871 | def_value->append(')'); |
| 1872 | } |
| 1873 | else |
| 1874 | def_value->append(str); |
| 1875 | } |
| 1876 | else if (!field->is_null()) |
| 1877 | { // Not null by default |
| 1878 | if (field_type == MYSQL_TYPE_BIT) |
| 1879 | { |
| 1880 | str.qs_append('b'); |
| 1881 | str.qs_append('\''); |
| 1882 | str.qs_append(field->val_int(), 2); |
| 1883 | str.qs_append('\''); |
| 1884 | def_value->append(str); |
| 1885 | } |
| 1886 | else |
| 1887 | { |
| 1888 | field->val_str(&str); |
| 1889 | if (!field->str_needs_quotes()) |
| 1890 | quoted= 0; |
| 1891 | if (str.length()) |
| 1892 | { |
| 1893 | if (str.charset() == &my_charset_bin) |
| 1894 | { |
| 1895 | def_value->append('x'); |
| 1896 | def_value->append('\''); |
| 1897 | def_value->append_hex(str.ptr(), str.length()); |
| 1898 | def_value->append('\''); |
| 1899 | } |
| 1900 | else |
| 1901 | { |
| 1902 | StringBuffer<MAX_FIELD_WIDTH> def_val; |
| 1903 | uint dummy_errors; |
| 1904 | /* convert to system_charset_info == utf8 */ |
| 1905 | def_val.copy(str.ptr(), str.length(), field->charset(), |
no test coverage detected