[libgda/LIBGDA_5.2] Fix unit tests for PostgreSQL provider



commit de7b38d90a1c3fcfe305f83dd51f0c337045f86a
Author: Daniel Espinosa <esodan gmail com>
Date:   Sun Sep 23 20:02:41 2018 -0500

    Fix unit tests for PostgreSQL provider

 configure.ac                          |   39 +-
 libgda/Makefile.am                    |   10 +-
 libgda/data/GdaData-5.0.gir           | 1735 ++++++++++++++++++++++++++++++++-
 libgda/data/Table.vala                |    4 +-
 libgda/gda-config.c                   |    1 +
 libgda/libgda-5.0.vapi                |  387 ++++++--
 providers/postgres/gda-postgres-ddl.c |    6 +-
 providers/sqlcipher/Makefile.am       |    4 +-
 tests/vala/CheckTable.vala            |    3 +
 9 files changed, 2019 insertions(+), 170 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 0bc1597f6..3c5ced9fc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -545,37 +545,20 @@ then
        AC_MSG_ERROR([Vala Extensions (Utility GObject clases written in Vala) is requested but Vala Bindings 
is disable. Use --enable-vala])
 fi
 
+AM_PROG_VALAC([0.30.0])
+AC_PATH_PROG(VAPIGEN, [vapigen], [no])
 vala_api="No Vala bindings will be generated"
-if test "x$enable_vala" = "xyes"
+if test "x$VAPIGEN" = "xno"
 then
-       AM_PROG_VALAC([0.30.0])
-       if test "x$VALA_API_VERSION" = "x"
-       then
-               VAPIGEN_CHECK([0.30.0],[0.30],,no)
-               vala_api="0.30 (Default)"
-       else
-               VAPIGEN_CHECK([0.30.0],$VALA_API_VERSION,,no)
-               vala_api=$VALA_API_VERSION
-       fi
-else
-       AM_CONDITIONAL(ENABLE_VAPIGEN,false)
+       enable_vala_ext = "no"
 fi
+AM_CONDITIONAL(ENABLE_VAPIGEN, test "x$VAPIGEN" != "xno")
 
-if test "x$enable_vala_ext" = "xyes" -a "x$vapigen_pkg_found" != "xyes"
-then
-       AC_MSG_ERROR([Utility GObject clases written in Vala (Vala extensions) for Libgda are requested but 
Vala/vapigen is not available])
-       enable_vala_ext=no
-fi
-
-if test "x$enable_vala_ext" = "xyes"
-then
-  dnl Check for libgee
-  GEE_REQUIRED="0.8.0"
-  PKG_CHECK_MODULES(GEE, gee-0.8 >= $GEE_REQUIRED)
-  AC_SUBST(GEE_CFLAGS)
-  AC_SUBST(GEE_LIBS)
-  enable_vala_ext=yes
-fi
+dnl Check for libgee
+GEE_REQUIRED="0.8.0"
+PKG_CHECK_MODULES(GEE, gee-0.8 >= $GEE_REQUIRED,[],enable_vala_ext=no)
+AC_SUBST(GEE_CFLAGS)
+AC_SUBST(GEE_LIBS)
 
 AM_CONDITIONAL(ENABLE_VALA_EXTENSIONS, test "x$enable_vala_ext" = "xyes")
 
@@ -647,10 +630,10 @@ dnl ******************************
 dnl Vala documentation
 dnl ******************************
 enable_vala_doc="no"
+AC_PATH_PROG(YELP_BUILD, [yelp-build], [no])
 if test "x$enable_gtk_doc" = "xyes"
 then
 dnl Find yelp-build program
-    AC_PATH_PROG(YELP_BUILD, [yelp-build], [no])
     if test "x$YELP_BUILD" = "xno";
     then
         AC_MSG_RESULT([Vala documentation not build because yelp-build has not been found])
diff --git a/libgda/Makefile.am b/libgda/Makefile.am
index 9c4029a54..041459b07 100644
--- a/libgda/Makefile.am
+++ b/libgda/Makefile.am
@@ -2,11 +2,7 @@ QUIET_GEN = $(Q:@=@echo ' GEN '$@;)
 
 lib_LTLIBRARIES = libgda-5.0.la
 
-if ENABLE_VALA_EXTENSIONS
-    VALA_EXTENSIONS= . data
-endif
-
-SUBDIRS = sqlite handlers binreloc sql-parser providers-support thread-wrapper $(VALA_EXTENSIONS)
+SUBDIRS = sqlite handlers binreloc sql-parser providers-support thread-wrapper
 
 DEF_FLAGS=
 if BDB 
@@ -387,3 +383,7 @@ clean-local:
        then \
                rm -f $(gir_DATA) $(vapi_DATA); \
        fi
+
+if ENABLE_VALA_EXTENSIONS
+    SUBDIRS+= . data
+endif
diff --git a/libgda/data/GdaData-5.0.gir b/libgda/data/GdaData-5.0.gir
index 2ddb362de..95a8ac05a 100644
--- a/libgda/data/GdaData-5.0.gir
+++ b/libgda/data/GdaData-5.0.gir
@@ -6,12 +6,7 @@
 <package name="gdadata-5.0"/>
 <c:include name="libgda/data/libgdadata.h"/>
 <namespace name="GdaData" version="5.0" c:prefix="GdaData">
-       <annotation key="ccode.gir-version" value="5.0"/>
-       <annotation key="ccode.cheader-filename" value="libgda/data/libgdadata.h"/>
-       <annotation key="ccode.gir-namespace" value="GdaData"/>
-       <errordomain name="DbObjectError" get-quark="gda_data_db_object_error_quark" codes="DbObjectError">
-</errordomain>
-       <enumeration name="DbObjectError" c:type="GdaDataDbObjectError">
+       <enumeration name="DbObjectError" c:type="GdaDataDbObjectError" 
glib:error-domain="gda_data_db_object_error-quark">
                <member name="append" c:identifier="GDA_DATA_DB_OBJECT_ERROR_APPEND" value="0"/>
                <member name="update" c:identifier="GDA_DATA_DB_OBJECT_ERROR_UPDATE" value="1"/>
                <member name="save" c:identifier="GDA_DATA_DB_OBJECT_ERROR_SAVE" value="2"/>
@@ -356,9 +351,69 @@
                <property name="connection" writable="1">
                        <type name="Gda.Connection" c:type="GdaConnection*"/>
                </property>
+               <method name="get_connection" c:identifier="gda_data_db_object_get_connection">
+                       <return-value transfer-ownership="none">
+                               <type name="Gda.Connection" c:type="GdaConnection*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_connection" invoker="get_connection">
+                       <return-value transfer-ownership="none">
+                               <type name="Gda.Connection" c:type="GdaConnection*"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_connection" c:identifier="gda_data_db_object_set_connection">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="Gda.Connection" c:type="GdaConnection*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_connection" invoker="set_connection">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="Gda.Connection" c:type="GdaConnection*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="update-meta" writable="1">
                        <type name="gboolean" c:type="gboolean"/>
                </property>
+               <method name="get_update_meta" c:identifier="gda_data_db_object_get_update_meta">
+                       <return-value transfer-ownership="none">
+                               <type name="gboolean" c:type="gboolean"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_update_meta" invoker="get_update_meta">
+                       <return-value transfer-ownership="none">
+                               <type name="gboolean" c:type="gboolean"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_update_meta" c:identifier="gda_data_db_object_set_update_meta">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="gboolean" c:type="gboolean"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_update_meta" invoker="set_update_meta">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="gboolean" c:type="gboolean"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
        </interface>
        <record name="DbObjectIface" c:type="GdaDataDbObjectIface" glib:is-gtype-struct-for="DbObject">
                <field name="parent_iface">
@@ -415,6 +470,60 @@
                                </parameters>
                        </callback>
                </field>
+               <field name="get_connection">
+                       <callback name="get_connection" c:type="get_connection">
+                               <return-value transfer-ownership="none">
+                                       <type name="Gda.Connection" c:type="GdaConnection*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbObject" c:type="GdaDataDbObject*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_connection">
+                       <callback name="set_connection" c:type="set_connection">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbObject" c:type="GdaDataDbObject*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="Gda.Connection" c:type="GdaConnection*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_update_meta">
+                       <callback name="get_update_meta" c:type="get_update_meta">
+                               <return-value transfer-ownership="none">
+                                       <type name="gboolean" c:type="gboolean"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbObject" c:type="GdaDataDbObject*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_update_meta">
+                       <callback name="set_update_meta" c:type="set_update_meta">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbObject" c:type="GdaDataDbObject*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="gboolean" c:type="gboolean"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
        </record>
        <interface name="DbNamedObject" c:type="GdaDataDbNamedObject" glib:type-name="GdaDataDbNamedObject" 
glib:get-type="gda_data_db_named_object_get_type" glib:type-struct="DbNamedObjectIface">
                <prerequisite name="GObject.Object"/>
@@ -422,11 +531,68 @@
                <property name="name" writable="1">
                        <type name="utf8" c:type="gchar*"/>
                </property>
+               <method name="get_name" c:identifier="gda_data_db_named_object_get_name">
+                       <return-value transfer-ownership="none">
+                               <type name="utf8" c:type="const gchar*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_name" invoker="get_name">
+                       <return-value transfer-ownership="none">
+                               <type name="utf8" c:type="const gchar*"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_name" c:identifier="gda_data_db_named_object_set_name">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_name" invoker="set_name">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
        </interface>
        <record name="DbNamedObjectIface" c:type="GdaDataDbNamedObjectIface" 
glib:is-gtype-struct-for="DbNamedObject">
                <field name="parent_iface">
                        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
                </field>
+               <field name="get_name">
+                       <callback name="get_name" c:type="get_name">
+                               <return-value transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbNamedObject" 
c:type="GdaDataDbNamedObject*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_name">
+                       <callback name="set_name" c:type="set_name">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbNamedObject" 
c:type="GdaDataDbNamedObject*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="utf8" c:type="const gchar*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
        </record>
        <interface name="DbCollection" c:type="GdaDataDbCollection" glib:type-name="GdaDataDbCollection" 
glib:get-type="gda_data_db_collection_get_type" glib:type-struct="DbCollectionIface">
                <prerequisite name="GObject.Object"/>
@@ -437,11 +603,39 @@
                                <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
                        </type>
                </property>
+               <method name="get_schemas" c:identifier="gda_data_db_collection_get_schemas">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                               </type>
+                       </return-value>
+               </method>
+               <virtual-method name="get_schemas" invoker="get_schemas">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                               </type>
+                       </return-value>
+               </virtual-method>
        </interface>
        <record name="DbCollectionIface" c:type="GdaDataDbCollectionIface" 
glib:is-gtype-struct-for="DbCollection">
                <field name="parent_iface">
                        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
                </field>
+               <field name="get_schemas">
+                       <callback name="get_schemas" c:type="get_schemas">
+                               <return-value transfer-ownership="full">
+                                       <type name="Gee.Collection" c:type="GeeCollection*">
+                                               <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                                       </type>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbCollection" 
c:type="GdaDataDbCollection*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
        </record>
        <interface name="DbCatalog" c:type="GdaDataDbCatalog" glib:type-name="GdaDataDbCatalog" 
glib:get-type="gda_data_db_catalog_get_type" glib:type-struct="DbCatalogIface">
                <prerequisite name="GObject.Object"/>
@@ -452,11 +646,80 @@
                                <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
                        </type>
                </property>
+               <method name="get_shemas" c:identifier="gda_data_db_catalog_get_shemas">
+                       <return-value transfer-ownership="none">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                               </type>
+                       </return-value>
+               </method>
+               <virtual-method name="get_shemas" invoker="get_shemas">
+                       <return-value transfer-ownership="none">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                               </type>
+                       </return-value>
+               </virtual-method>
+               <method name="set_shemas" c:identifier="gda_data_db_catalog_set_shemas">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="Gee.Collection" c:type="GeeCollection*">
+                                               <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                                       </type>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_shemas" invoker="set_shemas">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="Gee.Collection" c:type="GeeCollection*">
+                                               <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                                       </type>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
        </interface>
        <record name="DbCatalogIface" c:type="GdaDataDbCatalogIface" glib:is-gtype-struct-for="DbCatalog">
                <field name="parent_iface">
                        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
                </field>
+               <field name="get_shemas">
+                       <callback name="get_shemas" c:type="get_shemas">
+                               <return-value transfer-ownership="none">
+                                       <type name="Gee.Collection" c:type="GeeCollection*">
+                                               <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                                       </type>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_shemas">
+                       <callback name="set_shemas" c:type="set_shemas">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                                       <type name="GdaData.DbSchema" 
c:type="GdaDataDbSchema*"/>
+                                               </type>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
        </record>
        <interface name="DbTable" c:type="GdaDataDbTable" glib:type-name="GdaDataDbTable" 
glib:get-type="gda_data_db_table_get_type" glib:type-struct="DbTableIface">
                <prerequisite name="GObject.Object"/>
@@ -545,37 +808,197 @@
                <property name="catalog" writable="1">
                        <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
                </property>
+               <method name="get_catalog" c:identifier="gda_data_db_table_get_catalog">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_catalog" invoker="get_catalog">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_catalog" c:identifier="gda_data_db_table_set_catalog">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_catalog" invoker="set_catalog">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="schema" writable="1">
                        <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
                </property>
+               <method name="get_schema" c:identifier="gda_data_db_table_get_schema">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_schema" invoker="get_schema">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_schema" c:identifier="gda_data_db_table_set_schema">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_schema" invoker="set_schema">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="table-type" writable="1">
                        <type name="GdaData.DbTableTableType" c:type="GdaDataDbTableTableType"/>
                </property>
+               <method name="get_table_type" c:identifier="gda_data_db_table_get_table_type">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbTableTableType" c:type="GdaDataDbTableTableType"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_table_type" invoker="get_table_type">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbTableTableType" c:type="GdaDataDbTableTableType"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_table_type" c:identifier="gda_data_db_table_set_table_type">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbTableTableType" 
c:type="GdaDataDbTableTableType"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_table_type" invoker="set_table_type">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbTableTableType" 
c:type="GdaDataDbTableTableType"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="records">
                        <type name="Gee.Collection" c:type="GeeCollection*">
                                <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
                        </type>
                </property>
+               <method name="get_records" c:identifier="gda_data_db_table_get_records">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
+                               </type>
+                       </return-value>
+               </method>
+               <virtual-method name="get_records" invoker="get_records">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
+                               </type>
+                       </return-value>
+               </virtual-method>
                <property name="depends">
                        <type name="Gee.Collection" c:type="GeeCollection*">
                                <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
                        </type>
                </property>
