```sql
CREATE TABLE some_table
(
    `date` DateTime,
    `banner_id` UUID
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(date)
ORDER BY date

---- ALL ROWS ARE 0 = ALL EMPTY
insert into some_table select today()+rand()%4, toUUID('00000000-0000-0000-0000-000000000000')  
from numbers(100);

SELECT *
FROM
(
    SELECT
        banner_id,
        empty(banner_id) AS empt
    FROM some_table
    LIMIT 10000000 -- to prevent pred. pushdown
)
WHERE (empt = 0) AND (banner_id = toUUID('00000000-0000-0000-0000-000000000000'));
0 rows in set. Elapsed: 0.001 sec. ---- expected result. All OK.
```

```sql
-- 1/13 of rows are empty
insert into some_table select today()+rand()%4, 
        if(rand(1)%13=0, toUUID('00000000-0000-0000-0000-000000000000'),  generateUUIDv4())  
from numbers(100);


SELECT *
FROM
(
    SELECT
        banner_id,
        empty(banner_id) AS empt
    FROM some_table
    LIMIT 10000000  -- to prevent pred. pushdown
)
WHERE (empt = 0) AND (banner_id = toUUID('00000000-0000-0000-0000-000000000000'))

Query id: 533a2476-b4d6-4fcf-b13f-568cf6acba2f

┌─banner_id────────────────────────────┬─empt─┐
│ 00000000-0000-0000-0000-000000000000 │    0 │
│ 00000000-0000-0000-0000-000000000000 │    0 │
│ 00000000-0000-0000-0000-000000000000 │    0 │
│ 00000000-0000-0000-0000-000000000000 │    0 │
│ 00000000-0000-0000-0000-000000000000 │    0 │
│ 00000000-0000-0000-0000-000000000000 │    0 │
└──────────────────────────────────────┴──────┘
```

expected result

```
0 rows in set. Elapsed: 0.001 sec.
```

empt column should be = 1 , because

```
SELECT empty(toUUID('00000000-0000-0000-0000-000000000000'))
┌─empty(toUUID('00000000-0000-0000-0000-000000000000'))─┐
│                                                     1 │
└───────────────────────────────────────────────────────┘
```
{
        throw Exception("Logical error: 'vectorFixedToConstant method' is called", ErrorCodes::LOGICAL_ERROR);
    }
    static void vectorFixedToVector(const ColumnString::Chars & data, size_t n, PaddedPODArray<UInt8> & res)
    {
        size_t size = data.size() / n;
        for (size_t i = 0; i < size; ++i)
            res[i] = negative ^ memoryIsZeroSmallAllowOverflow15(data.data() + i * n, n);
    }
    static void array(const ColumnString::Offsets & offsets, PaddedPODArray<UInt8> & res)
    {
        size_t size = offsets.size();
        ColumnString::Offset prev_offset = 0;
        for (size_t i = 0; i < size; ++i)
        {
            res[i] = negative ^ (offsets[i] == prev_offset);
            prev_offset = offsets[i];
        }
    }
    static void uuid(const ColumnUUID::Container & container, size_t n, PaddedPODArray<UInt8> & res)
    {
        for (size_t i = 0; i < n; ++i)
            res[i] = negative ^ (container.data()->toUnderType() == 0);
    }
};
}