Re: [gnome-db] Proveedores GDA para Firebird y PostgreSQL
- From: Rodrigo Moya <rodrigo gnome-db org>
- To: Juan Manuel Mouriz <jmouriz gmail com>
- Cc: gnome-db-list gnome org
- Subject: Re: [gnome-db] Proveedores GDA para Firebird y PostgreSQL
- Date: Mon, 18 Jul 2005 12:23:21 +0200
On Fri, 2005-07-15 at 16:39 -0300, Juan Manuel Mouriz wrote:
> Hola,
>
hola
Juan Manuel, this list is plenty of people that don't speak Spanish, so,
if possible, please send your mails in English.
> Quiero consultar las características que soporta un proveedor sin
> tener que estar conectado. Para ello llamo al método "supports"
> cargando previamente el módulo del proveedor. El problema es que casi
> todos los proveedores me permiten pasar NULL el la conexión excepto el
> Firebird:
>
> /* supports handler for the GdaFirebirdProvider class */
> static gboolean
> gda_firebird_provider_supports (GdaServerProvider *provider,
> GdaConnection *cnc,
> GdaConnectionFeature feature)
> {
> g_return_val_if_fail (GDA_IS_FIREBIRD_PROVIDER (provider), FALSE);
> >>> g_return_val_if_fail (GDA_IS_CONNECTION (cnc), FALSE);
>
> switch (feature) {
> case GDA_CONNECTION_FEATURE_VIEWS:
> case GDA_CONNECTION_FEATURE_SQL:
> case GDA_CONNECTION_FEATURE_TRANSACTIONS:
> case GDA_CONNECTION_FEATURE_AGGREGATES:
> return TRUE;
> case GDA_CONNECTION_FEATURE_TRIGGERS:
> case GDA_CONNECTION_FEATURE_INDEXES:
> case GDA_CONNECTION_FEATURE_PROCEDURES:
> case GDA_CONNECTION_FEATURE_USERS:
> case GDA_CONNECTION_FEATURE_BLOBS:
> default:
> break;
> }
>
> return FALSE;
> }
>
> ¿Existe la posibilidad que esta línea desaparezca en futuras
> versiones?, pues realmente "cnc" no se usa aquí. Y en general este
> método se accede mediante el API de GDA que ya hace esta comprobación
> (gda_connections_supports).
>
> Otro problema que veo es que el proveedor de PostgreSQL NO hace esta
> verificación:
>
> static gboolean gda_postgres_provider_supports (GdaServerProvider *provider,
> GdaConnection *cnc,
> GdaConnectionFeature feature)
> {
> GdaPostgresProvider *pgprv = (GdaPostgresProvider *) provider;
> GdaPostgresConnectionData *priv_data;
>
> g_return_val_if_fail (GDA_IS_POSTGRES_PROVIDER (pgprv), FALSE);
>
> switch (feature) {
> case GDA_CONNECTION_FEATURE_AGGREGATES :
> case GDA_CONNECTION_FEATURE_INDEXES :
> case GDA_CONNECTION_FEATURE_INHERITANCE :
> case GDA_CONNECTION_FEATURE_PROCEDURES :
> case GDA_CONNECTION_FEATURE_SEQUENCES :
> case GDA_CONNECTION_FEATURE_SQL :
> case GDA_CONNECTION_FEATURE_TRANSACTIONS :
> case GDA_CONNECTION_FEATURE_TRIGGERS :
> case GDA_CONNECTION_FEATURE_USERS :
> case GDA_CONNECTION_FEATURE_VIEWS :
> case GDA_CONNECTION_FEATURE_BLOBS :
> return TRUE;
> case GDA_CONNECTION_FEATURE_NAMESPACES :
> priv_data = g_object_get_data (G_OBJECT (cnc),
> OBJECT_DATA_POSTGRES_HANDLE);
> if (priv_data->version_float >= 7.3)
> return TRUE;
> default :
> break;
> }
>
> return FALSE;
> }
>
> Sin embargo la usa para consultar la característica
> GDA_CONNECTION_FEATURE_NAMESPACES. La pregunta es: ¿Existe la
> posibilidad que si en algún momento se agregue este comprobación se
> haga sólo justo antes de usarla?, es decir justo antes de la línea
> "priv_data = g_object_get_data (G_OBJECT (cnc)".
>
si, se puede cambiar
> Por último. Luego de cargar el módulo, llamo al método
> "plugin_create_provider" para crear una instancia del proveedor y
> poder consultalo. El problema es que luego de hacer esto quiero
> descargar el módulo con g_modulo_unload pero el tipo GLib
> "GdaXXXProvider" queda registrado, hay alguna forma de
> "desregistrarlo"?.
>
¿porque usas plugin_create_provider directamente? Esa es una función
interna, no deberías tener que usarla.
En cuanto a desregistrarlo, no, no se puede. Por ello, lo mejor es que
una vez cargado el proveedor, lo mantengas en memoria durante toda la
ejecución del programa, como hace libgda internamente.
saludos
--
Rodrigo Moya <rodrigo gnome-db org>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]