以前のバージョンのTimesTenとのODBC APIの非互換性

以前のバージョンのTimesTenとともに使用されていたODBCアプリケーションに影響を与える、TimesTen 18.1リリースで導入された変更点について説明します。

内容は次のとおりです。

ODBC APIの非互換性の概要

TimesTenドライバはODBCに対応しています。ただし、リリース18.1以降では、LinuxおよびUNIXプラットフォーム上のTimesTenインストールのincludeディレクトリに、より新しいODBCヘッダー・ファイルが用意されています。

64ビットとの互換性を確保するために、ODBCデータ型および関数を更新するように変更が行われました。

これらの変更およびその他の変更により、任意のプラットフォームでコードの変更が必要になる場合があります。ODBCアプリケーションのコード更新を必要とするODBC変更は、次のカテゴリに分類されます。

  • ODBC関数の変更点

    • 関数シグネチャの変更: 64ビット・プログラミング用にいくつかの関数シグネチャが変更されました。

    • オプションまたは属性値のサイズに対する変更: これは、接続オプション、文オプション、列属性、またはドライバとデータソース情報に関して、渡すか返す値のことです。これらは、次に示す状況では64ビット値になりました。

  • ODBCデータ型の変更

ヒント:

ご使用のアプリケーションにはどのコード変更も適用する必要がない場合でも、TimesTen 22.1リリースを初めて使用するときに、既存のODBCアプリケーションを再コンパイルして再リンクする必要があります。

既存のTimesTen ODBCアプリケーションで、次の各項で説明する機能が使用されている場合は、必要に応じてアプリケーションを更新する必要があります。

変更されたODBC 3.5関数シグネチャ

コードの更新を必要とする変更点があるODBC 3.5関数を示します。

以前のリリースのTimesTenでは、次のようなODBC 3.5機能を部分的にサポートしていました。

  • ハンドルの割当て方法

  • 診断レコード

  • ワイド・キャラクタ関数

  • ハンドルの属性の設定関数および取得関数

  • SQLColAttribute

  • SQLCloseCursorSQLEndTranなど、2.5の機能に直接マップされるその他の関数

表10-16に示す関数では、表に記載のとおり、シグネチャや属性値のサイズが変更されているため、ODBC 3.5アプリケーションのコードを更新する必要があります。属性値のサイズは、接続属性および文属性に関して、渡すか返す値に適用されます。

ノート:

  • シグネチャの変更は、64ビット環境または32ビット環境に適用されます。オプションおよび属性値のサイズ変更は、64ビット環境にのみ適用されます。

  • TimesTen ODBCでは、TimesTenでサポートされていない機能に関連するオプションまたは属性の値が返されません。たとえば: SQL_ATTR_ASYNC_ENABLESQL_ATTR_ENLIST_IN_DTCSQL_ATTR_CURSOR_SCROLLABLESQL_ATTR_CURSOR_SENSITIVITYSQL_ATTR_FETCH_BOOKMARK_PTRSQL_ATTR_METADATA_IDSQL_ATTR_RETRIEVE_DATASQL_ATTR_SIMULATE_CURSORSQL_ATTR_USE_BOOKMARKS

表10-16 ODBC 3.5関数の変更点

関数 シグネチャ変更 オプションおよび属性値のサイズ変更

SQLColAttribute

SQLColAttributeW

該当なし

UNIXプラットフォーム: 次のFieldIdentifier値の場合、64ビット値が*NumericAttributePtrに返されます。

  • SQL_DESC_AUTO_UNIQUE_VALUE
  • SQL_DESC_CASE_SENSITIVE
  • SQL_DESC_CONCISE_TYPE
  • SQL_DESC_COUNT
  • SQL_DESC_DISPLAY_SIZE
  • SQL_DESC_FIXED_PREC_SCALE
  • SQL_DESC_LENGTH
  • SQL_DESC_NULLABLE
  • SQL_DESC_NUM_PREC_RADIX
  • SQL_DESC_OCTET_LENGTH
  • SQL_DESC_PRECISION
  • SQL_DESC_SCALE
  • SQL_DESC_SEARCHABLE
  • SQL_DESC_TYPE
  • SQL_DESC_UNNAMED
  • SQL_DESC_UNSIGNED
  • SQL_DESC_UPDATABLE

SQLGetConnectAttr

SQLGetConnectAttrW

*ValuePtrは、取得する属性に応じてSQLUINTEGERまたはSQLULENである必要があります。

ノート: TimesTen固有の属性(接頭辞TT_が付いているもの)は同じデータ型のままです。

UNIXプラットフォーム: 次の属性の場合、64ビット値が*ValuePtrに返されます。

  • SQL_ATTR_ASYNC_ENABLE
  • SQL_ATTR_ENLIST_IN_DTC
  • SQL_ATTR_ODBC_CURSORS
  • SQL_ATTR_QUIET_MODE

SQLGetStmtAttr

SQLGetStmtAttrW

*ValuePtrは、取得する属性に応じてSQLUINTEGERまたはSQLULENである必要があります。

