-
Task
-
-
Major
-
Resolution:
Fixed
-
-
-
To implement MDEV-274 easier, let's wrap the code in item_inetfunc.cc into classes Inet4 and Inet6.
The handler for the coming soon INET6 data type will reuse the new class Inet6.
The implementation for Inet6 will look approximately like this:
class Inet6
|
{
|
char m_buffer[IN6_ADDR_SIZE];
|
bool str_to_ipv6(const char *str, size_t str_length, CHARSET_INFO *cs);
|
public:
|
// Initialize from a text representation
|
Inet6(bool *error, const char *str, size_t length, CHARSET_INFO *cs)
|
{
|
*error= !str_to_ipv6(str, length, cs);
|
}
|
// Initialize from a binary representation
|
Inet6(bool *error, const char *str, size_t length)
|
{
|
if (!(*error= length != sizeof(m_buffer)))
|
memcpy(m_buffer, str, length);
|
}
|
Inet6(bool *error, Item *item);
|
bool to_binary(String *to) const
|
{
|
return to->copy(m_buffer, sizeof(m_buffer), &my_charset_bin);
|
}
|
size_t to_string(char *dst, size_t dstsize) const;
|
bool to_string(String *to) const
|
{
|
to->set_charset(&my_charset_latin1);
|
if (to->alloc(INET6_ADDRSTRLEN))
|
return true;
|
to->length((uint32) to_string((char*) to->ptr(), INET6_ADDRSTRLEN));
|
return false;
|
}
|
bool is_v4compat() const
|
{
|
static_assert(sizeof(in6_addr) == IN6_ADDR_SIZE, "unexpected in6_addr size");
|
return IN6_IS_ADDR_V4COMPAT((struct in6_addr *) m_buffer);
|
}
|
bool is_v4mapped() const
|
{
|
static_assert(sizeof(in6_addr) == IN6_ADDR_SIZE, "unexpected in6_addr size");
|
return IN6_IS_ADDR_V4MAPPED((struct in6_addr *) m_buffer);
|
}
|
};
|
The implementation for Inet4 will look very similar.
- blocks
-
MDEV-274
The data type for IPv6/IPv4 addresses in MariaDB
-
-
Closed
{"report":{"fcp":926.3000000119209,"ttfb":226.0999999642372,"pageVisibility":"visible","entityId":71423,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0.5,"journeyId":"0e489938-6981-4214-b5d8-5c6532a237e6","navigationType":0,"readyForUser":1007.5999999642372,"redirectCount":0,"resourceLoadedEnd":733.6999999880791,"resourceLoadedStart":238.80000001192093,"resourceTiming":[{"duration":218.89999997615814,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":238.80000001192093,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":238.80000001192093,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":457.69999998807907,"responseStart":0,"secureConnectionStart":0},{"duration":218.89999997615814,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/download/contextbatch/css/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":239.19999998807907,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":239.19999998807907,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":458.0999999642372,"responseStart":0,"secureConnectionStart":0},{"duration":227.69999998807907,"initiatorType":"script","name":"https://jira.mariadb.org/s/e9b27a47da5fb0f74a35acd57e9847fb-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":239.30000001192093,"connectEnd":239.30000001192093,"connectStart":239.30000001192093,"domainLookupEnd":239.30000001192093,"domainLookupStart":239.30000001192093,"fetchStart":239.30000001192093,"redirectEnd":0,"redirectStart":0,"requestStart":239.30000001192093,"responseEnd":467,"responseStart":467,"secureConnectionStart":239.30000001192093},{"duration":300.9000000357628,"initiatorType":"script","name":"https://jira.mariadb.org/s/c32eb0da7ad9831253f8397e6cc26afd-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/download/contextbatch/js/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":239.39999997615814,"connectEnd":239.39999997615814,"connectStart":239.39999997615814,"domainLookupEnd":239.39999997615814,"domainLookupStart":239.39999997615814,"fetchStart":239.39999997615814,"redirectEnd":0,"redirectStart":0,"requestStart":239.39999997615814,"responseEnd":540.3000000119209,"responseStart":540.3000000119209,"secureConnectionStart":239.39999997615814},{"duration":304.89999997615814,"initiatorType":"script","name":"https://jira.mariadb.org/s/bc0bcb146314416123c992714ee00ff7-CDN/lu2bv2/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":239.69999998807907,"connectEnd":239.69999998807907,"connectStart":239.69999998807907,"domainLookupEnd":239.69999998807907,"domainLookupStart":239.69999998807907,"fetchStart":239.69999998807907,"redirectEnd":0,"redirectStart":0,"requestStart":239.69999998807907,"responseEnd":544.5999999642372,"responseStart":544.5999999642372,"secureConnectionStart":239.69999998807907},{"duration":305.60000002384186,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":239.89999997615814,"connectEnd":239.89999997615814,"connectStart":239.89999997615814,"domainLookupEnd":239.89999997615814,"domainLookupStart":239.89999997615814,"fetchStart":239.89999997615814,"redirectEnd":0,"redirectStart":0,"requestStart":239.89999997615814,"responseEnd":545.5,"responseStart":545.3999999761581,"secureConnectionStart":239.89999997615814},{"duration":306.10000002384186,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":240.0999999642372,"connectEnd":240.0999999642372,"connectStart":240.0999999642372,"domainLookupEnd":240.0999999642372,"domainLookupStart":240.0999999642372,"fetchStart":240.0999999642372,"redirectEnd":0,"redirectStart":0,"requestStart":240.0999999642372,"responseEnd":546.1999999880791,"responseStart":546.1999999880791,"secureConnectionStart":240.0999999642372},{"duration":367.89999997615814,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2bv2/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":240.30000001192093,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":240.30000001192093,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":608.1999999880791,"responseStart":0,"secureConnectionStart":0},{"duration":306.0999999642372,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":240.5,"connectEnd":240.5,"connectStart":240.5,"domainLookupEnd":240.5,"domainLookupStart":240.5,"fetchStart":240.5,"redirectEnd":0,"redirectStart":0,"requestStart":240.5,"responseEnd":546.5999999642372,"responseStart":546.5999999642372,"secureConnectionStart":240.5},{"duration":367.69999998807907,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2bv2/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.css?jira.create.linked.issue=true","startTime":240.69999998807907,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":240.69999998807907,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":608.3999999761581,"responseStart":0,"secureConnectionStart":0},{"duration":306.30000001192093,"initiatorType":"script","name":"https://jira.mariadb.org/s/719848dd97ebe0663199f49a3936487a-CDN/lu2bv2/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.js?jira.create.linked.issue=true&locale=en","startTime":240.89999997615814,"connectEnd":240.89999997615814,"connectStart":240.89999997615814,"domainLookupEnd":240.89999997615814,"domainLookupStart":240.89999997615814,"fetchStart":240.89999997615814,"redirectEnd":0,"redirectStart":0,"requestStart":240.89999997615814,"responseEnd":547.1999999880791,"responseStart":547.1999999880791,"secureConnectionStart":240.89999997615814},{"duration":396.2000000476837,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":246.0999999642372,"connectEnd":246.0999999642372,"connectStart":246.0999999642372,"domainLookupEnd":246.0999999642372,"domainLookupStart":246.0999999642372,"fetchStart":246.0999999642372,"redirectEnd":0,"redirectStart":0,"requestStart":246.0999999642372,"responseEnd":642.3000000119209,"responseStart":642.3000000119209,"secureConnectionStart":246.0999999642372},{"duration":487.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":246.19999998807907,"connectEnd":246.19999998807907,"connectStart":246.19999998807907,"domainLookupEnd":246.19999998807907,"domainLookupStart":246.19999998807907,"fetchStart":246.19999998807907,"redirectEnd":0,"redirectStart":0,"requestStart":246.19999998807907,"responseEnd":733.6999999880791,"responseStart":733.6999999880791,"secureConnectionStart":246.19999998807907},{"duration":76.89999997615814,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":634.6999999880791,"connectEnd":634.6999999880791,"connectStart":634.6999999880791,"domainLookupEnd":634.6999999880791,"domainLookupStart":634.6999999880791,"fetchStart":634.6999999880791,"redirectEnd":0,"redirectStart":0,"requestStart":634.6999999880791,"responseEnd":711.5999999642372,"responseStart":711.5999999642372,"secureConnectionStart":634.6999999880791}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":15,"responseStart":226,"responseEnd":241,"domLoading":236,"domInteractive":1064,"domContentLoadedEventStart":1065,"domContentLoadedEventEnd":1112,"domComplete":1919,"loadEventStart":1919,"loadEventEnd":1920,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1047.300000011921},{"name":"bigPipe.sidebar-id.end","time":1048.199999988079},{"name":"bigPipe.activity-panel-pipe-id.start","time":1048.300000011921},{"name":"bigPipe.activity-panel-pipe-id.end","time":1050.699999988079},{"name":"activityTabFullyLoaded","time":1119.8999999761581}],"measures":[],"correlationId":"61acb82d48e69d","effectiveType":"4g","downlink":9.3,"rtt":0,"serverDuration":107,"dbReadsTimeInMs":13,"dbConnsTimeInMs":25,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}