сваливаются сырые данные в основном с типом String.
Есть необходимость из этого формировать MV и там хотелось бы уже типизировать данные.
Для ряда типов есть достаточно удобные функции вроде to<T>orZero, что вроде как позволяет достаточно безопасно загружать данные и мониторить VM на предмет неожиданных нулей (чтоб вовремя отреагировать и оперативно поправить проблему).
Но среди прочих хотелось бы еще применить тип UUID, а для него подобной функции нет.
В связи с этим возникает два вопроса:
1. Какое будет поведение CH если в блоке данных попадется запись с плохими данными (не может привести тип). Будет ли остановлено формирование MV? Отбросится ли весь блок или только эта строка?
Этот вопрос понятно как проверить на практике (и чуть позже дойду до этого).
2. Может есть какая-то практика решения подобных задачь?
Типа через case проверить, сможет ли данные быть приведены к нужному типу, и если нет, то положить их в другое поле типа String.
1. Это сложный вопрос. Зависит партиционирования и кол-ва строк в insert и еще кучи факторов. Типа у вас таблица + 3 MV (с именами A,B,C) и вы вставляете 5 млн. и на втором млн. случится ошибка на MV B, то в таблице и MV A будет 2млн., а во вьюхах B и С будет 1 млн. 2. Нету решения, на клиенте валидировать. Или вставлять сначала в таблицу ENGINE=LOG, пытаться все конвертировать, если неудачно, откладывать в сторону целиком, если удачно, перекладывать в таблицу
Обсуждают сегодня