| 83 | } |
| 84 | |
| 85 | int table_setup_objects::write_row(TABLE *table, const unsigned char *buf, |
| 86 | Field **fields) |
| 87 | { |
| 88 | int result; |
| 89 | Field *f; |
| 90 | enum_object_type object_type= OBJECT_TYPE_TABLE; |
| 91 | String object_schema_data("%", 1, &my_charset_utf8mb3_bin); |
| 92 | String object_name_data("%", 1, &my_charset_utf8mb3_bin); |
| 93 | String *object_schema= &object_schema_data; |
| 94 | String *object_name= &object_name_data; |
| 95 | enum_yes_no enabled_value= ENUM_YES; |
| 96 | enum_yes_no timed_value= ENUM_YES; |
| 97 | bool enabled= true; |
| 98 | bool timed= true; |
| 99 | |
| 100 | for (; (f= *fields) ; fields++) |
| 101 | { |
| 102 | if (bitmap_is_set(table->write_set, f->field_index)) |
| 103 | { |
| 104 | switch(f->field_index) |
| 105 | { |
| 106 | case 0: /* OBJECT_TYPE */ |
| 107 | object_type= (enum_object_type) get_field_enum(f); |
| 108 | break; |
| 109 | case 1: /* OBJECT_SCHEMA */ |
| 110 | object_schema= get_field_varchar_utf8(f, &object_schema_data); |
| 111 | break; |
| 112 | case 2: /* OBJECT_NAME */ |
| 113 | object_name= get_field_varchar_utf8(f, &object_name_data); |
| 114 | break; |
| 115 | case 3: /* ENABLED */ |
| 116 | enabled_value= (enum_yes_no) get_field_enum(f); |
| 117 | break; |
| 118 | case 4: /* TIMED */ |
| 119 | timed_value= (enum_yes_no) get_field_enum(f); |
| 120 | break; |
| 121 | default: |
| 122 | assert(false); |
| 123 | } |
| 124 | } |
| 125 | } |
| 126 | |
| 127 | /* Reject illegal enum values in OBJECT_TYPE */ |
| 128 | if (object_type < FIRST_OBJECT_TYPE || |
| 129 | object_type > LAST_OBJECT_TYPE || |
| 130 | object_type == OBJECT_TYPE_TEMPORARY_TABLE) |
| 131 | return HA_ERR_NO_REFERENCED_ROW; |
| 132 | |
| 133 | /* Reject illegal enum values in ENABLED */ |
| 134 | if ((enabled_value != ENUM_YES) && (enabled_value != ENUM_NO)) |
| 135 | return HA_ERR_NO_REFERENCED_ROW; |
| 136 | |
| 137 | /* Reject illegal enum values in TIMED */ |
| 138 | if ((timed_value != ENUM_YES) && (timed_value != ENUM_NO)) |
| 139 | return HA_ERR_NO_REFERENCED_ROW; |
| 140 | |
| 141 | enabled= (enabled_value == ENUM_YES) ? true : false; |
| 142 | timed= (timed_value == ENUM_YES) ? true : false; |
nothing calls this directly
no test coverage detected