+               <method name="get_depends" c:identifier="gda_data_db_table_get_depends">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                               </type>
+                       </return-value>
+               </method>
+               <virtual-method name="get_depends" invoker="get_depends">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                               </type>
+                       </return-value>
+               </virtual-method>
                <property name="referenced">
                        <type name="Gee.Collection" c:type="GeeCollection*">
                                <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
                        </type>
                </property>
+               <method name="get_referenced" c:identifier="gda_data_db_table_get_referenced">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                               </type>
+                       </return-value>
+               </method>
+               <virtual-method name="get_referenced" invoker="get_referenced">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                               </type>
+                       </return-value>
+               </virtual-method>
                <property name="fields">
                        <type name="Gee.Collection" c:type="GeeCollection*">
                                <type name="GdaData.DbFieldInfo" c:type="GdaDataDbFieldInfo*"/>
                        </type>
                </property>
+               <method name="get_fields" c:identifier="gda_data_db_table_get_fields">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbFieldInfo" c:type="GdaDataDbFieldInfo*"/>
+                               </type>
+                       </return-value>
+               </method>
+               <virtual-method name="get_fields" invoker="get_fields">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbFieldInfo" c:type="GdaDataDbFieldInfo*"/>
+                               </type>
+                       </return-value>
+               </virtual-method>
                <property name="primary-keys">
                        <type name="Gee.Collection" c:type="GeeCollection*">
                                <type name="GdaData.DbFieldInfo" c:type="GdaDataDbFieldInfo*"/>
                        </type>
                </property>
+               <method name="get_primary_keys" c:identifier="gda_data_db_table_get_primary_keys">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbFieldInfo" c:type="GdaDataDbFieldInfo*"/>
+                               </type>
+                       </return-value>
+               </method>
+               <virtual-method name="get_primary_keys" invoker="get_primary_keys">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbFieldInfo" c:type="GdaDataDbFieldInfo*"/>
+                               </type>
+                       </return-value>
+               </virtual-method>
        </interface>
        <record name="DbTableIface" c:type="GdaDataDbTableIface" glib:is-gtype-struct-for="DbTable">
                <field name="parent_iface">
@@ -641,10 +1064,161 @@
                                </parameters>
                        </callback>
                </field>
-       </record>
-       <enumeration name="DbTableTableType" c:type="GdaDataDbTableTableType" 
glib:type-name="GdaDataDbTableTableType" glib:get-type="gda_data_db_table_table_type_get_type">
-               <member name="none" c:identifier="GDA_DATA_DB_TABLE_TABLE_TYPE_NONE" value="0"/>
-               <member name="base_table" c:identifier="GDA_DATA_DB_TABLE_TABLE_TYPE_BASE_TABLE" value="1"/>
+               <field name="get_catalog">
+                       <callback name="get_catalog" c:type="get_catalog">
+                               <return-value transfer-ownership="none">
+                                       <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_catalog">
+                       <callback name="set_catalog" c:type="set_catalog">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_schema">
+                       <callback name="get_schema" c:type="get_schema">
+                               <return-value transfer-ownership="none">
+                                       <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_schema">
+                       <callback name="set_schema" c:type="set_schema">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_table_type">
+                       <callback name="get_table_type" c:type="get_table_type">
+                               <return-value transfer-ownership="none">
+                                       <type name="GdaData.DbTableTableType" 
c:type="GdaDataDbTableTableType"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_table_type">
+                       <callback name="set_table_type" c:type="set_table_type">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="GdaData.DbTableTableType" 
c:type="GdaDataDbTableTableType"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_records">
+                       <callback name="get_records" c:type="get_records">
+                               <return-value transfer-ownership="full">
+                                       <type name="Gee.Collection" c:type="GeeCollection*">
+                                               <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
+                                       </type>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_depends">
+                       <callback name="get_depends" c:type="get_depends">
+                               <return-value transfer-ownership="full">
+                                       <type name="Gee.Collection" c:type="GeeCollection*">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </type>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_referenced">
+                       <callback name="get_referenced" c:type="get_referenced">
+                               <return-value transfer-ownership="full">
+                                       <type name="Gee.Collection" c:type="GeeCollection*">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </type>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_fields">
+                       <callback name="get_fields" c:type="get_fields">
+                               <return-value transfer-ownership="full">
+                                       <type name="Gee.Collection" c:type="GeeCollection*">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </type>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_primary_keys">
+                       <callback name="get_primary_keys" c:type="get_primary_keys">
+                               <return-value transfer-ownership="full">
+                                       <type name="Gee.Collection" c:type="GeeCollection*">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </type>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+       </record>
+       <enumeration name="DbTableTableType" c:type="GdaDataDbTableTableType" 
glib:type-name="GdaDataDbTableTableType" glib:get-type="gda_data_db_table_table_type_get_type">
+               <member name="none" c:identifier="GDA_DATA_DB_TABLE_TABLE_TYPE_NONE" value="0"/>
+               <member name="base_table" c:identifier="GDA_DATA_DB_TABLE_TABLE_TYPE_BASE_TABLE" value="1"/>
                <member name="view" c:identifier="GDA_DATA_DB_TABLE_TABLE_TYPE_VIEW" value="2"/>
                <member name="local_temporary" c:identifier="GDA_DATA_DB_TABLE_TABLE_TYPE_LOCAL_TEMPORARY" 
value="3"/>
                <member name="system_table" c:identifier="GDA_DATA_DB_TABLE_TABLE_TYPE_SYSTEM_TABLE" 
value="4"/>
@@ -871,16 +1445,74 @@
                <property name="table" writable="1" construct="1">
                        <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
                </property>
+               <method name="get_table" c:identifier="gda_data_db_record_get_table">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_table" invoker="get_table">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_table" c:identifier="gda_data_db_record_set_table">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_table" invoker="set_table">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="fields">
                        <type name="Gee.Collection" c:type="GeeCollection*">
                                <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
                        </type>
                </property>
+               <method name="get_fields" c:identifier="gda_data_db_record_get_fields">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+                               </type>
+                       </return-value>
+               </method>
+               <virtual-method name="get_fields" invoker="get_fields">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+                               </type>
+                       </return-value>
+               </virtual-method>
                <property name="keys">
                        <type name="Gee.Collection" c:type="GeeCollection*">
                                <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
                        </type>
                </property>
+               <method name="get_keys" c:identifier="gda_data_db_record_get_keys">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+                               </type>
+                       </return-value>
+               </method>
+               <virtual-method name="get_keys" invoker="get_keys">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+                               </type>
+                       </return-value>
+               </virtual-method>
        </interface>
        <record name="DbRecordIface" c:type="GdaDataDbRecordIface" glib:is-gtype-struct-for="DbRecord">
                <field name="parent_iface">
@@ -1039,6 +1671,61 @@
                                </parameters>
                        </callback>
                </field>
+               <field name="get_table">
+                       <callback name="get_table" c:type="get_table">
+                               <return-value transfer-ownership="none">
+                                       <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_table">
+                       <callback name="set_table" c:type="set_table">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_fields">
+                       <callback name="get_fields" c:type="get_fields">
+                               <return-value transfer-ownership="full">
+                                       <type name="Gee.Collection" c:type="GeeCollection*">
+                                               <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+                                       </type>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_keys">
+                       <callback name="get_keys" c:type="get_keys">
+                               <return-value transfer-ownership="full">
+                                       <type name="Gee.Collection" c:type="GeeCollection*">
+                                               <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+                                       </type>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
        </record>
        <interface name="DbField" c:type="GdaDataDbField" glib:type-name="GdaDataDbField" 
glib:get-type="gda_data_db_field_get_type" glib:type-struct="DbFieldIface">
                <prerequisite name="GObject.Object"/>
@@ -1071,7 +1758,7 @@
                                        <type name="utf8" c:type="const gchar*"/>
                                </parameter>
                                <parameter name="type" transfer-ownership="none">
-                                       <type name="GObject.Type" c:type="GType"/>
+                                       <type name="GType" c:type="GType"/>
                                </parameter>
                        </parameters>
                </function>
@@ -1088,15 +1775,95 @@
                <property name="value" writable="1">
                        <type name="GObject.Value" c:type="GValue*"/>
                </property>
+               <method name="get_value" c:identifier="gda_data_db_field_get_value">
+                       <return-value transfer-ownership="none" allow-none="1">
+                               <type name="GObject.Value" c:type="GValue*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_value" invoker="get_value">
+                       <return-value transfer-ownership="none" allow-none="1">
+                               <type name="GObject.Value" c:type="GValue*"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_value" c:identifier="gda_data_db_field_set_value">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none" allow-none="1">
+                                       <type name="GObject.Value" c:type="GValue*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_value" invoker="set_value">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none" allow-none="1">
+                                       <type name="GObject.Value" c:type="GValue*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="name" writable="1">
                        <type name="utf8" c:type="gchar*"/>
                </property>
+               <method name="get_name" c:identifier="gda_data_db_field_get_name">
+                       <return-value transfer-ownership="none">
+                               <type name="utf8" c:type="const gchar*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_name" invoker="get_name">
+                       <return-value transfer-ownership="none">
+                               <type name="utf8" c:type="const gchar*"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_name" c:identifier="gda_data_db_field_set_name">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_name" invoker="set_name">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="column-name">
                        <type name="utf8" c:type="gchar*"/>
                </property>
+               <method name="get_column_name" c:identifier="gda_data_db_field_get_column_name">
+                       <return-value transfer-ownership="none">
+                               <type name="utf8" c:type="const gchar*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_column_name" invoker="get_column_name">
+                       <return-value transfer-ownership="none">
+                               <type name="utf8" c:type="const gchar*"/>
+                       </return-value>
+               </virtual-method>
                <property name="attributes">
                        <type name="GdaData.DbFieldAttribute" c:type="GdaDataDbFieldAttribute"/>
                </property>
+               <method name="get_attributes" c:identifier="gda_data_db_field_get_attributes">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbFieldAttribute" c:type="GdaDataDbFieldAttribute"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_attributes" invoker="get_attributes">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbFieldAttribute" c:type="GdaDataDbFieldAttribute"/>
+                       </return-value>
+               </virtual-method>
        </interface>
        <record name="DbFieldIface" c:type="GdaDataDbFieldIface" glib:is-gtype-struct-for="DbField">
                <field name="parent_iface">
@@ -1129,17 +1896,95 @@
                                </parameters>
                        </callback>
                </field>
-       </record>
-       <bitfield name="DbFieldAttribute" c:type="GdaDataDbFieldAttribute" 
glib:type-name="GdaDataDbFieldAttribute" glib:get-type="gda_data_db_field_attribute_get_type">
-               <member name="none" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_NONE" value="1"/>
-               <member name="is_null" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_IS_NULL" value="2"/>
-               <member name="can_be_null" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_CAN_BE_NULL" value="4"/>
-               <member name="is_default" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_IS_DEFAULT" value="8"/>
-               <member name="can_be_default" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_CAN_BE_DEFAULT" 
value="16"/>
-               <member name="is_unchanged" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_IS_UNCHANGED" 
value="32"/>
-               <member name="actions_shown" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_ACTIONS_SHOWN" 
value="64"/>
-               <member name="data_non_valid" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_DATA_NON_VALID" 
value="128"/>
-               <member name="has_value_orig" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_HAS_VALUE_ORIG" 
value="256"/>
+               <field name="get_value">
+                       <callback name="get_value" c:type="get_value">
+                               <return-value transfer-ownership="none" allow-none="1">
+                                       <type name="GObject.Value" c:type="GValue*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_value">
+                       <callback name="set_value" c:type="set_value">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none" allow-none="1">
+                                               <type name="GObject.Value" c:type="GValue*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_name">
+                       <callback name="get_name" c:type="get_name">
+                               <return-value transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_name">
+                       <callback name="set_name" c:type="set_name">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="utf8" c:type="const gchar*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_column_name">
+                       <callback name="get_column_name" c:type="get_column_name">
+                               <return-value transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_attributes">
+                       <callback name="get_attributes" c:type="get_attributes">
+                               <return-value transfer-ownership="none">
+                                       <type name="GdaData.DbFieldAttribute" 
c:type="GdaDataDbFieldAttribute"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbField" c:type="GdaDataDbField*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+       </record>
+       <bitfield name="DbFieldAttribute" c:type="GdaDataDbFieldAttribute" 
glib:type-name="GdaDataDbFieldAttribute" glib:get-type="gda_data_db_field_attribute_get_type">
+               <member name="none" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_NONE" value="1"/>
+               <member name="is_null" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_IS_NULL" value="2"/>
+               <member name="can_be_null" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_CAN_BE_NULL" value="4"/>
+               <member name="is_default" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_IS_DEFAULT" value="8"/>
+               <member name="can_be_default" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_CAN_BE_DEFAULT" 
value="16"/>
+               <member name="is_unchanged" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_IS_UNCHANGED" 
value="32"/>
+               <member name="actions_shown" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_ACTIONS_SHOWN" 
value="64"/>
+               <member name="data_non_valid" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_DATA_NON_VALID" 
value="128"/>
+               <member name="has_value_orig" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_HAS_VALUE_ORIG" 
value="256"/>
                <member name="no_modif" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_NO_MODIF" value="512"/>
                <member name="unused" c:identifier="GDA_DATA_DB_FIELD_ATTRIBUTE_UNUSED" value="1024"/>
        </bitfield>
@@ -1151,7 +1996,7 @@
                </return-value>
                <parameters>
                        <parameter name="result_length1" direction="out" transfer-ownership="none">
-                               <type name="gint" c:type="gint"/>
+                               <type name="gint" c:type="gint*"/>
                        </parameter>
                </parameters>
        </function>
@@ -1215,74 +2060,587 @@
                <property name="ordinal" writable="1">
                        <type name="gint" c:type="gint"/>
                </property>
+               <method name="get_ordinal" c:identifier="gda_data_db_field_info_get_ordinal">
+                       <return-value transfer-ownership="none">
+                               <type name="gint" c:type="gint"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_ordinal" invoker="get_ordinal">
+                       <return-value transfer-ownership="none">
+                               <type name="gint" c:type="gint"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_ordinal" c:identifier="gda_data_db_field_info_set_ordinal">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_ordinal" invoker="set_ordinal">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="value-type" writable="1">
-                       <type name="GObject.Type" c:type="GType"/>
+                       <type name="GType" c:type="GType"/>
                </property>
+               <method name="get_value_type" c:identifier="gda_data_db_field_info_get_value_type">
+                       <return-value transfer-ownership="none">
+                               <type name="GType" c:type="GType"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_value_type" invoker="get_value_type">
+                       <return-value transfer-ownership="none">
+                               <type name="GType" c:type="GType"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_value_type" c:identifier="gda_data_db_field_info_set_value_type">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GType" c:type="GType"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_value_type" invoker="set_value_type">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GType" c:type="GType"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="attributes" writable="1">
                        <type name="GdaData.DbFieldInfoAttribute" c:type="GdaDataDbFieldInfoAttribute"/>
                </property>
