Database providers

Each database provider is composed of a shared library (loaded at runtime) and some configuration files, which are prefixed with the provider name. Also note that each provider comes with a PKG-CONFIG .pc file which allows one to check if a provider is installed (it does not, like most of the .pc files, define any CFLAGS or LIBS), and it's wise to include them in each provider's component.

'Generic' provider

Most of the providers are 'generic' as they have the same files structure, here for example the PostgreSQL provider's file are:

.
|-- lib
|   |-- libgda-5.0
|   |   `-- providers
|   |       `-- libgda-postgres.so
|   `-- pkgconfig
|       `-- libgda-postgres-5.0.pc
 `-- share
    `-- libgda-5.0
        |-- postgres_specs_add_column.xml
        |-- postgres_specs_create_db.xml
        |-- postgres_specs_create_index.xml
        |-- postgres_specs_create_table.xml
        |-- postgres_specs_create_view.xml
        |-- postgres_specs_drop_column.xml
        |-- postgres_specs_drop_db.xml
        |-- postgres_specs_drop_index.xml
        |-- postgres_specs_drop_table.xml
        |-- postgres_specs_drop_view.xml
        |-- postgres_specs_dsn.xml
        `-- postgres_specs_rename_table.xml
	

This kind of component should be made dependent on the database's library which is used, such as LibPQ for PostgreSQL, and also on Libgda's runtime component.

The SQLite provider

The SQLite provider uses the same files layout as the 'generic' provider, but there is no need to add a dependency on SQLite itself.

The JDBC provider

The JDBC provider allows one to access database through its JDBC driver, using the Java Native Interface (JNI), and a Java virtual machine runtime. The files to include in this component are:

.
|-- lib
|   |-- libgda-5.0
|   |   `-- providers
|   |       |-- gdaprovider-5.0.jar
|   |       `-- libgda-jdbc.so
|   `-- pkgconfig
|       `-- libgda-jdbc-5.0.pc
 `-- share
    `-- libgda-5.0
        |-- jdbc_specs_create_table.xml
        `-- jdbc_specs_dsn.xml
	

This component should be made dependent on the Java virtual machine.