-
Notifications
You must be signed in to change notification settings - Fork 177
Description
Is your feature request related to a problem?
OpenSearch SQL plugin does not support the IP address field type.
🚫 IP address fields are converted to strings:
search=weblog | fields host
returns host with field type string.
🚫 IP address fields cannot be correctly for equality:
search=weblog | where host = "2001:0db7::ff00:42:8329" | fields host
will not return the value 2001:0db7:0000:0000:0000:ff00:0042:8329, even though both strings represent the same IP address.
What solution would you like?
Outcomes:
- IP addresses can be retrieved using the OpenSearch SQL plugin without conversion to strings.
- IP addresses supports equality operations (
=and!=). - IP addresses supports comparison operations (
<,<=,>, and>) if they are both IPv4 or IPv6. - IP addresses supports sorting (again, if they are all IPv4 or IPv6).
- IP addresses work with IP-specific functions (currently only
cidrmatch- see Add CIDR function to PPL (#3036) #3110).
Proposed Solution:
- Add an new
IPtype toExprCoreType. - Replace
OpenSearchExprIpValuewithExprIpValue, and update implementation. - Update
OpenSearchDataType.MappingTypeto map"ip"fields toExprCoreType.IP. - Update
OpenSearchExprValueFactory. - Update other code, unit tests, and integration tests as necessary.
What alternatives have you considered?
None
Do you have any additional context?
This is closely related to #3110. This issue added a new cidrmatch(ip, cidr) function that returns whether the given IP address is within the specified CIDR IP address range. As part of this work, the SQL plugin was updated to cast IP addresses to strings - previously, it would raise an exception.