ノート: TimesTen固有の属性(接頭辞TT_が付いているもの)は同じデータ型のままです。

UNIXプラットフォーム: 次の属性の場合、64ビット値が*ValuePtrに返されます。

  • SQL_ATTR_APP_PARAM_DESC
  • SQL_ATTR_APP_ROW_DESC
  • SQL_ATTR_ASYNC_ENABLE
  • SQL_ATTR_CONCURRENCY
  • SQL_ATTR_CURSOR_SCROLLABLE
  • SQL_ATTR_CURSOR_SENSITIVITY
  • SQL_ATTR_CURSOR_TYPE
  • SQL_ATTR_ENABLE_AUTO_IPD
  • SQL_ATTR_FETCH_BOOKMARK_PTR
  • SQL_ATTR_ROWS_FETCHED_PTR
  • SQL_ATTR_IMP_PARAM_DESC
  • SQL_ATTR_IMP_ROW_DESC
  • SQL_ATTR_KEYSET_SIZE
  • SQL_ATTR_MAX_LENGTH
  • SQL_ATTR_MAX_ROWS
  • SQL_ATTR_METADATA_ID
  • SQL_ATTR_NOSCAN
  • SQL_ATTR_PARAM_BIND_OFFSET_PTR
  • SQL_ATTR_PARAM_BIND_TYPE
  • SQL_ATTR_PARAM_OPERATION_PTR
  • SQL_ATTR_PARAM_STATUS_PTR
  • SQL_ATTR_PARAMS_PROCESSED_PTR
  • SQL_ATTR_PARAMSET_SIZE
  • SQL_ATTR_QUERY_TIMEOUT
  • SQL_ATTR_RETRIEVE_DATA
  • SQL_ATTR_ROW_ARRAY_SIZE
  • SQL_ATTR_ROW_BIND_OFFSET_PTR
  • SQL_ATTR_ROW_NUMBER
  • SQL_ATTR_ROW_OPERATION_PTR
  • SQL_ATTR_ROW_STATUS_PTR
  • SQL_ATTR_SIMULATE_CURSOR
  • SQL_ATTR_USE_BOOKMARKS

SQLSetConnectAttr

SQLSetConnectAttrW

*ValuePtrは、設定する属性に応じてSQLUINTEGERまたはSQLULENである必要があります。

ノート: TimesTen固有の属性(接頭辞TT_が付いているもの)は同じデータ型のままです。

UNIXプラットフォーム: 次の属性の場合、64ビット値が*ValuePtrに渡されます。

  • SQL_ATTR_ASYNC_ENABLE
  • SQL_ATTR_ENLIST_IN_DTC
  • SQL_ATTR_ODBC_CURSORS
  • SQL_ATTR_QUIET_MODE

SQLSetStmtAttr

SQLSetStmtAttrW

*ValuePtrは、設定する属性に応じてSQLUINTEGERまたはSQLULENである必要があります。

ノート: TimesTen固有の属性(接頭辞TT_が付いているもの)は同じデータ型のままです。

UNIXプラットフォーム: 次の属性の場合、64ビット値が*ValuePtrに渡されます。

  • SQL_ATTR_APP_PARAM_DESC
  • SQL_ATTR_APP_ROW_DESC
  • SQL_ATTR_ASYNC_ENABLE
  • SQL_ATTR_CONCURRENCY
  • SQL_ATTR_CURSOR_SCROLLABLE
  • SQL_ATTR_CURSOR_SENSITIVITY
  • SQL_ATTR_CURSOR_TYPE
  • SQL_ATTR_ENABLE_AUTO_IPD
  • SQL_ATTR_FETCH_BOOKMARK_PTR
  • SQL_ATTR_IMP_PARAM_DESC
  • SQL_ATTR_IMP_ROW_DESC
  • SQL_ATTR_KEYSET_SIZE
  • SQL_ATTR_MAX_LENGTH
  • SQL_ATTR_MAX_ROWS
  • SQL_ATTR_METADATA_ID
  • SQL_ATTR_NOSCAN
  • SQL_ATTR_PARAM_BIND_OFFSET_PTR
  • SQL_ATTR_PARAM_BIND_TYPE
  • SQL_ATTR_PARAM_OPERATION_PTR
  • SQL_ATTR_PARAM_STATUS_PTR
  • SQL_ATTR_PARAMS_PROCESSED_PTR
  • SQL_ATTR_PARAMSET_SIZE
  • SQL_ATTR_QUERY_TIMEOUT
  • SQL_ATTR_RETRIEVE_DATA
  • SQL_ATTR_ROW_ARRAY_SIZE
  • SQL_ATTR_ROW_BIND_OFFSET_PTR
  • SQL_ATTR_ROW_NUMBER
  • SQL_ATTR_ROW_OPERATION_PTR
  • SQL_ATTR_ROW_STATUS_PTR
  • SQL_ATTR_ROWS_FETCHED_PTR
  • SQL_ATTR_SIMULATE_CURSOR
  • SQL_ATTR_USE_BOOKMARKS

