Hello,
There is a new version (v.0242) of the odbc driver at our website.
http://www.insightdist.com/psqlodbc
Several bug fixes and some new features in this release.
You will notice that several fixes in this driver revolve around
cursors. I am currently looking into better support for scrollable
cursors.
The MFC CRecordSet class, for example, can use a snapshot or dynaset.
The dynaset is not supported currently by the driver because it does not
do keyset driven cursors. The snapshot should work, although I have not
tested it yet. I believe the snapshot would work with or without the
odbc cursor library in a read-only manner. However, with the cursor
library, snapshots should be updatable. A forward-only CRecordSet
should also work, although I have not tested that either. I dont know
about updating records though. Positioned updates, either SQL or with
SQLSetPos are not supported directly by the driver (but may work with
the odbc cursor library).
Does anyone use the MFC CRecordSet or any other builders (Visual Basic,
Borland, etc.) that use scrollable cursors like these? If anyone has
tested it or has any comments about it, please let me know.
---------------------------------------------
I would also like to check the interest level of some missing
functionality in the odbc driver:
1. Bookmarks
2. Block cursors
3. Keyset-driven, Dynamic, or Mixed cursors
4. Positioned updates via SQLSetPos
5. <insert your favorite missing feature here>
Your feedback is greatly appreciated.
Byron
version.txt date: 5/22/98 version: 06.30.0242
---------------------------------------------------------------------
This file describes changes and or fixes since the last update.
NEW FEATURES:
1. Support for IP Addresses in DataSource Configuration dialog
(submitted by Jan Kurik, kurik@reax.cz).
2. "Show System Tables" advanced datasource option -- allows you to view
system tables as regular tables (good in Access). This automatically
includes the oid in SQLColumns for Postgres 'pg_' tables.
3. "Extra System Table prefixes" advanced driver option -- allows you to
specify the prefixes (in addition to 'pg_') that are considered as
SYSTEM TABLE. They are separated by a semicolan (;).
For example, you may have data definition (dd_xxxx and dm_xxxx) tables
you dont want to see. Enter "dd_;dm_" in the prefixes box.
4. Finally, correctly implemented the TableType parameter to SQLTables.
TableType is now parsed to determine what table types to return.
Thus, you can ask SQLTables for VIEWS only, and just get views. You
can ask for SYSTEM TABLE, and just get system tables. If you ask for
an unsupported type (i.e., 'GLOBAL TEMPORARY'), it returns nothing.
This also fixes bugs in the tables display in VC++4.x and VC++5.x
BUG_FIXES:
1. Fixed char precision on manual result sets (SQLTables, SQLColumns).
It was returning 0, when infact the exact size was known. VC++4.0 would
show only the first character of a table name in its class wizard.
2. Fixed problem with SQL_BIT type in where clause. Used quotes around
the bool data since there is no operator for "bool and int4". This
would cause Access to fail on updates of records with bools in them.
3. Corrected info function for SQL_FETCH_DIRECTION. It was incorrectly
ORing the bitmasks together. Remember though, that SQLExtendedFetch
is only available if the "Use Cursors" option is not checked, since
the result set is all in memory and any row can be scrolled to.
4. Corrected info function for SQL_ROW_UPDATES. It was incorrectly
returning "Y" when infact, row updates have never been supported
because keyset-driven and mixed cursors aren't supported anyway.
5. Corrected info function for SQL_SCROLL_CONCURRENCY. It was incorrectly
returning SQL_SCCO_OPT_ROWVER when infact, the driver doesn't support
Positioned Update statements or SQLSetPos. It now returns
SQL_SCCO_READ_ONLY (no updates are allowed in scrollable cursors).
6. Corrected info function for SQL_SCROLL_OPTIONS. It was incorrectly
returning SQL_SO_KEYSET_DRIVEN when infact, the driver doesn't support
keyset driven cursors (reading in all the keys of a result set and then
using the key to retrieve the data dynamically, each time you scroll
to a given row). So, now it returns one of two things:
If "Use Cursors" is checked: (SQL_SO_FORWARD_ONLY)
If "Use Cursors" not checked: (SQL_SO_FORWARD_ONLY | SQL_SO_STATIC)
7. Driver handles SQLGet/SetStmtOption better. It returns the state
"Driver not Capable" if an option is not supported. And it returns
"Option value Changed" state (SQL_SUCCESS_WITH_INFO) if a value is
not supported and substitutes a suitable value.
For example, if an application requests a SQL_SO_KEYSET_DRIVEN cursor,
the driver will substitute a FORWARD_ONLY or a STATIC cursor type,
depending on the "Use Cursors" option.