У меня есть представление, что строка разбивает столбец в базовой таблице с помощью пользовательской функции. У меня также есть предложение where в определении представления, которое ограничивает возвращаемые строки. Когда я выбираю из представления без предложения where, все работает как положено. Когда я добавляю предложение where к самому представлению с фильтром в один из столбцов, созданных функцией, оно, похоже, не использует предложение where для внутреннего определения определения, чтобы определить, какие строки передаются в функцию, вызываемую предложением external where ,
Это, вероятно, лучше всего объяснить на примере. Я использую MariaDB 10.2.11
Table T1
ID Text Status
1 a,b,c Completed
2 a,b,c,d Failed
3 a,b,c Completed
4 a,b,c Completed
view C1 defined as
select id,
stringsplit(Text,1) as ColA,
Status
from T1
where Status = 'Completed';
select * from C1 where ColA = 'a';
При последнем выборе я заметил, что данные из строк, которые должны были быть отфильтрованы по предложению inner, передаются в вызов функции stringsplit, сгенерированный предложением external, где ColA = 'a'.
Я бы ожидал, что внутренняя область в представлении удалила все строки, где Status! = 'Completed' до того, как ColA = 'a' вступило в силу. Я что-то упустил?
Спасибо