PApp database requirenments

    PApp itself is, in general, database-independent. This means that
    applications in general are free to use any database they want, as
    long as there exists a DBI driver for them.

    PApp itself also needs a database for administration purposes. Since
    ANSI-SQL is not complete with regards to many operations (like unique
    column ids) and most databases do not really implement SQL fully, PApp
    uses some extensions to SQL:

    PApp core:

        PApp itself does not create databases or tables, you must do this
        yourself. The papp-install script tries to create the necessary
        database and tables, but this extension to DBI is currently only
        supported by very few databases (e.g. MySQL), so you have to
        either use mysql for papp itself or read the table definitions and
        create corersponding tables yourself. Pre-made configs for various
        databases are on their way.

        A special note is required for the state, user and pkg tables:
        These tables store raw binary data in the state/prefs field
        respectively. Both of these are usually smaller than 4k (this
        depends mainly on the size of the state and user preferences you
        need), so most databases can use TEXT/BLOB/IMAGE fields for them.
        PApp will not try to "update" the state field, but it will try to
        update the "prefs" field which is a problem for some databases.

        PApp requires the sql_insertid function, so have a look at the
        additional requirements of PApp::SQL below.

    PApp::DataRef:
       
        PApp::DataRef uses "harmless" select and update statements to
        read/write existing table rows. When creating new rows and
        insertid is "1", it will insert the row with the primary key set
        to NULL and expect it to create a new row and therefore requires
        PApp::SQL::sql_insertid. This is fortunately a common exension.

    PApp::SQL:

        PApp::SQL offers a function named sql_insertid that should
        return the id of the primary key that was created for the last
        select that had a NULL value for the key. Implementations for
        MySQL, Postgres, Sybase, Informix and SQLite already exist,
        you might want to add your own implementation to make
        PApp::DataRef and the core work.

If you need an adaption for your database please contact
papp-porting@nethype.de for availability.