blob: 79c0826b57feee98ae5440ed9352961c7c605f5b [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-61232409-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-61232409-1');
</script>
<meta charset="UTF-8">
<meta name="ignite-version" content="2.9.0" />
<title>Specification | Ignite Documentation</title>
<link rel="canonical" href="/docs/latest/SQL/ODBC/specification" />
<link rel="stylesheet" href="/assets/css/styles.css?1600382365">
<link rel="stylesheet" href="/assets/css/asciidoc-pygments.css">
<link rel="shortcut icon" href="/favicon.ico">
<meta name='viewport' content='width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0'>
<script type="text/javascript" src="/assets/js/anchor.min.js?1600382365"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
</head>
<body>
<header>
<!--#include virtual="/includes/promotion_banner.html" -->
<div class="container">
<button type='button' class='menu' title='Docs menu'>
<img src="/assets/images/menu-icon.svg"/>
</button>
<div class='home'>
<a href="/" class='home' title='Apache Ignite home'>
<img src="/assets/images/apache_ignite_logo.svg" alt="Apache Ignite logo" width="103" >
</a>
</div>
<nav>
</nav>
<select id="version-selector">
<option value="2.9.0">2.9.0</option>
</select>
<a href="https://github.com/apache/ignite" title='GitHub' class='github' target="_blank">
<img src="/assets/images/github-gray.svg" alt="GitHub logo">
</a>
<form class='search'>
<button class="search-close" type='button'><img src='/assets/images/cancel.svg'></button>
<input type="search" placeholder="Search…" id="search-input">
</form>
<button type='button' class='search-toggle'><img src='/assets/images/search.svg'></button>
<button type='button' class='top-nav-toggle'></button>
</div>
</header>
<link rel="stylesheet" href="/assets/css/docs.css">
<section class='page-docs'>
<nav class='left-nav' data-swiftype-index='false'>
<li>
<a href="/docs/latest/preface" class='' >Preface</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Quick Start Guides<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/quick-start/java"
class=''
>Java</a>
</li>
<li>
<a href="/docs/latest/quick-start/dotnet"
class=''
>.NET/C#</a>
</li>
<li>
<a href="/docs/latest/quick-start/cpp"
class=''
>C++</a>
</li>
<li>
<a href="/docs/latest/quick-start/python"
class=''
>Python</a>
</li>
<li>
<a href="/docs/latest/quick-start/nodejs"
class=''
>Node.JS</a>
</li>
<li>
<a href="/docs/latest/quick-start/sql"
class=''
>SQL</a>
</li>
<li>
<a href="/docs/latest/quick-start/php"
class=''
>PHP</a>
</li>
<li>
<a href="/docs/latest/quick-start/restapi"
class=''
>REST API</a>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="/installation" class='group-toggle collapsed '>Installation<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/installation/installing-using-zip"
class=''
>Installing Using ZIP Archive</a>
</li>
<li>
<a href="/docs/latest/installation/installing-using-docker"
class=''
>Installing Using Docker</a>
</li>
<li>
<a href="/docs/latest/installation/deb-rpm"
class=''
>Installing DEB or RPM package</a>
</li>
<li>
<button
type='button'
class='collapsed '>Kubernetes<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest//installation/kubernetes/amazon-eks-deployment" class=''>Amazon EKS</a></li>
<li><a href="/docs/latest//installation/kubernetes/azure-deployment" class=''>Azure Kubernetes Service</a></li>
<li><a href="/docs/latest//installation/kubernetes/gke-deployment" class=''>Google Kubernetes Engine</a></li>
</nav>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Setting Up<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/setup"
class=''
>Setting Up Ignite for Java</a>
</li>
<li>
<a href="/docs/latest/setup-dotnet"
class=''
>Setting Up Ignite for .NET/C#</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/understanding-configuration" class='' >Understanding Configuration</a>
</li>
<li>
<a href="/docs/latest/logging" class='' >Configuring Logging</a>
</li>
<li>
<a href="/docs/latest/starting-nodes" class='' >Starting and Stopping Nodes</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Clustering<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/clustering/clustering"
class=''
>Overview</a>
</li>
<li>
<a href="/docs/latest/clustering/tcp-ip-discovery"
class=''
>TCP/IP Discovery</a>
</li>
<li>
<a href="/docs/latest/clustering/zookeeper-discovery"
class=''
>ZooKeeper Discovery</a>
</li>
<li>
<a href="/docs/latest/clustering/discovery-in-the-cloud"
class=''
>Discovery in the Cloud</a>
</li>
<li>
<a href="/docs/latest/clustering/network-configuration"
class=''
>Network Configuration</a>
</li>
<li>
<a href="/docs/latest/clustering/connect-client-nodes"
class=''
>Connecting Client Nodes</a>
</li>
<li>
<a href="/docs/latest/clustering/running-client-nodes-behind-nat"
class=''
>Running Client Nodes Behind NAT</a>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Data Modeling<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/data-modeling/data-modeling"
class=''
>Introduction</a>
</li>
<li>
<a href="/docs/latest/data-modeling/data-partitioning"
class=''
>Data Partitioning</a>
</li>
<li>
<a href="/docs/latest/data-modeling/affinity-collocation"
class=''
>Affinity Colocation</a>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Configuring Memory<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/memory-architecture"
class=''
>Memory Architecture</a>
</li>
<li>
<a href="/docs/latest/memory-configuration/data-regions"
class=''
>Configuring Data Regions</a>
</li>
<li>
<a href="/docs/latest/memory-configuration/eviction-policies"
class=''
>Eviction Policies</a>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Configuring Caches<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/configuring-caches/configuration-overview"
class=''
>Cache Configuration</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/configuring-backups"
class=''
>Configuring Partition Backups</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/atomicity-modes"
class=''
>Atomicity Modes</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/expiry-policies"
class=''
>Expiry Policy</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/on-heap-caching"
class=''
>On-Heap Caching</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/cache-groups"
class=''
>Cache Groups</a>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Persistence<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/persistence/native-persistence"
class=''
>Ignite Persistence</a>
</li>
<li>
<a href="/docs/latest/persistence/external-storage"
class=''
>External Storage</a>
</li>
<li>
<a href="/docs/latest/persistence/swap"
class=''
>Swapping</a>
</li>
<li>
<a href="/docs/latest/persistence/custom-cache-store"
class=''
>Implementing Custom Cache Store</a>
</li>
<li>
<a href="/docs/latest/persistence/snapshots"
class=''
>Cluster Snapshots</a>
</li>
<li>
<a href="/docs/latest/persistence/disk-compression"
class=''
>Disk Compression</a>
</li>
<li>
<a href="/docs/latest/persistence/persistence-tuning"
class=''
>Tuning Persistence</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/baseline-topology" class='' >Baseline Topology</a>
</li>
<li>
<a href="/docs/latest/cluster-states" class='' >Cluster States</a>
</li>
<li>
<a href="/docs/latest/data-rebalancing" class='' >Data Rebalancing</a>
</li>
<li>
<a href="/docs/latest/partition-loss-policy" class='' >Partition Loss Policy</a>
</li>
<li>
<a href="/docs/latest/deploying-user-code" class='' >Deploying User Code</a>
</li>
<li>
<a href="/docs/latest/peer-class-loading" class='' >Peer Class Loading</a>
</li>
<li>
<a href="/docs/latest/data-streaming" class='' >Data Streaming</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Using Key-Value Cache API<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/key-value-api/basic-cache-operations"
class=''
>Basic Cache Operations</a>
</li>
<li>
<a href="/docs/latest/key-value-api/binary-objects"
class=''
>Working with Binary Objects</a>
</li>
<li>
<a href="/docs/latest/key-value-api/using-scan-queries"
class=''
>Using Scan Queries</a>
</li>
<li>
<a href="/docs/latest/read-repair"
class=''
>Read Repair</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/key-value-api/continuous-queries" class='' >Using Continuous Queries</a>
</li>
<li>
<a href="/docs/latest/key-value-api/transactions" class='' >Performing Transactions</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Working with SQL<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/SQL/sql-introduction"
class=''
>Introduction</a>
</li>
<li>
<a href="/docs/latest/SQL/schemas"
class=''
>Understanding Schemas</a>
</li>
<li>
<a href="/docs/latest/SQL/indexes"
class=''
>Defining Indexes</a>
</li>
<li>
<a href="/docs/latest/SQL/sql-api"
class=''
>Using SQL API</a>
</li>
<li>
<a href="/docs/latest/SQL/distributed-joins"
class=''
>Distributed Joins</a>
</li>
<li>
<a href="/docs/latest/SQL/sql-transactions"
class=''
>SQL Transactions</a>
</li>
<li>
<a href="/docs/latest/SQL/custom-sql-func"
class=''
>Custom SQL Functions</a>
</li>
<li>
<a href="/docs/latest/SQL/JDBC/jdbc-driver"
class=''
>JDBC Driver</a>
</li>
<li>
<a href="/docs/latest/SQL/JDBC/jdbc-client-driver"
class=''
>JDBC Client Driver</a>
</li>
<li>
<a href="/docs/latest/transactions/mvcc"
class=''
>Multiversion Concurrency Control</a>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Distributed Computing<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/distributed-computing/distributed-computing"
class=''
>Distributed Computing API</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/cluster-groups"
class=''
>Cluster Groups</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/executor-service"
class=''
>Executor Service</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/map-reduce"
class=''
>MapReduce API</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/load-balancing"
class=''
>Load Balancing</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/fault-tolerance"
class=''
>Fault Tolerance</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/job-scheduling"
class=''
>Job Scheduling</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/collocated-computations" class='' >Colocating Computations with Data</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Working with Events<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/events/listening-to-events"
class=''
>Enabling and Listenting to Events</a>
</li>
<li>
<a href="/docs/latest/events/events"
class=''
>Events</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/near-cache" class='' >Near Caches</a>
</li>
<li>
<a href="/docs/latest/platform-cache" class='' >.NET Platform Cache</a>
</li>
<li>
<a href="/docs/latest/services/services" class='' >Services</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Distributed Data Structures<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/data-structures/queue-and-set"
class=''
>Queue and Set</a>
</li>
<li>
<a href="/docs/latest/data-structures/atomic-types"
class=''
>Atomic Types</a>
</li>
<li>
<a href="/docs/latest/data-structures/countdownlatch"
class=''
>CountDownLatch</a>
</li>
<li>
<a href="/docs/latest/data-structures/atomic-sequence"
class=''
>Atomic Sequence</a>
</li>
<li>
<a href="/docs/latest/data-structures/semaphore"
class=''
>Semaphore</a>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Machine Learning<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/machine-learning/machine-learning"
class=''
>Machine Learning</a>
</li>
<li>
<a href="/docs/latest/machine-learning/partition-based-dataset"
class=''
>Partition Based Dataset</a>
</li>
<li>
<a href="/docs/latest/machine-learning/updating-trained-models"
class=''
>Updating Trained Models</a>
</li>
<li>
<button
type='button'
class='collapsed '>Binary Classification<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest//machine-learning/binary-classification/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest//machine-learning/binary-classification/linear-svm" class=''>Linear SVM (Support Vector Machine)</a></li>
<li><a href="/docs/latest//machine-learning/binary-classification/decision-trees" class=''>Decision Trees</a></li>
<li><a href="/docs/latest//machine-learning/binary-classification/multilayer-perceptron" class=''>Multilayer Perceptron</a></li>
<li><a href="/docs/latest//machine-learning/binary-classification/logistic-regression" class=''>Logistic Regression</a></li>
<li><a href="/docs/latest//machine-learning/binary-classification/knn-classification" class=''>k-NN Classification</a></li>
<li><a href="/docs/latest//machine-learning/binary-classification/ann" class=''>ANN (Approximate Nearest Neighbor)</a></li>
<li><a href="/docs/latest//machine-learning/binary-classification/naive-bayes" class=''>Naive Bayes</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Regression<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest//machine-learning/regression/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest//machine-learning/regression/linear-regression" class=''>Linear Regression</a></li>
<li><a href="/docs/latest//machine-learning/regression/decision-trees-regression" class=''>Decision Trees Regression</a></li>
<li><a href="/docs/latest//machine-learning/regression/knn-regression" class=''>k-NN Regression</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Clustering<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest//machine-learning/clustering/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest//machine-learning/clustering/k-means-clustering" class=''>K-Means Clustering</a></li>
<li><a href="/docs/latest//machine-learning/clustering/gaussian-mixture" class=''>Gaussian mixture (GMM)</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/machine-learning/preprocessing"
class=''
>Preprocessing</a>
</li>
<li>
<button
type='button'
class='collapsed '>Model Selection<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest//machine-learning/model-selection/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest//machine-learning/model-selection/evaluator" class=''>Evaluator</a></li>
<li><a href="/docs/latest//machine-learning/model-selection/split-the-dataset-on-test-and-train-datasets" class=''>Split the dataset on test and train datasets</a></li>
<li><a href="/docs/latest//machine-learning/model-selection/hyper-parameter-tuning" class=''>Hyper-parameter tuning</a></li>
<li><a href="/docs/latest//machine-learning/model-selection/pipeline-api" class=''>Pipeline API</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/machine-learning/multiclass-classification"
class=''
>Multiclass Classification</a>
</li>
<li>
<button
type='button'
class='collapsed '>Ensemble Methods<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest//machine-learning/ensemble-methods/introduction" class=''></a></li>
<li><a href="/docs/latest//machine-learning/ensemble-methods/stacking" class=''>Stacking</a></li>
<li><a href="/docs/latest//machine-learning/ensemble-methods/baggin" class=''>Bagging</a></li>
<li><a href="/docs/latest//machine-learning/ensemble-methods/random-forest" class=''>Random Forest</a></li>
<li><a href="/docs/latest//machine-learning/ensemble-methods/gradient-boosting" class=''>Gradient Boosting</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/machine-learning/recommendation-systems"
class=''
>Recommendation Systems</a>
</li>
<li>
<button
type='button'
class='collapsed '>Importing Model<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest//machine-learning/importing-model/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest//machine-learning/importing-model/model-import-from-gxboost" class=''>Import Model from XGBoost</a></li>
<li><a href="/docs/latest//machine-learning/importing-model/model-import-from-apache-spark" class=''>Import Model from Apache Spark</a></li>
</nav>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Monitoring<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/monitoring-metrics/intro"
class=''
>Introduction</a>
</li>
<li>
<a href="/docs/latest/monitoring-metrics/cluster-id"
class=''
>Cluster ID and Tag</a>
</li>
<li>
<button
type='button'
class='collapsed '>Metrics<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest//monitoring-metrics/configuring-metrics" class=''>Configuring Metrics</a></li>
<li><a href="/docs/latest//monitoring-metrics/metrics" class=''>JMX Metrics</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>New Metrics System<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest//monitoring-metrics/new-metrics-system" class=''>Introduction</a></li>
<li><a href="/docs/latest//monitoring-metrics/new-metrics" class=''>Metrics</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/monitoring-metrics/system-views"
class=''
>System Views</a>
</li>
<li>
<a href="/docs/latest/monitoring-metrics/tracing"
class=''
>Tracing</a>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="/security" class='group-toggle collapsed '>Security<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/security/authentication"
class=''
>Authentication</a>
</li>
<li>
<a href="/docs/latest/security/ssl-tls"
class=''
>SSL/TLS</a>
</li>
<li>
<button
type='button'
class='collapsed '>Transparent Data Encryption<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest//security/tde" class=''>Introduction</a></li>
<li><a href="/docs/latest//security/master-key-rotation" class=''>Master key rotation</a></li>
</nav>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Thin Clients<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/thin-clients/getting-started-with-thin-clients"
class=''
>Thin Clients Overview</a>
</li>
<li>
<a href="/docs/latest/thin-clients/java-thin-client"
class=''
>Java Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/dotnet-thin-client"
class=''
>.NET Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/cpp-thin-client"
class=''
>C++ Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/python-thin-client"
class=''
>Python Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/php-thin-client"
class=''
>PHP Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/nodejs-thin-client"
class=''
>Node.js Thin Client</a>
</li>
<li>
<button
type='button'
class='collapsed '>Binary Client Protocol<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest//binary-client-protocol/binary-client-protocol" class=''>Binary Client Protocol</a></li>
<li><a href="/docs/latest//binary-client-protocol/data-format" class=''>Data Format</a></li>
<li><a href="/docs/latest//binary-client-protocol/key-value-queries" class=''>Key-Value Queries</a></li>
<li><a href="/docs/latest//binary-client-protocol/sql-and-scan-queries" class=''>SQL and Scan Queries</a></li>
<li><a href="/docs/latest//binary-client-protocol/binary-type-metadata" class=''>Binary Types Metadata</a></li>
<li><a href="/docs/latest//binary-client-protocol/cache-configuration" class=''>Cache Configuration</a></li>
</nav>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>ODBC Driver<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/SQL/ODBC/odbc-driver"
class=''
>ODBC Driver</a>
</li>
<li>
<a href="/docs/latest/SQL/ODBC/connection-string-dsn"
class=''
>Connection String and DSN</a>
</li>
<li>
<a href="/docs/latest/SQL/ODBC/querying-modifying-data"
class=''
>Querying and Modifying Data</a>
</li>
<li>
<a href="/docs/latest/SQL/ODBC/specification"
class=''
>Specification</a>
</li>
<li>
<a href="/docs/latest/SQL/ODBC/data-types"
class=''
>Data Types</a>
</li>
<li>
<a href="/docs/latest/SQL/ODBC/error-codes"
class=''
>Error Codes</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/restapi" class='' >REST API</a>
</li>
<li>
<a href="/docs/latest/control-script" class='' >Control Script</a>
</li>
<li>
<a href="/docs/latest/plugins" class='' >Plugins</a>
</li>
<li>
<a href="/docs/latest/sqlline" class='' >SQLLine</a>
</li>
<li>
<button type='button' data-guide-url="" class='group-toggle collapsed '>Ignite for Spark<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/ignite-for-spark/overview"
class=''
>Overview</a>
</li>
<li>
<a href="/docs/latest/ignite-for-spark/ignitecontext-and-rdd"
class=''
>IgniteContext and IgniteRDD</a>
</li>
<li>
<a href="/docs/latest/ignite-for-spark/ignite-dataframe"
class=''
>Ignite DataFrame</a>
</li>
<li>
<a href="/docs/latest/ignite-for-spark/installation"
class=''
>Installation</a>
</li>
<li>
<a href="/docs/latest/ignite-for-spark/spark-shell"
class=''
>Test Ignite with Spark-shell</a>
</li>
<li>
<a href="/docs/latest/ignite-for-spark/troubleshooting"
class=''
>Troubleshooting</a>
</li>
</nav>
</li>
<li>
<button type='button' data-guide-url="/sql-reference/sql-reference-overview" class='group-toggle collapsed '>SQL Reference<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/sql-reference/sql-conformance"
class=''
>SQL Conformance</a>
</li>
<li>
<a href="/docs/latest/sql-reference/ddl"
class=''
>Data Definition Language (DDL)</a>
</li>
<li>
<a href="/docs/latest/sql-reference/dml"
class=''
>Data Manipulation Language (DML)</a>
</li>
<li>
<a href="/docs/latest/sql-reference/transactions"
class=''
>Transactions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/operational-commands"
class=''
>Operational Commands</a>
</li>
<li>
<a href="/docs/latest/sql-reference/aggregate-functions"
class=''
>Aggregate functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/numeric-functions"
class=''
>Numeric Functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/string-functions"
class=''
>String Functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/date-time-functions"
class=''
>Data and Time Functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/system-functions"
class=''
>System Functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/data-types"
class=''
>Data Types</a>
</li>
</nav>
</li>
</nav>
<div class="left-nav__overlay"></div>
<article data-swiftype-index='true'>
<a class='edit-link' href="https://github.com/apache/ignite/tree/IGNITE-7595/docs/_docs/SQL/ODBC/specification.adoc" target="_blank">Edit</a>
<h1>Specification</h1>
<div class="sect1">
<h2 id="overview">Overview</h2>
<div class="sectionbody">
<div class="paragraph">
<p>ODBC defines several Interface conformance levels. In this section you can find which features are supported by the Apache Ignite ODBC driver.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="core-interface-conformance">Core Interface Conformance</h2>
<div class="sectionbody">
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 60%;">
<col style="width: 10%;">
<col style="width: 30%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Feature</th>
<th class="tableblock halign-left valign-top">Supported</th>
<th class="tableblock halign-left valign-top">Comments</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Allocate and free all types of handles, by calling <code>SQLAllocHandle</code> and <code>SQLFreeHandle</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use all forms of the <code>SQLFreeStmt</code> function.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Bind result set columns, by calling <code>SQLBindCol</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Handle dynamic parameters, including arrays of parameters, in the input direction only, by calling <code>SQLBindParameter</code> and <code>SQLNumParams</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specify a bind offset.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the data-at-execution dialog, involving calls to <code>SQLParamData</code> and <code>SQLPutData</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Manage cursors and cursor names, by calling <code>SQLCloseCursor</code>, <code>SQLGetCursorName</code>, and <code>SQLSetCursorName</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLCloseCursor</code> is implemented. Named cursors are not supported by Ignite SQL.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Gain access to the description (metadata) of result sets, by calling <code>SQLColAttribute</code>, <code>SQLDescribeCol</code>, <code>SQLNumResultCols</code>, and <code>SQLRowCount</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Query the data dictionary, by calling the catalog functions <code>SQLColumns</code>, <code>SQLGetTypeInfo</code>, <code>SQLStatistics</code>, and <code>SQLTables</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLStatistics</code> is not supported.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Manage data sources and connections, by calling <code>SQLConnect</code>, <code>SQLDataSources</code>, <code>SQLDisconnect</code>, and <code>SQLDriverConnect</code>. Obtain information on drivers, no matter which ODBC level they support, by calling <code>SQLDrivers</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Prepare and execute SQL statements, by calling <code>SQLExecDirect</code>, <code>SQLExecute</code>, and <code>SQLPrepare</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Fetch one row of a result set or multiple rows, in the forward direction only, by calling <code>SQLFetch</code> or by calling <code>SQLFetchScroll</code> with the <code>FetchOrientation</code> argument set to <code>SQL_FETCH_NEXT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Obtain an unbound column in parts, by calling <code>SQLGetData</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Obtain current values of all attributes, by calling <code>SQLGetConnectAttr</code>, <code>SQLGetEnvAttr</code>, and <code>SQLGetStmtAttr</code>, and set all attributes to their default values and set certain attributes to non-default values by calling <code>SQLSetConnectAttr</code>, <code>SQLSetEnvAttr</code>, and <code>SQLSetStmtAttr</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Not all attributes are supported by now. See table below for details.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Manipulate certain fields of descriptors, by calling <code>SQLCopyDesc</code>, <code>SQLGetDescField</code>, <code>SQLGetDescRec</code>, <code>SQLSetDescField</code>, and <code>SQLSetDescRec</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Obtain diagnostic information, by calling <code>SQLGetDiagField</code> and <code>SQLGetDiagRec</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Detect driver capabilities, by calling <code>SQLGetFunctions</code> and <code>SQLGetInfo</code>. Also, detect the result of any text substitutions made to an SQL statement before it is sent to the data source, by calling <code>SQLNativeSql</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use the syntax of <code>SQLEndTran</code> to commit a transaction. A Core-level driver need not support true transactions; therefore, the application cannot specify <code>SQL_ROLLBACK</code> nor <code>SQL_AUTOCOMMIT_OFF</code> for the <code>SQL_ATTR_AUTOCOMMIT</code> connection attribute.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Call <code>SQLCancel</code> to cancel the data-at-execution dialog and, in multi-thread environments, to cancel an ODBC function executing in another thread. Core-level interface conformance does not mandate support for asynchronous execution of functions, nor the use of <code>SQLCancel</code> to cancel an ODBC function executing asynchronously. Neither the platform nor the ODBC driver need be multi-thread for the driver to conduct independent activities at the same time. However, in multi-thread environments, the ODBC driver must be thread-safe. Serialization of requests from the application is a conformant way to implement this specification, even though it might create serious performance problems.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Current implementation does not support asynchronous execution. Also, is not supported for data-at-execution.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Obtain the <code>SQL_BEST_ROWID</code> row-identifying column of tables, by calling <code>SQLSpecialColumns</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Current implementation always returns empty row set.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="level-1-interface-conformance">Level 1 Interface Conformance</h2>
<div class="sectionbody">
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 60%;">
<col style="width: 10%;">
<col style="width: 30%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specify the schema of database tables and views (using two-part naming).</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Invoke true asynchronous execution of ODBC functions, where applicable ODBC functions are all synchronous or all asynchronous on a given connection.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use scrollable cursors, and thereby achieve access to a result set in methods other than forward-only, by calling <code>SQLFetchScroll</code> with the <code>FetchOrientation</code> argument other than <code>SQL_FETCH_NEXT</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Obtain primary keys of tables, by calling <code>SQLPrimaryKeys</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns empty result set by now.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use stored procedures, through the ODBC escape sequence for procedure calls, and query the data dictionary regarding stored procedures, by calling <code>SQLProcedureColumns</code> and <code>SQLProcedures</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Connect to a data source by interactively browsing the available servers, by calling <code>SQLBrowseConnect</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use ODBC functions instead of SQL statements to perform certain database operations: <code>SQLSetPos</code> with <code>SQL_POSITION</code> and <code>SQL_REFRESH</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Gain access to the contents of multiple result sets generated by batches and stored procedures, by calling <code>SQLMoreResults</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Delimit transactions spanning several ODBC functions, with true atomicity and the ability to specify <code>SQL_ROLLBACK</code> in <code>SQLEndTran</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ignite SQL does not support transactions.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="level-2-interface-conformance">Level 2 Interface Conformance</h2>
<div class="sectionbody">
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 60%;">
<col style="width: 10%;">
<col style="width: 30%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Feature</th>
<th class="tableblock halign-left valign-top">Supported</th>
<th class="tableblock halign-left valign-top">Comments</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use three-part names of database tables and views.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ignite SQL does not support catalogs.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Describe dynamic parameters, by calling <code>SQLDescribeParam</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use not only input parameters but also output and input/output parameters, and result values of stored procedures.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ignite SQL does not support output parameters</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use bookmarks, including retrieving bookmarks, by calling <code>SQLDescribeCol</code> and <code>SQLColAttribute</code> on column number 0; fetching based on a bookmark, by calling <code>SQLFetchScroll</code> with the <code>FetchOrientation</code> argument set to <code>SQL_FETCH_BOOKMARK</code>; and update, delete, and fetch by bookmark operations, by calling <code>SQLBulkOperations</code> with the Operation argument set to <code>SQL_UPDATE_BY_BOOKMARK</code>, <code>SQL_DELETE_BY_BOOKMARK</code>, or <code>SQL_FETCH_BY_BOOKMARK</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ignite SQL does not support bookmarks.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Retrieve advanced information about the data dictionary, by calling <code>SQLColumnPrivileges</code>, <code>SQLForeignKeys</code>, and <code>SQLTablePrivileges</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLForeignKeys</code> implemented, but returns empty result set.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use ODBC functions instead of SQL statements to perform additional database operations, by calling <code>SQLBulkOperations</code> with <code>SQL_ADD</code>, or <code>SQLSetPos</code> with <code>SQL_DELETE</code> or <code>SQL_UPDATE</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Enable asynchronous execution of ODBC functions for specified individual statements.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Obtain the <code>SQL_ROWVER</code> row-identifying column of tables, by calling <code>SQLSpecialColumns</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Implemented by returning an empty row set.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Set the <code>SQL_ATTR_CONCURRENCY</code> statement attribute to at least one value other than <code>SQL_CONCUR_READ_ONLY</code>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">The ability to time out login request and SQL queries (<code>SQL_ATTR_LOGIN_TIMEOUT</code> and <code>SQL_ATTR_QUERY_TIMEOUT</code>).</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_QUERY_TIMEOUT</code> support implemented.
<code>SQL_ATTR_LOGIN_TIMEOUT</code> is not implemented yet.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">The ability to change the default isolation level; the ability to execute transactions with the "serializable" level of isolation.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ignite does not support SQL transactions.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="function-support">Function Support</h2>
<div class="sectionbody">
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 70%;">
<col style="width: 15%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Function</th>
<th class="tableblock halign-left valign-top">Supported</th>
<th class="tableblock halign-left valign-top">Conformance level</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLAllocHandle</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLBindCol</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLBindParameter</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLBrowseConnect</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLBulkOperations</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLCancel</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLCloseCursor</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLColAttribute</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLColumnPrivileges</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLColumns</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLConnect</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLCopyDesc</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLDataSources</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N/A</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLDescribeCol</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLDescribeParam</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLDisconnect</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLDriverConnect</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLDrivers</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N/A</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLEndTran</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLExecDirect</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLExecute</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLFetch</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLFetchScroll</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLForeignKeys</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLFreeHandle</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLFreeStmt</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLGetConnectAttr</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLGetCursorName</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLGetData</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLGetDescField</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLGetDescRec</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLGetDiagField</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLGetDiagRec</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLGetEnvAttr</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLGetFunctions</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLGetInfo</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLGetStmtAttr</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLGetTypeInfo</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLMoreResults</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLNativeSql</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLNumParams</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLNumResultCols</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLParamData</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLPrepare</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLPrimaryKeys</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLProcedureColumns</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLProcedures</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLPutData</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLRowCount</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLSetConnectAttr</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLSetCursorName</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLSetDescField</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLSetDescRec</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLSetEnvAttr</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLSetPos</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLSetStmtAttr</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLSpecialColumns</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLStatistics</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLTablePrivileges</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQLTables</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="environment-attribute-conformance">Environment Attribute Conformance</h2>
<div class="sectionbody">
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 70%;">
<col style="width: 15%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Feature</th>
<th class="tableblock halign-left valign-top">Supported</th>
<th class="tableblock halign-left valign-top">Conformance Level</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_CONNECTION_POOLING</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_CP_MATCH</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_ODBC_VER</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_OUTPUT_NTS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="connection-attribute-conformance">Connection Attribute Conformance</h2>
<div class="sectionbody">
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 70%;">
<col style="width: 15%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Feature</th>
<th class="tableblock halign-left valign-top">Supported</th>
<th class="tableblock halign-left valign-top">Conformance Level</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_ACCESS_MODE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_ASYNC_ENABLE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1 / Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_AUTO_IPD</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_AUTOCOMMIT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_CONNECTION_DEAD</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_CONNECTION_TIMEOUT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_CURRENT_CATALOG</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_LOGIN_TIMEOUT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_ODBC_CURSORS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_PACKET_SIZE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_QUIET_MODE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_TRACE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_TRACEFILE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_TRANSLATE_LIB</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_TRANSLATE_OPTION</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_TXN_ISOLATION</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1 / Level 2</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="statement-attribute-conformance">Statement Attribute Conformance</h2>
<div class="sectionbody">
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 70%;">
<col style="width: 15%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Feature</th>
<th class="tableblock halign-left valign-top">Supported</th>
<th class="tableblock halign-left valign-top">Conformance Level</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_APP_PARAM_DESC</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_APP_ROW_DESC</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_ASYNC_ENABLE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1/ Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_CONCURRENCY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1 / Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_CURSOR_SCROLLABLE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_CURSOR_SENSITIVITY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_CURSOR_TYPE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1 / Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_ENABLE_AUTO_IPD</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_FETCH_BOOKMARK_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_IMP_PARAM_DESC</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_IMP_ROW_DESC</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PARTIALLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_KEYSET_SIZE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_MAX_LENGTH</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_MAX_ROWS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_METADATA_ID</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_NOSCAN</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_PARAM_BIND_OFFSET_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_PARAM_BIND_TYPE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_PARAM_OPERATION_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_PARAM_STATUS_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_PARAMS_PROCESSED_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_PARAMSET_SIZE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_QUERY_TIMEOUT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_RETRIEVE_DATA</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_ROW_ARRAY_SIZE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_ROW_BIND_OFFSET_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_ROW_BIND_TYPE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_ROW_NUMBER</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_ROW_OPERATION_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_ROW_STATUS_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_ROWS_FETCHED_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_SIMULATE_CURSOR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_ATTR_USE_BOOKMARKS</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="descriptor-header-fields-conformance">Descriptor Header Fields Conformance</h2>
<div class="sectionbody">
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 70%;">
<col style="width: 15%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Feature</th>
<th class="tableblock halign-left valign-top">Supported</th>
<th class="tableblock halign-left valign-top">Conformance Level</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_ALLOC_TYPE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_ARRAY_SIZE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_ARRAY_STATUS_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core / Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_BIND_OFFSET_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_BIND_TYPE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_COUNT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_ROWS_PROCESSED_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="descriptor-record-fields-conformance">Descriptor Record Fields Conformance</h2>
<div class="sectionbody">
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 70%;">
<col style="width: 15%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Feature</th>
<th class="tableblock halign-left valign-top">Supported</th>
<th class="tableblock halign-left valign-top">Conformance Level</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_AUTO_UNIQUE_VALUE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_BASE_COLUMN_NAME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_BASE_TABLE_NAME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_CASE_SENSITIVE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_CATALOG_NAME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_CONCISE_TYPE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_DATA_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_DATETIME_INTERVAL_CODE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_DATETIME_INTERVAL_PRECISION</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_DISPLAY_SIZE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_FIXED_PREC_SCALE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_INDICATOR_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_LABEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_LENGTH</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_LITERAL_PREFIX</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_LITERAL_SUFFIX</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_LOCAL_TYPE_NAME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_NAME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_NULLABLE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_OCTET_LENGTH</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_OCTET_LENGTH_PTR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_PARAMETER_TYPE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core / Level 2</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_PRECISION</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_ROWVER</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_SCALE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_SCHEMA_NAME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_SEARCHABLE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_TABLE_NAME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level 1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_TYPE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_TYPE_NAME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_UNNAMED</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_UNSIGNED</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DESC_UPDATABLE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Core</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="sql-data-types">SQL Data Types</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The following SQL data types listed in the <a href="https://docs.microsoft.com/en-us/sql/odbc/reference/appendixes/sql-data-types">specification</a> are supported:</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 80%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Data Type</th>
<th class="tableblock halign-left valign-top">Supported</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_CHAR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_VARCHAR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_LONGVARCHAR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_WCHAR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_WVARCHAR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_WLONGVARCHAR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DECIMAL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_NUMERIC</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_SMALLINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTEGER</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_REAL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_FLOAT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_DOUBLE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_BIT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_TINYINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_BIGINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_BINARY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_VARBINARY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_LONGVARBINARY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_TYPE_DATE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_TYPE_TIME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_TYPE_TIMESTAMP</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_TYPE_UTCDATETIME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_TYPE_UTCTIME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTERVAL_MONTH</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTERVAL_YEAR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTERVAL_YEAR_TO_MONTH</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTERVAL_DAY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTERVAL_HOUR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTERVAL_MINUTE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTERVAL_SECOND</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTERVAL_DAY_TO_HOUR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTERVAL_DAY_TO_MINUTE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTERVAL_DAY_TO_SECOND</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTERVAL_HOUR_TO_MINUTE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTERVAL_HOUR_TO_SECOND</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_INTERVAL_MINUTE_TO_SECOND</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_GUID</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="c-data-types">C Data Types</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The following C data types listed in the <a href="https://docs.microsoft.com/en-us/sql/odbc/reference/appendixes/c-data-types">specification</a> are supported:</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 80%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Data Type</th>
<th class="tableblock halign-left valign-top">Supported</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_CHAR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_WCHAR</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_SHORT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_SSHORT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_USHORT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_LONG</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_SLONG</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_ULONG</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_FLOAT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_DOUBLE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_BIT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_TINYINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_STINYINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_UTINYINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_BIGINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_SBIGINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_UBIGINT</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_BINARY</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_BOOKMARK</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_VARBOOKMARK</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_INTERVAL</code>* (all interval types)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NO</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_TYPE_DATE</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_TYPE_TIME</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_TYPE_TIMESTAMP</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_NUMERIC</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>SQL_C_GUID</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YES</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="copyright">
© 2020 The Apache Software Foundation.<br/>
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.
</div>
</article>
<nav class="right-nav" data-swiftype-index='false'>
<ul class="sectlevel1">
<li><a href="#overview">Overview</a></li>
<li><a href="#core-interface-conformance">Core Interface Conformance</a></li>
<li><a href="#level-1-interface-conformance">Level 1 Interface Conformance</a></li>
<li><a href="#level-2-interface-conformance">Level 2 Interface Conformance</a></li>
<li><a href="#function-support">Function Support</a></li>
<li><a href="#environment-attribute-conformance">Environment Attribute Conformance</a></li>
<li><a href="#connection-attribute-conformance">Connection Attribute Conformance</a></li>
<li><a href="#statement-attribute-conformance">Statement Attribute Conformance</a></li>
<li><a href="#descriptor-header-fields-conformance">Descriptor Header Fields Conformance</a></li>
<li><a href="#descriptor-record-fields-conformance">Descriptor Record Fields Conformance</a></li>
<li><a href="#sql-data-types">SQL Data Types</a></li>
<li><a href="#c-data-types">C Data Types</a></li>
</ul>
<footer>
</footer>
</nav>
</section>
<script type='module' src='/assets/js/code-copy-to-clipboard.js' async crossorigin></script>
<script>
// inits deep anchors -- needs to be done here because of https://www.bryanbraun.com/anchorjs/#dont-run-it-too-late
anchors.add('.page-docs h1, .page-docs h2, .page-docs h3:not(.discrete), .page-docs h4, .page-docs h5');
anchors.options = {
placement: 'right',
visible: 'always'
};
</script>
<!-- load google fonts async -->
<script type="text/javascript">
WebFontConfig = {
google: { families: [ 'Open+Sans:300,400,600,700&display=swap' ] }
};
(function() {
var wf = document.createElement('script');
wf.src = 'https://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
wf.type = 'text/javascript';
wf.async = 'true';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(wf, s);
})(); </script>
<script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
<script>
docsearch({
// Your apiKey and indexName will be given to you once
// we create your config
apiKey: '3eee686c0ebe39eff3baeb18c56fa5f8',
indexName: 'apache_ignite',
// Replace inputSelector with a CSS selector
// matching your search input
inputSelector: '#search-input',
// algoliaOptions: { 'facetFilters': ["version:$VERSION"] },
// Set debug to true to inspect the dropdown
debug: false,
});
</script>
<script type='module' src='/assets/js/index.js?1600382365' async crossorigin></script>
<script type='module' src='/assets/js/versioning.js?1600382365' async crossorigin></script>
</body>
</html>