**Use case**
I'm using `ip_trie` on maxmind geoip databases. Given an IP address I want to find out what key was used (ie what network the IP comes under). But it seems it is not possible to look up the key field when using `dictGet`?

```
        <layout>
            <ip_trie/>
        </layout>
        <structure>
            <key>
                <attribute>
                    <name>network</name>
                    <type>String</type>
                </attribute>
            </key>
            <attribute>
                <name>geoname_id</name>
                <type>UInt32</type>
                <null_value>0</null_value>
            </attribute>
...
```

```
clickhouse :) select dictGet('geoip_city_blocks_ipv4', 'geoname_id', tuple(toUInt32(toIPv4('1.1.1.1')))) ;

┌─dictGet('geoip_city_blocks_ipv4', 'geoname_id', tuple(toUInt32(toIPv4('1.1.1.1'))))─┐
│                                                                             2077456 │
└─────────────────────────────────────────────────────────────────────────────────────┘

clickhouse :) select dictGet('geoip_city_blocks_ipv4', 'network', tuple(toUInt32(toIPv4('1.1.1.1')))) ;

Received exception from server (version 20.11.3):
Code: 36. DB::Exception: Received from localhost:9000. DB::Exception: No such attribute 'network': While processing dictGet('geoip_city_blocks_ipv4', 'network', tuple(toUInt32(toIPv4('1.1.1.1')))). 
```

{
        parent_subnet[i] = i;
        while (!subnets_stack.empty())
        {
            size_t pi = subnets_stack.top();
            if (has_ipv6)
            {
                uint8_t a_buf[IPV6_BINARY_LENGTH];
                uint8_t b_buf[IPV6_BINARY_LENGTH];
                const auto * cur_address = ip_records[i].asIPv6Binary(a_buf);
                const auto * cur_subnet = ip_records[pi].asIPv6Binary(b_buf);
                bool is_mask_smaller = ip_records[pi].prefixIPv6() < ip_records[i].prefixIPv6();
                if (is_mask_smaller && matchIPv6Subnet(cur_address, cur_subnet, ip_records[pi].prefixIPv6()))
                {
                    parent_subnet[i] = pi;
                    break;
                }
            }
            else
            {
                UInt32 cur_address = IPv4AsUInt32(ip_records[i].addr.addr());
                UInt32 cur_subnet = IPv4AsUInt32(ip_records[pi].addr.addr());
                bool is_mask_smaller = ip_records[pi].prefix < ip_records[i].prefix;
                if (is_mask_smaller && matchIPv4Subnet(cur_address, cur_subnet, ip_records[pi].prefix))
                {
                    parent_subnet[i] = pi;
                    break;
                }
            }
            subnets_stack.pop();