[libgda] provider-meta: re-implemented API for retrive metada directly



commit c626075233049792f6b1b71ce2a449bd43f06ef0
Author: Daniel Espinosa <esodan gmail com>
Date:   Mon Aug 20 10:39:35 2018 -0500

    provider-meta: re-implemented API for retrive metada directly

 libgda/gda-provider-meta.c | 1001 ++++++++++++++++++++++----------------------
 libgda/gda-provider-meta.h |  448 +++++++++++++-------
 2 files changed, 797 insertions(+), 652 deletions(-)
---
diff --git a/libgda/gda-provider-meta.c b/libgda/gda-provider-meta.c
index 03682807e..4af15a0e4 100644
--- a/libgda/gda-provider-meta.c
+++ b/libgda/gda-provider-meta.c
@@ -23,24 +23,6 @@ G_DEFINE_INTERFACE(GdaProviderMeta, gda_provider_meta, G_TYPE_OBJECT)
 static void
 gda_provider_meta_default_init (GdaProviderMetaInterface *iface) {}
 
-
-/**
- * gda_provider_meta_info:
- *
- * Since: 6.0
- * Stability: Unstable
- */
-gboolean
-gda_provider_meta_info (GdaProviderMeta *prov, GdaConnection *cnc,
-                        GdaMetaStore *meta, GdaMetaContext *ctx, GError **error) {
-  g_return_val_if_fail (prov, FALSE);
-  GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->info) {
-    return iface->info (prov, cnc, meta, ctx, error);
-  }
-  return FALSE;
-}
-
 /* _builtin_data_types */
 /**
  * gda_provider_meta_btypes:
@@ -48,55 +30,51 @@ gda_provider_meta_info (GdaProviderMeta *prov, GdaConnection *cnc,
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_btypes (GdaProviderMeta *prov, GdaConnection *cnc,
-                          GdaMetaStore *meta, GdaMetaContext *ctx,
-                          GError **error)
+GdaDataModel*
+gda_provider_meta_btypes (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->btypes) {
-    return iface->btypes (prov, cnc, meta, ctx, error);
+    return iface->btypes (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _udt */
 /**
- * gda_provider_meta_udt:
+ * gda_provider_meta_udts:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_udt (GdaProviderMeta *prov, GdaConnection *cnc,
-                       GdaMetaStore *meta, GdaMetaContext *ctx, GError **error)
+GdaDataModel*
+gda_provider_meta_udts (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->udt) {
-    return iface->udt (prov, cnc, meta, ctx, error);
+  if (iface->udts) {
+    return iface->udts (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_udt_full:
+ * gda_provider_meta_udt:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_udt_full (GdaProviderMeta *prov, GdaConnection *cnc,
-                            GdaMetaStore *meta, GdaMetaContext *ctx,
-                            const GValue *udt_catalog, const GValue *udt_schema,
-                            GError **error)
+GdaRow*
+gda_provider_meta_udt (GdaProviderMeta *prov,
+                      const gchar *udt_catalog, const gchar *udt_schema,
+                      GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->udt_full) {
-    return iface->udt_full (prov, cnc, meta, ctx, udt_catalog, udt_schema, error);
+  if (iface->udt) {
+    return iface->udt (prov, udt_catalog, udt_schema, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _udt_columns */
@@ -106,79 +84,72 @@ gda_provider_meta_udt_full (GdaProviderMeta *prov, GdaConnection *cnc,
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_udt_cols (GdaProviderMeta *prov, GdaConnection *cnc,
-                            GdaMetaStore *meta, GdaMetaContext *ctx,
-                            GError **error)
+GdaDataModel*
+gda_provider_meta_udt_cols (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->udt_cols) {
-    return iface->udt_cols (prov, cnc, meta, ctx, error);
+    return iface->udt_cols (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_udt_cols_full:
+ * gda_provider_meta_udt_col:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_udt_cols_full (GdaProviderMeta *prov, GdaConnection *cnc,
-                                 GdaMetaStore *meta, GdaMetaContext *ctx,
-                                 const GValue *udt_catalog,
-                                 const GValue *udt_schema,
-                                 const GValue *udt_name, GError **error)
+GdaRow*
+gda_provider_meta_udt_col (GdaProviderMeta *prov,
+                           const gchar *udt_catalog,
+                           const gchar *udt_schema,
+                           const gchar *udt_name, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->udt_cols_full) {
-    return iface->udt_cols_full (prov, cnc, meta, ctx, udt_catalog, udt_schema, udt_name, error);
+  if (iface->udt_col) {
+    return iface->udt_col (prov, udt_catalog, udt_schema, udt_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _enums */
 /**
- * gda_provider_meta_enums:
+ * gda_provider_meta_enums_type:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_enums (GdaProviderMeta *prov, GdaConnection *cnc,
-                         GdaMetaStore *meta, GdaMetaContext *ctx,
-                         GError **error)
+GdaDataModel*
+gda_provider_meta_enums_type (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->enums) {
-    return iface->enums (prov, cnc, meta, ctx, error);
+  if (iface->enums_type) {
+    return iface->enums_type (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_enums_full:
+ * gda_provider_meta_enum_type:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_enums_full (GdaProviderMeta *prov,
-                              GdaConnection *cnc, GdaMetaStore *meta,
-                              GdaMetaContext *ctx,
-                              const GValue *udt_catalog,
-                              const GValue *udt_schema,
-                              const GValue *udt_name,
+GdaRow*
+gda_provider_meta_enum_type (GdaProviderMeta *prov,
+                              const gchar *udt_catalog,
+                              const gchar *udt_schema,
+                              const gchar *udt_name,
                               GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->enums_full) {
-    return iface->enums_full (prov, cnc, meta, ctx, udt_catalog, udt_schema, udt_name, error);
+  if (iface->enum_type) {
+    return iface->enum_type (prov, udt_catalog, udt_schema, udt_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _domains */
@@ -188,117 +159,130 @@ gda_provider_meta_enums_full (GdaProviderMeta *prov,
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_domains (GdaProviderMeta *prov, GdaConnection *cnc,
-                           GdaMetaStore *meta, GdaMetaContext *ctx,
-                           GError **error)
+GdaDataModel*
+gda_provider_meta_domains (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->domains) {
-    return iface->domains (prov, cnc, meta, ctx, error);
+    return iface->domains (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_domains_full:
+ * gda_provider_meta_domain:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_domains_full (GdaProviderMeta *prov, GdaConnection *cnc,
-                                GdaMetaStore *meta, GdaMetaContext *ctx,
-                                const GValue *domain_catalog,
-                                const GValue *domain_schema,
+GdaRow*
+gda_provider_meta_domain (GdaProviderMeta *prov,
+                                const gchar *domain_catalog,
+                                const gchar *domain_schema,
                                 GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->domains_full) {
-    return iface->domains_full (prov, cnc, meta, ctx, domain_catalog, domain_schema, error);
+  if (iface->domain) {
+    return iface->domain (prov, domain_catalog, domain_schema, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _domain_constraints */
 /**
- * gda_provider_meta_constraints_dom:
+ * gda_provider_meta_domains_constraints:
+ *
+ * Since: 6.0
+ * Stability: Unstable
+ */
+GdaDataModel*
+gda_provider_meta_domains_constraints (GdaProviderMeta *prov, GError **error)
+{
+  g_return_val_if_fail (prov, NULL);
+  GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
+  if (iface->domains_constraints) {
+    return iface->domains_constraints (prov, error);
+  }
+  return NULL;
+}
+/**
+ * gda_provider_meta_domain_constraints:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_constraints_dom (GdaProviderMeta *prov, GdaConnection *cnc,
-                                   GdaMetaStore *meta, GdaMetaContext *ctx,
-                                   GError **error)
+GdaDataModel*
+gda_provider_meta_domain_constraints (GdaProviderMeta *prov,
+                                      const gchar *domain_catalog,
+                                      const gchar *domain_schema,
+                                      const gchar *domain_name,
+                                      GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->constraints_dom) {
-    return iface->constraints_dom (prov, cnc, meta, ctx, error);
+  if (iface->domain_constraint) {
+    return iface->domain_constraints (prov, domain_catalog, domain_schema, domain_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_constraints_dom_full:
+ * gda_provider_meta_domain_constraint:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_constraints_dom_full (GdaProviderMeta *prov,
-                                        GdaConnection *cnc, GdaMetaStore *meta,
-                                        GdaMetaContext *ctx,
-                                        const GValue *domain_catalog,
-                                        const GValue *domain_schema,
-                                        const GValue *domain_name,
-                                        GError **error)
+GdaRow*
+gda_provider_meta_domain_constraint (GdaProviderMeta *prov,
+                                    const gchar *domain_catalog,
+                                    const gchar *domain_schema,
+                                    const gchar *domain_name,
+                                    const gchar *constraint_name,
+                                    GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->constraints_dom_full) {
-    return iface->constraints_dom_full (prov, cnc, meta, ctx, domain_catalog, domain_schema, domain_name, 
error);
+  if (iface->domain_constraint) {
+    return iface->domain_constraint (prov, domain_catalog, domain_schema,
+                                     domain_name, constraint_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _element_types */
 /**
- * gda_provider_meta_el_types:
+ * gda_provider_meta_element_types:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_el_types (GdaProviderMeta *prov, GdaConnection *cnc,
-                            GdaMetaStore *meta, GdaMetaContext *ctx,
-                            GError **error)
+GdaDataModel*
+gda_provider_meta_element_types (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->el_types) {
-    return iface->el_types (prov, cnc, meta, ctx, error);
+  if (iface->element_types) {
+    return iface->element_types (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_el_types_full:
+ * gda_provider_meta_element_type:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_el_types_full (GdaProviderMeta *prov, GdaConnection *cnc,
-                                 GdaMetaStore *meta, GdaMetaContext *ctx,
-                                 const GValue *specific_name, GError **error)
+GdaRow*
+gda_provider_meta_element_type (GdaProviderMeta *prov,
+                                 const gchar *specific_name,
+                                 GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->el_types_full) {
-    return iface->el_types_full (prov, cnc, meta, ctx, specific_name, error);
+  if (iface->element_type) {
+    return iface->element_type (prov, specific_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _collations */
@@ -308,39 +292,35 @@ gda_provider_meta_el_types_full (GdaProviderMeta *prov, GdaConnection *cnc,
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_collations (GdaProviderMeta *prov, GdaConnection *cnc,
-                              GdaMetaStore *meta, GdaMetaContext *ctx,
-                              GError **error)
+GdaDataModel*
+gda_provider_meta_collations (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->collations) {
-    return iface->collations (prov, cnc, meta, ctx, error);
+    return iface->collations (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_collations_full:
+ * gda_provider_meta_collation:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_collations_full  (GdaProviderMeta *prov,
-                                    GdaConnection *cnc, GdaMetaStore *meta,
-                                    GdaMetaContext *ctx,
-                                    const GValue *collation_catalog,
-                                    const GValue *collation_schema,
-                                    const GValue *collation_name_n, GError **error)
+GdaRow*
+gda_provider_meta_collation  (GdaProviderMeta *prov,
+                              const gchar *collation_catalog,
+                              const gchar *collation_schema,
+                              const gchar *collation_name_n, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->collations_full) {
-    return iface->collations_full (prov, cnc, meta, ctx, collation_catalog,
+  if (iface->collation) {
+    return iface->collation (prov, collation_catalog,
                                    collation_schema, collation_name_n, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _character_sets */
@@ -350,81 +330,73 @@ gda_provider_meta_collations_full  (GdaProviderMeta *prov,
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_character_sets (GdaProviderMeta *prov,
-                                  GdaConnection *cnc, GdaMetaStore *meta,
-                                  GdaMetaContext *ctx, GError **error)
+GdaDataModel*
+gda_provider_meta_character_sets (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->character_sets) {
-    return iface->character_sets (prov, cnc, meta, ctx, error);
+    return iface->character_sets (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_character_sets_full:
+ * gda_provider_meta_character_set:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_character_sets_full (GdaProviderMeta *prov,
-                                       GdaConnection *cnc,
-                                       GdaMetaStore *meta,
-                                       GdaMetaContext *ctx,
-                                       const GValue *chset_catalog,
-                                       const GValue *chset_schema,
-                                       const GValue *chset_name_n,
+GdaRow*
+gda_provider_meta_character_set (GdaProviderMeta *prov,
+                                       const gchar *chset_catalog,
+                                       const gchar *chset_schema,
+                                       const gchar *chset_name_n,
                                        GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->character_sets_full) {
-    return iface->character_sets_full (prov, cnc, meta, ctx, chset_catalog,
+  if (iface->character_set) {
+    return iface->character_set (prov, chset_catalog,
                                        chset_schema, chset_name_n, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _schemata */
 /**
- * gda_provider_meta_schemata:
+ * gda_provider_meta_schematas:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_schemata (GdaProviderMeta *prov, GdaConnection *cnc,
-                            GdaMetaStore *meta, GdaMetaContext *ctx,
-                            GError **error)
+GdaDataModel*
+gda_provider_meta_schematas (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->schemata) {
-    return iface->schemata (prov, cnc, meta, ctx, error);
+  if (iface->schematas) {
+    return iface->schematas (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_schemata_full:
+ * gda_provider_meta_schemata:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_schemata_full (GdaProviderMeta *prov, GdaConnection *cnc,
-                                 GdaMetaStore *meta, GdaMetaContext *ctx,
-                                 const GValue *catalog_name,
-                                 const GValue *schema_name_n,
-                                 GError **error)
+GdaRow*
+gda_provider_meta_schemata (GdaProviderMeta *prov,
+                           const gchar *catalog_name,
+                           const gchar *schema_name_n,
+                           GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->schemata_full) {
-    return iface->schemata_full (prov, cnc, meta, ctx, catalog_name, schema_name_n, error);
+  if (iface->schemata) {
+    return iface->schemata (prov, catalog_name, schema_name_n, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _tables or _views */
@@ -434,40 +406,36 @@ gda_provider_meta_schemata_full (GdaProviderMeta *prov, GdaConnection *cnc,
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_tables_views (GdaProviderMeta *prov, GdaConnection *cnc,
-                                GdaMetaStore *meta, GdaMetaContext *ctx,
-                                GError **error)
+GdaDataModel*
+gda_provider_meta_tables_views (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->tables_views) {
-    return iface->tables_views (prov, cnc, meta, ctx, error);
+    return iface->tables_views (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_tables_views_full:
+ * gda_provider_meta_table_view:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_tables_views_full (GdaProviderMeta *prov,
-                                     GdaConnection *cnc, GdaMetaStore *meta,
-                                     GdaMetaContext *ctx,
-                                     const GValue *table_catalog,
-                                     const GValue *table_schema,
-                                     const GValue *table_name_n,
+GdaRow*
+gda_provider_meta_table_view (GdaProviderMeta *prov,
+                                     const gchar *table_catalog,
+                                     const gchar *table_schema,
+                                     const gchar *table_name_n,
                                      GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->tables_views_full) {
-    return iface->tables_views_full (prov, cnc, meta, ctx, table_catalog,
-                                          table_schema, table_name_n, error);
+  if (iface->table_view) {
+    return iface->table_view (prov, table_catalog,
+                              table_schema, table_name_n, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _columns */
@@ -477,131 +445,187 @@ gda_provider_meta_tables_views_full (GdaProviderMeta *prov,
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_columns (GdaProviderMeta *prov, GdaConnection *cnc,
-                           GdaMetaStore *meta, GdaMetaContext *ctx,
-                           GError **error)
+GdaDataModel*
+gda_provider_meta_columns (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->columns) {
-    return iface->columns (prov, cnc, meta, ctx, error);
+    return iface->columns (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
+
 /**
- * gda_provider_meta_columns_full:
+ * gda_provider_meta_table_columns:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_columns_full (GdaProviderMeta *prov, GdaConnection *cnc,
-                                GdaMetaStore *meta, GdaMetaContext *ctx,
-                                const GValue *table_catalog,
-                                const GValue *table_schema,
-                                const GValue *table_name,
-                                GError **error)
+GdaDataModel*
+gda_provider_meta_table_columns (GdaProviderMeta *prov,
+                           const gchar *table_catalog,
+                           const gchar *table_schema,
+                           const gchar *table_name,
+                           GError **error)
+{
+  g_return_val_if_fail (prov, NULL);
+  GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
+  if (iface->table_columns) {
+    return iface->table_columns (prov, table_catalog, table_schema,
+                                 table_name, error);
+  }
+  return NULL;
+}
+/**
+ * gda_provider_meta_table_column:
+ *
+ * Since: 6.0
+ * Stability: Unstable
+ */
+GdaRow*
+gda_provider_meta_table_column (GdaProviderMeta *prov,
+                          const gchar *table_catalog,
+                          const gchar *table_schema,
+                          const gchar *table_name,
+                          const gchar *column_name,
+                          GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->columns_full) {
-    return iface->columns_full (prov, cnc, meta, ctx, table_catalog,
-                                     table_schema, table_name, error);
+  if (iface->table_column) {
+    return iface->table_column (prov, table_catalog,
+                                table_schema, table_name,
+                                column_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _view_column_usage */
+/**
+ * gda_provider_meta_views_cols:
+ *
+ * Since: 6.0
+ * Stability: Unstable
+ */
+GdaDataModel*
+gda_provider_meta_views_cols (GdaProviderMeta *prov, GError **error)
+{
+  g_return_val_if_fail (prov, NULL);
+  GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
+  if (iface->views_cols) {
+    return iface->views_cols (prov, error);
+  }
+  return NULL;
+}
 /**
  * gda_provider_meta_view_cols:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_view_cols (GdaProviderMeta *prov, GdaConnection *cnc,
-                             GdaMetaStore *meta, GdaMetaContext *ctx,
-                             GError **error)
+GdaDataModel*
+gda_provider_meta_view_cols (GdaProviderMeta *prov,
+                            const gchar *view_catalog,
+                            const gchar *view_schema,
+                            const gchar *view_name,
+                            GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->view_cols) {
-    return iface->view_cols (prov, cnc, meta, ctx, error);
+    return iface->view_cols (prov, view_catalog,
+                             view_schema, view_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_view_cols_full:
+ * gda_provider_meta_view_col:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_view_cols_full (GdaProviderMeta *prov, GdaConnection *cnc,
-                                  GdaMetaStore *meta, GdaMetaContext *ctx,
-                                  const GValue *view_catalog,
-                                  const GValue *view_schema,
-                                  const GValue *view_name,
-                                  GError **error)
+GdaRow*
+gda_provider_meta_view_col (GdaProviderMeta *prov,
+                            const gchar *view_catalog,
+                            const gchar *view_schema,
+                            const gchar *view_name,
+                            const gchar *column_name,
+                            GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->view_cols_full) {
-    return iface->view_cols_full (prov, cnc, meta, ctx, view_catalog,
+  if (iface->view_col) {
+    return iface->view_col (prov, view_catalog,
                                        view_schema, view_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 
+
 /* _table_constraints */
 /**
- * gda_provider_meta_constraints_tab:
+ * gda_provider_meta_constraints_tables:
+ *
+ * Since: 6.0
+ * Stability: Unstable
+ */
+GdaDataModel*
+gda_provider_meta_constraints_tables (GdaProviderMeta *prov, GError **error)
+{
+  g_return_val_if_fail (prov, NULL);
+  GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
+  if (iface->constraints_tables) {
+    return iface->constraints_tables (prov, error);
+  }
+  return NULL;
+}
+/**
+ * gda_provider_meta_constraints_table:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_constraints_tab (GdaProviderMeta *prov, GdaConnection *cnc,
-                                   GdaMetaStore *meta,
-                                   GdaMetaContext *ctx,
-                                   GError **error)
+GdaDataModel*
+gda_provider_meta_constraints_table (GdaProviderMeta *prov,
+                                     const gchar *table_catalog,
+                                     const gchar *table_schema,
+                                     const gchar *table_name,
+                                     GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->constraints_tab) {
-    return iface->constraints_tab (prov, cnc, meta, ctx, error);
+  if (iface->constraints_table) {
+    return iface->constraints_table (prov, table_catalog,
+                                     table_schema,
+                                     table_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_constraints_tab_full:
+ * gda_provider_meta_constraint_table:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_constraints_tab_full (GdaProviderMeta *prov,
-                                        GdaConnection *cnc,
-                                        GdaMetaStore *meta,
-                                        GdaMetaContext *ctx,
-                                        const GValue *table_catalog,
-                                        const GValue *table_schema,
-                                        const GValue *table_name,
-                                        const GValue *constraint_name_n,
-                                        GError **error)
+GdaRow*
+gda_provider_meta_constraint_table (GdaProviderMeta *prov,
+                                    const gchar *table_catalog,
+                                    const gchar *table_schema,
+                                    const gchar *table_name,
+                                    const gchar *constraint_name_n,
+                                    GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->constraints_tab_full) {
-    return iface->constraints_tab_full (prov, cnc, meta, ctx,
-                                       table_catalog,
-                                       table_schema,
-                                       table_name,
-                                       constraint_name_n,
-                                       error);
+  if (iface->constraint_table) {
+    return iface->constraint_table (prov, table_catalog,
+                                   table_schema,
+                                   table_name,
+                                   constraint_name_n,
+                                   error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _referential_constraints */
@@ -611,46 +635,59 @@ gda_provider_meta_constraints_tab_full (GdaProviderMeta *prov,
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_constraints_ref (GdaProviderMeta *prov,
-                                   GdaConnection *cnc,
-                                   GdaMetaStore *meta,
-                                   GdaMetaContext *ctx,
-                                   GError **error)
+GdaDataModel*
+gda_provider_meta_constraints_ref (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->constraints_ref) {
-    return iface->constraints_ref (prov, cnc, meta, ctx, error);
+    return iface->constraints_ref (prov, error);
+  }
+  return NULL;
+}
+/**
+ * gda_provider_meta_constraints_ref_table:
+ *
+ * Since: 6.0
+ * Stability: Unstable
+ */
+GdaDataModel*
+gda_provider_meta_constraints_ref_table (GdaProviderMeta *prov,
+                                  const gchar *table_catalog,
+                                  const gchar *table_schema,
+                                  const gchar *table_name,
+                                  GError **error)
+{
+  g_return_val_if_fail (prov, NULL);
+  GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
+  if (iface->constraints_ref_table) {
+    return iface->constraints_ref_table (prov, table_catalog, table_schema,
+                                         table_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_constraints_ref_full:
+ * gda_provider_meta_constraint_ref:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_constraints_ref_full (GdaProviderMeta *prov,
-                                        GdaConnection *cnc,
-                                        GdaMetaStore *meta,
-                                        GdaMetaContext *ctx,
-                                        const GValue *table_catalog,
-                                        const GValue *table_schema,
-                                        const GValue *table_name,
-                                        const GValue *constraint_name,
-                                        GError **error)
+GdaRow*
+gda_provider_meta_constraint_ref (GdaProviderMeta *prov,
+                                  const gchar *table_catalog,
+                                  const gchar *table_schema,
+                                  const gchar *table_name,
+                                  const gchar *constraint_name,
+                                  GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->constraints_ref_full) {
-    return iface->constraints_ref_full (prov, cnc, meta, ctx,
-                                             table_catalog, table_schema,
-                                             table_name, constraint_name,
-                                             error);
+  if (iface->constraint_ref) {
+    return iface->constraint_ref (prov, table_catalog, table_schema,
+                                 table_name, constraint_name,
+                                 error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _key_column_usage */
@@ -660,43 +697,39 @@ gda_provider_meta_constraints_ref_full (GdaProviderMeta *prov,
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_key_columns (GdaProviderMeta *prov, GdaConnection *cnc,
-                               GdaMetaStore *meta, GdaMetaContext *ctx,
-                               GError **error)
+GdaDataModel*
+gda_provider_meta_key_columns (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->key_columns) {
-    return iface->key_columns (prov, cnc, meta, ctx, error);
+    return iface->key_columns (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_key_columns_full:
+ * gda_provider_meta_key_column:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_key_columns_full (GdaProviderMeta *prov, GdaConnection *cnc,
-                                    GdaMetaStore *meta, GdaMetaContext *ctx,
-                                    const GValue *table_catalog,
-                                    const GValue *table_schema,
-                                    const GValue *table_name,
-                                    const GValue *constraint_name,
-                                    GError **error)
+GdaRow*
+gda_provider_meta_key_column (GdaProviderMeta *prov,
+                              const gchar *table_catalog,
+                              const gchar *table_schema,
+                              const gchar *table_name,
+                              const gchar *constraint_name,
+                              GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->key_columns_full) {
-    return iface->key_columns_full (prov, cnc, meta, ctx,
-                                         table_catalog, table_schema,
+  if (iface->key_column) {
+    return iface->key_column (prov, table_catalog, table_schema,
                                          table_name,
                                          constraint_name,
                                          error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _check_column_usage */
@@ -706,47 +739,40 @@ gda_provider_meta_key_columns_full (GdaProviderMeta *prov, GdaConnection *cnc,
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_check_columns (GdaProviderMeta *prov,
-                                 GdaConnection *cnc, GdaMetaStore *meta,
-                                 GdaMetaContext *ctx,
-                                 GError **error)
+GdaDataModel*
+gda_provider_meta_check_columns (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->check_columns) {
-    return iface->check_columns (prov, cnc, meta, ctx, error);
+    return iface->check_columns (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_check_columns_full:
+ * gda_provider_meta_check_column:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_check_columns_full (GdaProviderMeta *prov,
-                                      GdaConnection *cnc,
-                                      GdaMetaStore *meta,
-                                      GdaMetaContext *ctx,
-                                      const GValue *table_catalog,
-                                      const GValue *table_schema,
-                                      const GValue *table_name,
-                                      const GValue *constraint_name,
-                                      GError **error)
+GdaRow*
+gda_provider_meta_check_column (GdaProviderMeta *prov,
+                                const gchar *table_catalog,
+                                const gchar *table_schema,
+                                const gchar *table_name,
+                                const gchar *constraint_name,
+                                GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->check_columns_full) {
-    return iface->check_columns_full (prov, cnc, meta, ctx,
-                                           table_catalog,
+  if (iface->check_column) {
+    return iface->check_column (prov, table_catalog,
                                            table_schema,
                                            table_name,
                                            constraint_name,
                                            error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _triggers */
@@ -756,40 +782,36 @@ gda_provider_meta_check_columns_full (GdaProviderMeta *prov,
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_triggers (GdaProviderMeta *prov, GdaConnection *cnc,
-                            GdaMetaStore *meta, GdaMetaContext *ctx,
-                            GError **error)
+GdaDataModel*
+gda_provider_meta_triggers (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->triggers) {
-    return iface->triggers (prov, cnc, meta, ctx, error);
+    return iface->triggers (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_triggers_full:
+ * gda_provider_meta_trigger:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_triggers_full (GdaProviderMeta *prov, GdaConnection *cnc,
-                                 GdaMetaStore *meta, GdaMetaContext *ctx,
-                                 const GValue *table_catalog,
-                                 const GValue *table_schema,
-                                 const GValue *table_name,
+GdaRow*
+gda_provider_meta_trigger (GdaProviderMeta *prov,
+                                 const gchar *table_catalog,
+                                 const gchar *table_schema,
+                                 const gchar *table_name,
                                  GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->triggers_full) {
-    return iface->triggers_full (prov, cnc, meta, ctx,
-                                      table_catalog, table_schema,
+  if (iface->trigger) {
+    return iface->trigger (prov, table_catalog, table_schema,
                                       table_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _routines */
@@ -799,179 +821,177 @@ gda_provider_meta_triggers_full (GdaProviderMeta *prov, GdaConnection *cnc,
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_routines (GdaProviderMeta *prov, GdaConnection *cnc,
-                            GdaMetaStore *meta, GdaMetaContext *ctx,
-                            GError **error)
+GdaDataModel*
+gda_provider_meta_routines (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->routines) {
-    return iface->routines (prov, cnc, meta, ctx, error);
+    return iface->routines (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_routines_full:
+ * gda_provider_meta_routine:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_routines_full (GdaProviderMeta *prov, GdaConnection *cnc,
-                                 GdaMetaStore *meta, GdaMetaContext *ctx,
-                                 const GValue *routine_catalog,
-                                 const GValue *routine_schema,
-                                 const GValue *routine_name_n,
+GdaRow*
+gda_provider_meta_routine (GdaProviderMeta *prov,
+                                 const gchar *routine_catalog,
+                                 const gchar *routine_schema,
+                                 const gchar *routine_name_n,
                                  GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->routines_full) {
-    return iface->routines_full (prov, cnc, meta, ctx,
-                                      routine_catalog, routine_schema,
+  if (iface->routine) {
+    return iface->routine (prov, routine_catalog, routine_schema,
                                       routine_name_n, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _routine_columns */
 /**
- * gda_provider_meta_routine_col:
+ * gda_provider_meta_routines_col:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_routine_col (GdaProviderMeta *prov, GdaConnection *cnc,
-                               GdaMetaStore *meta, GdaMetaContext *ctx,
-                               GError **error)
+GdaDataModel*
+gda_provider_meta_routines_col (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->routine_col) {
-    return iface->routine_col (prov, cnc, meta, ctx, error);
+  if (iface->routines_col) {
+    return iface->routines_col (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_routine_col_full:
+ * gda_provider_meta_routine_col:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_routine_col_full (GdaProviderMeta *prov,
-                                    GdaConnection *cnc,
-                                    GdaMetaStore *meta,
-                                    GdaMetaContext *ctx,
-                                    const GValue *rout_catalog,
-                                    const GValue *rout_schema,
-                                    const GValue *rout_name,
+GdaRow*
+gda_provider_meta_routine_col (GdaProviderMeta *prov,
+                                    const gchar *rout_catalog,
+                                    const gchar *rout_schema,
+                                    const gchar *rout_name,
                                     GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->routine_col_full) {
-    return iface->routine_col_full (prov, cnc, meta, ctx,
-                                         rout_catalog, rout_schema,
+  if (iface->routine_col) {
+    return iface->routine_col (prov, rout_catalog, rout_schema,
                                          rout_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _parameters */
 /**
- * gda_provider_meta_routine_par:
+ * gda_provider_meta_routines_pars:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_routine_par (GdaProviderMeta *prov, GdaConnection *cnc,
-                               GdaMetaStore *meta, GdaMetaContext *ctx,
-                               GError **error)
+GdaDataModel*
+gda_provider_meta_routines_pars (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->routine_par) {
-    return iface->routine_par (prov, cnc, meta, ctx, error);
+  if (iface->routines_pars) {
+    return iface->routines_pars (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_routine_par_full:
+ * gda_provider_meta_routine_pars:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_routine_par_full (GdaProviderMeta *prov,
-                                    GdaConnection *cnc,
-                                    GdaMetaStore *meta,
-                                    GdaMetaContext *ctx,
-                                    const GValue *rout_catalog,
-                                    const GValue *rout_schema,
-                                    const GValue *rout_name,
+GdaRow*
+gda_provider_meta_routine_pars (GdaProviderMeta *prov,
+                                    const gchar *rout_catalog,
+                                    const gchar *rout_schema,
+                                    const gchar *rout_name,
                                     GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->routine_par_full) {
-    return iface->routine_par_full (prov, cnc, meta, ctx,
-                                         rout_catalog, rout_schema,
+  if (iface->routine_pars) {
+    return iface->routine_pars (prov,rout_catalog, rout_schema,
                                          rout_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 /* _table_indexes */
 /**
- * gda_provider_meta_indexes_tab:
+ * gda_provider_meta_indexes_tables:
+ *
+ * Since: 6.0
+ * Stability: Unstable
+ */
+GdaDataModel*
+gda_provider_meta_indexes_tables (GdaProviderMeta *prov, GError **error)
+{
+  g_return_val_if_fail (prov, NULL);
+  GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
+  if (iface->indexes_tables) {
+    return iface->indexes_tables (prov, error);
+  }
+  return NULL;
+}
+/**
+ * gda_provider_meta_indexes_table:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_indexes_tab (GdaProviderMeta *prov,
-                               GdaConnection *cnc,
-                               GdaMetaStore *meta,
-                               GdaMetaContext *ctx,
-                               GError **error)
+GdaDataModel*
+gda_provider_meta_indexes_table (GdaProviderMeta *prov,
+                                const gchar *table_catalog,
+                                const gchar *table_schema,
+                                const gchar *table_name,
+                                GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->indexes_tab) {
-    return iface->indexes_tab (prov, cnc, meta, ctx, error);
+  if (iface->indexes_table) {
+
+    return iface->indexes_table (prov, table_catalog, table_schema,
+                                 table_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_indexes_tab_full:
+ * gda_provider_meta_index_table:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_indexes_tab_full (GdaProviderMeta *prov,
-                                    GdaConnection *cnc,
-                                    GdaMetaStore *meta,
-                                    GdaMetaContext *ctx,
-                                    const GValue *table_catalog,
-                                    const GValue *table_schema,
-                                    const GValue *table_name,
-                                    const GValue *index_name_n,
+GdaRow*
+gda_provider_meta_index_table (GdaProviderMeta *prov,
+                                    const gchar *table_catalog,
+                                    const gchar *table_schema,
+                                    const gchar *table_name,
+                                    const gchar *index_name_n,
                                     GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->indexes_tab_full) {
+  if (iface->index_table) {
 
-    return iface->indexes_tab_full (prov, cnc, meta, ctx,
-                                         table_catalog, table_schema,
-                                         table_name, index_name_n,
-                                         error);
+    return iface->index_table (prov, table_catalog, table_schema,
+                               table_name, index_name_n,
+                               error);
   }
-  return FALSE;
+  return NULL;
 }
 
 /* _index_column_usage */
@@ -981,43 +1001,36 @@ gda_provider_meta_indexes_tab_full (GdaProviderMeta *prov,
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_index_cols (GdaProviderMeta *prov, GdaConnection *cnc,
-                              GdaMetaStore *meta,
-                              GdaMetaContext *ctx,
-                              GError **error)
+GdaDataModel*
+gda_provider_meta_index_cols (GdaProviderMeta *prov, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
   if (iface->index_cols) {
-    return iface->index_cols (prov, cnc, meta, ctx, error);
+    return iface->index_cols (prov, error);
   }
-  return FALSE;
+  return NULL;
 }
 /**
- * gda_provider_meta_index_cols_full:
+ * gda_provider_meta_index_col:
  *
  * Since: 6.0
  * Stability: Unstable
  */
-gboolean
-gda_provider_meta_index_cols_full (GdaProviderMeta *prov,
-                                   GdaConnection *cnc,
-                                   GdaMetaStore *meta,
-                                   GdaMetaContext *ctx,
-                                   const GValue *table_catalog,
-                                   const GValue *table_schema,
-                                   const GValue *table_name,
-                                   const GValue *index_name, GError **error)
+GdaRow*
+gda_provider_meta_index_col (GdaProviderMeta *prov,
+                                   const gchar *table_catalog,
+                                   const gchar *table_schema,
+                                   const gchar *table_name,
+                                   const gchar *index_name, GError **error)
 {
-  g_return_val_if_fail (prov, FALSE);
+  g_return_val_if_fail (prov, NULL);
   GdaProviderMetaInterface *iface = GDA_PROVIDER_META_GET_IFACE (prov);
-  if (iface->index_cols_full) {
-    return iface->index_cols_full (prov, cnc, meta, ctx,
-                                        table_catalog, table_schema,
+  if (iface->index_col) {
+    return iface->index_col (prov, table_catalog, table_schema,
                                         table_name, index_name, error);
   }
-  return FALSE;
+  return NULL;
 }
 
 
diff --git a/libgda/gda-provider-meta.h b/libgda/gda-provider-meta.h
index 52e189c02..e6bfb9ea7 100644
--- a/libgda/gda-provider-meta.h
+++ b/libgda/gda-provider-meta.h
@@ -17,13 +17,12 @@
  * Boston, MA  02110-1301, USA.
  */
 
-#include <glib-object.h>
-#include <libgda/gda-connection.h>
-#include <libgda/gda-quark-list.h>
-
 #ifndef __GDA_PROVIDER_META_H__
 #define __GDA_PROVIDER_META_H__
 
+#include <glib-object.h>
+#include <libgda/gda-row.h>
+
 G_BEGIN_DECLS
 
 #define GDA_TYPE_PROVIDER_META gda_provider_meta_get_type()
@@ -34,253 +33,386 @@ struct _GdaProviderMetaInterface
 {
   GTypeInterface g_iface;
 
-  gboolean (*info)             (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-
   /* _builtin_data_types */
-  gboolean (*btypes)           (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
+  GdaDataModel *(*btypes)               (GdaProviderMeta *prov, GError **error);
 
   /* _udt */
-  gboolean (*udt)              (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*udt_full)         (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *udt_catalog, const GValue *udt_schema, GError **error);
+  GdaDataModel *(*udts)                 (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*udt)                  (GdaProviderMeta *prov,
+                                         const gchar *udt_catalog,
+                                         const gchar *udt_schema,
+                                         GError **error);
 
   /* _udt_columns */
-  gboolean (*udt_cols)         (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*udt_cols_full)    (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *udt_catalog, const GValue *udt_schema, const GValue *udt_name, 
GError **error);
+  GdaDataModel *(*udt_cols)             (GdaProviderMeta *prov, GError **error);
+    GdaRow       *(*udt_col)            (GdaProviderMeta *prov,
+                                         const gchar *udt_catalog,
+                                         const gchar *udt_schema,
+                                         const gchar *udt_name,
+                                         GError **error);
 
   /* _enums */
-  gboolean (*enums)            (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*enums_full)       (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *udt_catalog, const GValue *udt_schema, const GValue *udt_name, 
GError **error);
+  GdaDataModel *(*enums_type)           (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*enum_type)            (GdaProviderMeta *prov,
+                                         const gchar *udt_catalog,
+                                         const gchar *udt_schema,
+                                         const gchar *udt_name,
+                                         GError **error);
 
   /* _domains */
-  gboolean (*domains)          (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*domains_full)     (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *domain_catalog, const GValue *domain_schema, GError **error);
+  GdaDataModel *(*domains)              (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*domain)               (GdaProviderMeta *prov,
+                                         const gchar *domain_catalog,
+                                         const gchar *domain_schema,
+                                         GError **error);
 
   /* _domain_constraints */
-  gboolean (*constraints_dom)  (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*constraints_dom_full) (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *domain_catalog, const GValue *domain_schema, const GValue 
*domain_name, GError **error);
+  GdaDataModel *(*domains_constraints)  (GdaProviderMeta *prov, GError **error);
+  GdaDataModel *(*domain_constraints)   (GdaProviderMeta *prov,
+                                         const gchar *domain_catalog,
+                                         const gchar *domain_schema,
+                                         const gchar *domain_name,
+                                         GError **error);
+  GdaRow       *(*domain_constraint)    (GdaProviderMeta *prov,
+                                         const gchar *domain_catalog,
+                                         const gchar *domain_schema,
+                                         const gchar *domain_name,
+                                         const gchar *constraint_name,
+                                         GError **error);
 
   /* _element_types */
-  gboolean (*el_types)         (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*el_types_full)    (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *specific_name, GError **error);
+  GdaDataModel *(*element_types)        (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*element_type)         (GdaProviderMeta *prov,
+                                         const gchar *specific_name, GError **error);
 
   /* _collations */
-  gboolean (*collations)       (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*collations_full)  (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *collation_catalog, const GValue *collation_schema,
-                                const GValue *collation_name_n, GError **error);
+  GdaDataModel *(*collations)           (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*collation)            (GdaProviderMeta *prov,
+                                         const gchar *collation_catalog,
+                                         const gchar *collation_schema,
+                                         const gchar *collation_name_n,
+                                         GError **error);
 
   /* _character_sets */
-  gboolean (*character_sets)   (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*character_sets_full) (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *chset_catalog, const GValue *chset_schema, const GValue 
*chset_name_n, GError **error);
+  GdaDataModel *(*character_sets)       (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*character_set)        (GdaProviderMeta *prov,
+                                         const gchar *chset_catalog, const gchar *chset_schema, const gchar 
*chset_name_n, GError **error);
 
   /* _schemata */
-  gboolean (*schemata)         (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*schemata_full)    (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *catalog_name, const GValue *schema_name_n, GError **error);
+  GdaDataModel *(*schematas)            (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*schemata)             (GdaProviderMeta *prov,
+                                         const gchar *catalog_name,
+                                         const gchar *schema_name_n,
+                                         GError **error);
 
   /* _tables or _views */
-  gboolean (*tables_views)     (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*tables_views_full) (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name_n, GError **error);
+  GdaDataModel *(*tables_views)         (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*table_view)           (GdaProviderMeta *prov,
+                                         const gchar *table_catalog,
+                                         const gchar *table_schema,
+                                         const gchar *table_name_n, GError **error);
 
   /* _columns */
-  gboolean (*columns)          (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*columns_full)     (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name, GError **error);
+  GdaDataModel *(*columns)              (GdaProviderMeta *prov, GError **error);
+  GdaDataModel *(*table_columns)        (GdaProviderMeta *prov,
+                                         const gchar *table_catalog,
+                                         const gchar *table_schema,
+                                         const gchar *table_name,
+                                         GError **error);
+  GdaRow       *(*table_column)         (GdaProviderMeta *prov,
+                                         const gchar *table_catalog,
+                                         const gchar *table_schema,
+                                         const gchar *table_name,
+                                         const gchar *column_name,
+                                         GError **error);
 
   /* _view_column_usage */
-  gboolean (*view_cols)        (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*view_cols_full)   (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *view_catalog, const GValue *view_schema, const GValue 
*view_name, GError **error);
+  GdaDataModel *(*views_cols)           (GdaProviderMeta *prov, GError **error);
+  GdaDataModel *(*view_cols)            (GdaProviderMeta *prov,
+                                         const gchar *view_catalog,
+                                         const gchar *view_schema,
+                                         const gchar *view_name, GError **error);
+  GdaRow       *(*view_col)             (GdaProviderMeta *prov,
+                                         const gchar *view_catalog,
+                                         const gchar *view_schema,
+                                         const gchar *view_name, GError **error);
 
   /* _table_constraints */
-  gboolean (*constraints_tab)  (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*constraints_tab_full) (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name,
-                                const GValue *constraint_name_n, GError **error);
+  GdaDataModel *(*constraints_tables)   (GdaProviderMeta *prov, GError **error);
+  GdaDataModel *(*constraints_table)    (GdaProviderMeta *prov,
+                                         const gchar *table_catalog,
+                                         const gchar *table_schema, const gchar *table_name,
+                                         GError **error);
+  GdaRow       *(*constraint_table)     (GdaProviderMeta *prov,
+                                         const gchar *table_catalog,
+                                         const gchar *table_schema, const gchar *table_name,
+                                         const gchar *constraint_name_n, GError **error);
 
   /* _referential_constraints */
-  gboolean (*constraints_ref)  (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*constraints_ref_full) (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name,
-                                const GValue *constraint_name, GError **error);
+  GdaDataModel *(*constraints_ref)      (GdaProviderMeta *prov, GError **error);
+  GdaDataModel *(*constraints_ref_table) (GdaProviderMeta *prov,
+                                         const gchar *table_catalog,
+                                         const gchar *table_schema,
+                                         const gchar *table_name,
+                                         GError **error);
+  GdaRow       *(*constraint_ref)       (GdaProviderMeta *prov,
+                                         const gchar *table_catalog,
+                                         const gchar *table_schema,
+                                         const gchar *table_name,
+                                         const gchar *constraint_name,
+                                         GError **error);
 
   /* _key_column_usage */
-  gboolean (*key_columns)      (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*key_columns_full) (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name,
-                                const GValue *constraint_name, GError **error);
+  GdaDataModel *(*key_columns)          (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*key_column)           (GdaProviderMeta *prov,
+                                         const gchar *table_catalog, const gchar *table_schema,
+                                         const gchar *table_name,
+                                         const gchar *constraint_name, GError **error);
 
   /* _check_column_usage */
-  gboolean (*check_columns)    (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*check_columns_full) (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name,
-                                const GValue *constraint_name, GError **error);
+  GdaDataModel *(*check_columns)        (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*check_column)         (GdaProviderMeta *prov,
+                                         const gchar *table_catalog, const gchar *table_schema,
+                                         const gchar *table_name,
+                                         const gchar *constraint_name, GError **error);
 
   /* _triggers */
-  gboolean (*triggers)         (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*triggers_full)    (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name, GError **error);
+  GdaDataModel *(*triggers)             (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*trigger)              (GdaProviderMeta *prov,
+                                         const gchar *table_catalog,
+                                         const gchar *table_schema,
+                                         const gchar *table_name,
+                                         GError **error);
 
   /* _routines */
-  gboolean (*routines)         (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*routines_full)    (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *routine_catalog, const GValue *routine_schema,
-                                const GValue *routine_name_n, GError **error);
+  GdaDataModel *(*routines)             (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*routine)              (GdaProviderMeta *prov,
+                                         const gchar *routine_catalog,
+                                         const gchar *routine_schema,
+                                         const gchar *routine_name_n,
+                                         GError **error);
 
   /* _routine_columns */
-  gboolean (*routine_col)      (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*routine_col_full) (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *rout_catalog, const GValue *rout_schema, const GValue 
*rout_name, GError **error);
+  GdaDataModel *(*routines_col)         (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*routine_col)          (GdaProviderMeta *prov,
+                                         const gchar *rout_catalog,
+                                         const gchar *rout_schema,
+                                         const gchar *rout_name, GError **error);
 
   /* _parameters */
-  gboolean (*routine_par)      (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*routine_par_full) (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *rout_catalog, const GValue *rout_schema, const GValue 
*rout_name, GError **error);
+  GdaDataModel *(*routines_pars)        (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*routine_pars)         (GdaProviderMeta *prov,
+                                         const gchar *rout_catalog,
+                                         const gchar *rout_schema,
+                                         const gchar *rout_name, GError **error);
   /* _table_indexes */
-  gboolean (*indexes_tab)      (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*indexes_tab_full) (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                                const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name,
-                                const GValue *index_name_n, GError **error);
+  GdaDataModel *(*indexes_tables)       (GdaProviderMeta *prov, GError **error);
+  GdaDataModel *(*indexes_table)        (GdaProviderMeta *prov,
+                                         const gchar *table_catalog,
+                                         const gchar *table_schema,
+                                         const gchar *table_name, GError **error);
+  GdaRow       *(*index_table)          (GdaProviderMeta *prov,
+                                         const gchar *table_catalog,
+                                         const gchar *table_schema,
+                                         const gchar *table_name,
+                                         const gchar *index_name_n, GError **error);
 
   /* _index_column_usage */
-  gboolean (*index_cols)       (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-  gboolean (*index_cols_full)  (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                               const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name,
-                               const GValue *index_name, GError **error);
+  GdaDataModel *(*index_cols)           (GdaProviderMeta *prov, GError **error);
+  GdaRow       *(*index_col)            (GdaProviderMeta *prov,
+                                         const gchar *table_catalog,
+                                         const gchar *table_schema,
+                                         const gchar *table_name,
+                                         const gchar *index_name, GError **error);
 
   /* Padding for future expansion */
   gpointer padding[12];
 };
 
-gboolean gda_provider_meta_info              (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-
 /* _builtin_data_types */
-gboolean gda_provider_meta_btypes           (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
+GdaDataModel *gda_provider_meta_btypes                (GdaProviderMeta *prov,
+                              GError **error);
 
 /* _udt */
-gboolean gda_provider_meta_udt              (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_udt_full         (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *udt_catalog, const GValue *udt_schema, GError **error);
+GdaDataModel *gda_provider_meta_udts                  (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_udt                   (GdaProviderMeta *prov,
+                              const gchar *udt_catalog, const gchar *udt_schema,
+                              GError **error);
 
 /* _udt_columns */
-gboolean gda_provider_meta_udt_cols         (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_udt_cols_full    (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *udt_catalog, const GValue *udt_schema, const GValue *udt_name, 
GError **error);
+GdaDataModel *gda_provider_meta_udt_cols              (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_udt_col               (GdaProviderMeta *prov,
+                              const gchar *udt_catalog, const gchar *udt_schema,
+                              const gchar *udt_name, GError **error);
 
 /* _enums */
-gboolean gda_provider_meta_enums            (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_enums_full       (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *udt_catalog, const GValue *udt_schema, const GValue *udt_name, 
GError **error);
+GdaDataModel *gda_provider_meta_enums_type            (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_enum_type             (GdaProviderMeta *prov,
+                              const gchar *udt_catalog, const gchar *udt_schema, const gchar *udt_name, 
GError **error);
 
 /* _domains */
-gboolean gda_provider_meta_domains          (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_domains_full     (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *domain_catalog, const GValue *domain_schema, GError **error);
+GdaDataModel *gda_provider_meta_domains               (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_domain                (GdaProviderMeta *prov,
+                              const gchar *domain_catalog, const gchar *domain_schema, GError **error);
 
 /* _domain_constraints */
-gboolean gda_provider_meta_constraints_dom  (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_constraints_dom_full  (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore 
*meta, GdaMetaContext *ctx,
-                              const GValue *domain_catalog, const GValue *domain_schema, const GValue 
*domain_name, GError **error);
+GdaDataModel *gda_provider_meta_domains_constraints   (GdaProviderMeta *prov,
+                              GError **error);
+GdaDataModel *gda_provider_meta_domain_constraints    (GdaProviderMeta *prov,
+                              const gchar *domain_catalog, const gchar *domain_schema,
+                              const gchar *domain_name, GError **error);
+GdaRow       *gda_provider_meta_domain_constraint     (GdaProviderMeta *prov,
+                              const gchar *domain_catalog, const gchar *domain_schema,
+                              const gchar *domain_name, const gchar *contraint_name,
+                              GError **error);
 
 /* _element_types */
-gboolean gda_provider_meta_el_types         (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_el_types_full    (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *specific_name, GError **error);
+GdaDataModel *gda_provider_meta_element_types         (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_element_type          (GdaProviderMeta *prov,
+                              const gchar *specific_name, GError **error);
 
 /* _collations */
-gboolean gda_provider_meta_collations       (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_collations_full  (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *collation_catalog, const GValue *collation_schema,
-                              const GValue *collation_name_n, GError **error);
+GdaDataModel *gda_provider_meta_collations            (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_collation             (GdaProviderMeta *prov,
+                              const gchar *collation_catalog, const gchar *collation_schema,
+                              const gchar *collation_name_n, GError **error);
 
 /* _character_sets */
-gboolean gda_provider_meta_character_sets   (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_character_sets_full (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore 
*meta, GdaMetaContext *ctx,
-                              const GValue *chset_catalog, const GValue *chset_schema, const GValue 
*chset_name_n, GError **error);
+GdaDataModel *gda_provider_meta_character_sets        (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_character_set         (GdaProviderMeta *prov,
+                              const gchar *chset_catalog, const gchar *chset_schema,
+                              const gchar *chset_name_n, GError **error);
 
 /* _schemata */
-gboolean gda_provider_meta_schemata         (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_schemata_full    (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *catalog_name, const GValue *schema_name_n, GError **error);
+GdaDataModel *gda_provider_meta_schematas             (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_schemata              (GdaProviderMeta *prov,
+                              const gchar *catalog_name, const gchar *schema_name_n, GError **error);
 
 /* _tables or _views */
-gboolean gda_provider_meta_tables_views     (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_tables_views_full (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name_n, GError **error);
+GdaDataModel *gda_provider_meta_tables_views          (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_table_view            (GdaProviderMeta *prov,
+                              const gchar *table_catalog, const gchar *table_schema,
+                              const gchar *table_name_n, GError **error);
 
 /* _columns */
-gboolean gda_provider_meta_columns          (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_columns_full     (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name, GError **error);
+GdaDataModel *gda_provider_meta_columns               (GdaProviderMeta *prov,
+                              GError **error);
+GdaDataModel *gda_provider_meta_table_columns         (GdaProviderMeta *prov,
+                              const gchar *table_catalog, const gchar *table_schema,
+                              const gchar *table_name, GError **error);
+GdaRow       *gda_provider_meta_table_column          (GdaProviderMeta *prov,
+                              const gchar *table_catalog, const gchar *table_schema,
+                              const gchar *table_name,
+                              const gchar *column_name, GError **error);
 
 /* _view_column_usage */
-gboolean gda_provider_meta_view_cols        (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_view_cols_full   (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *view_catalog, const GValue *view_schema, const GValue 
*view_name, GError **error);
+GdaDataModel *gda_provider_meta_views_cols            (GdaProviderMeta *prov,
+                              GError **error);
+GdaDataModel *gda_provider_meta_view_cols             (GdaProviderMeta *prov,
+                              const gchar *view_catalog, const gchar *view_schema,
+                              const gchar *view_name, GError **error);
+GdaRow       *gda_provider_meta_view_col   (GdaProviderMeta *prov,
+                              const gchar *view_catalog, const gchar *view_schema,
+                              const gchar *view_name,
+                              const gchar *column_name,
+                              GError **error);
 
 /* _table_constraints */
-gboolean gda_provider_meta_constraints_tab  (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_constraints_tab_full (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore 
*meta, GdaMetaContext *ctx,
-                              const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name,
-                              const GValue *constraint_name_n, GError **error);
+GdaDataModel *gda_provider_meta_constraints_tables    (GdaProviderMeta *prov, GError **error);
+GdaDataModel *gda_provider_meta_constraints_table     (GdaProviderMeta *prov,
+                             const gchar *table_catalog, const gchar *table_schema,
+                             const gchar *table_name,
+                             GError **error);
+GdaRow       *gda_provider_meta_constraint_table      (GdaProviderMeta *prov,
+                             const gchar *table_catalog, const gchar *table_schema,
+                             const gchar *table_name,
+                             const gchar *constraint_name_n, GError **error);
 
 /* _referential_constraints */
-gboolean gda_provider_meta_constraints_ref  (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_constraints_ref_full (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore 
*meta, GdaMetaContext *ctx,
-                              const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name,
-                              const GValue *constraint_name, GError **error);
+GdaDataModel *gda_provider_meta_constraints_ref       (GdaProviderMeta *prov,
+                             GError **error);
+GdaDataModel *gda_provider_meta_constraints_ref_table (GdaProviderMeta *prov,
+                             const gchar *table_catalog,
+                             const gchar *table_schema, const gchar *table_name,
+                              GError **error);
+GdaRow       *gda_provider_meta_constraint_ref_table  (GdaProviderMeta *prov,
+                             const gchar *table_catalog,
+                             const gchar *table_schema, const gchar *table_name,
+                             const gchar *constraint_name, GError **error);
 
 /* _key_column_usage */
-gboolean gda_provider_meta_key_columns      (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_key_columns_full (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name,
-                              const GValue *constraint_name, GError **error);
+GdaDataModel *gda_provider_meta_key_columns           (GdaProviderMeta *prov,
+                            GError **error);
+GdaRow       *gda_provider_meta_key_column            (GdaProviderMeta *prov,
+                              const gchar *table_catalog, const gchar *table_schema,
+                              const gchar *table_name,
+                              const gchar *constraint_name, GError **error);
 
 /* _check_column_usage */
-gboolean gda_provider_meta_check_columns    (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_check_columns_full (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore 
*meta, GdaMetaContext *ctx,
-                              const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name,
-                              const GValue *constraint_name, GError **error);
+GdaDataModel *gda_provider_meta_check_columns         (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_check_column          (GdaProviderMeta *prov,
+                              const gchar *table_catalog,
+                              const gchar *table_schema,
+                              const gchar *table_name,
+                              const gchar *constraint_name, GError **error);
 
 /* _triggers */
-gboolean gda_provider_meta_triggers        (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_triggers_full   (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name, GError **error);
+GdaDataModel *gda_provider_meta_triggers              (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_trigger               (GdaProviderMeta *prov,
+                              const gchar *table_catalog,
+                              const gchar *table_schema,
+                              const gchar *table_name, GError **error);
 
 /* _routines */
-gboolean gda_provider_meta_routines        (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_routines_full   (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *routine_catalog, const GValue *routine_schema,
-                              const GValue *routine_name_n, GError **error);
+GdaDataModel *gda_provider_meta_routines              (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_routine               (GdaProviderMeta *prov,
+                              const gchar *routine_catalog, const gchar *routine_schema,
+                              const gchar *routine_name_n, GError **error);
 
 /* _routine_columns */
-gboolean gda_provider_meta_routine_col     (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_routine_col_full (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *rout_catalog, const GValue *rout_schema, const GValue 
*rout_name, GError **error);
+GdaDataModel *gda_provider_meta_routines_col          (GdaProviderMeta *prov, GError **error);
+GdaRow       *gda_provider_meta_routine_col           (GdaProviderMeta *prov,
+                              const gchar *rout_catalog, const gchar *rout_schema,
+                              const gchar *rout_name, GError **error);
 
 /* _parameters */
-gboolean gda_provider_meta_routine_par     (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_routine_par_full (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *rout_catalog, const GValue *rout_schema, const GValue 
*rout_name, GError **error);
+GdaDataModel *gda_provider_meta_routines_pars         (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_routine_pars          (GdaProviderMeta *prov,
+                              const gchar *rout_catalog, const gchar *rout_schema,
+                              const gchar *rout_name, GError **error);
 /* _table_indexes */
-gboolean gda_provider_meta_indexes_tab     (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_indexes_tab_full (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                              const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name,
-                              const GValue *index_name_n, GError **error);
+GdaDataModel *gda_provider_meta_indexes_tables        (GdaProviderMeta *prov,
+                              GError **error);
+GdaDataModel *gda_provider_meta_indexes_table         (GdaProviderMeta *prov,
+                              const gchar *table_catalog, const gchar *table_schema,
+                              const gchar *table_name, GError **error);
+GdaRow       *gda_provider_meta_index_table (GdaProviderMeta *prov,
+                              const gchar *table_catalog,
+                              const gchar *table_schema,
+                              const gchar *table_name,
+                              const gchar *index_name_n, GError **error);
 
 /* _index_column_usage */
-gboolean gda_provider_meta_index_cols      (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx, GError **error);
-gboolean gda_provider_meta_index_cols_full (GdaProviderMeta *prov, GdaConnection *cnc, GdaMetaStore *meta, 
GdaMetaContext *ctx,
-                             const GValue *table_catalog, const GValue *table_schema, const GValue 
*table_name,
-                             const GValue *index_name, GError **error);
+GdaDataModel *gda_provider_meta_index_cols            (GdaProviderMeta *prov,
+                              GError **error);
+GdaRow       *gda_provider_meta_index_col             (GdaProviderMeta *prov,
+                              const gchar *table_catalog,
+                              const gchar *table_schema,
+                              const gchar *table_name,
+                              const gchar *index_name, GError **error);
 
 G_END_DECLS
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]