{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "features": [
    {
      "id": "arrow-end-to-end",
      "title": "Arrow end to end",
      "summary": "Results decode straight into Apache Arrow column buffers.",
      "description": "There are no intermediate row objects, no per-value boxing and no serialization detour before the dataframe. The driver writes Arrow buffers as it decodes the wire, so the usual column-rebuild step simply does not exist.",
      "technicalDetail": "A classic ODBC or JDBC stack materialises row objects and then converts them column-wise into Arrow. That is two full copies of the data. These drivers skip both.",
      "benefits": [
        "No conversion step between the driver and pandas, Polars, DuckDB or Spark",
        "Lower memory pressure - no per-row allocations",
        "Results are consumable with zero copy by any Arrow-aware tool"
      ]
    },
    {
      "id": "wire-protocol-independence",
      "title": "A wire-protocol driver, not a wrapper",
      "summary": "Each driver implements the database's wire protocol itself instead of wrapping a vendor client library.",
      "description": "That is what makes it independent: no ODBC manager, no Oracle Instant Client, no libpq, no SQL Server client to install or version-match. With one fewer hop between socket and buffer, it is usually faster too.",
      "technicalDetail": "Beyond libc, OpenSSL is the only runtime dependency. The driver is a single library.",
      "benefits": [
        "Nothing else to install, version-match or ship with the application",
        "Slim container images and simple CI jobs",
        "No client library version skew between environments",
        "Fewer moving parts to audit and patch"
      ]
    },
    {
      "id": "native-wire-protocols",
      "title": "Native wire protocols",
      "summary": "MS-TDS 7.4 for SQL Server, Frontend/Backend v3 for PostgreSQL, TNS + TTC for Oracle.",
      "description": "All over TCP/TLS, with the encryption modes DBAs already require. Each is the exact protocol the database's own client speaks, just implemented directly in the driver.",
      "technicalDetail": "Encryption negotiation is part of the protocol implementation: TLS for SQL Server and PostgreSQL, and Oracle Native Network Encryption (AES-256 with SHA-256 / SHA-1 integrity) or TCPS for Oracle.",
      "benefits": [
        "Connects the way the database expects, including encryption negotiation",
        "Works against managed cloud services as well as on-premise instances"
      ]
    },
    {
      "id": "type-mapping",
      "title": "Rich, lossless type mapping",
      "summary": "Database types map to the Arrow types that preserve them.",
      "description": "PostgreSQL NUMERIC maps to Arrow decimal without a string detour, Oracle NUMBER mapping is configurable, and SQL Server 2025 VECTOR and geospatial types map to fixed-size lists and GeoArrow WKB.",
      "technicalDetail": "PostgreSQL NUMERIC -> decimal128 / decimal256. Oracle NUMBER -> utf8, float64 or decimal128(P,S), chosen per workload. SQL Server VECTOR(n) -> fixed-size list; geometry / geography -> GeoArrow WKB. PostGIS EWKB geometry and interval types are mapped natively.",
      "benefits": [
        "No precision lost through a text round-trip",
        "Spatial columns arrive usable rather than opaque",
        "Vector columns land as Arrow fixed-size lists, ready for similarity search"
      ]
    },
    {
      "id": "enterprise-authentication",
      "title": "Enterprise authentication",
      "summary": "The mechanisms enterprises actually use, per driver.",
      "description": "SQL logins, Windows SSPI and Kerberos/GSSAPI, Microsoft Entra ID, SCRAM-SHA-256 with channel binding, OCI IAM tokens, wallet-based mutual TLS and proxy connections.",
      "technicalDetail": "The exact list depends on the driver - see drivers.json for the per-driver authentication arrays.",
      "benefits": [
        "Fits existing identity infrastructure without a separate credential store",
        "Supports cloud identity (Entra ID, OCI IAM) as well as Kerberos realms"
      ]
    },
    {
      "id": "load-by-name",
      "title": "Load by name, anywhere",
      "summary": "Every driver installs an ADBC manifest, so clients connect with a single driver name.",
      "description": "Python, C/C++, C#, Go, Java, R and Rust clients all load the driver by name - the same code on Linux and Windows, with no path and no LD_LIBRARY_PATH.",
      "technicalDetail": "The installer registers a manifest in the standard per-platform ADBC search path, which the ADBC driver manager reads when a client asks for a driver by name.",
      "benefits": [
        "The same application code runs unchanged across operating systems",
        "Swapping the driver name switches the target database",
        "No absolute paths baked into application configuration"
      ]
    },
    {
      "id": "one-line-install",
      "title": "One-line installation",
      "summary": "A single command downloads the driver, installs it and registers the manifest.",
      "description": "Per-user by default; --system installs machine-wide. The licence can be supplied to the installer directly, as a file path or inline text.",
      "technicalDetail": "Installers are published for Linux/macOS (sh) and Windows (PowerShell). Maintenance commands list available drivers, show what is installed, and uninstall.",
      "benefits": [
        "Fast onboarding for developers and CI runners",
        "No package manager or vendor repository required"
      ]
    }
  ],
  "metadata": {
    "lastUpdated": "2026-09-07",
    "dataFormat": "JSON",
    "purpose": "AI Agent Knowledge Base",
    "audience": "LLMs and AI Agents",
    "schemaVersion": "1.0.0"
  }
}