+               <method name="get_attributes" c:identifier="gda_data_db_field_info_get_attributes">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbFieldInfoAttribute" 
c:type="GdaDataDbFieldInfoAttribute"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_attributes" invoker="get_attributes">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbFieldInfoAttribute" 
c:type="GdaDataDbFieldInfoAttribute"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_attributes" c:identifier="gda_data_db_field_info_set_attributes">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbFieldInfoAttribute" 
c:type="GdaDataDbFieldInfoAttribute"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_attributes" invoker="set_attributes">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbFieldInfoAttribute" 
c:type="GdaDataDbFieldInfoAttribute"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="default-value" writable="1">
                        <type name="GObject.Value" c:type="GValue*"/>
                </property>
+               <method name="get_default_value" c:identifier="gda_data_db_field_info_get_default_value">
+                       <return-value transfer-ownership="none" allow-none="1">
+                               <type name="GObject.Value" c:type="GValue*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_default_value" invoker="get_default_value">
+                       <return-value transfer-ownership="none" allow-none="1">
+                               <type name="GObject.Value" c:type="GValue*"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_default_value" c:identifier="gda_data_db_field_info_set_default_value">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none" allow-none="1">
+                                       <type name="GObject.Value" c:type="GValue*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_default_value" invoker="set_default_value">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none" allow-none="1">
+                                       <type name="GObject.Value" c:type="GValue*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="name" writable="1">
                        <type name="utf8" c:type="gchar*"/>
                </property>
+               <method name="get_name" c:identifier="gda_data_db_field_info_get_name">
+                       <return-value transfer-ownership="none">
+                               <type name="utf8" c:type="const gchar*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_name" invoker="get_name">
+                       <return-value transfer-ownership="none">
+                               <type name="utf8" c:type="const gchar*"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_name" c:identifier="gda_data_db_field_info_set_name">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_name" invoker="set_name">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="desc" writable="1">
                        <type name="utf8" c:type="gchar*"/>
                </property>
+               <method name="get_desc" c:identifier="gda_data_db_field_info_get_desc">
+                       <return-value transfer-ownership="none">
+                               <type name="utf8" c:type="const gchar*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_desc" invoker="get_desc">
+                       <return-value transfer-ownership="none">
+                               <type name="utf8" c:type="const gchar*"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_desc" c:identifier="gda_data_db_field_info_set_desc">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_desc" invoker="set_desc">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="precision" writable="1">
                        <type name="gint" c:type="gint"/>
                </property>
+               <method name="get_precision" c:identifier="gda_data_db_field_info_get_precision">
+                       <return-value transfer-ownership="none">
+                               <type name="gint" c:type="gint"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_precision" invoker="get_precision">
+                       <return-value transfer-ownership="none">
+                               <type name="gint" c:type="gint"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_precision" c:identifier="gda_data_db_field_info_set_precision">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_precision" invoker="set_precision">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="scale" writable="1">
                        <type name="gint" c:type="gint"/>
                </property>
+               <method name="get_scale" c:identifier="gda_data_db_field_info_get_scale">
+                       <return-value transfer-ownership="none">
+                               <type name="gint" c:type="gint"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_scale" invoker="get_scale">
+                       <return-value transfer-ownership="none">
+                               <type name="gint" c:type="gint"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_scale" c:identifier="gda_data_db_field_info_set_scale">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_scale" invoker="set_scale">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="fkey" writable="1">
                        <type name="GdaData.DbFieldInfoForeignKey" c:type="GdaDataDbFieldInfoForeignKey*"/>
                </property>
+               <method name="get_fkey" c:identifier="gda_data_db_field_info_get_fkey">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbFieldInfoForeignKey" 
c:type="GdaDataDbFieldInfoForeignKey*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_fkey" invoker="get_fkey">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbFieldInfoForeignKey" 
c:type="GdaDataDbFieldInfoForeignKey*"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_fkey" c:identifier="gda_data_db_field_info_set_fkey">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbFieldInfoForeignKey" 
c:type="GdaDataDbFieldInfoForeignKey*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_fkey" invoker="set_fkey">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbFieldInfoForeignKey" 
c:type="GdaDataDbFieldInfoForeignKey*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
        </interface>
        <record name="DbFieldInfoIface" c:type="GdaDataDbFieldInfoIface" 
glib:is-gtype-struct-for="DbFieldInfo">
                <field name="parent_iface">
                        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
                </field>
-               <field name="compatible">
-                       <callback name="compatible" c:type="compatible">
-                               <return-value transfer-ownership="full">
-                                       <type name="gboolean" c:type="gboolean"/>
+               <field name="compatible">
+                       <callback name="compatible" c:type="compatible">
+                               <return-value transfer-ownership="full">
+                                       <type name="gboolean" c:type="gboolean"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                                       <parameter name="field" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="equivalent">
+                       <callback name="equivalent" c:type="equivalent">
+                               <return-value transfer-ownership="full">
+                                       <type name="gboolean" c:type="gboolean"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                                       <parameter name="field" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="to_string">
+                       <callback name="to_string" c:type="to_string">
+                               <return-value transfer-ownership="full">
+                                       <type name="utf8" c:type="gchar*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_ordinal">
+                       <callback name="get_ordinal" c:type="get_ordinal">
+                               <return-value transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_ordinal">
+                       <callback name="set_ordinal" c:type="set_ordinal">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="gint" c:type="gint"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_value_type">
+                       <callback name="get_value_type" c:type="get_value_type">
+                               <return-value transfer-ownership="none">
+                                       <type name="GType" c:type="GType"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_value_type">
+                       <callback name="set_value_type" c:type="set_value_type">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="GType" c:type="GType"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_attributes">
+                       <callback name="get_attributes" c:type="get_attributes">
+                               <return-value transfer-ownership="none">
+                                       <type name="GdaData.DbFieldInfoAttribute" 
c:type="GdaDataDbFieldInfoAttribute"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_attributes">
+                       <callback name="set_attributes" c:type="set_attributes">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfoAttribute" 
c:type="GdaDataDbFieldInfoAttribute"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_default_value">
+                       <callback name="get_default_value" c:type="get_default_value">
+                               <return-value transfer-ownership="none" allow-none="1">
+                                       <type name="GObject.Value" c:type="GValue*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_default_value">
+                       <callback name="set_default_value" c:type="set_default_value">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none" allow-none="1">
+                                               <type name="GObject.Value" c:type="GValue*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_name">
+                       <callback name="get_name" c:type="get_name">
+                               <return-value transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_name">
+                       <callback name="set_name" c:type="set_name">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
                                </return-value>
                                <parameters>
                                        <parameter name="self" transfer-ownership="none">
                                                <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
                                        </parameter>
-                                       <parameter name="field" transfer-ownership="none">
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="utf8" c:type="const gchar*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_desc">
+                       <callback name="get_desc" c:type="get_desc">
+                               <return-value transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
                                                <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
                                        </parameter>
                                </parameters>
                        </callback>
                </field>
-               <field name="equivalent">
-                       <callback name="equivalent" c:type="equivalent">
-                               <return-value transfer-ownership="full">
-                                       <type name="gboolean" c:type="gboolean"/>
+               <field name="set_desc">
+                       <callback name="set_desc" c:type="set_desc">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
                                </return-value>
                                <parameters>
                                        <parameter name="self" transfer-ownership="none">
                                                <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
                                        </parameter>
-                                       <parameter name="field" transfer-ownership="none">
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="utf8" c:type="const gchar*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_precision">
+                       <callback name="get_precision" c:type="get_precision">
+                               <return-value transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
                                                <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
                                        </parameter>
                                </parameters>
                        </callback>
                </field>
-               <field name="to_string">
-                       <callback name="to_string" c:type="to_string">
-                               <return-value transfer-ownership="full">
-                                       <type name="utf8" c:type="gchar*"/>
+               <field name="set_precision">
+                       <callback name="set_precision" c:type="set_precision">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="gint" c:type="gint"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_scale">
+                       <callback name="get_scale" c:type="get_scale">
+                               <return-value transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_scale">
+                       <callback name="set_scale" c:type="set_scale">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="gint" c:type="gint"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_fkey">
+                       <callback name="get_fkey" c:type="get_fkey">
+                               <return-value transfer-ownership="none">
+                                       <type name="GdaData.DbFieldInfoForeignKey" 
c:type="GdaDataDbFieldInfoForeignKey*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_fkey">
+                       <callback name="set_fkey" c:type="set_fkey">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
                                </return-value>
                                <parameters>
                                        <parameter name="self" transfer-ownership="none">
                                                <type name="GdaData.DbFieldInfo" 
c:type="GdaDataDbFieldInfo*"/>
                                        </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="GdaData.DbFieldInfoForeignKey" 
c:type="GdaDataDbFieldInfoForeignKey*"/>
+                                       </parameter>
                                </parameters>
                        </callback>
                </field>
@@ -1305,7 +2663,7 @@
                </return-value>
                <parameters>
                        <parameter name="result_length1" direction="out" transfer-ownership="none">
-                               <type name="gint" c:type="gint"/>
+                               <type name="gint" c:type="gint*"/>
                        </parameter>
                </parameters>
        </function>
@@ -1348,26 +2706,135 @@
                <property name="name" writable="1">
                        <type name="utf8" c:type="gchar*"/>
                </property>
+               <method name="get_name" c:identifier="gda_data_db_field_info_foreign_key_get_name">
+                       <return-value transfer-ownership="none">
+                               <type name="utf8" c:type="const gchar*"/>
+                       </return-value>
+               </method>
+               <method name="set_name" c:identifier="gda_data_db_field_info_foreign_key_set_name">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </parameter>
+                       </parameters>
+               </method>
                <property name="refname" writable="1">
                        <type name="utf8" c:type="gchar*"/>
                </property>
+               <method name="get_refname" c:identifier="gda_data_db_field_info_foreign_key_get_refname">
+                       <return-value transfer-ownership="none">
+                               <type name="utf8" c:type="const gchar*"/>
+                       </return-value>
+               </method>
+               <method name="set_refname" c:identifier="gda_data_db_field_info_foreign_key_set_refname">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="utf8" c:type="const gchar*"/>
+                               </parameter>
+                       </parameters>
+               </method>
                <property name="reftable" writable="1">
                        <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
                </property>
+               <method name="get_reftable" c:identifier="gda_data_db_field_info_foreign_key_get_reftable">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                       </return-value>
+               </method>
+               <method name="set_reftable" c:identifier="gda_data_db_field_info_foreign_key_set_reftable">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                               </parameter>
+                       </parameters>
+               </method>
                <property name="refcol" writable="1">
                        <type name="Gee.ArrayList" c:type="GeeArrayList*">
                                <type name="utf8" c:type="gchar*"/>
                        </type>
                </property>
+               <method name="get_refcol" c:identifier="gda_data_db_field_info_foreign_key_get_refcol">
+                       <return-value transfer-ownership="none">
+                               <type name="Gee.ArrayList" c:type="GeeArrayList*">
+                                       <type name="utf8" c:type="gchar*"/>
+                               </type>
+                       </return-value>
+               </method>
+               <method name="set_refcol" c:identifier="gda_data_db_field_info_foreign_key_set_refcol">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="Gee.ArrayList" c:type="GeeArrayList*">
+                                               <type name="utf8" c:type="gchar*"/>
+                                       </type>
+                               </parameter>
+                       </parameters>
+               </method>
                <property name="match" writable="1">
                        <type name="GdaData.DbFieldInfoForeignKeyMatch" 
c:type="GdaDataDbFieldInfoForeignKeyMatch"/>
                </property>
+               <method name="get_match" c:identifier="gda_data_db_field_info_foreign_key_get_match">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbFieldInfoForeignKeyMatch" 
c:type="GdaDataDbFieldInfoForeignKeyMatch"/>
+                       </return-value>
+               </method>
+               <method name="set_match" c:identifier="gda_data_db_field_info_foreign_key_set_match">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbFieldInfoForeignKeyMatch" 
c:type="GdaDataDbFieldInfoForeignKeyMatch"/>
+                               </parameter>
+                       </parameters>
+               </method>
                <property name="update-rule" writable="1">
                        <type name="GdaData.DbFieldInfoForeignKeyRule" 
c:type="GdaDataDbFieldInfoForeignKeyRule"/>
                </property>
+               <method name="get_update_rule" 
c:identifier="gda_data_db_field_info_foreign_key_get_update_rule">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbFieldInfoForeignKeyRule" 
c:type="GdaDataDbFieldInfoForeignKeyRule"/>
+                       </return-value>
+               </method>
+               <method name="set_update_rule" 
c:identifier="gda_data_db_field_info_foreign_key_set_update_rule">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbFieldInfoForeignKeyRule" 
c:type="GdaDataDbFieldInfoForeignKeyRule"/>
+                               </parameter>
+                       </parameters>
+               </method>
                <property name="delete-rule" writable="1">
                        <type name="GdaData.DbFieldInfoForeignKeyRule" 
c:type="GdaDataDbFieldInfoForeignKeyRule"/>
                </property>
+               <method name="get_delete_rule" 
c:identifier="gda_data_db_field_info_foreign_key_get_delete_rule">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbFieldInfoForeignKeyRule" 
c:type="GdaDataDbFieldInfoForeignKeyRule"/>
+                       </return-value>
+               </method>
+               <method name="set_delete_rule" 
c:identifier="gda_data_db_field_info_foreign_key_set_delete_rule">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbFieldInfoForeignKeyRule" 
c:type="GdaDataDbFieldInfoForeignKeyRule"/>
+                               </parameter>
+                       </parameters>
+               </method>
        </record>
        <enumeration name="DbFieldInfoForeignKeyMatch" c:type="GdaDataDbFieldInfoForeignKeyMatch" 
glib:type-name="GdaDataDbFieldInfoForeignKeyMatch" 
glib:get-type="gda_data_db_field_info_foreign_key_match_get_type">
                <member name="none" c:identifier="GDA_DATA_DB_FIELD_INFO_FOREIGN_KEY_MATCH_NONE" value="0"/>
@@ -1382,7 +2849,7 @@
                </return-value>
                <parameters>
                        <parameter name="result_length1" direction="out" transfer-ownership="none">
-                               <type name="gint" c:type="gint"/>
+                               <type name="gint" c:type="gint*"/>
                        </parameter>
                </parameters>
        </function>
@@ -1417,7 +2884,7 @@
                </return-value>
                <parameters>
                        <parameter name="result_length1" direction="out" transfer-ownership="none">
-                               <type name="gint" c:type="gint"/>
+                               <type name="gint" c:type="gint*"/>
                        </parameter>
                </parameters>
        </function>
