Re: [gnome-db] Proveedores GDA para Firebird y PostgreSQL
- From: Vivien Malerba <vmalerba gmail com>
- To: Juan Manuel Mouriz <jmouriz gmail com>
- Cc: gnome-db-list gnome org
- Subject: Re: [gnome-db] Proveedores GDA para Firebird y PostgreSQL
- Date: Sat, 16 Jul 2005 14:55:29 +0200
On 7/15/05, Juan Manuel Mouriz <jmouriz gmail com> wrote:
> Hola,
>
> 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;
> }
That is corrected in CVS!
>
> ¿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)".
>
> 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"?.
>
> Gracias
Sorry, but I don't understand Spanish enough; can you try to post in English?
Cheers,
Vivien
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]