The vsql_network_address extension adds INET, CIDR, MACADDR, and MACADDR8 column types to MySQL, with containment, netmask, and comparison functions.
An IP address kept in a VARCHAR sorts alphabetically, accepts typos, and
cannot answer whether an address falls inside a network. vsql_network_address adds four column types that
validate their input, sort correctly, and come with the containment and netmask
functions that go with them. It follows PostgreSQL’s inet, cidr, macaddr,
and macaddr8 types.
vsql_network_address.veb is already in the server’s lib/veb/ directory if
you installed VillageSQL with the install script, the Docker image, or a release
tarball. Install it into the server with one statement:
The rows come back in address order rather than alphabetical order. Text order would put 9.0.0.1 after 10.8.0.7; address order puts it before.Ask which hosts are on a network:
SELECT label FROM hostsWHERE inet_contained_by_or_equals(addr, inet_from_string('192.168.1.0/24')) = 1;
inet_contained_by is strict, so an address carrying the same netmask as the
network is not contained by it. 192.168.1.5/32 inside 192.168.1.0/24
returns 1, while 192.168.1.5/24 inside the same network returns 0. Use
inet_contained_by_or_equals when the stored rows carry the network’s own
mask, as the example above does.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"VillageSQL Server for MySQL - Documentation","description":"Documentation for VillageSQL, a drop-in replacement for MySQL that offers extensions.","colors":{"primary":"#9500BF","light":"#CC66FF","dark":"#1F062A"},"logo":{"light":"https://mintcdn.com/villagesql/ER5Fb1fv5K0c6u26/images/logo-light.svg?fit=max\u0026auto=format\u0026n=ER5Fb1fv5K0c6u26\u0026q=85\u0026s=984aeecbb83c7ff4d729220dc5b295ba","dark":"https://mintcdn.com/villagesql/ER5Fb1fv5K0c6u26/images/logo-dark.svg?fit=max\u0026auto=format\u0026n=ER5Fb1fv5K0c6u26\u0026q=85\u0026s=7c54878160d03b398facdce3c68e8f53","href":"https://villagesql.com"},"favicon":"https://mintcdn.com/villagesql/dJP528IM9EMOJWSW/images/favicon.png?fit=max\u0026auto=format\u0026n=dJP528IM9EMOJWSW\u0026q=85\u0026s=dcd56233103a4ed589abde42130b2a1d","background":{"color":{"dark":"#1F062A"}},"navbar":{"links":[{"icon":"github","href":"https://github.com/villagesql/villagesql-server","label":"GitHub"},{"icon":"discord","href":"https://discord.gg/KSr6whd3Fr","label":"Discord"}]},"footer":{"socials":{"github":"https://github.com/villagesql/villagesql-server","discord":"https://discord.gg/KSr6whd3Fr","linkedin":"https://www.linkedin.com/company/villagesql"}},"seo":{"metatags":{"og:type":"website","og:site_name":"VillageSQL Documentation"},"indexing":"all"},"fonts":{"heading":{"family":"Space Grotesk"}},"styling":{"eyebrows":"breadcrumbs","latex":true},"errors":{"404":{"redirect":false,"title":"This is not the village you are looking for (Error 404)","description":"It looks like you got lost looking for the village. Please go back to the [documentation site](https://villagesql.com/docs) to find what you need."}},"contextual":{"options":["copy","view","claude","chatgpt","perplexity","mcp","cursor","vscode"],"display":"header"},"navigation":{"languages":[{"language":"en","default":true,"href":""},{"language":"ja","href":"ja"},{"language":"ko","href":"ko"},{"language":"zh","href":"zh"},{"language":"pt-BR","href":"pt-BR"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"villagesql","hasAudioNarration":false,"actualSubdomain":"villagesql","customDomains":["villagesql.com"],"gitSource":{"type":"github","owner":"villagesql","repo":"villagesql-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aea5444cbdb6f4019023d8d","collectionId":"3738827d-e3a7-41ca-876b-f228a581f851","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aea5444cbdb6f4019023d8d"},"feedback":{"thumbs":true,"issues":true,"edits":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aed3be608f6d22a38fe9caa","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"en","tag":"Guides","count":142},{"language":"en","tag":"MySQL Tutorial","count":46},{"language":"en","tag":"Extensions","count":35},{"language":"ja","tag":"拡張機能","count":35},{"language":"ko","tag":"확장 기능","count":35},{"language":"pt-BR","tag":"Extensões","count":35},{"language":"zh","tag":"扩展","count":35},{"language":"en","tag":"Server","count":28},{"language":"en","tag":"Dev releases","count":28},{"language":"en","tag":"Extension Catalog","count":23},{"language":"en","tag":"Available Extensions","count":23},{"language":"ja","tag":"拡張機能カタログ","count":23},{"language":"ja","tag":"利用可能な拡張機能","count":23},{"language":"ko","tag":"확장 기능 카탈로그","count":23},{"language":"ko","tag":"사용 가능한 확장 기능","count":23},{"language":"pt-BR","tag":"Catálogo de Extensões","count":23},{"language":"pt-BR","tag":"Extensões Disponíveis","count":23},{"language":"zh","tag":"扩展目录","count":23},{"language":"zh","tag":"可用扩展","count":23},{"language":"en","tag":"Operate MySQL","count":21},{"language":"en","tag":"Write Queries","count":19},{"language":"en","tag":"Install and Run Server","count":16},{"language":"ja","tag":"C++ SDK","count":14},{"language":"ko","tag":"C++ SDK","count":14},{"language":"pt-BR","tag":"SDK C++","count":14},{"language":"zh","tag":"C++ SDK","count":14},{"language":"ja","tag":"サーバー","count":13},{"language":"ko","tag":"서버","count":13},{"language":"pt-BR","tag":"Servidor","count":13},{"language":"zh","tag":"服务器","count":13},{"language":"ja","tag":"リファレンス","count":11},{"language":"ko","tag":"참조","count":11},{"language":"pt-BR","tag":"Referência","count":11},{"language":"zh","tag":"参考","count":11},{"language":"ja","tag":"サーバーのインストールと実行","count":9},{"language":"ja","tag":"拡張機能の作成","count":9},{"language":"ko","tag":"서버 설치 및 실행","count":9},{"language":"ko","tag":"확장 기능 빌드","count":9},{"language":"pt-BR","tag":"Instalar e Executar o Servidor","count":9},{"language":"pt-BR","tag":"Criar uma Extensão","count":9},{"language":"zh","tag":"安装和运行服务器","count":9},{"language":"zh","tag":"构建扩展","count":9},{"language":"ja","tag":"Rust SDK","count":8},{"language":"ko","tag":"Rust SDK","count":8},{"language":"pt-BR","tag":"SDK Rust","count":8},{"language":"zh","tag":"Rust SDK","count":8},{"language":"ja","tag":"MySQL 8.4","count":5},{"language":"ko","tag":"MySQL 8.4","count":5},{"language":"pt-BR","tag":"MySQL 8.4","count":5},{"language":"zh","tag":"MySQL 8.4","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"help@villagesql.com","showHelpButton":true}},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":".nav-dropdown-products-selector-trigger{order:1!important}.hidden.lg\\:flex.items-center.gap-x-2{order:2!important}#navbar,#sidebar,#mobile-nav,#table-of-contents{font-family:var(--font-family-headings-custom)}body{font-family:Arial, sans-serif}button.nav-tabs-item>div.font-medium{color:rgb(var(--gray-800))}html.dark button.nav-tabs-item>div.font-medium{color:rgb(var(--gray-200))}img.nav-logo{height:2.5rem!important;width:auto!important}img[src$=\"/images/pelican.svg\"]{width:1.5rem!important;height:1.5rem!important;margin:-0.25rem}@media (min-width: 1024px){li.navbar-link>a{font-size:0;gap:0;padding:0.5rem}li.navbar-link>a svg{height:1.25rem;width:1.25rem}}[data-callout-type=\"tip\"],[data-callout-type=\"note\"],[data-callout-type=\"info\"]{border-color:#CC66FF!important;background-color:rgb(204 102 255 / 0.08)!important}[data-callout-type=\"warning\"]{border:2px solid #B500BA!important;background-color:#FFFFFF!important}[data-callout-type] [data-component-part=\"callout-content\"]{color:#1F062A!important}[data-callout-type] [data-component-part=\"callout-icon\"] svg{color:#9500BF!important}[data-callout-type=\"warning\"] [data-component-part=\"callout-icon\"] svg{color:#630080!important}html.dark [data-callout-type=\"tip\"],html.dark [data-callout-type=\"note\"],html.dark [data-callout-type=\"info\"]{border-color:#630080!important;background-color:rgb(204 102 255 / 0.08)!important}html.dark [data-callout-type=\"warning\"]{border-color:#B500BA!important;background-color:transparent!important}html.dark [data-callout-type] [data-component-part=\"callout-content\"]{color:#FFFFFF!important}html.dark [data-callout-type] [data-component-part=\"callout-icon\"] svg{color:#CC66FF!important}.agent-setup #ask-assistant-code-block-button{display:none}html.dark .code-block [class*=\"dark:bg-codeblock\"]{background-color:#1F062A!important}html.dark .code-block [class=\"print:hidden\"]{background-image:linear-gradient(to right, rgb(31 6 42 / 0) 0px, rgb(31 6 42 / 0.2) 10px,\n rgb(31 6 42 / 0.5) 25px, rgb(31 6 42 / 0.8) 35px, rgb(31 6 42) 45px)!important}.chat-assistant-floating-input{display:none!important}"}],"page":{"pagePath":"en/extensions/vsql-network-address","slug":"/en/extensions/vsql-network-address","pageMetadata":{"title":"vsql_network_address extension for MySQL","sidebarTitle":"vsql_network_address","description":"The vsql_network_address extension adds INET, CIDR, MACADDR, and MACADDR8 column types to MySQL, with containment, netmask, and comparison functions.","keywords":"mysql inet type, mysql ip address column, mysql cidr, mysql macaddr, store ipv6 mysql, vsql_network_address","audience":"villagesql-user","href":"/en/extensions/vsql-network-address"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"The vsql_network_address extension adds INET, CIDR, MACADDR, and MACADDR8 column types to MySQL, with containment, netmask, and comparison functions.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`An IP address kept in a `,_jsx(_components.code,{children:`VARCHAR`}),` sorts alphabetically, accepts typos, and\ncannot answer whether an address falls inside a network. `,_jsx(_components.code,{children:`vsql_network_address`}),` adds four column types that\nvalidate their input, sort correctly, and come with the containment and netmask\nfunctions that go with them. It follows PostgreSQL’s `,_jsx(_components.code,{children:`inet`}),`, `,_jsx(_components.code,{children:`cidr`}),`, `,_jsx(_components.code,{children:`macaddr`}),`,\nand `,_jsx(_components.code,{children:`macaddr8`}),` types.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Maintainer`})}),_jsx(_components.td,{children:`VillageSQL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Source and full documentation`})}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://github.com/villagesql/vsql-network-address`,children:`villagesql/vsql-network-address`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`License`})}),_jsx(_components.td,{children:`GPL-2.0`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`install`,children:`Install`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`vsql_network_address.veb`}),` is already in the server’s `,_jsx(_components.code,{children:`lib/veb/`}),` directory if\nyou installed VillageSQL with the install script, the Docker image, or a release\ntarball. Install it into the server with one statement:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`1`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`INSTALL EXTENSION vsql_network_address;`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Confirm it is there:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` EXTENSION_NAME`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` INFORMATION_SCHEMA`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`EXTENSIONS`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`WHERE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` EXTENSION_NAME `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'vsql_network_address'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{numberOfLines:`6`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`+----------------------+`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`| EXTENSION_NAME |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`+----------------------+`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`| vsql_network_address |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`+----------------------+`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`To build it yourself, follow the build instructions in the\n`,_jsx(_components.a,{href:`https://github.com/villagesql/vsql-network-address`,children:`repository`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-it-adds`,children:`What it adds`}),`\n`,_jsx(Heading,{level:`3`,id:`the-types`,children:`The types`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Holds`}),_jsx(_components.th,{children:`Bytes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INET`})}),_jsx(_components.td,{children:`A host address with an optional netmask, IPv4 or IPv6`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`19`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CIDR`})}),_jsx(_components.td,{children:`A network address`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`19`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MACADDR`})}),_jsx(_components.td,{children:`A 6-byte hardware address`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`6`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MACADDR8`})}),_jsx(_components.td,{children:`An 8-byte hardware address`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`8`})]})]})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`CREATE`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` TABLE`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` hosts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` id `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`INT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` PRIMARY KEY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` label `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`VARCHAR`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`16`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` addr `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`INET`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` mac `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`MACADDR`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`functions`,children:`Functions`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Function`}),_jsx(_components.th,{children:`Returns`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`inet_from_string(s)`}),`, `,_jsx(_components.code,{children:`inet_to_string(a)`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`INET`}),`, text`]}),_jsxs(_components.td,{children:[`Converts between text and `,_jsx(_components.code,{children:`INET`})]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`cidr_from_string(s)`}),`, `,_jsx(_components.code,{children:`cidr_to_string(c)`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`CIDR`}),`, text`]}),_jsxs(_components.td,{children:[`The same for `,_jsx(_components.code,{children:`CIDR`})]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`macaddr_from_string(s)`}),`, `,_jsx(_components.code,{children:`macaddr_to_string(m)`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`MACADDR`}),`, text`]}),_jsxs(_components.td,{children:[`The same for `,_jsx(_components.code,{children:`MACADDR`})]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`macaddr8_from_string(s)`}),`, `,_jsx(_components.code,{children:`macaddr8_to_string(m)`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`MACADDR8`}),`, text`]}),_jsxs(_components.td,{children:[`The same for `,_jsx(_components.code,{children:`MACADDR8`})]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`inet_compare(a, b)`}),`, `,_jsx(_components.code,{children:`cidr_compare(a, b)`}),`, `,_jsx(_components.code,{children:`macaddr_compare(a, b)`}),`, `,_jsx(_components.code,{children:`macaddr8_compare(a, b)`})]}),_jsx(_components.td,{children:`int`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`-1, 0, or 1`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`inet_contains(a, b)`})}),_jsx(_components.td,{children:`int`}),_jsxs(_components.td,{children:[`1 when `,_jsx(_components.code,{children:`a`}),` strictly contains `,_jsx(_components.code,{children:`b`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`inet_contains_or_equals(a, b)`})}),_jsx(_components.td,{children:`int`}),_jsxs(_components.td,{children:[`1 when `,_jsx(_components.code,{children:`a`}),` contains `,_jsx(_components.code,{children:`b`}),` or equals it`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`inet_contained_by(a, b)`})}),_jsx(_components.td,{children:`int`}),_jsxs(_components.td,{children:[`1 when `,_jsx(_components.code,{children:`a`}),` sits strictly inside `,_jsx(_components.code,{children:`b`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`inet_contained_by_or_equals(a, b)`})}),_jsx(_components.td,{children:`int`}),_jsxs(_components.td,{children:[`1 when `,_jsx(_components.code,{children:`a`}),` sits inside `,_jsx(_components.code,{children:`b`}),` or equals it`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`inet_overlaps(a, b)`})}),_jsx(_components.td,{children:`int`}),_jsx(_components.td,{children:`1 when either contains the other, or they are equal`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`inet_family(a)`})}),_jsx(_components.td,{children:`int`}),_jsx(_components.td,{children:`4 or 6`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`inet_masklen(a)`})}),_jsx(_components.td,{children:`int`}),_jsx(_components.td,{children:`The netmask length`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`inet_set_masklen(a, n)`}),`, `,_jsx(_components.code,{children:`cidr_set_masklen(c, n)`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`INET`}),`, `,_jsx(_components.code,{children:`CIDR`})]}),_jsx(_components.td,{children:`The same address with a different netmask`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`inet_host(a)`}),`, `,_jsx(_components.code,{children:`inet_text(a)`}),`, `,_jsx(_components.code,{children:`inet_abbrev(a)`}),`, `,_jsx(_components.code,{children:`cidr_abbrev(c)`})]}),_jsx(_components.td,{children:`text`}),_jsx(_components.td,{children:`The address without the mask, with it, and in abbreviated forms`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`inet_netmask(a)`}),`, `,_jsx(_components.code,{children:`inet_hostmask(a)`})]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`INET`})}),_jsx(_components.td,{children:`The netmask and its complement`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`inet_broadcast(a)`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`INET`})}),_jsx(_components.td,{children:`The broadcast address of the containing network`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`inet_network(a)`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`CIDR`})}),_jsx(_components.td,{children:`The network the address belongs to`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`macaddr_trunc(m)`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`MACADDR`})}),_jsx(_components.td,{children:`The last three bytes zeroed, leaving the manufacturer prefix`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`example`,children:`Example`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`INSERT INTO`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` hosts `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`VALUES`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'gateway'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'192.168.1.1/24'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'00:1b:63:84:45:e6'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'printer'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'192.168.1.50/24'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'3c:22:fb:aa:01:02'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'vpn'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'10.8.0.7/16'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'00:1b:63:84:45:e7'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` label, addr, inet_masklen(addr) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` mask, inet_family(addr) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` family`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` hosts `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`ORDER BY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` addr;`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{numberOfLines:`8`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`+---------+-----------------+------+--------+`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`| label | addr | mask | family |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`+---------+-----------------+------+--------+`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`| vpn | 10.8.0.7/16 | 16 | 4 |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`| gateway | 192.168.1.1/24 | 24 | 4 |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`| printer | 192.168.1.50/24 | 24 | 4 |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`+---------+-----------------+------+--------+`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`The rows come back in address order rather than alphabetical order. Text order would put `,_jsx(_components.code,{children:`9.0.0.1`}),` after `,_jsx(_components.code,{children:`10.8.0.7`}),`; address order puts it before.`]}),`\n`,_jsx(_components.p,{children:`Ask which hosts are on a network:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` label `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` hosts`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`WHERE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` inet_contained_by_or_equals(addr, inet_from_string(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'192.168.1.0/24'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{numberOfLines:`7`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`+---------+`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`| label |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`+---------+`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`| gateway |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`| printer |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`+---------+`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Derive the network and its broadcast address:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` inet_network(inet_from_string(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'192.168.1.50/24'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` network,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` inet_broadcast(inet_from_string(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'192.168.1.50/24'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` broadcast;`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{numberOfLines:`6`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`+----------------+------------------+`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`| network | broadcast |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`+----------------+------------------+`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`| 192.168.1.0/24 | 192.168.1.255/24 |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`+----------------+------------------+`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`inet_contained_by`}),` is strict, so an address carrying the same netmask as the\nnetwork is not contained by it. `,_jsx(_components.code,{children:`192.168.1.5/32`}),` inside `,_jsx(_components.code,{children:`192.168.1.0/24`}),`\nreturns 1, while `,_jsx(_components.code,{children:`192.168.1.5/24`}),` inside the same network returns 0. Use\n`,_jsx(_components.code,{children:`inet_contained_by_or_equals`}),` when the stored rows carry the network’s own\nmask, as the example above does.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`see-also`,children:`See also`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/en/guides/storing-ip-addresses`,children:`Storing IP addresses in MySQL`}),` — choosing between INET, VARCHAR, and an integer`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/en/guides/subnet-queries`,children:`Subnet queries`}),` — containment, overlap, and what each one means`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/en/guides/storing-mac-addresses`,children:`Storing MAC addresses`}),` — MACADDR against MACADDR8`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/en/extensions/install`,children:`Install extensions`}),` — how `,_jsx(_components.code,{children:`INSTALL EXTENSION`}),` works and where the server looks for a bundle`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/en/extensions/catalog`,children:`Available extensions`}),` — the full catalog`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://github.com/villagesql/vsql-network-address`,children:`villagesql/vsql-network-address`}),` — source, build instructions, and the known limitations`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"vsql_network_address extension for MySQL","sidebarTitle":"vsql_network_address","description":"The vsql_network_address extension adds INET, CIDR, MACADDR, and MACADDR8 column types to MySQL, with containment, netmask, and comparison functions.","keywords":"mysql inet type, mysql ip address column, mysql cidr, mysql macaddr, store ipv6 mysql, vsql_network_address","audience":"villagesql-user","href":"/en/extensions/vsql-network-address"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Install","slug":"install","depth":2,"children":[]},{"title":"What it adds","slug":"what-it-adds","depth":2,"children":[{"title":"The types","slug":"the-types","depth":3,"children":[]},{"title":"Functions","slug":"functions","depth":3,"children":[]}]},{"title":"Example","slug":"example","depth":2,"children":[]},{"title":"See also","slug":"see-also","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/villagesql/2202b5e0d18501d7/consent-loader.js"],"subdomain":"villagesql","siteName":"VillageSQL Server for MySQL - Documentation","title":"vsql_network_address extension for MySQL - VillageSQL Server for MySQL - Documentation","contextualStarterQuestions":[{"_id":"6aed3c4b0975dbe7e5eb0389","deploymentId":"690e4c8e612a67c5b7e46992","questionText":"How do I install the extension?","status":"active","generatedBy":"contextual","path":"en/extensions/vsql-network-address","createdAt":"2026-11-06T02:32:43.652Z","updatedAt":"2026-11-06T02:32:43.652Z","__v":0},{"_id":"6aed3c4b0975dbe7e5eb038a","deploymentId":"690e4c8e612a67c5b7e46992","questionText":"What types does it add to MySQL?","status":"active","generatedBy":"contextual","path":"en/extensions/vsql-network-address","createdAt":"2026-11-06T02:32:43.652Z","updatedAt":"2026-11-06T02:32:43.652Z","__v":0},{"_id":"6aed3c4b0975dbe7e5eb038b","deploymentId":"690e4c8e612a67c5b7e46992","questionText":"How do INET and CIDR types differ?","status":"active","generatedBy":"contextual","path":"en/extensions/vsql-network-address","createdAt":"2026-11-06T02:32:43.652Z","updatedAt":"2026-11-06T02:32:43.652Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/en/extensions/vsql-network-address","matchLevel":0},"ja":{"href":"/ja/extensions/vsql-network-address","matchLevel":1},"ko":{"href":"/ko/extensions/vsql-network-address","matchLevel":1},"zh":{"href":"/zh/extensions/vsql-network-address","matchLevel":1},"pt-BR":{"href":"/pt-BR/extensions/vsql-network-address","matchLevel":1}}},"lastModified":"2026-11-06T02:31:23.673Z","originalFileLocation":"en/extensions/vsql-network-address.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"The vsql_network_address extension adds INET, CIDR, MACADDR, and MACADDR8 column types to MySQL, with containment, netmask, and comparison functions.\">\u003cmeta data-mint-head name=\"application-name\" content=\"VillageSQL Server for MySQL - Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/villagesql/LyGu9hbDVoyQmlU_/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/villagesql/LyGu9hbDVoyQmlU_/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/villagesql/LyGu9hbDVoyQmlU_/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/villagesql/LyGu9hbDVoyQmlU_/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/villagesql/LyGu9hbDVoyQmlU_/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/villagesql/LyGu9hbDVoyQmlU_/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/villagesql/LyGu9hbDVoyQmlU_/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/villagesql/LyGu9hbDVoyQmlU_/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/villagesql/LyGu9hbDVoyQmlU_/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"vsql_network_address extension for MySQL - VillageSQL Server for MySQL - Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"The vsql_network_address extension adds INET, CIDR, MACADDR, and MACADDR8 column types to MySQL, with containment, netmask, and comparison functions.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"VillageSQL Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://villagesql.com/docs/en/extensions/vsql-network-address\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://villagesql.mintlify.site/docs/_mintlify/api/og/v2?division=Available+Extensions\u0026amp;title=vsql_network_address+extension+for+MySQL\u0026amp;description=The+vsql_network_address+extension+adds+INET%2C+CIDR%2C+MACADDR%2C+and+MACADDR8+column+types+to+MySQL%2C+with+containment%2C+netmask%2C+and+comparison+functions.\u0026amp;theme=88e90f7620ba1dac07c284b1\u0026amp;signature=84496dd7c9bc9c6d231df7cb77f7b0b649a94724e5da9f54b4076e5f2c750552\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"vsql_network_address extension for MySQL - VillageSQL Server for MySQL - Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The vsql_network_address extension adds INET, CIDR, MACADDR, and MACADDR8 column types to MySQL, with containment, netmask, and comparison functions.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://villagesql.mintlify.site/docs/_mintlify/api/og/v2?division=Available+Extensions\u0026amp;title=vsql_network_address+extension+for+MySQL\u0026amp;description=The+vsql_network_address+extension+adds+INET%2C+CIDR%2C+MACADDR%2C+and+MACADDR8+column+types+to+MySQL%2C+with+containment%2C+netmask%2C+and+comparison+functions.\u0026amp;theme=88e90f7620ba1dac07c284b1\u0026amp;signature=84496dd7c9bc9c6d231df7cb77f7b0b649a94724e5da9f54b4076e5f2c750552\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/villagesql/LyGu9hbDVoyQmlU_/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"VillageSQL Server for MySQL - Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#9500BF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://villagesql.com/docs/en/extensions/vsql-network-address\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/en/extensions/vsql-network-address.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://villagesql.com/docs/en/extensions/vsql-network-address\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://villagesql.com/docs/ja/extensions/vsql-network-address\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://villagesql.com/docs/ko/extensions/vsql-network-address\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://villagesql.com/docs/zh/extensions/vsql-network-address\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://villagesql.com/docs/pt-BR/extensions/vsql-network-address\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://villagesql.com/docs/en/extensions/vsql-network-address\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://villagesql.com/#organization\",\"name\":\"VillageSQL Server for MySQL - Documentation\",\"url\":\"https://villagesql.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/villagesql/ER5Fb1fv5K0c6u26/images/logo-light.svg?fit=max\u0026auto=format\u0026n=ER5Fb1fv5K0c6u26\u0026q=85\u0026s=984aeecbb83c7ff4d729220dc5b295ba\"}},{\"@type\":\"WebSite\",\"@id\":\"https://villagesql.com/docs#website\",\"name\":\"VillageSQL Server for MySQL - Documentation\",\"url\":\"https://villagesql.com/docs\",\"publisher\":{\"@id\":\"https://villagesql.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://villagesql.com/docs/en/extensions/vsql-network-address#webpage\",\"url\":\"https://villagesql.com/docs/en/extensions/vsql-network-address\",\"name\":\"vsql_network_address extension for MySQL\",\"description\":\"The vsql_network_address extension adds INET, CIDR, MACADDR, and MACADDR8 column types to MySQL, with containment, netmask, and comparison functions.\",\"dateModified\":\"2026-11-06T02:31:23.673Z\",\"isPartOf\":{\"@id\":\"https://villagesql.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://villagesql.com/docs/en/extensions/vsql-network-address#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://villagesql.com/docs/en/extensions/vsql-network-address#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Extension Catalog\",\"item\":\"https://villagesql.com/docs/en/extensions/vsql-ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Available Extensions\",\"item\":\"https://villagesql.com/docs/en/extensions/catalog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"vsql_network_address extension for MySQL\",\"item\":\"https://villagesql.com/docs/en/extensions/vsql-network-address\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://villagesql.com/docs/en/extensions/vsql-network-address#article\",\"headline\":\"vsql_network_address extension for MySQL\",\"name\":\"vsql_network_address extension for MySQL\",\"description\":\"The vsql_network_address extension adds INET, CIDR, MACADDR, and MACADDR8 column types to MySQL, with containment, netmask, and comparison functions.\",\"url\":\"https://villagesql.com/docs/en/extensions/vsql-network-address\",\"mainEntityOfPage\":{\"@id\":\"https://villagesql.com/docs/en/extensions/vsql-network-address#webpage\"},\"dateModified\":\"2026-11-06T02:31:23.673Z\",\"publisher\":{\"@id\":\"https://villagesql.com/#organization\"},\"isPartOf\":{\"@id\":\"https://villagesql.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"VillageSQL Server for MySQL - Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"VillageSQL Server for MySQL - Documentation","nav":{"global":null,"languages":[{"language":"en","default":true,"tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":""}]},{"tab":"Extensions","groups":[{"group":"Install and Run Extensions","pages":[{"title":"Installing Extensions","href":"/en/extensions/install"},{"title":"Uninstalling Extensions","href":"/en/extensions/uninstall"},{"title":"Managing Extensions","href":"/en/extensions/managing"}]},{"group":"Extension Catalog","pages":[{"group":"Available Extensions","root":{"title":"Available Extensions","href":"/en/extensions/catalog"},"expanded":false,"pages":[{"title":"vsql_ai extension for MySQL","sidebarTitle":"vsql_ai","href":"/en/extensions/vsql-ai"},{"title":"vsql_boolean extension for MySQL","sidebarTitle":"vsql_boolean","href":"/en/extensions/vsql-boolean"},{"title":"vsql_crypto extension for MySQL","sidebarTitle":"vsql_crypto","href":"/en/extensions/vsql-crypto"},{"title":"vsql_cube extension for MySQL","sidebarTitle":"vsql_cube","href":"/en/extensions/vsql-cube"},{"title":"vsql_currency extension for MySQL","sidebarTitle":"vsql_currency","href":"/en/extensions/vsql-currency"},{"title":"vsql_duckdb extension for MySQL","sidebarTitle":"vsql_duckdb","href":"/en/extensions/vsql-duckdb"},{"title":"vsql_fuzzystrmatch extension for MySQL","sidebarTitle":"vsql_fuzzystrmatch","href":"/en/extensions/vsql-fuzzystrmatch"},{"title":"vsql_http extension for MySQL","sidebarTitle":"vsql_http","href":"/en/extensions/vsql-http"},{"title":"vsql_mcp extension for MySQL","sidebarTitle":"vsql_mcp","description":"The vsql_mcp extension serves MySQL to AI agents over the Model Context Protocol, with schema browsing, read-only queries, a table allowlist, and row caps.","href":"/en/extensions/vsql-mcp"},{"title":"vsql_network_address extension for MySQL","sidebarTitle":"vsql_network_address","href":"/en/extensions/vsql-network-address"},{"title":"vsql_oauth2 extension for MySQL","sidebarTitle":"vsql_oauth2","description":"The vsql_oauth2 extension lets a MySQL account sign in with a JWT, verifying the signature against a JWKS endpoint and mapping a claim to the account.","href":"/en/extensions/vsql-oauth2"},{"title":"vsql_rest extension for MySQL","sidebarTitle":"vsql_rest","href":"/en/extensions/vsql-rest"},{"title":"vsql_stat_ch extension for MySQL","sidebarTitle":"vsql_stat_ch","href":"/en/extensions/vsql-stat-ch"},{"title":"vsql_trgm extension for MySQL","sidebarTitle":"vsql_trgm","href":"/en/extensions/vsql-trgm"},{"title":"vsql_uuid extension for MySQL","sidebarTitle":"vsql_uuid","href":"/en/extensions/vsql-uuid"},{"title":"prometheus_exporter extension for MySQL","sidebarTitle":"prometheus_exporter","href":"/en/extensions/prometheus-exporter"},{"title":"vsql_address_standardizer extension for MySQL","sidebarTitle":"vsql_address_standardizer","href":"/en/extensions/vsql-address-standardizer"},{"title":"vsql_luhn extension for MySQL","sidebarTitle":"vsql_luhn","href":"/en/extensions/vsql-luhn"},{"title":"vsql_nanoid extension for MySQL","sidebarTitle":"vsql_nanoid","href":"/en/extensions/vsql-nanoid"},{"title":"vsql_pgjwt extension for MySQL","sidebarTitle":"vsql_pgjwt","href":"/en/extensions/vsql-pgjwt"},{"title":"vsql_slugify extension for MySQL","sidebarTitle":"vsql_slugify","href":"/en/extensions/vsql-slugify"},{"title":"vsql_statistics extension for MySQL","sidebarTitle":"vsql_statistics","href":"/en/extensions/vsql-statistics"},{"title":"vsql_complex extension for MySQL","sidebarTitle":"vsql_complex","href":"/en/extensions/vsql-complex"}]}]},{"group":"Build an Extension","pages":[{"title":"Creating Extensions in C++","href":"/en/extensions/build/create"},{"title":"Creating Extensions in Rust","href":"/en/extensions/build/rust-sdk"},{"title":"Extensions or Plugins and Components","href":"/en/extensions/build/extensions-or-plugins"},{"title":"Extension Architecture","href":"/en/extensions/build/architecture"},{"title":"How Extensions and the ABI Behave","href":"/en/extensions/build/extension-abi-behavior"},{"group":"Advanced Topics","expanded":false,"pages":[{"title":"Preview Capabilities","href":"/en/extensions/build/preview-capabilities"},{"title":"Custom Indexes","href":"/en/extensions/build/custom-indexes"},{"title":"VEF Coverage Compared to PostgreSQL","href":"/en/extensions/build/postgresql-hooks"},{"title":"Protocol 1 API","href":"/en/extensions/build/protocol-1"}]}]}]},{"tab":"Server","menu":[{"item":"MySQL 8.4","icon":"database","pages":[{"title":"MySQL 8.4","href":"/en/8.4/stable/introduction"}]},{"item":"Percona Server 8.4","icon":"database","pages":[{"title":"Percona Server 8.4","href":"/en/8.4/stable/percona"}]},{"item":"MySQL 9.7","icon":"database","pages":[{"title":"MySQL 9.7","href":"/en/9.7/stable/introduction"}]},{"item":"Dev releases","icon":"flask","pages":[{"title":"Dev releases","href":"/en/dev-releases"}]},{"item":"Past releases","icon":"clock-rotate-left","pages":[{"title":"Past releases","href":"/en/past-releases"}]}],"pages":[{"title":"Server","href":"/en/8.4/stable/introduction"}]},{"tab":"Reference","menu":[{"item":"C++ SDK","icon":"code","pages":[{"title":"C++ SDK","href":"/en/sdk/cpp/extension-api-reference"}]},{"item":"Rust SDK","icon":"rust","pages":[{"title":"Rust SDK","href":"/en/sdk/rust/api-reference"}]}],"pages":[{"title":"Reference","href":"/en/sdk/cpp/extension-api-reference"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/en/tutorial"}]},{"tab":"Resources","menu":[{"item":"villagesql.com","icon":"https://mintlify.s3.us-west-1.amazonaws.com/villagesql/images/pelican.svg","href":"https://villagesql.com"},{"item":"GitHub","icon":"github","href":"https://github.com/villagesql/villagesql-server"},{"item":"Issues","icon":"bug","href":"https://github.com/villagesql/villagesql-server/issues"},{"item":"Discord","icon":"discord","href":"https://discord.gg/KSr6whd3Fr"},{"item":"Blog","icon":"newspaper","href":"https://villagesql.com/blog"},{"item":"Contribute to the Server","icon":"code-pull-request","href":"https://github.com/villagesql/villagesql-server/blob/main/CONTRIBUTING.md"},{"item":"Contribute to the Docs","icon":"pen-nib","href":"https://github.com/villagesql/villagesql-docs/blob/main/CONTRIBUTING.md"}]}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/extensions/vsql-network-address"}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/extensions/vsql-network-address"}]},{"language":"zh","pages":[{"title":"zh","href":"/zh/extensions/vsql-network-address"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/pt-BR/extensions/vsql-network-address"}]}]},"basePath":"","title":"vsql_network_address extension for MySQL - VillageSQL Server for MySQL - Documentation","buildId":"dpl_CEsowfH15TDzsBT2BFbX312Be4Ct","deploymentId":"dpl_CEsowfH15TDzsBT2BFbX312Be4Ct","dynamics":[],"chunks":[]}