# Current limitations and platform issues

This chapter briefly lists features which are either not yet implemented or which don't work as they should or which work differently on different platforms. These things may be implemented or fixed in future releases, respectively.

## Limitations

- The clients do not use a dynamic buffer to read the data from the application server. This may result in timeouts if you view the results with a pager that can't buffer large amounts of data in the background. To avoid these problems, it's prudent to redirect queries that return large amounts of data into a file.

- The query results can only be sorted by ID (default) and publication year.

- Support for different character encodings depends on the database server. PostgreSQL offers a variety of different character encodings, including Unicode, which are selectable per database. MySQL versions 4.1 and later support character encodings as well, including Unicode. SQLite offers Unicode support as a compile-time option. SQLite3 uses Unicode by default.

- Export of bibliography styles to BibTeX `.bst` files would be really cool but is not implemented yet.

## Platform issues

- Cygwin currently does not support named pipes/FIFOs. refdbd uses these to implement a child->parent messaging after the application server has forked. On Cygwin, this messaging is emulated with a temporary file. This is a bit slower (and a lot kludgier and error-prone) than a named pipe and almost certainly is a security hole.

  As of this writing, support for named pipes appears to be implemented as an experimental feature in Cygwin. It does not work as expected yet, so RefDB still emulates named pipes on Cygwin.

- Cygwin currently does not implement the detection of pending data on stdin. Therefore, data that you send to stdin of a client will not be read unless you use the `-f stdin` command line option.

- The Cygwin port of SQLite has a problem working with absolute paths. The safest way is to start refdbd from the root directory (the start script refdbctl does this by default) and use a relative path to the database directory (i.e. leave away the leading slash).

- As the Cygwin library has to translate all calls to Unix system functions to native Windows function calls, there is a small performance penalty in comparison to native Windows or Linux/Unix applications. My general impression however is that this does not affect the overall performance as most time seems to be spent inside the database server. You may gain some milliseconds by running the application server on a Linux/Unix box, though.

- Of course a major problem is the lack of support for more platforms. RefDB may work on a variety of platforms besides those mentioned above, but unless you tell me so, I'll never know!