@@ -1443,16 +2910,101 @@
                <property name="catalog" writable="1">
                        <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
                </property>
+               <method name="get_catalog" c:identifier="gda_data_db_schema_get_catalog">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_catalog" invoker="get_catalog">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_catalog" c:identifier="gda_data_db_schema_set_catalog">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_catalog" invoker="set_catalog">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="tables">
                        <type name="Gee.Collection" c:type="GeeCollection*">
                                <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
                        </type>
                </property>
+               <method name="get_tables" c:identifier="gda_data_db_schema_get_tables">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                               </type>
+                       </return-value>
+               </method>
+               <virtual-method name="get_tables" invoker="get_tables">
+                       <return-value transfer-ownership="full">
+                               <type name="Gee.Collection" c:type="GeeCollection*">
+                                       <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                               </type>
+                       </return-value>
+               </virtual-method>
        </interface>
        <record name="DbSchemaIface" c:type="GdaDataDbSchemaIface" glib:is-gtype-struct-for="DbSchema">
                <field name="parent_iface">
                        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
                </field>
+               <field name="get_catalog">
+                       <callback name="get_catalog" c:type="get_catalog">
+                               <return-value transfer-ownership="none">
+                                       <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_catalog">
+                       <callback name="set_catalog" c:type="set_catalog">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="GdaData.DbCatalog" c:type="GdaDataDbCatalog*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_tables">
+                       <callback name="get_tables" c:type="get_tables">
+                               <return-value transfer-ownership="full">
+                                       <type name="Gee.Collection" c:type="GeeCollection*">
+                                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                                       </type>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
        </record>
        <interface name="DbRecordCollection" c:type="GdaDataDbRecordCollection" 
glib:type-name="GdaDataDbRecordCollection" glib:get-type="gda_data_db_record_collection_get_type" 
glib:type-struct="DbRecordCollectionIface">
                <prerequisite name="GObject.Object"/>
@@ -1462,17 +3014,118 @@
                <property name="connection" writable="1">
                        <type name="Gda.Connection" c:type="GdaConnection*"/>
                </property>
+               <method name="get_connection" c:identifier="gda_data_db_record_collection_get_connection">
+                       <return-value transfer-ownership="none">
+                               <type name="Gda.Connection" c:type="GdaConnection*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_connection" invoker="get_connection">
+                       <return-value transfer-ownership="none">
+                               <type name="Gda.Connection" c:type="GdaConnection*"/>
+                       </return-value>
+               </virtual-method>
+               <method name="set_connection" c:identifier="gda_data_db_record_collection_set_connection">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="Gda.Connection" c:type="GdaConnection*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="set_connection" invoker="set_connection">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="value" transfer-ownership="none">
+                                       <type name="Gda.Connection" c:type="GdaConnection*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="model">
                        <type name="Gda.DataModel" c:type="GdaDataModel*"/>
                </property>
+               <method name="get_model" c:identifier="gda_data_db_record_collection_get_model">
+                       <return-value transfer-ownership="none">
+                               <type name="Gda.DataModel" c:type="GdaDataModel*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_model" invoker="get_model">
+                       <return-value transfer-ownership="none">
+                               <type name="Gda.DataModel" c:type="GdaDataModel*"/>
+                       </return-value>
+               </virtual-method>
                <property name="table">
                        <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
                </property>
+               <method name="get_table" c:identifier="gda_data_db_record_collection_get_table">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                       </return-value>
+               </method>
+               <virtual-method name="get_table" invoker="get_table">
+                       <return-value transfer-ownership="none">
+                               <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                       </return-value>
+               </virtual-method>
        </interface>
        <record name="DbRecordCollectionIface" c:type="GdaDataDbRecordCollectionIface" 
glib:is-gtype-struct-for="DbRecordCollection">
                <field name="parent_iface">
                        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
                </field>
+               <field name="get_connection">
+                       <callback name="get_connection" c:type="get_connection">
+                               <return-value transfer-ownership="none">
+                                       <type name="Gda.Connection" c:type="GdaConnection*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbRecordCollection" 
c:type="GdaDataDbRecordCollection*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="set_connection">
+                       <callback name="set_connection" c:type="set_connection">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbRecordCollection" 
c:type="GdaDataDbRecordCollection*"/>
+                                       </parameter>
+                                       <parameter name="value" transfer-ownership="none">
+                                               <type name="Gda.Connection" c:type="GdaConnection*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_model">
+                       <callback name="get_model" c:type="get_model">
+                               <return-value transfer-ownership="none">
+                                       <type name="Gda.DataModel" c:type="GdaDataModel*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbRecordCollection" 
c:type="GdaDataDbRecordCollection*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="get_table">
+                       <callback name="get_table" c:type="get_table">
+                               <return-value transfer-ownership="none">
+                                       <type name="GdaData.DbTable" c:type="GdaDataDbTable*"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GdaData.DbRecordCollection" 
c:type="GdaDataDbRecordCollection*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
        </record>
 </namespace>
 </repository>
diff --git a/libgda/data/Table.vala b/libgda/data/Table.vala
index 39ca07915..16881b4f7 100644
--- a/libgda/data/Table.vala
+++ b/libgda/data/Table.vala
@@ -380,9 +380,9 @@ namespace GdaData
                                                rc++;
                                        }
 
-                                       op.set_value_at (f.fkey.update_rule.to_string (),
+                                       op.set_value_at (f.fkey.update_rule.to_string ().replace("_", " "),
                                                                                "/FKEY_S/" + refs.to_string 
() + "/FKEY_ONUPDATE");
-                                       op.set_value_at (f.fkey.delete_rule.to_string (),
+                                       op.set_value_at (f.fkey.delete_rule.to_string ().replace("_", " "),
                                                                                "/FKEY_S/" + refs.to_string 
() + "/FKEY_ONDELETE");
                                        refs++;
                                }
diff --git a/libgda/gda-config.c b/libgda/gda-config.c
index 65776ab7d..7ac96f664 100644
--- a/libgda/gda-config.c
+++ b/libgda/gda-config.c
@@ -1728,6 +1728,7 @@ load_all_providers (void)
        if (dirname) {
                gchar *pdir;
                pdir = g_build_path (G_DIR_SEPARATOR_S, dirname, "providers", NULL);
+    g_print (pdir);
                load_providers_from_dir (pdir, TRUE);
                g_free (pdir);
        }
diff --git a/libgda/libgda-5.0.vapi b/libgda/libgda-5.0.vapi
index cf119cfe7..8cc9a7c94 100644
--- a/libgda/libgda-5.0.vapi
+++ b/libgda/libgda-5.0.vapi
@@ -1,4 +1,4 @@
-/* libgda-5.0.vapi generated by vapigen-0.26, do not modify. */
+/* libgda-5.0.vapi generated by vapigen, do not modify. */
 
 [CCode (cprefix = "Gda", gir_namespace = "Gda", gir_version = "5.0", lower_case_cprefix = "gda_")]
 namespace Gda {
@@ -19,7 +19,8 @@ namespace Gda {
        [Compact]
        public class Binary {
                public long binary_length;
-               public uint8 data;
+               [CCode (array_length = false)]
+               public weak uint8[] data;
                public static void* copy (void* boxed);
                public static void free (owned void* boxed);
                public string to_string (uint maxlen);
@@ -107,8 +108,11 @@ namespace Gda {
                public void add_event (owned Gda.ConnectionEvent event);
                public void add_prepared_statement (Gda.Statement gda_stmt, Gda.PStmt prepared_stmt);
                public bool add_savepoint (string? name) throws GLib.Error;
+               [Version (since = "4.2")]
                public bool async_cancel (uint task_id) throws GLib.Error;
+               [Version (since = "4.2")]
                public GLib.Object async_fetch_result (uint task_id, out Gda.Set last_insert_row) throws 
GLib.Error;
+               [Version (since = "4.2")]
                public uint async_statement_execute (Gda.Statement stmt, Gda.Set? @params, 
Gda.StatementModelUsage model_usage, [CCode (array_length = false)] GLib.Type[]? col_types, bool 
need_last_insert_row) throws GLib.Error;
                public GLib.SList<GLib.Object> batch_execute (Gda.Batch batch, Gda.Set? @params, 
Gda.StatementModelUsage model_usage) throws GLib.Error;
                public bool begin_transaction (string? name, Gda.TransactionIsolation level) throws 
GLib.Error;
@@ -119,17 +123,23 @@ namespace Gda {
                public Gda.ServerOperation create_operation (Gda.ServerOperationType type, Gda.Set? options) 
throws GLib.Error;
                public Gda.SqlParser create_parser ();
                public void del_prepared_statement (Gda.Statement gda_stmt);
+               [Version (since = "4.2.3")]
                public bool delete_row_from_table (string table, string condition_column_name, GLib.Value 
condition_value) throws GLib.Error;
                public bool delete_savepoint (string? name) throws GLib.Error;
                public static GLib.Quark error_quark ();
+               [Version (since = "4.2.3")]
                public int execute_non_select_command (string sql) throws GLib.Error;
+               [Version (since = "4.2.3")]
                public Gda.DataModel execute_select_command (string sql) throws GLib.Error;
                [CCode (has_construct_function = false)]
+               [Version (since = "5.0.2")]
                public Connection.from_dsn (string dsn, string? auth_string, Gda.ConnectionOptions options) 
throws GLib.Error;
                [CCode (has_construct_function = false)]
+               [Version (since = "5.0.2")]
                public Connection.from_string (string? provider_name, string cnc_string, string? auth_string, 
Gda.ConnectionOptions options) throws GLib.Error;
                public unowned string get_authentication ();
                public unowned string get_cnc_string ();
+               [Version (since = "5.2")]
                public bool get_date_format (out GLib.DateDMY out_first, out GLib.DateDMY out_second, out 
GLib.DateDMY out_third, out string out_sep) throws GLib.Error;
                public unowned string get_dsn ();
                public unowned GLib.List<Gda.ConnectionEvent> get_events ();
@@ -140,16 +150,21 @@ namespace Gda {
                public unowned Gda.ServerProvider get_provider ();
                public unowned string get_provider_name ();
                public unowned Gda.TransactionStatus get_transaction_status ();
+               [Version (since = "4.2.3")]
                public bool insert_row_into_table_v (string table, GLib.SList<string> col_names, 
GLib.SList<GLib.Value?> values) throws GLib.Error;
                public bool is_opened ();
                public bool open () throws GLib.Error;
                public static Gda.Connection open_from_dsn (string dsn, string? auth_string, 
Gda.ConnectionOptions options) throws GLib.Error;
                public static Gda.Connection open_from_string (string? provider_name, string cnc_string, 
string? auth_string, Gda.ConnectionOptions options) throws GLib.Error;
                public static Gda.Connection open_sqlite (string? directory, string filename, bool 
auto_unlink);
+               [Version (since = "4.2.3")]
                public Gda.Statement parse_sql_string (string sql, out Gda.Set @params) throws GLib.Error;
                public bool perform_operation (Gda.ServerOperation op) throws GLib.Error;
+               [Version (since = "4.2")]
                public Gda.ConnectionEvent point_available_event (Gda.ConnectionEventType type);
+               [Version (since = "4.0.3")]
                public string quote_sql_identifier (string id);
+               [Version (since = "4.2")]
                public GLib.SList<GLib.Object> repetitive_statement_execute (Gda.RepetitiveStatement rstmt, 
Gda.StatementModelUsage model_usage, [CCode (array_length = false)] GLib.Type[]? col_types, bool 
stop_on_error) throws GLib.Error;
                public bool rollback_savepoint (string? name) throws GLib.Error;
                public bool rollback_transaction (string? name) throws GLib.Error;
@@ -162,6 +177,7 @@ namespace Gda {
                public static void string_split (string string, string out_cnc_params, string out_provider, 
string out_username, string? out_password);
                public bool supports_feature (Gda.ConnectionFeature feature);
                public bool update_meta_store (Gda.MetaContext? context) throws GLib.Error;
+               [Version (since = "4.2.3")]
                public bool update_row_in_table_v (string table, string condition_column_name, GLib.Value 
condition_value, GLib.SList<string> col_names, GLib.SList<GLib.Value?> values) throws GLib.Error;
                public string value_to_sql_string (GLib.Value from);
                [NoAccessorMethod]
@@ -171,16 +187,21 @@ namespace Gda {
                [NoAccessorMethod]
                public string dsn { owned get; set; }
                [NoAccessorMethod]
+               [Version (since = "4.2")]
                public int events_history_size { get; set; }
                [NoAccessorMethod]
+               [Version (since = "5.2.0")]
                public uint execution_slowdown { get; set; }
                [NoAccessorMethod]
+               [Version (since = "4.2.9")]
                public bool execution_timer { get; set; }
                [NoAccessorMethod]
+               [Version (since = "4.2")]
                public bool is_wrapper { get; set; }
                [NoAccessorMethod]
                public Gda.MetaStore meta_store { owned get; set; }
                [NoAccessorMethod]
+               [Version (since = "4.2")]
                public bool monitor_wrapped_in_mainloop { get; set; }
                [NoAccessorMethod]
                public Gda.ServerProvider provider { owned get; set; }
@@ -217,6 +238,7 @@ namespace Gda {
                [CCode (has_construct_function = false)]
                protected DataAccessWrapper ();
                public static Gda.DataModel @new (Gda.DataModel model);
+               [Version (since = "5.2")]
                public bool set_mapping ([CCode (array_length_cname = "mapping_size", array_length_pos = 
1.1)] int[]? mapping);
                [NoAccessorMethod]
                public Gda.DataModel model { owned get; construct; }
@@ -243,6 +265,7 @@ namespace Gda {
                public void clear ();
                public unowned Gda.Row get_row (int row) throws GLib.Error;
                public static Gda.DataModel @new (int cols);
+               [Version (since = "4.2.6")]
                public static Gda.DataModel new_with_g_types_v (int cols, [CCode (array_length = false)] 
GLib.Type[] types);
                public void set_n_columns (int cols);
                [NoAccessorMethod]
@@ -250,26 +273,6 @@ namespace Gda {
                [NoAccessorMethod]
                public bool read_only { get; set; }
        }
-       [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_data_model_bdb_get_type ()")]
-       public class DataModelBdb : GLib.Object, Gda.DataModel {
-               [CCode (has_construct_function = false)]
-               protected DataModelBdb ();
-               public void clean_errors ();
-               [NoWrapper]
-               public virtual GLib.Value? get_data_part (void* data, int length, int part);
-               public unowned GLib.SList<GLib.Error> get_errors ();
-               [NoWrapper]
-               public virtual GLib.Value? get_key_part (void* data, int length, int part);
-               public static Gda.DataModel @new (string filename, string? db_name);
-               [NoWrapper]
-               public virtual bool update_data_part (void* data, int length, int part, GLib.Value value) 
throws GLib.Error;
-               [NoWrapper]
-               public virtual bool update_key_part (void* data, int length, int part, GLib.Value value) 
throws GLib.Error;
-               [NoAccessorMethod]
-               public string db_name { owned get; construct; }
-               [NoAccessorMethod]
-               public string filename { owned get; construct; }
-       }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_data_model_dir_get_type ()")]
        public class DataModelDir : GLib.Object, Gda.DataModel {
                [CCode (has_construct_function = false)]
@@ -298,6 +301,7 @@ namespace Gda {
                [NoAccessorMethod]
                public bool random_access { get; construct; }
                [NoAccessorMethod]
+               [Version (since = "4.2.1")]
                public bool strict { get; set construct; }
                [NoAccessorMethod]
                public void* xml_node { get; construct; }
@@ -307,11 +311,12 @@ namespace Gda {
                [CCode (has_construct_function = false)]
                protected DataModelIter ();
                public static GLib.Quark error_quark ();
-               [Deprecated (since = "5.2")]
+               [Version (deprecated = true, deprecated_since = "5.2")]
                public int get_column_for_param (Gda.Holder param);
                public unowned Gda.Holder get_holder_for_field (int col);
                public int get_row ();
                public unowned GLib.Value? get_value_at (int col);
+               [Version (since = "4.2.10")]
                public unowned GLib.Value? get_value_at_e (int col) throws GLib.Error;
                public unowned GLib.Value? get_value_for_field (string field_name);
                public void invalidate_contents ();
@@ -335,29 +340,35 @@ namespace Gda {
        public class DataModelLdap : GLib.Object, Gda.DataModel {
                [CCode (has_construct_function = false)]
                protected DataModelLdap ();
+               [Version (since = "4.2.8")]
                public static GLib.List<Gda.Column> compute_columns (Gda.Connection cnc, string? attributes);
-               [Deprecated (since = "5.2")]
+               [Version (deprecated = true, deprecated_since = "5.2", since = "4.2.8")]
                public static Gda.DataModel @new (Gda.Connection cnc, string? base_dn, string? filter, 
string? attributes, Gda.LdapSearchScope scope);
                [CCode (has_construct_function = false)]
+               [Version (since = "5.2")]
                public DataModelLdap.with_config (Gda.Connection cnc, string? base_dn, string? filter, 
string? attributes, Gda.LdapSearchScope scope);
+               [NoAccessorMethod]
                public string attributes { construct; }
                [NoAccessorMethod]
                public string @base { owned get; construct; }
                [NoAccessorMethod]
+               public Gda.Connection cnc { owned get; construct; }
+               [NoAccessorMethod]
                public string filter { owned get; construct; }
                [NoAccessorMethod]
                public int scope { get; construct; }
-               [NoAccessorMethod]
-               public bool use_rdn { get; set; }
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_data_pivot_get_type ()")]
        public class DataPivot : GLib.Object, Gda.DataModel {
                [CCode (has_construct_function = false)]
                protected DataPivot ();
+               [Version (since = "5.0")]
                public bool add_data (Gda.DataPivotAggregate aggregate_type, string field, string? alias) 
throws GLib.Error;
+               [Version (since = "5.0")]
                public bool add_field (Gda.DataPivotFieldType field_type, string field, string? alias) throws 
GLib.Error;
                public static GLib.Quark error_quark ();
                public static Gda.DataModel @new (Gda.DataModel? model);
+               [Version (since = "5.0")]
                public bool populate () throws GLib.Error;
                [NoAccessorMethod]
                public Gda.DataModel model { owned get; set; }
@@ -397,8 +408,10 @@ namespace Gda {
                public void set_sample_start (int sample_start);
                public void undelete (int proxy_row);
                [CCode (has_construct_function = false)]
+               [Version (since = "5.2.0")]
                public DataProxy.with_data_model (Gda.DataModel model);
                [NoAccessorMethod]
+               [Version (since = "5.2")]
                public bool cache_changes { get; set; }
                [NoAccessorMethod]
                public bool defer_sync { get; set; }
@@ -423,6 +436,7 @@ namespace Gda {
                protected DataSelect ();
                public bool compute_columns_attributes () throws GLib.Error;
                public bool compute_modification_statements () throws GLib.Error;
+               [Version (since = "4.2.9")]
                public bool compute_modification_statements_ext (Gda.DataSelectConditionType cond_type) 
throws GLib.Error;
                public bool compute_row_selection_condition () throws GLib.Error;
                public static GLib.Quark error_quark ();
@@ -437,7 +451,9 @@ namespace Gda {
                [NoWrapper]
                public virtual bool fetch_random (Gda.Row prow, int rownum) throws GLib.Error;
                public unowned Gda.Connection get_connection ();
+               [Version (since = "5.2.0")]
                public bool prepare_for_offline () throws GLib.Error;
+               [Version (since = "4.2")]
                public bool rerun () throws GLib.Error;
                public bool set_modification_statement (Gda.Statement mod_stmt) throws GLib.Error;
                public bool set_modification_statement_sql (string sql) throws GLib.Error;
@@ -452,6 +468,7 @@ namespace Gda {
                [NoAccessorMethod]
                public Gda.Set exec_params { owned get; construct; }
                [NoAccessorMethod]
+               [Version (since = "4.2.9")]
                public double execution_delay { get; set; }
                [NoAccessorMethod]
                public Gda.Statement insert_stmt { owned get; set; }
@@ -482,8 +499,11 @@ namespace Gda {
                public weak string name;
                public weak string provider;
                [CCode (has_construct_function = false)]
+               [Version (since = "5.2")]
                public DsnInfo ();
+               [Version (since = "5.2")]
                public Gda.DsnInfo copy ();
+               [Version (since = "5.2")]
                public void free ();
        }
        [CCode (cheader_filename = "libgda/libgda.h", copy_function = "g_boxed_copy", free_function = 
"g_boxed_free", lower_case_csuffix = "geometricpoint", type_id = "gda_geometricpoint_get_type ()")]
@@ -500,7 +520,7 @@ namespace Gda {
                protected HandlerBin ();
                public static Gda.DataHandler @new ();
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class HandlerBinPriv {
        }
@@ -510,7 +530,7 @@ namespace Gda {
                protected HandlerBoolean ();
                public static Gda.DataHandler @new ();
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class HandlerBooleanPriv {
        }
@@ -520,7 +540,7 @@ namespace Gda {
                protected HandlerNumerical ();
                public static Gda.DataHandler @new ();
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class HandlerNumericalPriv {
        }
@@ -531,7 +551,7 @@ namespace Gda {
                public static Gda.DataHandler @new ();
                public static Gda.DataHandler new_with_provider (Gda.ServerProvider prov, Gda.Connection? 
cnc);
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class HandlerStringPriv {
        }
@@ -544,9 +564,10 @@ namespace Gda {
                public static Gda.DataHandler @new ();
                public static Gda.DataHandler new_no_locale ();
                public void set_sql_spec (GLib.DateDMY first, GLib.DateDMY sec, GLib.DateDMY third, char 
separator, bool twodigits_years);
+               [Version (since = "4.2.1")]
                public void set_str_spec (GLib.DateDMY first, GLib.DateDMY sec, GLib.DateDMY third, char 
separator, bool twodigits_years);
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class HandlerTimePriv {
        }
@@ -556,7 +577,7 @@ namespace Gda {
                protected HandlerType ();
                public static Gda.DataHandler @new ();
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class HandlerTypePriv {
        }
@@ -569,6 +590,7 @@ namespace Gda {
                public Gda.Holder copy ();
                public static GLib.Quark error_quark ();
                public void force_invalid ();
+               [Version (since = "4.2.10")]
                public void force_invalid_e (owned GLib.Error? error);
                public string get_alphanum_id ();
                public unowned GLib.Value? get_attribute (string attribute);
@@ -581,6 +603,7 @@ namespace Gda {
                public unowned GLib.Value? get_value ();
                public string get_value_str (Gda.DataHandler? dh);
                public bool is_valid ();
+               [Version (since = "4.2.10")]
                public bool is_valid_e () throws GLib.Error;
                public void set_attribute (string attribute, GLib.Value value, GLib.DestroyNotify destroy);
                public bool set_bind (Gda.Holder bind_to) throws GLib.Error;
@@ -611,6 +634,7 @@ namespace Gda {
                [NoAccessorMethod]
                public Gda.DataModel source_model { owned get; set; }
                [NoAccessorMethod]
+               [Version (since = "5.2.0")]
                public bool validate_changes { get; set; }
                public signal void attribute_changed (string att_name, GLib.Value att_value);
                public virtual signal void changed ();
@@ -620,20 +644,27 @@ namespace Gda {
        [CCode (cheader_filename = "libgda/libgda.h", copy_function = "g_boxed_copy", free_function = 
"g_boxed_free", type_id = "gda_meta_context_get_type ()")]
        [Compact]
        public class MetaContext {
-               [CCode (array_length = false, array_null_terminated = true)]
+               [CCode (array_length_cname = "size")]
                public weak string[] column_names;
-               [CCode (array_length = false, array_null_terminated = true)]
+               [CCode (array_length_cname = "size")]
                public weak GLib.Value[] column_values;
                public weak GLib.HashTable<string,GLib.Value?> columns;
                public int size;
                public weak string table_name;
                [CCode (has_construct_function = false)]
+               [Version (since = "5.2")]
                public MetaContext ();
+               [Version (since = "5.2")]
                public Gda.MetaContext copy ();
+               [Version (since = "5.2")]
                public void free ();
+               [Version (since = "5.2")]
                public unowned string get_table ();
+               [Version (since = "5.2")]
                public void set_column (string column, GLib.Value value, Gda.Connection? cnc);
+               [Version (since = "5.2")]
                public void set_columns (GLib.HashTable<string,GLib.Value?> columns, Gda.Connection? cnc);
+               [Version (since = "5.2")]
                public void set_table (string table);
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_meta_store_get_type ()")]
@@ -641,13 +672,16 @@ namespace Gda {
                [CCode (has_construct_function = false)]
                public MetaStore (string? cnc_string);
                public Gda.DataModel create_modify_data_model (string table_name);
+               [Version (since = "4.2.4")]
                public bool declare_foreign_key (Gda.MetaStruct? mstruct, string fk_name, string? catalog, 
string? schema, string table, string? ref_catalog, string? ref_schema, string ref_table, [CCode 
(array_length_cname = "nb_cols", array_length_pos = 8.5, array_length_type = "guint")] string[] colnames, 
[CCode (array_length_cname = "nb_cols", array_length_pos = 8.5, array_length_type = "guint")] string[] 
ref_colnames) throws GLib.Error;
                public static GLib.Quark error_quark ();
                [CCode (cname = "gda_meta_store_extract_v")]
+               [Version (since = "4.2.6")]
                public Gda.DataModel extract (string select_sql, GLib.HashTable<string,GLib.Value?>? vars) 
throws GLib.Error;
                public bool get_attribute_value (string att_name, out string att_value) throws GLib.Error;
                public unowned Gda.Connection get_internal_connection ();
                public int get_version ();
+               [Version (since = "4.2.6")]
                public bool modify_v (string table_name, Gda.DataModel? new_data, string? condition, [CCode 
(array_length_cname = "nvalues", array_length_pos = 3.5)] string[] value_names, [CCode (array_length_cname = 
"nvalues", array_length_pos = 3.5)] GLib.Value[] values) throws GLib.Error;
                public bool modify_with_context (Gda.MetaContext context, Gda.DataModel? new_data) throws 
GLib.Error;
                public bool schema_add_custom_object (string xml_description) throws GLib.Error;
@@ -656,18 +690,25 @@ namespace Gda {
                public Gda.MetaStruct schema_get_structure () throws GLib.Error;
                public bool schema_remove_custom_object (string obj_name) throws GLib.Error;
                public bool set_attribute_value (string att_name, string? att_value) throws GLib.Error;
+               [Version (since = "4.2")]
                public void set_identifiers_style (Gda.SqlIdentifierStyle style);
+               [Version (since = "4.2")]
                public void set_reserved_keywords_func (Gda.SqlReservedKeywordsFunc? func);
+               [Version (since = "4.0.3")]
                public static string sql_identifier_quote (string id, Gda.Connection cnc);
+               [Version (since = "4.2.4")]
                public bool undeclare_foreign_key (Gda.MetaStruct? mstruct, string fk_name, string? catalog, 
string? schema, string table, string? ref_catalog, string? ref_schema, string ref_table) throws GLib.Error;
                [CCode (has_construct_function = false)]
                public MetaStore.with_file (string file_name);
+               [NoAccessorMethod]
                public string catalog { construct; }
                [NoAccessorMethod]
                public Gda.Connection cnc { owned get; construct; }
+               [NoAccessorMethod]
                public string cnc_string { construct; }
+               [NoAccessorMethod]
                public string schema { construct; }
-               public signal void meta_changed (GLib.SList<Gda.MetaStoreChange> changes);
+               public signal void meta_changed (GLib.SList<Gda.MetaStoreChange?> changes);
                public virtual signal void meta_reset ();
                public virtual signal GLib.Error suggest_update (Gda.MetaContext suggest);
        }
@@ -682,7 +723,7 @@ namespace Gda {
                public bool complement_schema (GLib.Value? catalog, GLib.Value? schema) throws GLib.Error;
                public string dump_as_graph (Gda.MetaGraphInfo info) throws GLib.Error;
                public static GLib.Quark error_quark ();
-               public GLib.SList<weak Gda.MetaDbObject> get_all_db_objects ();
+               public GLib.SList<weak Gda.MetaDbObject?> get_all_db_objects ();
                public unowned Gda.MetaDbObject? get_db_object (GLib.Value? catalog, GLib.Value? schema, 
GLib.Value name);
                public bool load_from_xml_file (string? catalog, string? schema, string xml_spec_file) throws 
GLib.Error;
                public bool sort_db_objects (Gda.MetaSortType sort_type) throws GLib.Error;
@@ -702,16 +743,25 @@ namespace Gda {
                public long precision;
                public long width;
                [CCode (has_construct_function = false)]
+               [Version (since = "5.0.2")]
                public Numeric ();
                public Gda.Numeric copy ();
                public void free ();
+               [Version (since = "5.0.2")]
                public double get_double ();
+               [Version (since = "5.0.2")]
                public long get_precision ();
+               [Version (since = "5.0.2")]
                public string? get_string ();
+               [Version (since = "5.0.2")]
                public long get_width ();
+               [Version (since = "5.0.2")]
                public void set_double (double number);
+               [Version (since = "5.0.2")]
                public void set_from_string (string str);
+               [Version (since = "5.0.2")]
                public void set_precision (long precision);
+               [Version (since = "5.0.2")]
                public void set_width (long width);
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_pstmt_get_type ()")]
@@ -740,15 +790,20 @@ namespace Gda {
                public void free ();
                [CCode (has_construct_function = false)]
                public QuarkList.from_string (string string);
+               [Version (since = "5.2.0")]
                public void protect_values ();
                public void remove (string name);
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_repetitive_statement_get_type ()")]
        public class RepetitiveStatement : GLib.Object {
                [CCode (has_construct_function = false)]
+               [Version (since = "4.2")]
                public RepetitiveStatement (Gda.Statement stmt);
+               [Version (since = "4.2")]
                public bool append_set (Gda.Set values, bool make_copy);
+               [Version (since = "4.2")]
                public GLib.SList<weak Gda.Set> get_all_sets ();
+               [Version (since = "4.2")]
                public bool get_template_set (Gda.Set @set) throws GLib.Error;
                [NoAccessorMethod]
                public Gda.Statement statement { owned get; construct; }
@@ -760,8 +815,10 @@ namespace Gda {
                public int get_length ();
                public unowned GLib.Value? get_value (int num);
                public void invalidate_value (GLib.Value value);
+               [Version (since = "4.2.10")]
                public void invalidate_value_e (GLib.Value value, owned GLib.Error? error);
                public bool value_is_valid (GLib.Value value);
+               [Version (since = "4.2.10")]
                public bool value_is_valid_e (GLib.Value value) throws GLib.Error;
                [NoAccessorMethod]
                public int nb_values { set; }
@@ -785,31 +842,43 @@ namespace Gda {
                public uint get_sequence_min_size (string path);
                public unowned string get_sequence_name (string path);
                public uint get_sequence_size (string path);
+               [Version (since = "4.2.6")]
                public string get_sql_identifier_at_path (Gda.Connection? cnc, Gda.ServerProvider? prov, 
string path);
                [CCode (cname = "gda_server_operation_get_value_at_path")]
+               [Version (since = "4.2.6")]
                public unowned GLib.Value? get_value_at (string path);
                public bool is_valid (string? xml_file) throws GLib.Error;
                public bool load_data_from_xml ([CCode (type = "xmlNodePtr")] Xml.Node* node) throws 
GLib.Error;
                public static unowned string op_type_to_string (Gda.ServerOperationType type);
+               [Version (since = "4.2.3")]
                public bool perform_create_database (string? provider) throws GLib.Error;
+               [Version (since = "4.2.3")]
                public bool perform_create_table () throws GLib.Error;
+               [Version (since = "4.2.3")]
                public bool perform_drop_database (string? provider) throws GLib.Error;
+               [Version (since = "4.2.3")]
                public bool perform_drop_table () throws GLib.Error;
-               public static Gda.ServerOperation prepare_create_database (string provider, string? db_name) 
throws GLib.Error;
-               public static Gda.ServerOperation prepare_drop_database (string provider, string? db_name) 
throws GLib.Error;
-               public static Gda.ServerOperation prepare_drop_table (Gda.Connection cnc, string table_name) 
throws GLib.Error;
+               [Version (since = "4.2.3")]
+               public static Gda.ServerOperation? prepare_create_database (string provider, string? db_name) 
throws GLib.Error;
+               [Version (since = "4.2.3")]
+               public static Gda.ServerOperation? prepare_drop_database (string provider, string? db_name) 
throws GLib.Error;
+               [Version (since = "4.2.3")]
+               public static Gda.ServerOperation? prepare_drop_table (Gda.Connection cnc, string table_name) 
throws GLib.Error;
                [NoWrapper]
                public virtual void seq_item_added (string seq_path, int item_index);
                [NoWrapper]
                public virtual void seq_item_remove (string seq_path, int item_index);
                [CCode (cname = "gda_server_operation_set_value_at_path")]
+               [Version (since = "4.2.6")]
                public bool set_value_at (string? value, string path) throws GLib.Error;
+               [Version (since = "4.2")]
                public static Gda.ServerOperationType string_to_op_type (string str);
                [NoAccessorMethod]
                public Gda.Connection connection { owned get; construct; }
                public int op_type { get; construct; }
                [NoAccessorMethod]
                public Gda.ServerProvider provider { owned get; construct; }
+               [NoAccessorMethod]
                public string spec_filename { construct; }
                public signal void sequence_item_added (string seq_path, int item_index);
                public signal void sequence_item_remove (string seq_path, int item_index);
@@ -828,7 +897,7 @@ namespace Gda {
                public virtual bool close_connection (Gda.Connection cnc);
                [NoWrapper]
                public virtual bool commit_transaction (Gda.Connection cnc, string name) throws GLib.Error;
-               public virtual Gda.ServerOperation create_operation (Gda.Connection? cnc, 
Gda.ServerOperationType type, Gda.Set? options) throws GLib.Error;
+               public virtual Gda.ServerOperation? create_operation (Gda.Connection? cnc, 
Gda.ServerOperationType type, Gda.Set? options) throws GLib.Error;
                public virtual Gda.SqlParser create_parser (Gda.Connection? cnc);
                [NoWrapper]
                public virtual bool delete_savepoint (Gda.Connection cnc, string name) throws GLib.Error;
@@ -836,14 +905,14 @@ namespace Gda {
                public virtual string escape_string (Gda.Connection? cnc, string str);
                public string find_file (string inst_dir, string filename);
                public unowned Gda.DataHandler get_data_handler_dbms (Gda.Connection? cnc, string for_type);
-               [Deprecated (since = "5.2")]
+               [Version (deprecated = true, deprecated_since = "5.2")]
                public unowned Gda.DataHandler get_data_handler_default (Gda.Connection? cnc, GLib.Type type, 
string dbms_type);
                public unowned Gda.DataHandler get_data_handler_g_type (Gda.Connection? cnc, GLib.Type 
for_type);
                [NoWrapper]
                public virtual unowned string get_database (Gda.Connection cnc);
                [NoWrapper]
                public virtual unowned string get_def_dbms_type (Gda.Connection cnc, GLib.Type g_type);
-               public unowned string get_default_dbms_type (Gda.Connection? cnc, GLib.Type type);
+               public unowned string? get_default_dbms_type (Gda.Connection? cnc, GLib.Type type);
                public virtual unowned string get_name ();
                public virtual unowned string get_server_version (Gda.Connection cnc);
                public virtual unowned string get_version ();
@@ -859,7 +928,7 @@ namespace Gda {
                public static string load_file_contents (string inst_dir, string data_dir, string filename);
                public bool perform_operation (Gda.Connection? cnc, Gda.ServerOperation op) throws GLib.Error;
                public bool perform_operation_default (Gda.Connection? cnc, Gda.ServerOperation op) throws 
GLib.Error;
-               public virtual string render_operation (Gda.Connection? cnc, Gda.ServerOperation op) throws 
GLib.Error;
+               public virtual string? render_operation (Gda.Connection? cnc, Gda.ServerOperation op) throws 
GLib.Error;
                [NoWrapper]
                public virtual bool rollback_savepoint (Gda.Connection cnc, string name) throws GLib.Error;
                [NoWrapper]
@@ -872,7 +941,7 @@ namespace Gda {
                public virtual string unescape_string (Gda.Connection? cnc, string str);
                public string value_to_sql_string (Gda.Connection? cnc, GLib.Value from);
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class ServerProviderInfo {
        }
@@ -894,28 +963,35 @@ namespace Gda {
                public unowned Gda.Holder get_holder (string holder_id);
                public unowned GLib.Value? get_holder_value (string holder_id);
                public unowned Gda.SetNode get_node (Gda.Holder holder);
+               [Version (since = "4.2")]
                public unowned Gda.Holder get_nth_holder (int pos);
                public unowned Gda.SetSource get_source (Gda.Holder holder);
                public unowned Gda.SetSource get_source_for_model (Gda.DataModel model);
                public bool is_valid () throws GLib.Error;
                public void merge_with_set (Gda.Set set_to_merge);
                [CCode (has_construct_function = false)]
+               [Version (since = "4.2")]
                public Set.read_only (GLib.SList<Gda.Holder> holders);
                public void remove_holder (Gda.Holder holder);
+               [Version (since = "4.2")]
                public void replace_source_model (Gda.SetSource source, Gda.DataModel model);
                [NoAccessorMethod]
                public string description { owned get; set; }
+               [NoAccessorMethod]
                public void* holders { construct; }
                [NoAccessorMethod]
                public string id { owned get; set; }
                [NoAccessorMethod]
                public string name { owned get; set; }
                [NoAccessorMethod]
+               [Version (since = "5.2.0")]
                public bool validate_changes { get; set; }
                public virtual signal void holder_attr_changed (Gda.Holder holder, string attr_name, 
GLib.Value attr_value);
                public virtual signal void holder_changed (Gda.Holder holder);
+               [Version (since = "4.2")]
                public virtual signal void holder_type_set (Gda.Holder holder);
                public virtual signal void public_data_changed ();
+               [Version (since = "4.2")]
                public virtual signal void source_model_changed (void* source);
                public virtual signal GLib.Error validate_holder_change (Gda.Holder holder, GLib.Value 
new_value);
                public virtual signal GLib.Error validate_set ();
@@ -926,14 +1002,23 @@ namespace Gda {
                public weak GLib.SList<Gda.SetNode> nodes;
                public weak Gda.SetSource nodes_source;
                [CCode (has_construct_function = false)]
+               [Version (since = "5.2")]
                public SetGroup (Gda.SetNode node);
+               [Version (since = "5.2")]
                public void add_node (Gda.SetNode node);
+               [Version (since = "5.2")]
                public Gda.SetGroup copy ();
+               [Version (since = "5.2")]
                public void free ();
+               [Version (since = "5.2")]
                public int get_n_nodes ();
+               [Version (since = "5.2")]
                public Gda.SetNode get_node ();
+               [Version (since = "5.2")]
                public unowned GLib.SList<Gda.SetNode> get_nodes ();
+               [Version (since = "5.2")]
                public Gda.SetSource get_source ();
+               [Version (since = "5.2")]
                public void set_source (Gda.SetSource source);
        }
        [CCode (cheader_filename = "libgda/libgda.h", copy_function = "g_boxed_copy", free_function = 
"g_boxed_free", type_id = "gda_set_node_get_type ()")]
@@ -943,14 +1028,23 @@ namespace Gda {
                public int source_column;
                public weak Gda.DataModel source_model;
                [CCode (has_construct_function = false)]
+               [Version (since = "5.2")]
                public SetNode (Gda.Holder holder);
+               [Version (since = "5.2")]
                public Gda.SetNode copy ();
+               [Version (since = "5.2")]
                public void free ();
+               [Version (since = "5.2")]
                public unowned Gda.DataModel get_data_model ();
+               [Version (since = "5.2")]
                public unowned Gda.Holder get_holder ();
+               [Version (since = "5.2")]
                public int get_source_column ();
+               [Version (since = "5.2")]
                public void set_data_model (Gda.DataModel? model);
+               [Version (since = "5.2")]
                public void set_holder (Gda.Holder holder);
+               [Version (since = "5.2")]
                public void set_source_column (int column);
        }
        [CCode (cheader_filename = "libgda/libgda.h", copy_function = "g_boxed_copy", free_function = 
"g_boxed_free", type_id = "gda_set_source_get_type ()")]
@@ -959,13 +1053,21 @@ namespace Gda {
                public weak Gda.DataModel data_model;
                public weak GLib.SList<Gda.SetNode> nodes;
                [CCode (has_construct_function = false)]
+               [Version (since = "5.2")]
                public SetSource (Gda.DataModel model);
+               [Version (since = "5.2")]
                public void add_node (Gda.SetNode node);
+               [Version (since = "5.2")]
                public Gda.SetSource copy ();
+               [Version (since = "5.2")]
                public void free ();
+               [Version (since = "5.2")]
                public unowned Gda.DataModel get_data_model ();
+               [Version (since = "5.2")]
                public int get_n_nodes ();
+               [Version (since = "5.2")]
                public unowned GLib.SList<Gda.SetNode> get_nodes ();
+               [Version (since = "5.2")]
                public void set_data_model (Gda.DataModel model);
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_short_get_type ()")]
@@ -976,31 +1078,58 @@ namespace Gda {
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_sql_builder_get_type ()")]
        public class SqlBuilder : GLib.Object {
                [CCode (has_construct_function = false)]
+               [Version (since = "4.2")]
                public SqlBuilder (Gda.SqlStatementType stmt_type);
+               [Version (since = "4.2")]
                public Gda.SqlBuilderId add_case_v (Gda.SqlBuilderId test_expr, Gda.SqlBuilderId else_expr, 
[CCode (array_length_cname = "args_size", array_length_pos = 4.1)] Gda.SqlBuilderId[] when_array, [CCode 
(array_length_cname = "args_size", array_length_pos = 4.1)] Gda.SqlBuilderId[] then_array);
+               [Version (since = "4.2")]
                public Gda.SqlBuilderId add_cond (Gda.SqlOperatorType op, Gda.SqlBuilderId op1, 
Gda.SqlBuilderId op2, Gda.SqlBuilderId op3);
+               [Version (since = "4.2")]
+               public Gda.SqlBuilderId add_cond_v (Gda.SqlOperatorType op, [CCode (array_length_cname = 
"op_ids_size", array_length_pos = 2.1)] Gda.SqlBuilderId[] op_ids);
+               [Version (since = "4.2")]
                public Gda.SqlBuilderId add_expr_value (Gda.DataHandler? dh, GLib.Value? value);
+               [Version (since = "4.2")]
                public Gda.SqlBuilderId add_field_id (string field_name, string? table_name);
+               [Version (since = "4.2")]
                public void add_field_value_as_gvalue (string field_name, GLib.Value? value);
+               [Version (since = "4.2")]
                public void add_field_value_id (Gda.SqlBuilderId field_id, Gda.SqlBuilderId value_id);
+               [Version (since = "4.2")]
                public Gda.SqlBuilderId add_function_v (string func_name, [CCode (array_length_cname = 
"args_size", array_length_pos = 2.1)] Gda.SqlBuilderId[] args);
+               [Version (since = "4.2")]
                public Gda.SqlBuilderId add_id (string str);
+               [Version (since = "4.2")]
                public Gda.SqlBuilderId add_param (string param_name, GLib.Type type, bool nullok);
+               [Version (since = "4.2")]
                public void compound_add_sub_select_from_builder (Gda.SqlBuilder subselect);
+               [Version (since = "4.2")]
                public void compound_set_type (Gda.SqlStatementCompoundType compound_type);
                public static GLib.Quark error_quark ();
+               [Version (since = "4.2")]
                public Gda.Statement get_statement () throws GLib.Error;
+               [Version (since = "4.2")]
                public Gda.SqlBuilderId import_expression_from_builder (Gda.SqlBuilder query, 
Gda.SqlBuilderId expr_id);
+               [Version (since = "4.2")]
                public void join_add_field (Gda.SqlBuilderId join_id, string field_name);
+               [Version (since = "4.2")]
                public Gda.SqlBuilderId select_add_field (string field_name, string? table_name, string? 
alias);
+               [Version (since = "4.2")]
                public Gda.SqlBuilderId select_add_target (string table_name, string? alias);
+               [Version (since = "4.2")]
                public Gda.SqlBuilderId select_add_target_id (Gda.SqlBuilderId table_id, string? alias);
+               [Version (since = "4.2")]
                public void select_group_by (Gda.SqlBuilderId expr_id);
+               [Version (since = "4.2")]
                public void select_order_by (Gda.SqlBuilderId expr_id, bool asc, string? collation_name);
+               [Version (since = "4.2")]
                public void select_set_distinct (bool distinct, Gda.SqlBuilderId expr_id);
+               [Version (since = "4.2")]
                public void select_set_having (Gda.SqlBuilderId cond_id);
+               [Version (since = "4.2")]
                public void select_set_limit (Gda.SqlBuilderId limit_count_expr_id, Gda.SqlBuilderId 
limit_offset_expr_id);
+               [Version (since = "4.2")]
                public void set_table (string table_name);
+               [Version (since = "4.2")]
                public void set_where (Gda.SqlBuilderId cond_id);
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_sql_parser_get_type ()")]
@@ -1008,49 +1137,47 @@ namespace Gda {
                [CCode (has_construct_function = false)]
                public SqlParser ();
                public static GLib.Quark error_quark ();
-               public Gda.Batch parse_file_as_batch (string filename) throws GLib.Error;
-               public Gda.Statement parse_string (string sql, out string remain) throws GLib.Error;
-               public Gda.Batch parse_string_as_batch (string sql, out string remain) throws GLib.Error;
+               public Gda.Batch? parse_file_as_batch (string filename) throws GLib.Error;
+               public Gda.Statement? parse_string (string sql, out string remain) throws GLib.Error;
+               public Gda.Batch? parse_string_as_batch (string sql, out string remain) throws GLib.Error;
                public void set_overflow_error ();
                public void set_syntax_error ();
                [NoAccessorMethod]
                public int column_error { get; }
                [NoAccessorMethod]
-               public bool debug { set; }
-               [NoAccessorMethod]
                public int line_error { get; }
                [NoAccessorMethod]
                public int mode { get; set; }
                [NoAccessorMethod]
                public int tokenizer_flavour { get; set; }
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class SqlStatement {
                public void compound_set_type (Gda.SqlStatementCompoundType type);
                public void compound_take_stmt (Gda.SqlStatement s);
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class SqlStatementDelete {
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class SqlStatementInsert {
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class SqlStatementSelect {
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class SqlStatementTransaction {
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class SqlStatementUnknown {
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class SqlStatementUpdate {
        }
@@ -1077,17 +1204,30 @@ namespace Gda {
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_thread_wrapper_get_type ()")]
        public class ThreadWrapper : GLib.Object {
                [CCode (has_construct_function = false)]
+               [Version (since = "4.2")]
                public ThreadWrapper ();
+               [Version (since = "4.2")]
                public bool cancel (uint id);
+               [Version (since = "4.2")]
                public ulong connect_raw (void* instance, string sig_name, bool private_thread, bool 
private_job, Gda.ThreadWrapperCallback callback);
+               [Version (since = "4.2")]
                public void disconnect (ulong id);
                public static GLib.Quark error_quark ();
+               [Version (since = "4.2")]
+               public uint execute ([CCode (destroy_notify_pos = 2.1)] owned Gda.ThreadWrapperFunc func, 
void* arg) throws GLib.Error;
+               [Version (since = "4.2")]
                public uint execute_void ([CCode (destroy_notify_pos = 2.1)] owned Gda.ThreadWrapperVoidFunc 
func, void* arg) throws GLib.Error;
+               [Version (since = "4.2")]
                public void* fetch_result (bool may_lock, uint exp_id) throws GLib.Error;
+               [Version (since = "4.2.9")]
                public unowned GLib.IOChannel get_io_channel ();
+               [Version (since = "4.2")]
                public int get_waiting_size ();
+               [Version (since = "4.2")]
                public void iterate (bool may_block);
+               [Version (since = "4.2")]
                public void steal_signal (ulong id);
+               [Version (since = "4.2.9")]
                public void unset_io_channel ();
        }
        [CCode (cheader_filename = "libgda/libgda.h", copy_function = "g_boxed_copy", free_function = 
"g_boxed_free", type_id = "gda_time_get_type ()")]
@@ -1098,9 +1238,11 @@ namespace Gda {
                public ushort minute;
                public ushort second;
                public long timezone;
+               [Version (since = "5.2")]
                public void change_timezone (long ntz);
                public static void* copy (void* boxed);
                public static void free (void* boxed);
+               [Version (since = "4.2")]
                public bool valid ();
        }
        [CCode (cheader_filename = "libgda/libgda.h", copy_function = "g_boxed_copy", free_function = 
"g_boxed_free", type_id = "gda_timestamp_get_type ()")]
@@ -1114,54 +1256,76 @@ namespace Gda {
                public ushort second;
                public long timezone;
                public short year;
+               [Version (since = "5.2")]
                public void change_timezone (long ntz);
                public static void* copy (void* boxed);
                public static void free (void* boxed);
+               [Version (since = "4.2")]
                public bool valid ();
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_transaction_status_get_type ()")]
        public class TransactionStatus : GLib.Object {
-               public weak GLib.List<Gda.TransactionStatusEvent> events;
+               public weak GLib.List<Gda.TransactionStatusEvent?> events;
                public Gda.TransactionIsolation isolation_level;
                public weak string name;
                public Gda.TransactionStatusState state;
                [CCode (has_construct_function = false)]
                public TransactionStatus (string name);
-               public Gda.TransactionStatus find (string str, Gda.TransactionStatusEvent destev);
-               public Gda.TransactionStatus find_current (Gda.TransactionStatusEvent destev, bool 
unnamed_only);
+               public Gda.TransactionStatus? find (string str, Gda.TransactionStatusEvent destev);
+               public Gda.TransactionStatus? find_current (Gda.TransactionStatusEvent destev, bool 
unnamed_only);
                public void free_events (Gda.TransactionStatusEvent event, bool free_after);
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_tree_get_type ()")]
        public class Tree : GLib.Object {
                [CCode (has_construct_function = false)]
+               [Version (since = "4.2")]
                public Tree ();
+               [Version (since = "4.2")]
                public void add_manager (Gda.TreeManager manager);
+               [Version (since = "4.2")]
                public void clean ();
+               [Version (since = "4.2")]
                public void dump (Gda.TreeNode? node, void* stream);
                public static GLib.Quark error_quark ();
-               public unowned Gda.TreeNode get_node (string tree_path, bool use_names);
+               [Version (since = "4.2")]
+               public unowned Gda.TreeNode? get_node (string tree_path, bool use_names);
+               [Version (since = "4.2")]
                public unowned Gda.TreeManager get_node_manager (Gda.TreeNode node);
+               [Version (since = "4.2")]
                public string get_node_path (Gda.TreeNode node);
+               [Version (since = "4.2")]
                public GLib.SList<weak Gda.TreeNode> get_nodes_in_path (string? tree_path, bool use_names);
+               [Version (since = "4.2")]
                public void set_attribute (string attribute, GLib.Value value, GLib.DestroyNotify destroy);
+               [Version (since = "4.2")]
                public bool update_all () throws GLib.Error;
+               [Version (since = "4.2.8")]
                public bool update_children (Gda.TreeNode? node) throws GLib.Error;
+               [Version (since = "4.2")]
                public bool update_part (Gda.TreeNode node) throws GLib.Error;
                [NoAccessorMethod]
                public bool is_list { get; }
+               [Version (since = "4.2")]
                public virtual signal void node_changed (Gda.TreeNode node);
+               [Version (since = "4.2")]
                public virtual signal void node_deleted (string node_path);
+               [Version (since = "4.2")]
                public virtual signal void node_has_child_toggled (Gda.TreeNode node);
+               [Version (since = "4.2")]
                public virtual signal void node_inserted (Gda.TreeNode node);
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_tree_manager_get_type ()")]
        public class TreeManager : GLib.Object {
                [CCode (has_construct_function = false)]
                protected TreeManager ();
+               [Version (since = "4.2")]
                public void add_manager (Gda.TreeManager sub);
+               [Version (since = "4.2")]
                public void add_new_node_attribute (string attribute, GLib.Value? value);
+               [Version (since = "4.2")]
                public Gda.TreeNode create_node (Gda.TreeNode? parent, string? name);
                public static GLib.Quark error_quark ();
+               [Version (since = "4.2")]
                public unowned GLib.SList<Gda.TreeManager> get_managers ();
                [NoAccessorMethod]
                public void* func { get; set construct; }
@@ -1171,55 +1335,65 @@ namespace Gda {
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_tree_mgr_columns_get_type ()")]
        public class TreeMgrColumns : Gda.TreeManager {
                [CCode (has_construct_function = false, type = "GdaTreeManager*")]
+               [Version (since = "4.2")]
                public TreeMgrColumns (Gda.Connection cnc, string schema, string table_name);
                [NoAccessorMethod]
                public Gda.Connection connection { owned get; construct; }
                [NoAccessorMethod]
+               [Version (since = "4.2.4")]
                public Gda.MetaStore meta_store { owned get; construct; }
+               [NoAccessorMethod]
                public string schema { construct; }
+               [NoAccessorMethod]
                public string table_name { construct; }
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class TreeMgrColumnsPriv {
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_tree_mgr_label_get_type ()")]
        public class TreeMgrLabel : Gda.TreeManager {
                [CCode (has_construct_function = false, type = "GdaTreeManager*")]
+               [Version (since = "4.2")]
                public TreeMgrLabel (string label);
+               [NoAccessorMethod]
                public string label { construct; }
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class TreeMgrLabelPriv {
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_tree_mgr_ldap_get_type ()")]
        public class TreeMgrLdap : Gda.TreeManager {
                [CCode (has_construct_function = false, type = "GdaTreeManager*")]
+               [Version (since = "4.2.8")]
                public TreeMgrLdap (Gda.Connection cnc, string? dn);
                [NoAccessorMethod]
                public string dn { owned get; construct; }
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class TreeMgrLdapPriv {
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_tree_mgr_schemas_get_type ()")]
        public class TreeMgrSchemas : Gda.TreeManager {
                [CCode (has_construct_function = false, type = "GdaTreeManager*")]
+               [Version (since = "4.2")]
                public TreeMgrSchemas (Gda.Connection cnc);
                [NoAccessorMethod]
                public Gda.Connection connection { owned get; construct; }
                [NoAccessorMethod]
+               [Version (since = "4.2.4")]
                public Gda.MetaStore meta_store { owned get; construct; }
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class TreeMgrSchemasPriv {
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_tree_mgr_select_get_type ()")]
        public class TreeMgrSelect : Gda.TreeManager {
                [CCode (has_construct_function = false, type = "GdaTreeManager*")]
+               [Version (since = "4.2")]
                public TreeMgrSelect (Gda.Connection cnc, Gda.Statement stmt, Gda.Set @params);
                [NoAccessorMethod]
                public Gda.Connection connection { owned get; construct; }
@@ -1228,45 +1402,60 @@ namespace Gda {
                [NoAccessorMethod]
                public Gda.Statement statement { owned get; construct; }
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class TreeMgrSelectPriv {
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_tree_mgr_tables_get_type ()")]
        public class TreeMgrTables : Gda.TreeManager {
                [CCode (has_construct_function = false, type = "GdaTreeManager*")]
+               [Version (since = "4.2")]
                public TreeMgrTables (Gda.Connection cnc, string? schema);
                [NoAccessorMethod]
                public Gda.Connection connection { owned get; construct; }
                [NoAccessorMethod]
+               [Version (since = "4.2.4")]
                public Gda.MetaStore meta_store { owned get; construct; }
+               [NoAccessorMethod]
                public string schema { construct; }
        }
-       [CCode (cheader_filename = "libgda/libgda.h")]
+       [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
        public class TreeMgrTablesPriv {
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_tree_node_get_type ()")]
        public class TreeNode : GLib.Object {
                [CCode (has_construct_function = false)]
+               [Version (since = "4.2")]
                public TreeNode (string? name);
                [NoWrapper]
                public virtual void dump_children (string prefix, GLib.StringBuilder in_string);
                [NoWrapper]
                public virtual string dump_header ();
                public static GLib.Quark error_quark ();
+               [Version (since = "4.2")]
                public unowned GLib.Value? fetch_attribute (string attribute);
+               [Version (since = "4.2")]
                public unowned Gda.TreeNode get_child_index (int index);
+               [Version (since = "4.2")]
                public unowned Gda.TreeNode get_child_name (string name);
+               [Version (since = "4.2")]
                public GLib.SList<weak Gda.TreeNode> get_children ();
+               [Version (since = "4.2")]
                public unowned GLib.Value? get_node_attribute (string attribute);
+               [Version (since = "4.2")]
                public unowned Gda.TreeNode get_parent ();
+               [Version (since = "4.2")]
                public void set_node_attribute (string attribute, GLib.Value? value, GLib.DestroyNotify 
destroy);
                [NoAccessorMethod]
                public string name { owned get; set; }
+               [Version (since = "4.2")]
                public virtual signal void node_changed (Gda.TreeNode node);
+               [Version (since = "4.2")]
                public virtual signal void node_deleted (string relative_path);
+               [Version (since = "4.2")]
                public virtual signal void node_has_child_toggled (Gda.TreeNode node);
+               [Version (since = "4.2")]
                public virtual signal void node_inserted (Gda.TreeNode node);
        }
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_ushort_get_type ()")]
@@ -1293,6 +1482,7 @@ namespace Gda {
        [CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_data_handler_get_type ()")]
        public interface DataHandler : GLib.Object {
                public abstract bool accepts_g_type (GLib.Type type);
+               [Version (since = "4.2.3")]
                public static unowned Gda.DataHandler get_default (GLib.Type for_type);
                public abstract unowned string get_descr ();
                public abstract GLib.Value? get_sane_init_value (GLib.Type type);
@@ -1308,12 +1498,13 @@ namespace Gda {
                public abstract int append_row () throws GLib.Error;
                [CCode (vfunc_name = "i_append_values")]
                public abstract int append_values (GLib.List<GLib.Value?>? values) throws GLib.Error;
-               public Gda.DataModelArray array_copy_model () throws GLib.Error;
-               public Gda.DataModelArray array_copy_model_ext ([CCode (array_length_cname = "ncols", 
array_length_pos = 0.5)] int[] cols) throws GLib.Error;
+               public Gda.DataModelArray? array_copy_model () throws GLib.Error;
+               [Version (since = "5.2.0")]
+               public Gda.DataModelArray? array_copy_model_ext ([CCode (array_length_cname = "ncols", 
array_length_pos = 0.5)] int[] cols) throws GLib.Error;
                [CCode (vfunc_name = "i_create_iter")]
                public abstract Gda.DataModelIter create_iter ();
                [CCode (vfunc_name = "i_describe_column")]
-               public abstract unowned Gda.Column describe_column (int col);
+               public abstract unowned Gda.Column? describe_column (int col);
                public void dump (void* to_stream);
                public string dump_as_string ();
                public static GLib.Quark error_quark ();
@@ -1325,9 +1516,11 @@ namespace Gda {
                [CCode (vfunc_name = "i_get_attributes_at")]
                public abstract Gda.ValueAttribute get_attributes_at (int col, int row);
                public int get_column_index (string name);
+               [Version (since = "3.2")]
                public unowned string get_column_name (int col);
                public unowned string get_column_title (int col);
                [CCode (array_length = false, array_null_terminated = true, vfunc_name = "i_get_exceptions")]
+               [Version (since = "4.2.6")]
                public abstract unowned GLib.Error[] get_exceptions ();
                [CCode (vfunc_name = "i_get_n_columns")]
                public abstract int get_n_columns ();
@@ -1344,25 +1537,26 @@ namespace Gda {
                public bool import_from_model (Gda.DataModel from, bool overwrite, GLib.HashTable<int,int>? 
cols_trans) throws GLib.Error;
                public bool import_from_string (string string, GLib.HashTable<int,int>? cols_trans, Gda.Set 
options) throws GLib.Error;
                [CCode (vfunc_name = "i_iter_at_row")]
-               [Deprecated (since = "5.2")]
+               [Version (deprecated = true, deprecated_since = "5.2")]
                public abstract bool iter_at_row (Gda.DataModelIter iter, int row);
                [CCode (vfunc_name = "i_iter_next")]
-               [Deprecated (since = "5.2")]
+               [Version (deprecated = true, deprecated_since = "5.2")]
                public abstract bool iter_next (Gda.DataModelIter iter);
                [CCode (vfunc_name = "i_iter_prev")]
-               [Deprecated (since = "5.2")]
+               [Version (deprecated = true, deprecated_since = "5.2")]
                public abstract bool iter_prev (Gda.DataModelIter iter);
                [CCode (vfunc_name = "i_iter_set_value")]
-               [Deprecated (since = "5.2")]
+               [Version (deprecated = true, deprecated_since = "5.2")]
                public abstract bool iter_set_value (Gda.DataModelIter iter, int col, GLib.Value value) 
throws GLib.Error;
                [CCode (vfunc_name = "i_remove_row")]
                public abstract bool remove_row (int row) throws GLib.Error;
                [CCode (vfunc_name = "i_send_hint")]
                public abstract void send_hint (Gda.DataModelHint hint, GLib.Value? hint_value);
+               [Version (since = "3.2")]
                public void set_column_name (int col, string name);
                public void set_column_title (int col, string title);
                [CCode (vfunc_name = "i_set_notify")]
-               [Deprecated (since = "5.2")]
+               [Version (deprecated = true, deprecated_since = "5.2")]
                public abstract void set_notify (bool do_notify_changes);
                [CCode (vfunc_name = "i_set_value_at")]
                public abstract bool set_value_at (int col, int row, GLib.Value value) throws GLib.Error;
@@ -1409,7 +1603,7 @@ namespace Gda {
                public weak string obj_short_name;
                public weak string obj_full_name;
                public weak string obj_owner;
-               public weak GLib.SList<Gda.MetaDbObject> depend_list;
+               public weak GLib.SList<Gda.MetaDbObject?> depend_list;
                [CCode (cname = "extra.meta_table")]
                public Gda.MetaTable extra_meta_table;
                [CCode (cname = "extra.meta_view")]
@@ -1423,11 +1617,11 @@ namespace Gda {
        }
        [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        public struct MetaTable {
-               public weak GLib.SList<Gda.MetaTableColumn> columns;
+               public weak GLib.SList<Gda.MetaTableColumn?> columns;
                public int pk_cols_array;
                public int pk_cols_nb;
-               public weak GLib.SList<Gda.MetaTableForeignKey> reverse_fk_list;
-               public weak GLib.SList<Gda.MetaTableForeignKey> fk_list;
+               public weak GLib.SList<Gda.MetaTableForeignKey?> reverse_fk_list;
+               public weak GLib.SList<Gda.MetaTableForeignKey?> fk_list;
        }
        [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        public struct MetaTableColumn {
@@ -1460,10 +1654,10 @@ namespace Gda {
        }
        [CCode (cheader_filename = "libgda/libgda.h")]
        public struct Mutex : GLib.RecMutex {
-               public static void free (Gda.Mutex mutex);
-               public static void @lock (Gda.Mutex mutex);
-               public static bool trylock (Gda.Mutex mutex);
-               public static void unlock (Gda.Mutex mutex);
+               public void free ();
+               public void @lock ();
+               public bool trylock ();
+               public void unlock ();
        }
        [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        public struct ProviderInfo {
@@ -1528,8 +1722,8 @@ namespace Gda {
                public uint32 format;
                public ushort gtrid_length;
                public ushort bqual_length;
-               [CCode (array_length = false, array_null_terminated = true)]
-               public weak char[] data;
+               [CCode (array_length = false)]
+               public weak char data[128];
                public string to_string ();
        }
        [CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_BATCH_CONFLICTING_PARAMETER_", 
has_type_id = false)]
@@ -1913,7 +2107,8 @@ namespace Gda {
                BITNOT,
                ILIKE,
                NOTLIKE,
-               NOTILIKE
+               NOTILIKE,
+               GLOB
        }
        [CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SQL_PARSER_", has_type_id = false)]
        public enum SqlParserError {
@@ -1942,7 +2137,7 @@ namespace Gda {
                LEFT,
                RIGHT,
                FULL;
-               public static unowned string to_string (Gda.SqlSelectJoinType type);
+               public unowned string to_string ();
        }
        [CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SQL_STATEMENT_COMPOUND_", has_type_id = 
false)]
        public enum SqlStatementCompoundType {
@@ -2105,6 +2300,8 @@ namespace Gda {
        [CCode (cheader_filename = "libgda/libgda.h", has_target = false)]
        public delegate void ThreadWrapperCallback (Gda.ThreadWrapper wrapper, void* instance, string 
signame, int n_param_values, GLib.Value param_values, void* gda_reserved, void* data);
        [CCode (cheader_filename = "libgda/libgda.h", has_target = false)]
+       public delegate void* ThreadWrapperFunc (void* arg) throws GLib.Error;
+       [CCode (cheader_filename = "libgda/libgda.h", has_target = false)]
        public delegate void ThreadWrapperVoidFunc (void* arg) throws GLib.Error;
        [CCode (cheader_filename = "libgda/libgda.h", cname = "GDA_ATTRIBUTE_AUTO_INCREMENT")]
        public const string ATTRIBUTE_AUTO_INCREMENT;
@@ -2131,10 +2328,11 @@ namespace Gda {
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static string alphanum_to_text (string text);
        [CCode (array_length = false, array_null_terminated = true, cheader_filename = "libgda/libgda.h")]
-       public static string[] completion_list_get (Gda.Connection cnc, string sql, int start, int end);
+       public static string[]? completion_list_get (Gda.Connection cnc, string sql, int start, int end);
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static bool compute_dml_statements (Gda.Connection cnc, Gda.Statement select_stmt, bool 
require_pk, owned Gda.Statement? insert_stmt, owned Gda.Statement? update_stmt, owned Gda.Statement? 
delete_stmt) throws GLib.Error;
        [CCode (cheader_filename = "libgda/libgda.h")]
+       [Version (since = "4.2.3")]
        public static unowned Gda.DataHandler data_handler_get_default (GLib.Type for_type);
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static void dsn_split (string string, string out_dsn, string out_username, string 
out_password);
@@ -2143,20 +2341,30 @@ namespace Gda {
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static unowned string g_type_to_string (GLib.Type type);
        [CCode (cheader_filename = "libgda/libgda.h")]
+       public static string get_application_exec_path (string app_name);
+       [CCode (cheader_filename = "libgda/libgda.h")]
        public static bool identifier_equal (string id1, string id2);
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static uint identifier_hash (string id);
        [CCode (cheader_filename = "libgda/libgda.h")]
+       public static void init ();
+       [CCode (cheader_filename = "libgda/libgda.h")]
+       [Version (since = "4.2.3")]
+       public static void locale_changed ();
+       [CCode (cheader_filename = "libgda/libgda.h")]
        public static void log_disable ();
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static void log_enable ();
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static bool log_is_enabled ();
        [CCode (cheader_filename = "libgda/libgda.h")]
+       [Version (since = "5.2")]
        public static bool parse_formatted_date (GLib.Date gdate, string value, GLib.DateDMY first, 
GLib.DateDMY second, GLib.DateDMY third, char sep);
        [CCode (cheader_filename = "libgda/libgda.h")]
+       [Version (since = "5.2")]
        public static bool parse_formatted_time (Gda.Time timegda, string value, char sep);
        [CCode (cheader_filename = "libgda/libgda.h")]
+       [Version (since = "5.2")]
        public static bool parse_formatted_timestamp (Gda.Timestamp timestamp, string value, GLib.DateDMY 
first, GLib.DateDMY second, GLib.DateDMY third, char sep);
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static bool parse_iso8601_date (GLib.Date gdate, string value);
@@ -2165,6 +2373,7 @@ namespace Gda {
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static bool parse_iso8601_timestamp (Gda.Timestamp timestamp, string value);
        [CCode (cheader_filename = "libgda/libgda.h")]
+       [Version (since = "4.2.9")]
        public static bool rewrite_statement_for_null_parameters (Gda.Statement stmt, Gda.Set @params, owned 
Gda.Statement? out_stmt) throws GLib.Error;
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static bool rfc1738_decode (string string);
@@ -2173,9 +2382,10 @@ namespace Gda {
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static Gda.Statement select_alter_select_for_empty (Gda.Statement stmt) throws GLib.Error;
        [CCode (cheader_filename = "libgda/libgda.h")]
+       [Version (since = "4.0.3")]
        public static string sql_identifier_quote (string id, Gda.Connection? cnc, Gda.ServerProvider? prov, 
bool meta_store_convention, bool force_quotes);
        [CCode (array_length = false, array_null_terminated = true, cheader_filename = "libgda/libgda.h")]
-       public static string[] sql_identifier_split (string id);
+       public static string[]? sql_identifier_split (string id);
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static Gda.SqlOperatorType sql_operation_operator_from_string (string op);
        [CCode (cheader_filename = "libgda/libgda.h")]
@@ -2187,6 +2397,7 @@ namespace Gda {
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static string text_to_alphanum (string text);
        [CCode (cheader_filename = "libgda/libgda.h")]
+       [Version (since = "4.2.6")]
        public static bool utility_check_data_model_v (Gda.DataModel model, [CCode (array_length_cname = 
"nbcols", array_length_pos = 1.5)] GLib.Type[] types);
        [CCode (cheader_filename = "libgda/libgda.h")]
        public static bool utility_data_model_dump_data_to_xml (Gda.DataModel model, [CCode (type = 
"xmlNodePtr")] Xml.Node* parent, [CCode (array_length_cname = "nb_cols", array_length_pos = 3.5)] int[]? 
cols, [CCode (array_length_cname = "nb_rows", array_length_pos = 4.5)] int[]? rows, bool use_col_ids);
diff --git a/providers/postgres/gda-postgres-ddl.c b/providers/postgres/gda-postgres-ddl.c
index 60f7382ac..25ccad872 100644
--- a/providers/postgres/gda-postgres-ddl.c
+++ b/providers/postgres/gda-postgres-ddl.c
@@ -840,7 +840,7 @@ gda_postgres_render_CREATE_USER (GdaServerProvider *provider, GdaConnection *cnc
                        g_string_append (string, " WITH");
                        with = TRUE;
                }
-               g_string_append (string, " CREATEDB");
+               g_string_append (string, " CREATE DATABASE");
        }
 
        value = gda_server_operation_get_value_at (op, "/USER_DEF_P/CAP_CREATEROLE");
@@ -849,7 +849,7 @@ gda_postgres_render_CREATE_USER (GdaServerProvider *provider, GdaConnection *cnc
                        g_string_append (string, " WITH");
                        with = TRUE;
                }
-               g_string_append (string, " CREATEROLE");
+               g_string_append (string, " CREATE ROLE");
        }
 
        value = gda_server_operation_get_value_at (op, "/USER_DEF_P/CAP_CREATEUSER");
@@ -858,7 +858,7 @@ gda_postgres_render_CREATE_USER (GdaServerProvider *provider, GdaConnection *cnc
                        g_string_append (string, " WITH");
                        with = TRUE;
                }
-               g_string_append (string, " CREATEUSER");
+               g_string_append (string, " CREATE USER");
        }
 
        value = gda_server_operation_get_value_at (op, "/USER_DEF_P/CAP_INHERIT");
diff --git a/providers/sqlcipher/Makefile.am b/providers/sqlcipher/Makefile.am
index ab7100aa4..bb9693f36 100644
--- a/providers/sqlcipher/Makefile.am
+++ b/providers/sqlcipher/Makefile.am
@@ -55,9 +55,7 @@ pkgconfig_DATA = libgda-sqlcipher-5.0.pc
 
 EXTRA_DIST = $(xml_in_files) \
        libgda-sqlcipher-5.0.pc.in \
-       sqlcipher.patch \
+       sqlite3.c sqlite3.h sqlite3ext.h \
        COPYING.sqlcipher
 
-CLEANFILES = $(sqlite_sources)
-
 DISTCLEANFILES = $(xml_DATA)
diff --git a/tests/vala/CheckTable.vala b/tests/vala/CheckTable.vala
index 83ab799f2..5626a13e9 100644
--- a/tests/vala/CheckTable.vala
+++ b/tests/vala/CheckTable.vala
@@ -305,6 +305,9 @@ namespace Check {
                                        break;
                                }
                        }
+                       // FIXME: PostgreSQL provider issue #139 to get metadata for field's default values
+                       if (table.connection.get_provider ().get_name () == "PostgreSQL")
+                               found++;
 
                        // DbFieldInfo
                        var fl = new FieldInfo ();


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