summaryrefslogtreecommitdiff
path: root/src/interfaces/odbc/info30.c
diff options
context:
space:
mode:
authorHiroshi Inoue <inoue@tpf.co.jp>2002-03-14 05:42:04 +0000
committerHiroshi Inoue <inoue@tpf.co.jp>2002-03-14 05:42:04 +0000
commit01e322652b14c2aeac1737f29f8bcf9e18d1060e (patch)
tree2793f9c1dcea81f6268e81b777af1c990b74b526 /src/interfaces/odbc/info30.c
parentf362dcec61bc8df8b13d65897aecaaac2ce1b7b0 (diff)
1) Internal improvements to handle updatable cursors(1st cut).
2) Fix a bug in SQLColAttribute().
Diffstat (limited to 'src/interfaces/odbc/info30.c')
-rw-r--r--src/interfaces/odbc/info30.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/src/interfaces/odbc/info30.c b/src/interfaces/odbc/info30.c
index b606f0dc622..414110b8938 100644
--- a/src/interfaces/odbc/info30.c
+++ b/src/interfaces/odbc/info30.c
@@ -47,14 +47,15 @@ PGAPI_GetInfo30(HDBC hdbc, UWORD fInfoType, PTR rgbInfoValue,
break;
case SQL_KEYSET_CURSOR_ATTRIBUTES1:
len = 4;
- value = SQL_CA1_NEXT | SQL_CA1_ABSOLUTE
+ value = 0;
+ if (ci->updatable_cursors || ci->drivers.lie)
+ value |= (SQL_CA1_NEXT | SQL_CA1_ABSOLUTE
| SQL_CA1_RELATIVE | SQL_CA1_BOOKMARK
| SQL_CA1_LOCK_NO_CHANGE | SQL_CA1_POS_POSITION
| SQL_CA1_POS_UPDATE | SQL_CA1_POS_DELETE
- | SQL_CA1_POS_REFRESH;
+ | SQL_CA1_POS_REFRESH);
if (ci->drivers.lie)
- value |=
- ( SQL_CA1_BULK_ADD
+ value |= (SQL_CA1_BULK_ADD
| SQL_CA1_BULK_UPDATE_BY_BOOKMARK
| SQL_CA1_BULK_DELETE_BY_BOOKMARK
| SQL_CA1_BULK_FETCH_BY_BOOKMARK
@@ -68,13 +69,14 @@ PGAPI_GetInfo30(HDBC hdbc, UWORD fInfoType, PTR rgbInfoValue,
break;
case SQL_KEYSET_CURSOR_ATTRIBUTES2:
len = 4;
- value = SQL_CA2_OPT_ROWVER_CONCURRENCY
+ value = 0;
+ if (ci->updatable_cursors || ci->drivers.lie)
+ value |= (SQL_CA2_OPT_ROWVER_CONCURRENCY
| SQL_CA2_SENSITIVITY_ADDITIONS
| SQL_CA2_SENSITIVITY_DELETIONS
- | SQL_CA2_SENSITIVITY_UPDATES;
+ | SQL_CA2_SENSITIVITY_UPDATES);
if (ci->drivers.lie)
- value |=
- ( SQL_CA2_READ_ONLY_CONCURRENCY
+ value |= (SQL_CA2_READ_ONLY_CONCURRENCY
| SQL_CA2_LOCK_CONCURRENCY
| SQL_CA2_OPT_VALUES_CONCURRENCY
| SQL_CA2_MAX_ROWS_SELECT
@@ -95,16 +97,19 @@ PGAPI_GetInfo30(HDBC hdbc, UWORD fInfoType, PTR rgbInfoValue,
len = 4;
value = SQL_CA1_NEXT | SQL_CA1_ABSOLUTE
| SQL_CA1_RELATIVE | SQL_CA1_BOOKMARK
- | SQL_CA1_LOCK_NO_CHANGE | SQL_CA1_POS_POSITION
- | SQL_CA1_POS_UPDATE | SQL_CA1_POS_DELETE
- | SQL_CA1_POS_REFRESH;
+ | SQL_CA1_LOCK_NO_CHANGE | SQL_CA1_POS_POSITION;
+ if (ci->updatable_cursors)
+ value |= (SQL_CA1_POS_UPDATE | SQL_CA1_POS_DELETE
+ | SQL_CA1_POS_REFRESH);
break;
case SQL_STATIC_CURSOR_ATTRIBUTES2:
len = 4;
- value = SQL_CA2_OPT_ROWVER_CONCURRENCY
+ value = 0;
+ if (ci->updatable_cursors)
+ value |= (SQL_CA2_OPT_ROWVER_CONCURRENCY
| SQL_CA2_SENSITIVITY_ADDITIONS
| SQL_CA2_SENSITIVITY_DELETIONS
- | SQL_CA2_SENSITIVITY_UPDATES;
+ | SQL_CA2_SENSITIVITY_UPDATES);
break;
case SQL_ODBC_INTERFACE_CONFORMANCE: