Re: [gnome-db] Proveedores GDA para Firebird y PostgreSQL



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]