変更されたODBC 2.5関数シグネチャ

コードの更新を必要とする変更点があるODBC 2.5関数を示します。

表10-17に示す関数では、表に記載のとおり、シグネチャが変更されていたり、オプションや属性値のサイズが変更されているため、ODBC 2.5アプリケーションのコードを更新する必要があります。オプションまたは属性値のサイズは、接続オプション、文オプション、列属性、またはドライバとデータソース情報に関して、渡すか返す値に適用されます。

表10-17 ODBC 2.5関数の変更点

関数 シグネチャ変更 オプションおよび属性値のサイズ変更

SQLColAttributes

SQLColAttributesW

該当なし

LinuxおよびUNIXプラットフォーム: 次のfDescType値の場合、SQLLEN値が*pfDescに返されます。

  • SQL_COLUMN_COUNT
  • SQL_COLUMN_DISPLAY_SIZE
  • SQL_COLUMN_LENGTH
  • SQL_DESC_AUTO_UNIQUE_VALUE
  • SQL_DESC_CASE_SENSITIVE
  • SQL_DESC_CONCISE_TYPE
  • SQL_DESC_FIXED_PREC_SCALE
  • SQL_DESC_SEARCHABLE
  • SQL_DESC_UNSIGNED
  • SQL_DESC_UPDATABLE

SQLGetConnectOption

SQLGetConnectOptionW

Valueパラメータは、取得するオプションに応じてSQLUINTEGERまたはSQLULENである必要があります。

ノート: TimesTen固有のオプション(接頭辞TT_が付いているもの)は同じデータ型のままです。

LinuxおよびUNIXプラットフォーム: オプションSQL_ATTR_QUIET_MODEの場合、HWND値(ウィンドウへのvoid *ポインタ)がValueに返されます。

SQLGetInfo

SQLGetInfoW

該当なし

LinuxおよびUNIXプラットフォーム: 次のInfoType値の場合、SQLPOINTER値が*InfoValuePtrに返されます。

  • SQL_DRIVER_HDBC
  • SQL_DRIVER_HENV
  • SQL_DRIVER_HSTMT

SQLGetStmtOption

Valueパラメータは、取得するオプションに応じてSQLUINTEGERまたはSQLULENである必要があります。

ノート: TimesTen固有のオプション(接頭辞TT_が付いているもの)は同じデータ型のままです。

LinuxおよびUNIXプラットフォーム: 次のオプションの場合、SQLPOINTER値がValueに返されます。

  • SQL_KEYSET_SIZE
  • SQL_MAX_LENGTH
  • SQL_MAX_ROWS
  • SQL_ROWSET_SIZE

SQLParamOptions

LinuxおよびUNIXプラットフォーム: crowおよびpirowパラメータがSQLULENとして宣言されるようになりました。

該当なし

SQLSetConnectOption

SQLSetConnectOptionW

Valueパラメータは、設定するオプションに応じてSQLUINTEGERまたはSQLULENである必要があります。

ノート: TimesTen固有のオプション(接頭辞TT_が付いているもの)は同じデータ型のままです。

LinuxおよびUNIXプラットフォーム: オプションSQL_ATTR_QUIET_MODEの場合、HWND値(ウィンドウへのvoid *ポインタ)がValueに渡されます。

SQLSetPos

TimesTenでは、スクロール可能カーソルはサポートされていません。この関数は、「Driver not capable」エラー(S1C00)を返します。

ノート: SQLSETPOSIROWのODBC定義(irowパラメータのデータ型)が変更されました。(次「変更されたODBCデータ型」の項を参照してください。)

該当なし

SQLSetStmtOption

Valueパラメータは、設定するオプションに応じてSQLUINTEGERまたはSQLULENである必要があります。

ノート: TimesTen固有のオプション(接頭辞TT_が付いているもの)は同じデータ型のままです。

LinuxおよびUNIXプラットフォーム: 次のオプションの場合、SQLPOINTER値がValueに渡されます。

  • SQL_KEYSET_SIZE
  • SQL_MAX_LENGTH
  • SQL_MAX_ROWS
  • SQL_ROWSET_SIZE

変更されたODBCデータ型

ODBCアプリケーションのコード更新が必要となる、データ型に関する変更点を示します。

表10-18 変更されたODBC 2.5データ型

データ型 説明
  • HANDLE
  • HINSTANCE

LinuxおよびUNIXプラットフォーム: これらのデータ型は(void*)として再定義されました。

  • SQLROWCOUNT
  • SQLROWSETSIZE
  • SQLTRANSID

これらのデータ型は非推奨になりました。かわりにSQLULENを使用してください。

  • SQLROWOFFSET

このデータ型は非推奨になりました。かわりにSQLLENを使用してください。

  • SQLSETPOSIROW

LinuxおよびUNIXプラットフォーム: このデータ型はSQLULENとして再定義されました。かわりに直接SQLULENを使用することをお薦めします。