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