1libdbi NEWS file 2================ 3 4$Id: NEWS,v 1.9 2013/03/12 00:08:12 mhoenicka Exp $ 5 6______________________________________ 7libdbi 0.9.0 (the "Autumn Shade" release) 8 9Bugfixes 10 11- libdbi now supports using custom driver functions correctly (none of 12 the drivers had implemented this feature before libdbi-drivers 0.9.0, so 13 this was not really a problem). 14 15- a variety of other bug fixes too numerous to list here, see ChangeLog 16 17Improvements 18 19- libdbi now supports several independent "instances" per 20 process. This makes the library safe to use in programs that 21 dlopen() plugins at runtime which in turn are linked against 22 libdbi. The new function dbi_initialize_r() creates a handle which 23 the functions dbi_shutdown_r(), dbi_set_verbosity_r(), 24 dbi_driver_list_r(), dbi_driver_open_r(), and dbi_conn_new_r() use 25 to operate on a particular instance. A new function 26 dbi_driver_get_instance() helps to determine the instance at runtime. 27 The old interface (with just one instance per process which is 28 managed internally) is still around but deprecated. See the file 29 UPGRADING for detailed instructions. 30 31- libdbi now provides functions for managing transactions and savepoints 32 33- libdbi now provides a hint to drivers indicating the current position 34 in a result set. This allows drivers to implement additional optimizations 35 36- the libtool library versioning numbers were now set appropriately 37 (they had fallen out of maintenance somehow in the past), and starting 38 with this release the release number will match the libtool numbering 39 scheme. libtool manages shared objects in a way to allow the loader 40 to detect whether an application was linked against a compatible 41 version of a library. This will avoid runtime errors in future 42 releases if backwards-incompatible changes are necessary. 43 44- pgk-config (http://pkg-config.freedesktop.org/wiki/) is now supported 45 46- if CFLAGS is set in the environment, it is now used appropriately in 47 ./configure 48 49 50______________________________________ 51libdbi 0.8.3 (the "Steeltown" release) 52 53Bugfixes 54 55- database engine client libraries which install exit handlers are not 56 safe to unload on some systems. libdbi now checks the driver 57 capability "safe_dlclose" and unloads the driver only if the driver 58 claims it is safe to do so. 59 60Improvements 61 62- three functions were added: dbi_conn_escape_string(), 63 dbi_conn_escape_string_copy(), and dbi_conn_escape_binary_copy() 64 perform the same escaping of special characters as the corresponding 65 *_quote_* functions do, but they do not surround the resulting 66 string with quotes. This may at times be more convenient if the 67 escaped strings are not directly inserted into a SQL query. 68 69- error handling and reporting was changed once again. The 70 dbi_conn_error_flag() function is now deprecated. Instead, a call of 71 dbi_conn_error() is all it takes to check the error status. This 72 function returns zero if the last operation was successful, < 0 (one 73 of several predefined libdbi error codes) for internal errors, and > 0 74 for client library errors. To maintain backwards compatibility, 75 dbi_conn_error_flags() reports the same error codes as 76 dbi_conn_error() so older code should not break as long as you checked 77 against the predefined error codes. 78 79- deprecated functions will now cause compiler warnings to make you 80 aware of this fact. This does not negatively affect your programs 81 but it kindly reminds you of the fact that right now is a good time to 82 modify your sources. 83 84 85__________________________________________________________ 86libdbi 0.8.2 (the "Sunday Night Buttermilk Waltz" release) 87 88Minor enhancements: 89 90- the TIME and DATETIME types now support a numeric timezone suffix, 91 like in "23:12:30+01:00" 92- improved error handling and error reporting code 93- some memory leaks were plugged 94- the "--disable-docs" configure switch now allows to build libdbi 95 without having the sgml toolchain installed 96 97 98___________________________________________ 99libdbi 0.8.1 (the "Get used to it" release) 100 101This is a bugfix release. It fixes the following bug: 102 103- dbi_result_get_string_idx() and dbi_result_get_string() returned 104 NULL if the database returned an empty string. However, ''!= NULL in 105 SQL. Now the functions correctly return a pointer to an 106 empty string if the database returns an empty string, and NULL if the 107 database returns NULL. The functions 108 dbi_result_get_string_copy_idx() and dbi_result_get_string_copy() were 109 not affected by this bug. 110 111 112_______________________________________________ 113libdbi 0.8.0 (the "When I come around" release) 114 115Major internal fixes. Remember that the integer type changes are 116mostly silent on 32bit platforms, but you should check in detail. The 117changes in the return codes of some functions require particular 118attention. 119 120 121- Functions that return string sizes or accept string sizes as an 122argument now use size_t throughout. Affected functions are: 123 124dbi_driver_quote_string() 125dbi_driver_quote_string_copy() 126dbi_conn_query_null() 127dbi_result_get_field_length() 128dbi_result_get_field_length_idx() 129dbi_result_get_field_size() 130dbi_result_get_field_size_idx() 131 132as well as the new dbi_conn_quote_* functions 133 134 135- Functions that deal with field indexes or field counts now use 136unsigned int throughout. Affected functions are: 137 138dbi_result_get_field_idx() 139dbi_result_get_field_name() 140dbi_result_get_numfields() 141dbi_result_get_field_type_idx() 142dbi_result_get_field_attrib_idx() 143dbi_result_get_field_attribs_idx() 144dbi_result_field_is_null_idx() 145dbi_result_get_fields() 146dbi_result_bind_fields() 147dbi_result_get_char_idx() 148dbi_result_get_uchar_idx() 149dbi_result_get_short_idx() 150dbi_result_get_ushort_idx() 151dbi_result_get_long_idx() 152dbi_result_get_int_idx() 153dbi_result_get_uint_idx() 154dbi_result_get_ulong_idx() 155dbi_result_get_longlong_idx() 156dbi_result_get_ulonglong_idx() 157dbi_result_get_float_idx() 158dbi_result_get_double_idx() 159dbi_result_get_string_idx() 160dbi_result_get_binary_idx() 161dbi_result_get_string_copy_idx() 162dbi_result_get_binary_copy_idx() 163dbi_result_get_datetime_idx() 164 165 166- Functions that get or bind 4-byte integers were renamed and their 167return type was changed from long to int, because long is an 8byte 168value on 64bit platforms. The old versions are still around, but they 169also use int as the return type. 170 171long dbi_result_get_long() -> int dbi_result_get_int() 172long dbi_result_get_ulong() -> int dbi_result_get_uint() 173long dbi_result_get_long_idx() -> int dbi_result_get_int_idx() 174long dbi_result_get_ulong_idx() -> int dbi_result_get_uint_idx() 175dbi_result_bind_long() -> dbi_result_bind_int() 176dbi_result_bind_ulong() -> dbi_result_bind_uint() 177 178 179- Field attributes are now implemented using unsigned int instead of 180unsigned long. Functions that deal with attributes were adapted 181accordingly: 182 183dbi_result_get_field_attrib() 184dbi_result_get_field_attrib_idx() 185dbi_result_get_field_attribs() 186dbi_result_get_field_attribs_idx() 187 188 189- The return values in case of an error were changed in the following 190functions: 191 192dbi_result_get_field_length(): DBI_LENGTH_ERROR instead of 0 193dbi_driver_quote_string(), dbi_driver_quote_string_copy(): 0 instead 194 of -1 195dbi_result_seek_row(): 0 instead of (0 or -1) 196dbi_result_get_numrows(): DBI_ROW_ERROR instead of 0 197dbi_result_get_field_length(), dbi_result_get_field_length_idx(), 198 dbi_result_get_field_size(), dbi_result_get_field_size_idx(): 199 DBI_LENGTH_ERROR instead of 0 200dbi_result_get_field_type(),dbi_result_get_field_type_idx(): 201 DBI_TYPE_ERROR instead of 0 (the same numerical value!) 202dbi_result_get_field_attrib(), dbi_result_get_field_attrib_idx(), 203 dbi_result_get_field_attribs(), dbi_result_get_field_attribs_idx(): 204 DBI_ATTRIBUTE_ERROR instead of 0 205dbi_result_field_is_null(), dbi_result_field_is_null_idx(): 206 DBI_FIELD_FLAG_ERROR instead of 0 207dbi_result_bind_fields(): DBI_FIELD_ERROR instead of -1 208dbi_result_bind_*(): DBI_BIND_ERROR instead of -1 (same numerical 209 value!) 210 211 212- New functions were added to improve the support for character 213encodings: 214 215dbi_conn_quote_string() 216dbi_conn_quote_string_copy() 217dbi_driver_encoding_to_iana() 218dbi_driver_encoding_from_iana() 219 220 221- A new function was added to improve support for binary strings: 222 223dbi_conn_quote_binary_copy() 224 225- Two functions were added to retrieve the version number of the 226database engine: 227dbi_conn_get_engine_version() 228dbi_conn_get_engine_version_string() 229 230- The following functions were labelled "deprecated". They are still 231implemented in the current version, but you should use their 232replacements as these functions are likely to be dropped in a future 233release: 234 235dbi_result_get_field_size() -> dbi_result_get_field_length() 236dbi_result_get_field_size_idx() -> dbi_result_get_field_length_idx() 237dbi_result_get_long() -> dbi_result_get_int() 238dbi_result_get_ulong() -> dbi_result_get_uint() 239dbi_result_get_long_idx() -> dbi_result_get_int_idx() 240dbi_result_get_ulong_idx() -> dbi_result_get_uint_idx() 241dbi_result_bind_long() -> dbi_result_bind_int() 242dbi_result_bind_ulong() -> dbi_result_bind_uint() 243 244