支持动态游标
GBase 8a ODBC 8.3 除了支持只向前和静态游标类型还支持动态游标类型。 由于性能问题,驱动程序缺省是不支持这个特征。用户可以通过指明连接选项 标识 DYNAMIC_CURSOR=1 或从 DSN 配置中选中使用动态游标选项来使用这个特 征。
使用 unixODBC 访问 GBase 数据库时出现段错误
这是 unixODBC 的问题,通过在/etc/odbcinst.ini 文件中增加 DontDLClose=1 关键字可以解决该问题。
多线程使用 unixODBC 访问 GBase 数据库的配置
在多线程调用 unixODBC 访问 GBase 数据库时,可以在/etc/odbcinst.ini 文件中增加 threading=0 来提高并发。
GBase ODBC 驱动重复执行能够返回结果的 SQL 问题
如果应用像如下示例调用 ODBC 接口,那么 GBase ODBC 会在执行 SQLNumResultCols 时先在 Server 端执行一次 selectSql,然后在执行 SQLExecute 在 Server 端再执行一次 selectSql。
SQLPrepare(hstmt, selectSql, SQL_NTS);
SQLNumResultCols(hstmt, &tnum);
...
SQLExecute(hstmt); 第一次执行 selectSql 是为了获取结果集的 MetaData, 第二次执行SelectSql 时才会真正获取数据。
获取存储过程的结果集
使用 SQLPrepare 接口获取存储过程的结果集必须在调用 SQLExecute 后获 取结果集信息,否则获取不到结果集信息。
调用 SQLBindCol 时报错 Invalid descriptor index
正常情况下传给 SQLBindCol 的第二个参数 ColumnNumber 为 0 或者大于结 果集的列数时会报 Invalid descriptor index 错误。 当传入的 ColumnNumber 参数正确时,由于某种原因 gclusterd 主动 断开 了连接,也会导致 SQLBindCol 报错 Invalid descriptor index。比如当结果集 比较大时,ODBC 客户端应用不能及时从 ODBC 读取结果集,导致 gclusterd 向 ODBC 发送数据时写超时。这种情况在 gclusterd 的参数 "gcluster_send_client_data_timeout"默认值 30 时比较常见。这时需要修改 该参数值为一个较 大值或者直接修改为 0。




