[libgda] Tracking API changes by adding Gda-5.0.gir and libgda-5.0.vapi files



commit a8f0f2b4b7e5875ba9ecc87fec9709713123e53a
Author: Daniel Espinosa <despinosa src gnome org>
Date:   Wed Dec 28 10:08:39 2011 -0600

    Tracking API changes by adding Gda-5.0.gir and libgda-5.0.vapi files

 libgda/Gda-5.0.gir     |24928 ++++++++++++++++++++++++++++++++++++++++++++++++
 libgda/Makefile.am     |    4 +-
 libgda/libgda-5.0.vapi | 2142 +++++
 3 files changed, 27071 insertions(+), 3 deletions(-)
---
diff --git a/libgda/Gda-5.0.gir b/libgda/Gda-5.0.gir
new file mode 100644
index 0000000..76a78cc
--- /dev/null
+++ b/libgda/Gda-5.0.gir
@@ -0,0 +1,24928 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0";
+            xmlns:c="http://www.gtk.org/introspection/c/1.0";
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0";>
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="libxml2" version="2.0"/>
+  <c:include name="libgda/libgda.h"/>
+  <namespace name="Gda"
+             version="5.0"
+             shared-library="libgda-5.0.so.4"
+             c:identifier-prefixes="Gda"
+             c:symbol-prefixes="gda">
+    <alias name="SqlBuilderId" c:type="GdaSqlBuilderId">
+      <type name="guint" c:type="guint"/>
+    </alias>
+    <alias name="SqlErrorType" c:type="GdaSqlErrorType">
+      <type name="SqlError" c:type="GdaSqlError"/>
+    </alias>
+    <constant name="ATTRIBUTE_AUTO_INCREMENT"
+              value="__gda_attr_autoinc"
+              c:type="GDA_ATTRIBUTE_AUTO_INCREMENT">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ATTRIBUTE_DESCRIPTION"
+              value="__gda_attr_descr"
+              c:type="GDA_ATTRIBUTE_DESCRIPTION">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ATTRIBUTE_IS_DEFAULT"
+              value="__gda_attr_is_default"
+              c:type="GDA_ATTRIBUTE_IS_DEFAULT">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ATTRIBUTE_NAME"
+              value="__gda_attr_name"
+              c:type="GDA_ATTRIBUTE_NAME">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ATTRIBUTE_NUMERIC_PRECISION"
+              value="__gda_attr_numeric_precision"
+              c:type="GDA_ATTRIBUTE_NUMERIC_PRECISION">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ATTRIBUTE_NUMERIC_SCALE"
+              value="__gda_attr_numeric_scale"
+              c:type="GDA_ATTRIBUTE_NUMERIC_SCALE">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ATTRIBUTE_TREE_NODE_UNKNOWN_CHILDREN"
+              value="__gda_attr_tnuchild"
+              c:type="GDA_ATTRIBUTE_TREE_NODE_UNKNOWN_CHILDREN">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <record name="AttributesManager"
+            c:type="GdaAttributesManager"
+            disguised="1">
+      <method name="clear" c:identifier="gda_attributes_manager_clear">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ptr" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gda_attributes_manager_copy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="from" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+          <parameter name="to_mgr" transfer-ownership="none">
+            <type name="AttributesManager" c:type="GdaAttributesManager*"/>
+          </parameter>
+          <parameter name="to" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="gda_attributes_manager_foreach"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ptr" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none" closure="2">
+            <type name="AttributesManagerFunc"
+                  c:type="GdaAttributesManagerFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="gda_attributes_manager_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get" c:identifier="gda_attributes_manager_get">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="ptr" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="att_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set" c:identifier="gda_attributes_manager_set">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ptr" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="att_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_full" c:identifier="gda_attributes_manager_set_full">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ptr" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="att_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <function name="new"
+                c:identifier="gda_attributes_manager_new"
+                introspectable="0">
+        <return-value>
+          <type name="AttributesManager" c:type="GdaAttributesManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_objects" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="signal_func" transfer-ownership="none" closure="2">
+            <type name="AttributesManagerSignal"
+                  c:type="GdaAttributesManagerSignal"/>
+          </parameter>
+          <parameter name="signal_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <callback name="AttributesManagerFunc" c:type="GdaAttributesManagerFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="att_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="AttributesManagerSignal"
+              c:type="GdaAttributesManagerSignal">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="att_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Batch"
+           c:symbol-prefix="batch"
+           c:type="GdaBatch"
+           parent="GObject.Object"
+           glib:type-name="GdaBatch"
+           glib:get-type="gda_batch_get_type"
+           glib:type-struct="BatchClass">
+      <constructor name="new" c:identifier="gda_batch_new">
+        <doc xml:whitespace="preserve">Creates a new #GdaBatch object</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new object</doc>
+          <type name="Batch" c:type="GdaBatch*"/>
+        </return-value>
+      </constructor>
+      <function name="error_quark" c:identifier="gda_batch_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <virtual-method name="changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="changed_stmt" transfer-ownership="none">
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_statement" c:identifier="gda_batch_add_statement">
+        <doc xml:whitespace="preserve">Add @stmt to the list of statements managed by @batch. A #GdaStatement object can be
+added multiple times to a #GdaBatch object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a statement to add to @batch's statements list</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gda_batch_copy">
+        <doc xml:whitespace="preserve">Copy constructor</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a the new copy of @orig</doc>
+          <type name="Batch" c:type="GdaBatch*"/>
+        </return-value>
+      </method>
+      <method name="get_parameters"
+              c:identifier="gda_batch_get_parameters"
+              throws="1">
+        <doc xml:whitespace="preserve">Get a new #GdaSet object which groups all the execution parameters
+which @batch needs for all the statements it includes.
+This new object is returned though @out_params.
+
+Note that if @batch does not need any parameter, then @out_params is set to %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="out_params"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a place to store a new #GdaSet object, or %NULL</doc>
+            <type name="Set" c:type="GdaSet**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_statements" c:identifier="gda_batch_get_statements">
+        <doc xml:whitespace="preserve">Get a list of the #GdaStatement objects contained in @batch</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a list of #GdaStatement which should not be modified.</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Statement"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="remove_statement"
+              c:identifier="gda_batch_remove_statement">
+        <doc xml:whitespace="preserve">Removes @stmt from the list of statements managed by @batch. If @stmt is present several
+times in @batch's statements' list, then only the first one is removed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a statement to remove from @batch's statements list</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="serialize" c:identifier="gda_batch_serialize">
+        <doc xml:whitespace="preserve">Creates a string representing the contents of @batch.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string containing the serialized version of @batch</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="BatchPrivate" c:type="GdaBatchPrivate*"/>
+      </field>
+      <glib:signal name="changed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted whenever a #GdaStatement in the @batch object changes</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="changed_stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the statement which has been changed</doc>
+            <type name="GObject.Object"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BatchClass"
+            c:type="GdaBatchClass"
+            glib:is-gtype-struct-for="Batch">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="batch" transfer-ownership="none">
+              <type name="Batch" c:type="GdaBatch*"/>
+            </parameter>
+            <parameter name="changed_stmt" transfer-ownership="none">
+              <type name="Statement" c:type="GdaStatement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="BatchError" c:type="GdaBatchError">
+      <member name="batch_conflicting_parameter_error"
+              value="0"
+              c:identifier="GDA_BATCH_CONFLICTING_PARAMETER_ERROR"/>
+    </enumeration>
+    <record name="BatchPrivate" c:type="GdaBatchPrivate" disguised="1">
+    </record>
+    <record name="Binary"
+            c:type="GdaBinary"
+            glib:type-name="GdaBinary"
+            glib:get-type="gda_binary_get_type"
+            c:symbol-prefix="binary">
+      <field name="data" writable="1">
+        <type name="guint8" c:type="guchar*"/>
+      </field>
+      <field name="binary_length" writable="1">
+        <type name="glong" c:type="glong"/>
+      </field>
+      <method name="to_string" c:identifier="gda_binary_to_string">
+        <doc xml:whitespace="preserve">Converts all the non printable characters of bin-&gt;data into the "\xyz" representation
+where "xyz" is the octal representation of the byte, and the '\' (backslash) character
+is converted to "\\". Printable characters (defined by g_ascii_isprint()) as well as newline
+character are not converted.
+
+Note that the backslash and newline characters are considered as printable characters and
+will not be represented by the "\xyz" representation.
+
+Use this function to get a representation as much readable by humans as possible of a binary
+chunk. Note that this function is internally called when transforming a binary value to
+a string for example when using g_value_transform() or gda_value_stringify().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string from @bin</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="maxlen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a maximum len used to truncate, or %0 for no maximum length</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <function name="copy" c:identifier="gda_binary_copy">
+        <doc xml:whitespace="preserve">Creates a new #GdaBinary structure from an existing one.
+
+Free-function: gda_binary_free</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GdaBinary which contains a copy of information in @boxed.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="boxed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">source to get a copy from.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="free" c:identifier="gda_binary_free">
+        <doc xml:whitespace="preserve">Deallocates all memory associated to the given #GdaBinary.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="boxed" transfer-ownership="full">
+            <doc xml:whitespace="preserve">#GdaBinary to free.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <record name="Blob"
+            c:type="GdaBlob"
+            glib:type-name="GdaBlob"
+            glib:get-type="gda_blob_get_type"
+            c:symbol-prefix="blob">
+      <doc xml:whitespace="preserve">Represents some binary data, accessed through a #GdaBlobOp object.
+ op is generally set up by database providers when giving access to an existing BLOB in
+a database, but can be modified if needed using gda_blob_set_op().</doc>
+      <field name="data" writable="1">
+        <type name="Binary" c:type="GdaBinary"/>
+      </field>
+      <field name="op" writable="1">
+        <type name="BlobOp" c:type="GdaBlobOp*"/>
+      </field>
+      <method name="set_op" c:identifier="gda_blob_set_op">
+        <doc xml:whitespace="preserve">correctly assigns @op to @blob</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="op" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaBlobOp object, or %NULL</doc>
+            <type name="BlobOp" c:type="GdaBlobOp*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string" c:identifier="gda_blob_to_string">
+        <doc xml:whitespace="preserve">Converts all the non printable characters of blob-&gt;data into the \xxx representation
+where xxx is the octal representation of the byte, and the '\' (backslash) character
+is converted to "\\".</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string from @blob</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="maxlen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a maximum len used to truncate, or 0 for no maximum length</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <function name="copy" c:identifier="gda_blob_copy">
+        <doc xml:whitespace="preserve">Creates a new #GdaBlob structure from an existing one.
+
+Free-function: gda_blob_free</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GdaBlob which contains a copy of information in @boxed.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="boxed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">source to get a copy from.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="free" c:identifier="gda_blob_free">
+        <doc xml:whitespace="preserve">Deallocates all memory associated to the given #GdaBlob.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="boxed" transfer-ownership="full">
+            <doc xml:whitespace="preserve">#GdaBlob to free.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <class name="BlobOp"
+           c:symbol-prefix="blob_op"
+           c:type="GdaBlobOp"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GdaBlobOp"
+           glib:get-type="gda_blob_op_get_type"
+           glib:type-struct="BlobOpClass">
+      <virtual-method name="get_length" invoker="get_length">
+        <doc xml:whitespace="preserve">provider should have added an error (a #GdaConnectionEvent) to the connection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of the blob in bytes. In case of error, -1 is returned and the</doc>
+          <type name="glong" c:type="glong"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="read" invoker="read">
+        <doc xml:whitespace="preserve">Reads a chunk of bytes from the BLOB accessible through @op into @blob.
+
+provider should have added an error to the connection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes actually read. In case of error, -1 is returned and the</doc>
+          <type name="glong" c:type="glong"/>
+        </return-value>
+        <parameters>
+          <parameter name="blob" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaBlob to read data to</doc>
+            <type name="Blob" c:type="GdaBlob*"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset to read from the start of the blob (starts at 0)</doc>
+            <type name="glong" c:type="glong"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum number of bytes to read.</doc>
+            <type name="glong" c:type="glong"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="write" invoker="write">
+        <doc xml:whitespace="preserve">Writes a chunk of bytes from a @blob to the BLOB accessible through @op, @blob is unchanged after
+this call.
+
+If @blob has an associated #GdaBlobOp (ie. if @blob-&gt;op is not %NULL) then the data to be written
+using @op is the data fetched using @blob-&gt;op.
+
+provider should have added an error to the connection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes written. In case of error, -1 is returned and the</doc>
+          <type name="glong" c:type="glong"/>
+        </return-value>
+        <parameters>
+          <parameter name="blob" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaBlob which contains the data to write</doc>
+            <type name="Blob" c:type="GdaBlob*"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset to write from the start of the blob (starts at 0)</doc>
+            <type name="glong" c:type="glong"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="write_all" invoker="write_all">
+        <doc xml:whitespace="preserve">Writes the whole contents of @blob into the blob manipulated by @op. If necessary the resulting
+blob is truncated from its previous length.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE on success</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blob" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaBlob which contains the data to write</doc>
+            <type name="Blob" c:type="GdaBlob*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_length" c:identifier="gda_blob_op_get_length">
+        <doc xml:whitespace="preserve">provider should have added an error (a #GdaConnectionEvent) to the connection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of the blob in bytes. In case of error, -1 is returned and the</doc>
+          <type name="glong" c:type="glong"/>
+        </return-value>
+      </method>
+      <method name="read" c:identifier="gda_blob_op_read">
+        <doc xml:whitespace="preserve">Reads a chunk of bytes from the BLOB accessible through @op into @blob.
+
+provider should have added an error to the connection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes actually read. In case of error, -1 is returned and the</doc>
+          <type name="glong" c:type="glong"/>
+        </return-value>
+        <parameters>
+          <parameter name="blob" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaBlob to read data to</doc>
+            <type name="Blob" c:type="GdaBlob*"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset to read from the start of the blob (starts at 0)</doc>
+            <type name="glong" c:type="glong"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum number of bytes to read.</doc>
+            <type name="glong" c:type="glong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_all" c:identifier="gda_blob_op_read_all">
+        <doc xml:whitespace="preserve">Reads the whole contents of the blob manipulated by @op into @blob</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @blob-&gt;data contains the whole BLOB manipulated by @op</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blob" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaBlob to read data to</doc>
+            <type name="Blob" c:type="GdaBlob*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write" c:identifier="gda_blob_op_write">
+        <doc xml:whitespace="preserve">Writes a chunk of bytes from a @blob to the BLOB accessible through @op, @blob is unchanged after
+this call.
+
+If @blob has an associated #GdaBlobOp (ie. if @blob-&gt;op is not %NULL) then the data to be written
+using @op is the data fetched using @blob-&gt;op.
+
+provider should have added an error to the connection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes written. In case of error, -1 is returned and the</doc>
+          <type name="glong" c:type="glong"/>
+        </return-value>
+        <parameters>
+          <parameter name="blob" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaBlob which contains the data to write</doc>
+            <type name="Blob" c:type="GdaBlob*"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset to write from the start of the blob (starts at 0)</doc>
+            <type name="glong" c:type="glong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_all" c:identifier="gda_blob_op_write_all">
+        <doc xml:whitespace="preserve">Writes the whole contents of @blob into the blob manipulated by @op. If necessary the resulting
+blob is truncated from its previous length.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE on success</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blob" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaBlob which contains the data to write</doc>
+            <type name="Blob" c:type="GdaBlob*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="_gda_reserved1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="BlobOpClass"
+            c:type="GdaBlobOpClass"
+            glib:is-gtype-struct-for="BlobOp">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_length">
+        <callback name="get_length">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the blob in bytes. In case of error, -1 is returned and the</doc>
+            <type name="glong" c:type="glong"/>
+          </return-value>
+          <parameters>
+            <parameter name="op" transfer-ownership="none">
+              <type name="BlobOp" c:type="GdaBlobOp*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="read">
+        <callback name="read">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes actually read. In case of error, -1 is returned and the</doc>
+            <type name="glong" c:type="glong"/>
+          </return-value>
+          <parameters>
+            <parameter name="op" transfer-ownership="none">
+              <type name="BlobOp" c:type="GdaBlobOp*"/>
+            </parameter>
+            <parameter name="blob" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GdaBlob to read data to</doc>
+              <type name="Blob" c:type="GdaBlob*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">offset to read from the start of the blob (starts at 0)</doc>
+              <type name="glong" c:type="glong"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <doc xml:whitespace="preserve">maximum number of bytes to read.</doc>
+              <type name="glong" c:type="glong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="write">
+        <callback name="write">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes written. In case of error, -1 is returned and the</doc>
+            <type name="glong" c:type="glong"/>
+          </return-value>
+          <parameters>
+            <parameter name="op" transfer-ownership="none">
+              <type name="BlobOp" c:type="GdaBlobOp*"/>
+            </parameter>
+            <parameter name="blob" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GdaBlob which contains the data to write</doc>
+              <type name="Blob" c:type="GdaBlob*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">offset to write from the start of the blob (starts at 0)</doc>
+              <type name="glong" c:type="glong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="write_all">
+        <callback name="write_all">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE on success</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="op" transfer-ownership="none">
+              <type name="BlobOp" c:type="GdaBlobOp*"/>
+            </parameter>
+            <parameter name="blob" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GdaBlob which contains the data to write</doc>
+              <type name="Blob" c:type="GdaBlob*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="Column"
+           c:symbol-prefix="column"
+           c:type="GdaColumn"
+           parent="GObject.Object"
+           glib:type-name="GdaColumn"
+           glib:get-type="gda_column_get_type"
+           glib:type-struct="ColumnClass">
+      <constructor name="new" c:identifier="gda_column_new">
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GdaColumn object.</doc>
+          <type name="Column" c:type="GdaColumn*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="g_type_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="new_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="name_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="copy" c:identifier="gda_column_copy">
+        <doc xml:whitespace="preserve">Creates a new #GdaColumn object from an existing one.
+
+in @column.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GdaColumn with a copy of the data</doc>
+          <type name="Column" c:type="GdaColumn*"/>
+        </return-value>
+      </method>
+      <method name="get_allow_null" c:identifier="gda_column_get_allow_null">
+        <doc xml:whitespace="preserve">Gets the 'allow null' flag of the given column.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the given column allows null values or not (%TRUE or %FALSE).</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_attribute" c:identifier="gda_column_get_attribute">
+        <doc xml:whitespace="preserve">Get the value associated to a named attribute.
+
+Attributes can have any name, but Libgda proposes some default names, see &lt;link linkend="libgda-40-Attributes-manager.synopsis"&gt;this section&lt;/link&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a read-only #GValue, or %NULL if not attribute named @attribute has been set for @column</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute name as a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_auto_increment"
+              c:identifier="gda_column_get_auto_increment">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the given column is an auto incremented one (%TRUE or %FALSE).</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_dbms_type" c:identifier="gda_column_get_dbms_type">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the database type of @column.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_default_value"
+              c:identifier="gda_column_get_default_value">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@column's default value, as a #GValue object, or %NULL if column does not have a default value</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="get_description" c:identifier="gda_column_get_description">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the column's description, in any</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_g_type" c:identifier="gda_column_get_g_type">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of @column.</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="gda_column_get_name">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of @column.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_position" c:identifier="gda_column_get_position">
+        <doc xml:whitespace="preserve">containing data model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position of the column refer to in the</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_allow_null" c:identifier="gda_column_set_allow_null">
+        <doc xml:whitespace="preserve">Sets the 'allow null' flag of the given column.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allow" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the given column should allows null values or not.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute" c:identifier="gda_column_set_attribute">
+        <doc xml:whitespace="preserve">Set the value associated to a named attribute. The @attribute string is 'stolen' by this method, and
+the memory it uses will be freed using the @destroy function when no longer needed (if @destroy is %NULL,
+then the string will not be freed at all).
+
+Attributes can have any name, but Libgda proposes some default names, 
+see &lt;link linkend="libgda-40-Attributes-manager.synopsis"&gt;this section&lt;/link&gt;.
+
+If there is already an attribute named @attribute set, then its value is replaced with the new value (@value is
+copied), except if @value is %NULL, in which case the attribute is removed.
+
+For example one would use it as:
+
+&lt;code&gt;
+gda_column_set_attribute (holder, g_strdup (my_attribute), g_free, my_value);
+gda_column_set_attribute (holder, GDA_ATTRIBUTE_NAME, NULL, my_value);
+&lt;/code&gt;
+
+Note: this method does not modify in any way the contents of the data model for which @column is a column (nor
+does it modify the table definition of the tables used by a SELECT statement is the model was created from a
+SELECT statement).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute name as a static string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GValue, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">a function to be called when @attribute is not needed anymore, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_auto_increment"
+              c:identifier="gda_column_set_auto_increment">
+        <doc xml:whitespace="preserve">Sets the auto increment flag for the given column.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_auto" transfer-ownership="none">
+            <doc xml:whitespace="preserve">auto increment status.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_dbms_type" c:identifier="gda_column_set_dbms_type">
+        <doc xml:whitespace="preserve">Defines @column's database type</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dbms_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default_value"
+              c:identifier="gda_column_set_default_value">
+        <doc xml:whitespace="preserve">Sets @column's default #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="default_value"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">default #GValue for the column</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_description" c:identifier="gda_column_set_description">
+        <doc xml:whitespace="preserve">Sets the column's description</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">title name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_g_type" c:identifier="gda_column_set_g_type">
+        <doc xml:whitespace="preserve">Sets the type of @column to @type.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new type of @column.</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name" c:identifier="gda_column_set_name">
+        <doc xml:whitespace="preserve">Sets the name of @column to @name.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new name of @column.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_position" c:identifier="gda_column_set_position">
+        <doc xml:whitespace="preserve">Sets the position of the column refer to in the containing
+data model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the wanted position of the column in the containing data model.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="id" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ColumnPrivate" c:type="GdaColumnPrivate*"/>
+      </field>
+      <glib:signal name="g-type-changed" when="last">
+        <doc xml:whitespace="preserve">Gets emitted whenever @column's type has been changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column's previous type</doc>
+            <type name="GType"/>
+          </parameter>
+          <parameter name="new_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column's new type</doc>
+            <type name="GType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="name-changed" when="last">
+        <doc xml:whitespace="preserve">Gets emitted whenever @column's name has been changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column's previous name</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ColumnClass"
+            c:type="GdaColumnClass"
+            glib:is-gtype-struct-for="Column">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="name_changed">
+        <callback name="name_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="column" transfer-ownership="none">
+              <type name="Column" c:type="GdaColumn*"/>
+            </parameter>
+            <parameter name="old_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="g_type_changed">
+        <callback name="g_type_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="column" transfer-ownership="none">
+              <type name="Column" c:type="GdaColumn*"/>
+            </parameter>
+            <parameter name="old_type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+            <parameter name="new_type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ColumnPrivate" c:type="GdaColumnPrivate" disguised="1">
+    </record>
+    <class name="Config"
+           c:symbol-prefix="config"
+           c:type="GdaConfig"
+           parent="GObject.Object"
+           glib:type-name="GdaConfig"
+           glib:get-type="gda_config_get_type"
+           glib:type-struct="ConfigClass">
+      <function name="can_modify_system_config"
+                c:identifier="gda_config_can_modify_system_config">
+        <doc xml:whitespace="preserve">Tells if the global (system) configuration can be modified (considering
+system permissions and settings)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if system-wide configuration can be modified</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </function>
+      <function name="define_dsn"
+                c:identifier="gda_config_define_dsn"
+                throws="1">
+        <doc xml:whitespace="preserve">Add or update a DSN from the definition in @info.
+
+This method may fail with a %GDA_CONFIG_ERROR domain error (see the #GdaConfigError error codes).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a filled GdaDsnInfo structure</doc>
+            <type name="DsnInfo" c:type="GdaDsnInfo*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="dsn_needs_authentication"
+                c:identifier="gda_config_dsn_needs_authentication">
+        <doc xml:whitespace="preserve">Tells if the data source identified as @dsn_name needs any authentication. If a &amp;lt;username&amp;gt;
+and optionally a &amp;lt;password&amp;gt; are specified, they are ignored.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if an authentication is needed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dsn_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a DSN, in the "[&amp;lt;username&amp;gt;[:&amp;lt;password&amp;gt;] ]&amp;lt;DSN&amp;gt;" format</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="error_quark" c:identifier="gda_config_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <function name="get" c:identifier="gda_config_get">
+        <doc xml:whitespace="preserve">Get a pointer to the global (unique) #GdaConfig object. This functions increments
+the reference count of the object, so you need to call g_object_unref() on it once finished.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a non %NULL pointer to the unique #GdaConfig</doc>
+          <type name="Config" c:type="GdaConfig*"/>
+        </return-value>
+      </function>
+      <function name="get_dsn_info" c:identifier="gda_config_get_dsn_info">
+        <doc xml:whitespace="preserve">Get information about the DSN named @dsn_name. 
+
+ dsn_name's format is "[&amp;lt;username&amp;gt;[:&amp;lt;password&amp;gt;] ]&amp;lt;DSN&amp;gt;" (if &amp;lt;username&amp;gt;
+and optionally &amp;lt;password&amp;gt; are provided, they are ignored). Also see the gda_dsn_split() utility
+function.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to read-only #GdaDsnInfo structure, or %NULL if not found</doc>
+          <type name="DsnInfo" c:type="GdaDsnInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="dsn_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the DSN to look for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_dsn_info_at_index"
+                c:identifier="gda_config_get_dsn_info_at_index">
+        <doc xml:whitespace="preserve">Get a pointer to a read-only #GdaDsnInfo at the @index position</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pointer or %NULL if no DSN exists at position @index</doc>
+          <type name="DsnInfo" c:type="GdaDsnInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an index</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_dsn_info_index"
+                c:identifier="gda_config_get_dsn_info_index">
+        <doc xml:whitespace="preserve">Get the index (starting at 0) of the DSN named @dsn_name</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index or -1 if not found</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="dsn_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a DSN</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_nb_dsn" c:identifier="gda_config_get_nb_dsn">
+        <doc xml:whitespace="preserve">Get the number of defined DSN</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of defined DSN</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </function>
+      <function name="get_provider"
+                c:identifier="gda_config_get_provider"
+                throws="1">
+        <doc xml:whitespace="preserve">Get a pointer to the session-wide #GdaServerProvider for the
+provider named @provider_name. The caller must not call g_object_unref() on the
+returned object.
+
+This method may fail with a %GDA_CONFIG_ERROR domain error (see the #GdaConfigError error codes).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the #GdaServerProvider, or %NULL if an error occurred</doc>
+          <type name="ServerProvider" c:type="GdaServerProvider*"/>
+        </return-value>
+        <parameters>
+          <parameter name="provider_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a database provider</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_provider_info"
+                c:identifier="gda_config_get_provider_info">
+        <doc xml:whitespace="preserve">Get some information about the a database provider (adapter) named</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to read-only #GdaProviderInfo structure, or %NULL if not found</doc>
+          <type name="ProviderInfo" c:type="GdaProviderInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="provider_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a database provider</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="list_dsn" c:identifier="gda_config_list_dsn">
+        <doc xml:whitespace="preserve">Get a #GdaDataModel representing all the configured DSN, and keeping itself up to date with
+the changes in the declared DSN.
+
+The returned data model is composed of the following columns:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;DSN name&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Provider name&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Description&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Connection string&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Username if it exists&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaDataModel</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+      </function>
+      <function name="list_providers" c:identifier="gda_config_list_providers">
+        <doc xml:whitespace="preserve">Get a #GdaDataModel representing all the installed database providers.
+
+The returned data model is composed of the following columns:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;Provider name&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Description&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;DSN parameters&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Authentication parameters&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;File name of the plugin&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaDataModel</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+      </function>
+      <function name="remove_dsn"
+                c:identifier="gda_config_remove_dsn"
+                throws="1">
+        <doc xml:whitespace="preserve">Remove the DSN named @dsn_name.
+
+This method may fail with a %GDA_CONFIG_ERROR domain error (see the #GdaConfigError error codes).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dsn_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the DSN to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="dsn_added">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_dsn" transfer-ownership="none">
+            <type name="DsnInfo" c:type="GdaDsnInfo*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="dsn_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dsn" transfer-ownership="none">
+            <type name="DsnInfo" c:type="GdaDsnInfo*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="dsn_removed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_dsn" transfer-ownership="none">
+            <type name="DsnInfo" c:type="GdaDsnInfo*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="dsn_to_be_removed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_dsn" transfer-ownership="none">
+            <type name="DsnInfo" c:type="GdaDsnInfo*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <property name="system-filename" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">File to use for system-wide DSN list. When changed, the whole list of DSN will be reloaded.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="user-filename" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">File to use for per-user DSN list. When changed, the whole list of DSN will be reloaded.</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ConfigPrivate" c:type="GdaConfigPrivate*"/>
+      </field>
+      <glib:signal name="dsn-added" when="first">
+        <doc xml:whitespace="preserve">Gets emitted whenever a new DSN has been defined</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_dsn" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDsnInfo</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="dsn-changed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted whenever a DSN's definition has been changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="dsn" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDsnInfo</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="dsn-removed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted whenever a DSN has been removed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_dsn" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDsnInfo</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="dsn-to-be-removed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted whenever a DSN is about to be removed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_dsn" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDsnInfo</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ConfigClass"
+            c:type="GdaConfigClass"
+            glib:is-gtype-struct-for="Config">
+      <field name="object_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="dsn_added">
+        <callback name="dsn_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="conf" transfer-ownership="none">
+              <type name="Config" c:type="GdaConfig*"/>
+            </parameter>
+            <parameter name="new_dsn" transfer-ownership="none">
+              <type name="DsnInfo" c:type="GdaDsnInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="dsn_to_be_removed">
+        <callback name="dsn_to_be_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="conf" transfer-ownership="none">
+              <type name="Config" c:type="GdaConfig*"/>
+            </parameter>
+            <parameter name="old_dsn" transfer-ownership="none">
+              <type name="DsnInfo" c:type="GdaDsnInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="dsn_removed">
+        <callback name="dsn_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="conf" transfer-ownership="none">
+              <type name="Config" c:type="GdaConfig*"/>
+            </parameter>
+            <parameter name="old_dsn" transfer-ownership="none">
+              <type name="DsnInfo" c:type="GdaDsnInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="dsn_changed">
+        <callback name="dsn_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="conf" transfer-ownership="none">
+              <type name="Config" c:type="GdaConfig*"/>
+            </parameter>
+            <parameter name="dsn" transfer-ownership="none">
+              <type name="DsnInfo" c:type="GdaDsnInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ConfigError" c:type="GdaConfigError">
+      <member name="dsn_not_found_error"
+              value="0"
+              c:identifier="GDA_CONFIG_DSN_NOT_FOUND_ERROR"/>
+      <member name="permission_error"
+              value="1"
+              c:identifier="GDA_CONFIG_PERMISSION_ERROR"/>
+      <member name="provider_not_found_error"
+              value="2"
+              c:identifier="GDA_CONFIG_PROVIDER_NOT_FOUND_ERROR"/>
+      <member name="provider_creation_error"
+              value="3"
+              c:identifier="GDA_CONFIG_PROVIDER_CREATION_ERROR"/>
+    </enumeration>
+    <record name="ConfigPrivate" c:type="GdaConfigPrivate" disguised="1">
+    </record>
+    <class name="Connection"
+           c:symbol-prefix="connection"
+           c:type="GdaConnection"
+           parent="GObject.Object"
+           glib:type-name="GdaConnection"
+           glib:get-type="gda_connection_get_type"
+           glib:type-struct="ConnectionClass">
+      <implements name="Lockable"/>
+      <constructor name="new_from_dsn"
+                   c:identifier="gda_connection_new_from_dsn"
+                   version="5.0.2"
+                   throws="1">
+        <doc xml:whitespace="preserve">This function is similar to gda_connection_open_from_dsn(), except it does not actually open the
+connection, you have to open it using gda_connection_open().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaConnection if connection opening was successful or %NULL if there was an error.</doc>
+          <type name="Connection" c:type="GdaConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="dsn" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data source name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="auth_string"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">authentication string, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="options" transfer-ownership="none">
+            <doc xml:whitespace="preserve">options for the connection (see #GdaConnectionOptions).</doc>
+            <type name="ConnectionOptions" c:type="GdaConnectionOptions"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_string"
+                   c:identifier="gda_connection_new_from_string"
+                   version="5.0.2"
+                   throws="1">
+        <doc xml:whitespace="preserve">This function is similar to gda_connection_open_from_string(), except it does not actually open the
+connection, you have to open it using gda_connection_open().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaConnection if connection opening was successful or %NULL if there was an error.</doc>
+          <type name="Connection" c:type="GdaConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="provider_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">provider ID to connect to, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cnc_string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">connection string.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="auth_string"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">authentication string, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="options" transfer-ownership="none">
+            <doc xml:whitespace="preserve">options for the connection (see #GdaConnectionOptions).</doc>
+            <type name="ConnectionOptions" c:type="GdaConnectionOptions"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="error_quark" c:identifier="gda_connection_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <function name="open_from_dsn"
+                c:identifier="gda_connection_open_from_dsn"
+                throws="1">
+        <doc xml:whitespace="preserve">This function is the way of opening database connections with libgda, using a pre-defined data source (DSN),
+see gda_config_define_dsn() for more information about how to define a DSN. If you don't want to define
+a DSN, it is possible to use gda_connection_open_from_string() instead of this method.
+
+The @dsn string must have the following format: "[&amp;lt;username&amp;gt;[:&amp;lt;password&amp;gt;] ]&amp;lt;DSN&amp;gt;" 
+(if &amp;lt;username&amp;gt; and/or &amp;lt;password&amp;gt; are provided, and @auth_string is %NULL, then these username
+and passwords will be used). Note that if provided, &amp;lt;username&amp;gt; and &amp;lt;password&amp;gt; 
+must be encoded as per RFC 1738, see gda_rfc1738_encode() for more information.
+
+The @auth_string can contain the authentication information for the server
+to accept the connection. It is a string containing semi-colon seperated named value, usually 
+like "USERNAME=...;PASSWORD=..." where the ... are replaced by actual values. Note that each
+name and value must be encoded as per RFC 1738, see gda_rfc1738_encode() for more information.
+
+The actual named parameters required depend on the provider being used, and that list is available
+as the &lt;parameter&gt;auth_params&lt;/parameter&gt; member of the #GdaProviderInfo structure for each installed
+provider (use gda_config_get_provider_info() to get it). Also one can use the "gda-sql-5.0 -L" command to 
+list the possible named parameters.
+
+This method may fail with a GDA_CONNECTION_ERROR domain error (see the #GdaConnectionError error codes) 
+or a %GDA_CONFIG_ERROR domain error (see the #GdaConfigError error codes).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaConnection if connection opening was successful or %NULL if there was an error.</doc>
+          <type name="Connection" c:type="GdaConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="dsn" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data source name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="auth_string"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">authentication string, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="options" transfer-ownership="none">
+            <doc xml:whitespace="preserve">options for the connection (see #GdaConnectionOptions).</doc>
+            <type name="ConnectionOptions" c:type="GdaConnectionOptions"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="open_from_string"
+                c:identifier="gda_connection_open_from_string"
+                throws="1">
+        <doc xml:whitespace="preserve">Opens a connection given a provider ID and a connection string. This
+allows applications to open connections without having to create
+a data source (DSN) in the configuration. The format of @cnc_string is
+similar to PostgreSQL and MySQL connection strings. It is a semicolumn-separated
+series of &amp;lt;key&amp;gt;=&amp;lt;value&amp;gt; pairs, where each key and value are encoded as per RFC 1738, 
+see gda_rfc1738_encode() for more information.
+
+The possible keys depend on the provider, the "gda-sql-5.0 -L" command
+can be used to list the actual keys for each installed database provider.
+
+For example the connection string to open an SQLite connection to a database
+file named "my_data.db" in the current directory would be &lt;constant&gt;"DB_DIR=.;DB_NAME=my_data"&lt;/constant&gt;.
+
+The @cnc_string string must have the following format: 
+"[&amp;lt;provider&amp;gt;://][&amp;lt;username&amp;gt;[:&amp;lt;password&amp;gt;] ]&amp;lt;connection_params&amp;gt;"
+(if &amp;lt;username&amp;gt; and/or &amp;lt;password&amp;gt; are provided, and @auth_string is %NULL, then these username
+and passwords will be used, and if &amp;lt;provider&amp;gt; is provided and @provider_name is %NULL then this
+provider will be used). Note that if provided, &amp;lt;username&amp;gt;, &amp;lt;password&amp;gt; and  &amp;lt;provider&amp;gt;
+must be encoded as per RFC 1738, see gda_rfc1738_encode() for more information.
+
+The @auth_string must contain the authentication information for the server
+to accept the connection. It is a string containing semi-colon seperated named values, usually 
+like "USERNAME=...;PASSWORD=..." where the ... are replaced by actual values. Note that each
+name and value must be encoded as per RFC 1738, see gda_rfc1738_encode() for more information.
+
+The actual named parameters required depend on the provider being used, and that list is available
+as the &lt;parameter&gt;auth_params&lt;/parameter&gt; member of the #GdaProviderInfo structure for each installed
+provider (use gda_config_get_provider_info() to get it). Similarly to the format of the connection
+string, use the "gda-sql-5.0 -L" command to list the possible named parameters.
+
+Additionally, it is possible to have the connection string
+respect the "&amp;lt;provider_name&amp;gt;://&amp;lt;real cnc string&amp;gt;" format, in which case the provider name
+and the real connection string will be extracted from that string (note that if @provider_name
+is not %NULL then it will still be used as the provider ID).\
+
+This method may fail with a GDA_CONNECTION_ERROR domain error (see the #GdaConnectionError error codes) 
+or a %GDA_CONFIG_ERROR domain error (see the #GdaConfigError error codes).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaConnection if connection opening was successful or %NULL if there was an error.</doc>
+          <type name="Connection" c:type="GdaConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="provider_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">provider ID to connect to, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cnc_string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">connection string.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="auth_string"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">authentication string, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="options" transfer-ownership="none">
+            <doc xml:whitespace="preserve">options for the connection (see #GdaConnectionOptions).</doc>
+            <type name="ConnectionOptions" c:type="GdaConnectionOptions"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="open_sqlite" c:identifier="gda_connection_open_sqlite">
+        <doc xml:whitespace="preserve">Opens an SQLite connection even if the SQLite provider is not installed,
+to be used by database providers which need a temporary database to store
+some information.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaConnection, or %NULL if an error occurred</doc>
+          <type name="Connection" c:type="GdaConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="directory" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the directory the database file will be in, or %NULL for the default TMP directory</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the database file name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="auto_unlink" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE, then the database file will be removed afterwards</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="string_split" c:identifier="gda_connection_string_split">
+        <doc xml:whitespace="preserve">Extract the provider, connection parameters, username and password from @string. 
+in @string, the various parts are strings
+which are expected to be encoded using an RFC 1738 compliant encoding. If they are specified, 
+the returned provider, username and password strings are correctly decoded.
+
+For example all the following connection strings:
+&lt;programlisting&gt;&lt;![CDATA[
+
+will return the following new strings (double quotes added here to delimit strings):
+&lt;programlisting&gt;&lt;![CDATA[</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string in the "[&amp;lt;provider&amp;gt;://][&amp;lt;username&amp;gt;[:&amp;lt;password&amp;gt;] ]&amp;lt;connection_params&amp;gt;" form</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="out_cnc_params" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a place to store the new string containing the &amp;lt;connection_params&amp;gt; part</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="out_provider" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a place to store the new string containing the &amp;lt;provider&amp;gt; part</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="out_username" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a place to store the new string containing the &amp;lt;username&amp;gt; part</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="out_password" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a place to store the new string containing the &amp;lt;password&amp;gt; part</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="conn_closed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="conn_opened">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="conn_to_close">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="dsn_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="error">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <type name="ConnectionEvent" c:type="GdaConnectionEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="transaction_status_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="add_event" c:identifier="gda_connection_add_event">
+        <doc xml:whitespace="preserve">Adds an event to the given connection. This function is usually
+called by providers, to inform clients of events that happened
+during some operation.
+
+As soon as a provider (or a client, it does not matter) calls this
+function with an @event object which is an error,
+the connection object emits the "error" signal, to which clients can connect to be
+informed of events.
+
+WARNING: the reference to the @event object is stolen by this function!</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="full">
+            <doc xml:whitespace="preserve">is stored internally, so you don't need to unref it.</doc>
+            <type name="ConnectionEvent" c:type="GdaConnectionEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_event_string"
+              c:identifier="gda_connection_add_event_string"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds a new error to the given connection object. This is just a convenience
+function that simply creates a #GdaConnectionEvent and then calls
+#gda_server_connection_add_error.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GdaConnectionEvent object, however the caller does not hold a reference to the returned object, and if need be the caller must call g_object_ref() on it.</doc>
+          <type name="ConnectionEvent" c:type="GdaConnectionEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a format string (see the printf(3) documentation).</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_prepared_statement"
+              c:identifier="gda_connection_add_prepared_statement">
+        <doc xml:whitespace="preserve">Declares that @prepared_stmt is a prepared statement object associated to @gda_stmt within the connection
+(meaning the connection increments the reference counter of @prepared_stmt).
+
+If @gda_stmt changes or is destroyed, the the association will be lost and the connection will lose the
+reference it has on @prepared_stmt.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gda_stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+          <parameter name="prepared_stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a prepared statement object (as a #GdaPStmt object, or more likely a descendant)</doc>
+            <type name="PStmt" c:type="GdaPStmt*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_savepoint"
+              c:identifier="gda_connection_add_savepoint"
+              throws="1">
+        <doc xml:whitespace="preserve">Adds a SAVEPOINT named @name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">name of the savepoint to add</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="async_cancel"
+              c:identifier="gda_connection_async_cancel"
+              version="4.2"
+              throws="1">
+        <doc xml:whitespace="preserve">Requests that a task be cancelled. This operation may of may not have any effect
+depending on the task's status, even if it returns %TRUE. If it returns %FALSE,
+then the task has not been cancelled.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="task_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a task ID returned by gda_connection_async_statement_execute()</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="async_fetch_result"
+              c:identifier="gda_connection_async_fetch_result"
+              version="4.2"
+              throws="1">
+        <doc xml:whitespace="preserve">Use this method to obtain the result of the execution of a statement which has been executed asynchronously by
+calling gda_connection_async_statement_execute(). This function is non locking and will return %NULL (and no
+error will be set) if the statement has not been executed yet.
+
+If the statement has been executed, this method returns the same value as gda_connection_statement_execute()
+would have if the statement had been
+executed synchronously.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GObject, or %NULL if an error occurred</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="task_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a task ID returned by gda_connection_async_statement_execute()</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="last_insert_row"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a place to store a new #GdaSet object which contains the values of the last inserted row, or %NULL</doc>
+            <type name="Set" c:type="GdaSet**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="async_statement_execute"
+              c:identifier="gda_connection_async_statement_execute"
+              version="4.2"
+              throws="1">
+        <doc xml:whitespace="preserve">This method is similar to gda_connection_statement_execute() but is asynchronous as it method returns
+immediately with a task ID. It's up to the caller to use gda_connection_async_fetch_result() regularly to check
+if the statement's execution is finished.
+
+It is possible to call the method several times to request several statements to be executed asynchronously, the
+statements will be executed in the order in which they were requested.
+
+The parameters, if present, are copied and can be discarded or modified before the statement is actually executed.
+The @stmt object is not copied but simply referenced (for performance reasons), and if it is modified before
+it is actually executed, then its execution will not occur. It is however safe to call g_object_unref() on it if
+it's not needed anymore.
+
+The execution failure of any statement has no impact on the execution of other statements except for example if
+the connection has a transaction started and the failure invalidates the transaction (as decided by the database
+server).
+
+but any other error)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a task ID, or 0 if an error occurred (not an error regarding @stmt itself as its execution has not yet started</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaSet object (which can be obtained using gda_statement_get_parameters()), or %NULL</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+          <parameter name="model_usage" transfer-ownership="none">
+            <doc xml:whitespace="preserve">in the case where @stmt is a SELECT statement, specifies how the returned data model will be used</doc>
+            <type name="StatementModelUsage" c:type="GdaStatementModelUsage"/>
+          </parameter>
+          <parameter name="col_types" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an array of GType to request each returned #GdaDataModel's column's GType, terminated with the G_TYPE_NONE</doc>
+            <array zero-terminated="0" c:type="GType*">
+              <type name="GType" c:type="GType"/>
+            </array>
+          </parameter>
+          <parameter name="need_last_insert_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if the values of the last interted row must be computed</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="batch_execute"
+              c:identifier="gda_connection_batch_execute"
+              throws="1">
+        <doc xml:whitespace="preserve">Executes all the statements contained in @batch (in the order in which they were added to @batch), and
+returns a list of #GObject objects, at most one #GObject for each statement; see gda_connection_statement_execute()
+for details about the returned objects.
+
+If one of the statement fails, then none of the subsequent statement will be executed, and the method returns
+the list of #GObject created by the correct execution of the previous statements. If a transaction is required,
+then it should be started before calling this method.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new list of #GObject objects</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="GObject.Object"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="batch" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaBatch object which contains all the statements to execute</doc>
+            <type name="Batch" c:type="GdaBatch*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaSet object (which can be obtained using gda_batch_get_parameters()), or %NULL</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+          <parameter name="model_usage" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies how the returned data model(s) will be used, as a #GdaStatementModelUsage enum</doc>
+            <type name="StatementModelUsage" c:type="GdaStatementModelUsage"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_transaction"
+              c:identifier="gda_connection_begin_transaction"
+              throws="1">
+        <doc xml:whitespace="preserve">Starts a transaction on the data source, identified by the
+ name parameter.
+
+Before starting a transaction, you can check whether the underlying
+provider does support transactions or not by using the
+gda_connection_supports_feature() function.
+
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the transaction was started successfully, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the name of the transation to start, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="level" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested transaction level (%GDA_TRANSACTION_ISOLATION_UNKNOWN if not specified)</doc>
+            <type name="TransactionIsolation"
+                  c:type="GdaTransactionIsolation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_events_list"
+              c:identifier="gda_connection_clear_events_list">
+        <doc xml:whitespace="preserve">This function lets you clear the list of #GdaConnectionEvent's of the
+given connection.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="close" c:identifier="gda_connection_close">
+        <doc xml:whitespace="preserve">Closes the connection to the underlying data source, but first emits the 
+"conn-to-close" signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="close_no_warning"
+              c:identifier="gda_connection_close_no_warning">
+        <doc xml:whitespace="preserve">Closes the connection to the underlying data source, without emiting any warning signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="commit_transaction"
+              c:identifier="gda_connection_commit_transaction"
+              throws="1">
+        <doc xml:whitespace="preserve">Commits the given transaction to the backend database. You need to call
+gda_connection_begin_transaction() first.
+
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the transaction was finished successfully,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the name of the transation to commit, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_operation"
+              c:identifier="gda_connection_create_operation"
+              throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GdaServerOperation object which can be modified in order 
+to perform the type type of action. It is a wrapper around the gda_server_provider_create_operation()
+method.
+
+of operation or if an error occurred</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaServerOperation object, or %NULL in the connection's provider does not support the @type type</doc>
+          <type name="ServerOperation" c:type="GdaServerOperation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of operation requested</doc>
+            <type name="ServerOperationType" c:type="GdaServerOperationType"/>
+          </parameter>
+          <parameter name="options" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an optional list of parameters</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_parser" c:identifier="gda_connection_create_parser">
+        <doc xml:whitespace="preserve">Creates a new parser object able to parse the SQL dialect understood by @cnc. 
+If the #GdaServerProvider object internally used by @cnc does not have its own parser, 
+then %NULL is returned, and a general SQL parser can be obtained
+using gda_sql_parser_new().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaSqlParser object, or %NULL</doc>
+          <type name="SqlParser" c:type="GdaSqlParser*"/>
+        </return-value>
+      </method>
+      <method name="del_prepared_statement"
+              c:identifier="gda_connection_del_prepared_statement">
+        <doc xml:whitespace="preserve">Removes any prepared statement associated to @gda_stmt in @cnc: this undoes what
+gda_connection_add_prepared_statement() does.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gda_stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_row_from_table"
+              c:identifier="gda_connection_delete_row_from_table"
+              version="4.2.3"
+              throws="1">
+        <doc xml:whitespace="preserve">This is a convenience function, which creates a DELETE statement and executes it using the values
+provided. It internally relies on variables which makes it immune to SQL injection problems.
+
+The equivalent SQL command is: DELETE FROM &amp;lt;table&amp;gt; WHERE &amp;lt;condition_column_name&amp;gt; = &amp;lt;condition_value&amp;gt;.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred, FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="table" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the table's name with the row's values to be updated</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="condition_column_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the column to used in the WHERE condition clause</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="condition_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the @condition_column_type's GType</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_savepoint"
+              c:identifier="gda_connection_delete_savepoint"
+              throws="1">
+        <doc xml:whitespace="preserve">Delete the SAVEPOINT named @name when not used anymore.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">name of the savepoint to delete</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="execute_non_select_command"
+              c:identifier="gda_connection_execute_non_select_command"
+              version="4.2.3"
+              throws="1">
+        <doc xml:whitespace="preserve">This is a convenience function to execute a SQL command over the opened connection. For the
+returned value, see gda_connection_statement_execute_non_select()'s documentation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of rows affected or -1, or -2</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="sql" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a query statement that must not begin with "SELECT"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="execute_select_command"
+              c:identifier="gda_connection_execute_select_command"
+              version="4.2.3"
+              throws="1">
+        <doc xml:whitespace="preserve">Execute a SQL SELECT command over an opened connection.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaDataModel if successful, %NULL otherwise</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sql" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a query statement that must begin with "SELECT"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_authentication"
+              c:identifier="gda_connection_get_authentication">
+        <doc xml:whitespace="preserve">Gets the user name used to open this connection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the user name.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_cnc_string"
+              c:identifier="gda_connection_get_cnc_string">
+        <doc xml:whitespace="preserve">Gets the connection string used to open this connection.
+
+The connection string is the string sent over to the underlying
+database provider, which describes the parameters to be used
+to open a connection on the underlying data source.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the connection string used when opening the connection.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_dsn" c:identifier="gda_connection_get_dsn">
+        <doc xml:whitespace="preserve">to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the data source name the connection object is connected</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_events" c:identifier="gda_connection_get_events">
+        <doc xml:whitespace="preserve">Retrieves a list of the last errors occurred during the connection. The returned list is
+chronologically ordered such as that the most recent event is the #GdaConnectionEvent of the first node.
+
+Warning: the @cnc object may change the list if connection events occur</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GList of #GdaConnectionEvent objects (the list should not be modified)</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="ConnectionEvent"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_meta_store"
+              c:identifier="gda_connection_get_meta_store">
+        <doc xml:whitespace="preserve">Get or initializes the #GdaMetaStore associated to @cnc</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdaMetaStore object</doc>
+          <type name="MetaStore" c:type="GdaMetaStore*"/>
+        </return-value>
+      </method>
+      <method name="get_meta_store_data"
+              c:identifier="gda_connection_get_meta_store_data"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves data stored in @cnc's associated #GdaMetaStore object. This method is useful
+to easily get some information about the meta-data associated to @cnc, such as the list of
+tables, views, and other database objects.
+
+Note: it's up to the caller to make sure the information contained within @cnc's associated #GdaMetaStore
+is up to date using gda_connection_update_meta_store() (it can become outdated if the database's schema
+is modified).
+
+For more information about the returned data model's attributes, or about the @meta_type and ... filter arguments,
+see &lt;link linkend="GdaConnectionMetaTypeHead"&gt;this description&lt;/link&gt;.
+
+Also, when using filters involving data which are SQL identifiers, make sure each SQL identifier
+is represented using the #GdaMetaStore convention, using gda_meta_store_sql_identifier_quote() or
+gda_meta_store_sql_identifier_quote().
+
+See the &lt;link linkend="information_schema:sql_identifiers"&gt;
+meta data section about SQL identifiers&lt;/link&gt; for more information, and the documentation about the
+gda_sql_identifier_quote() function which will be most useful.
+
+for freeing the returned model using g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdaDataModel containing the data required. The caller is responsible</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="meta_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">describes which data to get.</doc>
+            <type name="ConnectionMetaType" c:type="GdaConnectionMetaType"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a place to store errors, or %NULL</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="nb_filters" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of filters in the @... argument</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_meta_store_data_v"
+              c:identifier="gda_connection_get_meta_store_data_v"
+              throws="1">
+        <doc xml:whitespace="preserve">see #gda_connection_get_meta_store_data
+
+for freeing the returned model using g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdaDataModel containing the data required. The caller is responsible</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="meta_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">describes which data to get.</doc>
+            <type name="ConnectionMetaType" c:type="GdaConnectionMetaType"/>
+          </parameter>
+          <parameter name="filters" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GList of #GdaHolder objects</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="Holder"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_options" c:identifier="gda_connection_get_options">
+        <doc xml:whitespace="preserve">Gets the #GdaConnectionOptions used to open this connection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the connection options.</doc>
+          <type name="ConnectionOptions" c:type="GdaConnectionOptions"/>
+        </return-value>
+      </method>
+      <method name="get_prepared_statement"
+              c:identifier="gda_connection_get_prepared_statement">
+        <doc xml:whitespace="preserve">Retrieves a pointer to an object representing a prepared statement for @gda_stmt within @cnc. The
+association must have been done using gda_connection_add_prepared_statement().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the prepared statement, or %NULL if no association exists</doc>
+          <type name="PStmt" c:type="GdaPStmt*"/>
+        </return-value>
+        <parameters>
+          <parameter name="gda_stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_provider" c:identifier="gda_connection_get_provider">
+        <doc xml:whitespace="preserve">Gets a pointer to the #GdaServerProvider object used to access the database</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaServerProvider (NEVER NULL)</doc>
+          <type name="ServerProvider" c:type="GdaServerProvider*"/>
+        </return-value>
+      </method>
+      <method name="get_provider_name"
+              c:identifier="gda_connection_get_provider_name">
+        <doc xml:whitespace="preserve">Gets the name (identifier) of the database provider used by @cnc</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a non modifiable string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_transaction_status"
+              c:identifier="gda_connection_get_transaction_status">
+        <doc xml:whitespace="preserve">Get the status of @cnc regarding transactions. The returned object should not be modified
+or destroyed; however it may be modified or destroyed by the connection itself.
+
+If %NULL is returned, then no transaction has been associated with @cnc</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaTransactionStatus object, or %NULL</doc>
+          <type name="TransactionStatus" c:type="GdaTransactionStatus*"/>
+        </return-value>
+      </method>
+      <method name="insert_row_into_table"
+              c:identifier="gda_connection_insert_row_into_table"
+              version="4.2.3"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This is a convenience function, which creates an INSERT statement and executes it using the values
+provided. It internally relies on variables which makes it immune to SQL injection problems.
+
+The equivalent SQL command is: INSERT INTO &amp;lt;table&amp;gt; (&amp;lt;column_name&amp;gt; [,...]) VALUES (&amp;lt;column_name&amp;gt; = &amp;lt;new_value&amp;gt; [,...]).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="table" transfer-ownership="none">
+            <doc xml:whitespace="preserve">table's name to insert into</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a place to store errors, or %NULL</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_row_into_table_v"
+              c:identifier="gda_connection_insert_row_into_table_v"
+              version="4.2.3"
+              throws="1">
+        <doc xml:whitespace="preserve">@col_names and @values must have length (&amp;gt;= 1).
+
+This is a convenience function, which creates an INSERT statement and executes it using the values
+provided. It internally relies on variables which makes it immune to SQL injection problems.
+
+The equivalent SQL command is: INSERT INTO &amp;lt;table&amp;gt; (&amp;lt;column_name&amp;gt; [,...]) VALUES (&amp;lt;column_name&amp;gt; = &amp;lt;new_value&amp;gt; [,...]).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred, FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="table" transfer-ownership="none">
+            <doc xml:whitespace="preserve">table's name to insert into</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="col_names" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of column names (as const gchar *)</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="utf8"/>
+            </type>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of values (as #GValue)</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="GObject.Value"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="internal_change_transaction_state"
+              c:identifier="gda_connection_internal_change_transaction_state"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Internal function to be called by database providers to force a transaction status
+change.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="newstate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new state</doc>
+            <type name="TransactionStatusState"
+                  c:type="GdaTransactionStatusState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="internal_get_provider_data"
+              c:identifier="gda_connection_internal_get_provider_data"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the opaque pointer previously set using gda_connection_internal_set_provider_data().
+If it's not set, then add a connection event and returns %NULL</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the pointer to the opaque structure set using gda_connection_internal_set_provider_data(), or %NULL</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="internal_get_provider_data_error"
+              c:identifier="gda_connection_internal_get_provider_data_error"
+              version="5.0.2"
+              introspectable="0"
+              throws="1">
+        <doc xml:whitespace="preserve">Get the opaque pointer previously set using gda_connection_internal_set_provider_data().
+If it's not set, then add a connection event and returns %NULL</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the pointer to the opaque structure set using gda_connection_internal_set_provider_data(), or %NULL</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="internal_reset_transaction_status"
+              c:identifier="gda_connection_internal_reset_transaction_status"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Internal function to be called by database providers to reset the transaction status.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="internal_savepoint_added"
+              c:identifier="gda_connection_internal_savepoint_added"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Internal functions to be called by database providers when a savepoint has been added
+to keep track of the transaction status of the connection
+
+Note: this function should not be called if gda_connection_internal_statement_executed()
+has already been called because a statement's execution was necessary to perform
+the action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent_trans"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">name of the parent transaction, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="svp_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">savepoint's name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="internal_savepoint_removed"
+              c:identifier="gda_connection_internal_savepoint_removed"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Internal functions to be called by database providers when a savepoint has been removed
+to keep track of the transaction status of the connection
+
+Note: this function should not be called if gda_connection_internal_statement_executed()
+has already been called because a statement's execution was necessary to perform
+the action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="svp_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">savepoint's name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="internal_savepoint_rolledback"
+              c:identifier="gda_connection_internal_savepoint_rolledback"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Internal functions to be called by database providers when a savepoint has been rolled back
+to keep track of the transaction status of the connection
+
+Note: this function should not be called if gda_connection_internal_statement_executed()
+has already been called because a statement's execution was necessary to perform
+the action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="svp_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">savepoint's name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="internal_set_provider_data"
+              c:identifier="gda_connection_internal_set_provider_data"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Note: calling this function more than once will not make it call @destroy_func on any previously
+set opaque @data, you'll have to do it yourself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an opaque structure, known only to the provider for which @cnc is opened</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy_func"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">function to call when the connection closes and @data needs to be destroyed</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="internal_statement_executed"
+              c:identifier="gda_connection_internal_statement_executed"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Internal functions to be called by database providers when a statement has been executed
+to keep track of the transaction status of the connection</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement which has been executed</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">execution's parameters</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaConnectionEvent if the execution failed, or %NULL</doc>
+            <type name="ConnectionEvent" c:type="GdaConnectionEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="internal_transaction_committed"
+              c:identifier="gda_connection_internal_transaction_committed"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Internal functions to be called by database providers when a transaction has been committed
+to keep track of the transaction status of the connection
+
+Note: this function should not be called if gda_connection_internal_statement_executed()
+has already been called because a statement's execution was necessary to perform
+the action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="trans_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">transaction's name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="internal_transaction_rolledback"
+              c:identifier="gda_connection_internal_transaction_rolledback"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Internal functions to be called by database providers when a transaction has been rolled
+back to keep track of the transaction status of the connection
+
+Note: this function should not be called if gda_connection_internal_statement_executed()
+has already been called because a statement's execution was necessary to perform
+the action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="trans_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">transaction's name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="internal_transaction_started"
+              c:identifier="gda_connection_internal_transaction_started"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Internal functions to be called by database providers when a transaction has been started
+to keep track of the transaction status of the connection.
+
+Note: this function should not be called if gda_connection_internal_statement_executed()
+has already been called because a statement's execution was necessary to perform
+the action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent_trans"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">name of the parent transaction, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="trans_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">transaction's name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="isol_level" transfer-ownership="none">
+            <doc xml:whitespace="preserve">isolation level.</doc>
+            <type name="TransactionIsolation"
+                  c:type="GdaTransactionIsolation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_opened" c:identifier="gda_connection_is_opened">
+        <doc xml:whitespace="preserve">Checks whether a connection is open or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the connection is open, %FALSE if it's not.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="open" c:identifier="gda_connection_open" throws="1">
+        <doc xml:whitespace="preserve">Tries to open the connection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the connection is opened, and FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="parse_sql_string"
+              c:identifier="gda_connection_parse_sql_string"
+              version="4.2.3"
+              throws="1">
+        <doc xml:whitespace="preserve">This function helps to parse a SQL string which uses parameters and store them at @params.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdaStatement representing the SQL command, or %NULL if an error occurred</doc>
+          <type name="Statement" c:type="GdaStatement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sql" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an SQL command to parse, not %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="params"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a place to store a new #GdaSet, for parameters used in SQL command, or %NULL</doc>
+            <type name="Set" c:type="GdaSet**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="perform_operation"
+              c:identifier="gda_connection_perform_operation"
+              throws="1">
+        <doc xml:whitespace="preserve">Performs the operation described by @op (which should have been created using
+gda_connection_create_operation()). It is a wrapper around the gda_server_provider_perform_operation()
+method.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="op" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaServerOperation object</doc>
+            <type name="ServerOperation" c:type="GdaServerOperation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="point_available_event"
+              c:identifier="gda_connection_point_available_event"
+              version="4.2">
+        <doc xml:whitespace="preserve">Use this method to get a pointer to the next available connection event which can then be customized
+and taken into account using gda_connection_add_event().
+
+be ignored</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the next available connection event, or %NULL if event should</doc>
+          <type name="ConnectionEvent" c:type="GdaConnectionEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaConnectionEventType</doc>
+            <type name="ConnectionEventType" c:type="GdaConnectionEventType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="quote_sql_identifier"
+              c:identifier="gda_connection_quote_sql_identifier"
+              version="4.0.3">
+        <doc xml:whitespace="preserve">Use this method to get a correctly quoted (if necessary) SQL identifier which can be used
+in SQL statements, from @id. If @id is already correctly quoted for @cnc, then a copy of @id
+may be returned.
+
+This method may add double quotes (or other characters) around @id:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;if @id is a reserved SQL keyword (such as SELECT, INSERT, ...)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;if @id contains non allowed characters such as spaces, or if it starts with a digit&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;in any other event as necessary for @cnc, depending on the the options passed when opening the @cnc
+connection, and specifically the &lt;link linkend="GDA-CONNECTION-OPTIONS-SQL-IDENTIFIERS-CASE-SENSITIVE:CAPS"&gt;
+GDA_CONNECTION_OPTIONS_SQL_IDENTIFIERS_CASE_SENSITIVE&lt;/link&gt; option.&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+One can safely pass an already quoted @id to this method, either with quoting characters allowed by @cnc or using the
+double quote (") character.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string, to free with g_free() once not needed anymore</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an SQL identifier</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="repetitive_statement_execute"
+              c:identifier="gda_connection_repetitive_statement_execute"
+              version="4.2"
+              throws="1">
+        <doc xml:whitespace="preserve">Executes the statement upon which @rstmt is built. Note that as several statements can actually be executed by this
+method, it is recommended to be within a transaction.
+
+If @error is not %NULL and @stop_on_error is %FALSE, then it may contain the last error which occurred.
+
+represent), one for each actual execution of the statement upon which @rstmt is built. If @stop_on_error is %FALSE, then
+the list may contain some %NULL pointers which refer to statements which failed to execute.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new list of #GObject pointers (see gda_connection_statement_execute() for more information about what they</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="GObject.Object"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="rstmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaRepetitiveStatement object</doc>
+            <type name="RepetitiveStatement" c:type="GdaRepetitiveStatement*"/>
+          </parameter>
+          <parameter name="model_usage" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies how the returned data model will be used as a #GdaStatementModelUsage enum</doc>
+            <type name="StatementModelUsage" c:type="GdaStatementModelUsage"/>
+          </parameter>
+          <parameter name="col_types" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an array of GType to request each returned GdaDataModel's column's GType, see gda_connection_statement_execute_select_full() for more information</doc>
+            <array zero-terminated="0" c:type="GType*">
+              <type name="GType" c:type="GType"/>
+            </array>
+          </parameter>
+          <parameter name="stop_on_error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set to TRUE if the method has to stop on the first error.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rollback_savepoint"
+              c:identifier="gda_connection_rollback_savepoint"
+              throws="1">
+        <doc xml:whitespace="preserve">Rollback all the modifications made after the SAVEPOINT named @name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">name of the savepoint to rollback to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rollback_transaction"
+              c:identifier="gda_connection_rollback_transaction"
+              throws="1">
+        <doc xml:whitespace="preserve">Rollbacks the given transaction. This means that all changes
+made to the underlying data source since the last call to
+#gda_connection_begin_transaction() or #gda_connection_commit_transaction()
+will be discarded.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation was successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the name of the transation to commit, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="statement_execute"
+              c:identifier="gda_connection_statement_execute"
+              throws="1">
+        <doc xml:whitespace="preserve">Executes @stmt. 
+
+As @stmt can, by design (and if not abused), contain only one SQL statement, the
+return object will either be:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;a #GdaDataSelect object (which is also a #GdaDataModel) if @stmt is a SELECT statement 
+(usually a GDA_SQL_STATEMENT_SELECT, see #GdaSqlStatementType)
+containing the results of the SELECT. The resulting data model is by default read only, but
+modifications can be enabled, see the #GdaDataSelect's documentation for more information.&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;a #GdaSet for any other SQL statement which correctly executed. In this case
+(if the provider supports it), then the #GdaSet may contain value holders named:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;a (gint) #GdaHolder named "IMPACTED_ROWS"&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;a (GObject) #GdaHolder named "EVENT" which contains a #GdaConnectionEvent&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+If @last_insert_row is not %NULL and @stmt is an INSERT statement, then it will contain (if the
+provider used by @cnc supports it) a new #GdaSet object composed of value holders named "+&amp;lt;column number&amp;gt;"
+starting at column 0 which contain the actual inserted values. For example if a table is composed of an 'id' column
+which is auto incremented and a 'name' column then the execution of a "INSERT INTO mytable (name) VALUES ('joe')"
+query will return a #GdaSet with two holders:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;one with the '+0' ID which may for example contain 1 (note that its "name" property should be "id")&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;one with the '+1' ID which will contain 'joe' (note that its "name" property should be "name")&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+This method may fail with a %GDA_SERVER_PROVIDER_ERROR domain error (see the #GdaServerProviderError error codes).
+
+Note1: If @stmt is a SELECT statement which has some parameters and  if @params is %NULL, then the statement can't
+be executed and this method will return %NULL.
+
+Note2: If @stmt is a SELECT statement which has some parameters and  if @params is not %NULL but contains some
+invalid parameters, then the statement can't be executed and this method will return %NULL, unless the
+ model_usage has the GDA_STATEMENT_MODEL_ALLOW_NOPARAM flag.
+
+Note3: If @stmt is a SELECT statement which has some parameters and  if @params is not %NULL but contains some
+invalid parameters and if @model_usage has the GDA_STATEMENT_MODEL_ALLOW_NOPARAM flag, then the returned
+data model will contain no row but will have all the correct columns (even though some of the columns might
+report as GDA_TYPE_NULL). In this case, if (after this method call) any of @params' parameters change
+then the resulting data model will re-run itself, see the GdaDataSelect's 
+&lt;link linkend="GdaDataSelect--auto-reset"&gt;auto-reset&lt;/link&gt; property for more information.
+
+Note4: if @model_usage does not contain the GDA_STATEMENT_MODEL_RANDOM_ACCESS or
+GDA_STATEMENT_MODEL_CURSOR_FORWARD flags, then the default will be to return a random access data model
+
+Note5: If @stmt is a SELECT statement which returns blob values (of type %GDA_TYPE_BLOB), then an implicit
+transaction will have been started by the database provider, and it's up to the caller to close the transaction
+(which will then be locked) once all the blob ressources have been
+liberated (when the returned data model is destroyed). See the section about
+&lt;link linkend="gen:blobs"&gt;Binary large objects (BLOBs)&lt;/link&gt; for more information.
+
+Also see the &lt;link linkend="limitations"&gt;provider's limitations&lt;/link&gt;, and the
+&lt;link linkend="data-select"&gt;Advanced GdaDataSelect usage&lt;/link&gt; sections.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GObject, or %NULL if an error occurred</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaSet object (which can be obtained using gda_statement_get_parameters()), or %NULL</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+          <parameter name="model_usage" transfer-ownership="none">
+            <doc xml:whitespace="preserve">in the case where @stmt is a SELECT statement, specifies how the returned data model will be used</doc>
+            <type name="StatementModelUsage" c:type="GdaStatementModelUsage"/>
+          </parameter>
+          <parameter name="last_insert_row"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a place to store a new #GdaSet object which contains the values of the last inserted row, or %NULL</doc>
+            <type name="Set" c:type="GdaSet**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="statement_execute_non_select"
+              c:identifier="gda_connection_statement_execute_non_select"
+              throws="1">
+        <doc xml:whitespace="preserve">Executes a non-selection statement on the given connection.
+
+This function returns the number of rows affected by the execution of @stmt, or -1
+if an error occurred, or -2 if the connection's provider does not return the number of rows affected.
+
+This function is just a convenience function around the gda_connection_statement_execute()
+function. 
+See the documentation of the gda_connection_statement_execute() for information
+about the @params list of parameters.
+
+See gda_connection_statement_execute() form more information about @last_insert_row.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of rows affected (&amp;gt;=0) or -1 or -2</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object.</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaSet object (which can be obtained using gda_statement_get_parameters()), or %NULL</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+          <parameter name="last_insert_row"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a place to store a new #GdaSet object which contains the values of the last inserted row, or %NULL</doc>
+            <type name="Set" c:type="GdaSet**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="statement_execute_select"
+              c:identifier="gda_connection_statement_execute_select"
+              throws="1">
+        <doc xml:whitespace="preserve">Executes a selection command on the given connection.
+
+This function returns a #GdaDataModel resulting from the SELECT statement, or %NULL
+if an error occurred.
+
+This function is just a convenience function around the gda_connection_statement_execute()
+function.
+
+See the documentation of the gda_connection_statement_execute() for information
+about the @params list of parameters.
+
+data source, or %NULL if an error occurred</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdaDataModel containing the data returned by the</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object.</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaSet object (which can be obtained using gda_statement_get_parameters()), or %NULL</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="statement_execute_select_full"
+              c:identifier="gda_connection_statement_execute_select_full"
+              throws="1">
+        <doc xml:whitespace="preserve">Executes a selection command on the given connection.
+
+This function returns a #GdaDataModel resulting from the SELECT statement, or %NULL
+if an error occurred.
+
+This function is just a convenience function around the gda_connection_statement_execute()
+function.
+
+See the documentation of the gda_connection_statement_execute() for information
+about the @params list of parameters.
+
+data source, or %NULL if an error occurred</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdaDataModel containing the data returned by the</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object.</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaSet object (which can be obtained using gda_statement_get_parameters()), or %NULL</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+          <parameter name="model_usage" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies how the returned data model will be used as a #GdaStatementModelUsage enum</doc>
+            <type name="StatementModelUsage" c:type="GdaStatementModelUsage"/>
+          </parameter>
+          <parameter name="col_types" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an array of GType to request each returned #GdaDataModel's column's GType, terminated with the G_TYPE_NONE value. Any value left to 0 will make the database provider determine the real GType. @col_types can also be %NULL if no column type is specified.</doc>
+            <array zero-terminated="0" c:type="GType*">
+              <type name="GType" c:type="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="statement_execute_select_fullv"
+              c:identifier="gda_connection_statement_execute_select_fullv"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Executes a selection command on the given connection.
+
+This function returns a #GdaDataModel resulting from the SELECT statement, or %NULL
+if an error occurred.
+
+This function is just a convenience function around the gda_connection_statement_execute()
+function.
+
+See the documentation of the gda_connection_statement_execute() for information
+about the @params list of parameters.
+
+data source, or %NULL if an error occurred</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdaDataModel containing the data returned by the</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object.</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaSet object (which can be obtained using gda_statement_get_parameters()), or %NULL</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+          <parameter name="model_usage" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies how the returned data model will be used as a #GdaStatementModelUsage enum</doc>
+            <type name="StatementModelUsage" c:type="GdaStatementModelUsage"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a place to store an error, or %NULL</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="statement_prepare"
+              c:identifier="gda_connection_statement_prepare"
+              throws="1">
+        <doc xml:whitespace="preserve">Ask the database accessed through the @cnc connection to prepare the usage of @stmt. This is only useful
+if @stmt will be used more than once (however some database providers may always prepare statements 
+before executing them).
+
+This function is also useful to make sure @stmt is fully understood by the database before actually executing it.
+
+Note however that it is also possible that gda_connection_statement_prepare() fails when
+gda_connection_statement_execute() does not fail (this will usually be the case with statements such as
+&lt;![CDATA["SELECT * FROM ##tablename::string"]]&gt; because database usually don't allow variables to be used in place of a 
+table name).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="statement_to_sql"
+              c:identifier="gda_connection_statement_to_sql"
+              throws="1">
+        <doc xml:whitespace="preserve">Renders @stmt as an SQL statement, adapted to the SQL dialect used by @cnc</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string, or %NULL if an error occurred</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaSet object (which can be obtained using gda_statement_get_parameters()), or %NULL</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">SQL rendering flags, as #GdaStatementSqlFlag OR'ed values</doc>
+            <type name="StatementSqlFlag" c:type="GdaStatementSqlFlag"/>
+          </parameter>
+          <parameter name="params_used"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="container"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a place to store the list of individual #GdaHolder objects within @params which have been used</doc>
+            <type name="GLib.SList" c:type="GSList**">
+              <type name="Holder"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="supports_feature"
+              c:identifier="gda_connection_supports_feature">
+        <doc xml:whitespace="preserve">Asks the underlying provider for if a specific feature is supported.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the provider supports it, %FALSE if not.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="none">
+            <doc xml:whitespace="preserve">feature to ask for.</doc>
+            <type name="ConnectionFeature" c:type="GdaConnectionFeature"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_meta_store"
+              c:identifier="gda_connection_update_meta_store"
+              throws="1">
+        <doc xml:whitespace="preserve">Updates @cnc's associated #GdaMetaStore. If @context is not %NULL, then only the parts described by
+ context will be updated, and if it is %NULL, then the complete meta store will be updated. Detailed
+explanations follow:
+
+In order to keep the meta store's contents in a consistent state, the update process involves updating
+the contents of all the tables related to one where the contents change. For example the "_columns"
+table (which lists all the columns of a table) depends on the "_tables" table (which lists all the tables
+in a schema), so if a row is added, removed or modified in the "_tables", then the "_columns" table's contents
+needs to be updated as well regarding that row.
+
+If @context is %NULL, then the update process will simply overwrite any data that was present in all the
+meta store's tables with new (up to date) data even if nothing has changed, without having to build the
+tables' dependency tree. This is the recommended way of proceeding when dealing with a meta store which
+might be outdated.
+
+On the other hand, if @context is not %NULL, then a tree of the dependencies has to be built (depending on
+ context) and only some parts of the meta store are updated following that dependencies tree. Specifying a
+context may be useful for example in the following situations:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;One knows that a database object has changed (for example a table created), and
+may use the @context to request that only the information about that table be updated
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;One is only interrested in the list of views, and may request that only the information
+about views may be updated&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+When @context is not %NULL, and contains specified SQL identifiers (for example the "table_name" of the "_tables"
+table), then each SQL identifier has to match the convention the #GdaMetaStore has adopted regarding
+case sensitivity, using gda_connection_quote_sql_identifier() or gda_meta_store_sql_identifier_quote().
+
+see the &lt;link linkend="information_schema:sql_identifiers"&gt;
+meta data section about SQL identifiers&lt;/link&gt; for more information, and the documentation about the
+gda_sql_identifier_quote() function which will be most useful.
+
+Note however that usually &lt;emphasis&gt;more&lt;/emphasis&gt; information will be updated than strictly requested by
+the @context argument.
+
+For more information, see the &lt;link linkend="information_schema"&gt;Database structure&lt;/link&gt; section, and
+the &lt;link linkend="howto-meta2"&gt;Update the meta data about a table&lt;/link&gt; howto.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">description of which part of @cnc's associated #GdaMetaStore should be updated, or %NULL</doc>
+            <type name="MetaContext" c:type="GdaMetaContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_row_in_table"
+              c:identifier="gda_connection_update_row_in_table"
+              version="4.2.3"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This is a convenience function, which creates an UPDATE statement and executes it using the values
+provided. It internally relies on variables which makes it immune to SQL injection problems.
+
+The equivalent SQL command is: UPDATE &amp;lt;table&amp;gt; SET &amp;lt;column_name&amp;gt; = &amp;lt;new_value&amp;gt; [,...] WHERE &amp;lt;condition_column_name&amp;gt; = &amp;lt;condition_value&amp;gt;.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred, FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="table" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the table's name with the row's values to be updated</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="condition_column_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the column to used in the WHERE condition clause</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="condition_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the @condition_column_type's GType</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a place to store errors, or %NULL</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_row_in_table_v"
+              c:identifier="gda_connection_update_row_in_table_v"
+              version="4.2.3"
+              throws="1">
+        <doc xml:whitespace="preserve">@col_names and @values must have length (&amp;gt;= 1).
+
+This is a convenience function, which creates an UPDATE statement and executes it using the values
+provided. It internally relies on variables which makes it immune to SQL injection problems.
+
+The equivalent SQL command is: UPDATE &amp;lt;table&amp;gt; SET &amp;lt;column_name&amp;gt; = &amp;lt;new_value&amp;gt; [,...] WHERE &amp;lt;condition_column_name&amp;gt; = &amp;lt;condition_value&amp;gt;.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred, FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="table" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the table's name with the row's values to be updated</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="condition_column_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the column to used in the WHERE condition clause</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="condition_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the @condition_column_type's GType</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="col_names" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of column names (as const gchar *)</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="utf8"/>
+            </type>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of values (as #GValue)</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="GObject.Value"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="value_to_sql_string"
+              c:identifier="gda_connection_value_to_sql_string">
+        <doc xml:whitespace="preserve">Produces a fully quoted and escaped string from a GValue</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">escaped and quoted value or NULL if not supported.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="from" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GValue to convert from</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="auth-string" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="cnc-string" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="dsn" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="events-history-size"
+                version="4.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Defines the number of #GdaConnectionEvent objects kept in memory which can
+be fetched using gda_connection_get_events().</doc>
+        <type name="gint"/>
+      </property>
+      <property name="execution-timer"
+                version="4.2.9"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Computes execution times for each statement executed.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="is-wrapper"
+                version="4.2"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="meta-store" writable="1" transfer-ownership="none">
+        <type name="MetaStore"/>
+      </property>
+      <property name="monitor-wrapped-in-mainloop"
+                version="4.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Useful only when there is a mainloop and when the connection acts as a thread wrapper around another connection,
+it sets up a timeout to handle signals coming from the wrapped connection.
+
+If the connection is not a thread wrapper, then this property has no effect.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="options"
+                introspectable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type/>
+      </property>
+      <property name="provider" writable="1" transfer-ownership="none">
+        <type name="ServerProvider"/>
+      </property>
+      <property name="thread-owner" writable="1" transfer-ownership="none">
+        <type name="gpointer"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ConnectionPrivate" c:type="GdaConnectionPrivate*"/>
+      </field>
+      <glib:signal name="conn-closed" when="last">
+        <doc xml:whitespace="preserve">Gets emitted when the connection to the database has been closed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="conn-opened" when="first">
+        <doc xml:whitespace="preserve">Gets emitted when the connection has been opened to the database</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="conn-to-close" when="first">
+        <doc xml:whitespace="preserve">Gets emitted when the connection to the database is about to be closed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="dsn-changed" when="last">
+        <doc xml:whitespace="preserve">Gets emitted when the DSN used by @cnc has been changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="error" when="last">
+        <doc xml:whitespace="preserve">Gets emitted whenever a connection event occurs. Check the nature of @event to
+see if it's an error or a simple notification</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaConnectionEvent object</doc>
+            <type name="ConnectionEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="transaction-status-changed" when="last">
+        <doc xml:whitespace="preserve">Gets emitted when the transaction status of @cnc has changed (a transaction has been 
+started, rolled back, a savepoint added,...)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ConnectionClass"
+            c:type="GdaConnectionClass"
+            glib:is-gtype-struct-for="Connection">
+      <field name="object_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="error">
+        <callback name="error">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="ConnectionEvent" c:type="GdaConnectionEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="conn_opened">
+        <callback name="conn_opened">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="obj" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="conn_to_close">
+        <callback name="conn_to_close">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="obj" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="conn_closed">
+        <callback name="conn_closed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="obj" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="dsn_changed">
+        <callback name="dsn_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="obj" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="transaction_status_changed">
+        <callback name="transaction_status_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="obj" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ConnectionError" c:type="GdaConnectionError">
+      <member name="dsn_not_found_error"
+              value="0"
+              c:identifier="GDA_CONNECTION_DSN_NOT_FOUND_ERROR"/>
+      <member name="provider_not_found_error"
+              value="1"
+              c:identifier="GDA_CONNECTION_PROVIDER_NOT_FOUND_ERROR"/>
+      <member name="provider_error"
+              value="2"
+              c:identifier="GDA_CONNECTION_PROVIDER_ERROR"/>
+      <member name="no_cnc_spec_error"
+              value="3"
+              c:identifier="GDA_CONNECTION_NO_CNC_SPEC_ERROR"/>
+      <member name="no_provider_spec_error"
+              value="4"
+              c:identifier="GDA_CONNECTION_NO_PROVIDER_SPEC_ERROR"/>
+      <member name="open_error"
+              value="5"
+              c:identifier="GDA_CONNECTION_OPEN_ERROR"/>
+      <member name="statement_type_error"
+              value="6"
+              c:identifier="GDA_CONNECTION_STATEMENT_TYPE_ERROR"/>
+      <member name="cant_lock_error"
+              value="7"
+              c:identifier="GDA_CONNECTION_CANT_LOCK_ERROR"/>
+      <member name="task_not_found_error"
+              value="8"
+              c:identifier="GDA_CONNECTION_TASK_NOT_FOUND_ERROR"/>
+      <member name="unsupported_threads_error"
+              value="9"
+              c:identifier="GDA_CONNECTION_UNSUPPORTED_THREADS_ERROR"/>
+      <member name="closed_error"
+              value="10"
+              c:identifier="GDA_CONNECTION_CLOSED_ERROR"/>
+      <member name="meta_data_context_error"
+              value="11"
+              c:identifier="GDA_CONNECTION_META_DATA_CONTEXT_ERROR"/>
+    </enumeration>
+    <class name="ConnectionEvent"
+           c:symbol-prefix="connection_event"
+           c:type="GdaConnectionEvent"
+           parent="GObject.Object"
+           glib:type-name="GdaConnectionEvent"
+           glib:get-type="gda_connection_event_get_type"
+           glib:type-struct="ConnectionEventClass">
+      <method name="get_code" c:identifier="gda_connection_event_get_code">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@event's code (the code is specific to the provider being used)</doc>
+          <type name="glong" c:type="glong"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gda_connection_event_get_description">
+        <doc xml:whitespace="preserve">Get the description of the event. Note that is @event's type is GDA_CONNECTION_EVENT_COMMAND,
+the the description is the SQL of the command.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@event's description.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_event_type"
+              c:identifier="gda_connection_event_get_event_type">
+        <doc xml:whitespace="preserve">Get @event's severity (from a simple notice to a fatal event)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the event type</doc>
+          <type name="ConnectionEventType" c:type="GdaConnectionEventType"/>
+        </return-value>
+      </method>
+      <method name="get_gda_code"
+              c:identifier="gda_connection_event_get_gda_code">
+        <doc xml:whitespace="preserve">Retrieve the code associated to @event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaConnectionEventCode event's code</doc>
+          <type name="ConnectionEventCode" c:type="GdaConnectionEventCode"/>
+        </return-value>
+      </method>
+      <method name="get_source" c:identifier="gda_connection_event_get_source">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@event's source.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_sqlstate"
+              c:identifier="gda_connection_event_get_sqlstate">
+        <doc xml:whitespace="preserve">Get the SQLSTATE value of @event. Even though the SQLSTATE values are specified by ANSI SQL and ODBC,
+consult each DBMS for the possible values. However, the "00000" (success) value means that there is no error,
+and the "HY000" (general error) value means an error but no better error code available.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@event's SQL state.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_code" c:identifier="gda_connection_event_set_code">
+        <doc xml:whitespace="preserve">Sets @event's code: the code is specific to the provider being used.
+If you want to have a common understanding of the event codes, use
+gda_connection_event_get_gda_code() instead.
+
+This function should not be called directly</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="code" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a code.</doc>
+            <type name="glong" c:type="glong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_description"
+              c:identifier="gda_connection_event_set_description">
+        <doc xml:whitespace="preserve">Sets @event's @description. This function should not be called directly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a description.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_event_type"
+              c:identifier="gda_connection_event_set_event_type">
+        <doc xml:whitespace="preserve">Sets @event's severity (from a simple notice to a fatal event)
+This function should not be called directly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the severity of the event</doc>
+            <type name="ConnectionEventType" c:type="GdaConnectionEventType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_gda_code"
+              c:identifier="gda_connection_event_set_gda_code">
+        <doc xml:whitespace="preserve">Sets @event's gda code: that code is standardized by the libgda
+library. If you want to specify the corresponding provider specific code,
+use gda_connection_event_get_code() or gda_connection_event_get_sqlstate() instead.
+
+This function should not be called directly</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="code" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a code</doc>
+            <type name="ConnectionEventCode" c:type="GdaConnectionEventCode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_source" c:identifier="gda_connection_event_set_source">
+        <doc xml:whitespace="preserve">Sets @event's @source; this function should not be called directly</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a source.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sqlstate"
+              c:identifier="gda_connection_event_set_sqlstate">
+        <doc xml:whitespace="preserve">Changes the SQLSTATE code of @event, this function should not be called directly
+
+Sets @event's SQL state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sqlstate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">SQL state.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="type" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ConnectionEventPrivate"
+              c:type="GdaConnectionEventPrivate*"/>
+      </field>
+    </class>
+    <record name="ConnectionEventClass"
+            c:type="GdaConnectionEventClass"
+            glib:is-gtype-struct-for="ConnectionEvent">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ConnectionEventCode" c:type="GdaConnectionEventCode">
+      <member name="constraint_violation"
+              value="0"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_CONSTRAINT_VIOLATION"/>
+      <member name="restrict_violation"
+              value="1"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_RESTRICT_VIOLATION"/>
+      <member name="not_null_violation"
+              value="2"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_NOT_NULL_VIOLATION"/>
+      <member name="foreign_key_violation"
+              value="3"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_FOREIGN_KEY_VIOLATION"/>
+      <member name="unique_violation"
+              value="4"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_UNIQUE_VIOLATION"/>
+      <member name="check_violation"
+              value="5"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_CHECK_VIOLATION"/>
+      <member name="insufficient_privileges"
+              value="6"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_INSUFFICIENT_PRIVILEGES"/>
+      <member name="undefined_column"
+              value="7"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_UNDEFINED_COLUMN"/>
+      <member name="undefined_function"
+              value="8"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_UNDEFINED_FUNCTION"/>
+      <member name="undefined_table"
+              value="9"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_UNDEFINED_TABLE"/>
+      <member name="duplicate_column"
+              value="10"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_DUPLICATE_COLUMN"/>
+      <member name="duplicate_database"
+              value="11"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_DUPLICATE_DATABASE"/>
+      <member name="duplicate_function"
+              value="12"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_DUPLICATE_FUNCTION"/>
+      <member name="duplicate_schema"
+              value="13"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_DUPLICATE_SCHEMA"/>
+      <member name="duplicate_table"
+              value="14"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_DUPLICATE_TABLE"/>
+      <member name="duplicate_alias"
+              value="15"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_DUPLICATE_ALIAS"/>
+      <member name="duplicate_object"
+              value="16"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_DUPLICATE_OBJECT"/>
+      <member name="syntax_error"
+              value="17"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_SYNTAX_ERROR"/>
+      <member name="unknown"
+              value="18"
+              c:identifier="GDA_CONNECTION_EVENT_CODE_UNKNOWN"/>
+    </enumeration>
+    <record name="ConnectionEventPrivate"
+            c:type="GdaConnectionEventPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="ConnectionEventType" c:type="GdaConnectionEventType">
+      <member name="notice"
+              value="0"
+              c:identifier="GDA_CONNECTION_EVENT_NOTICE"/>
+      <member name="warning"
+              value="1"
+              c:identifier="GDA_CONNECTION_EVENT_WARNING"/>
+      <member name="error"
+              value="2"
+              c:identifier="GDA_CONNECTION_EVENT_ERROR"/>
+      <member name="command"
+              value="3"
+              c:identifier="GDA_CONNECTION_EVENT_COMMAND"/>
+    </enumeration>
+    <enumeration name="ConnectionFeature" c:type="GdaConnectionFeature">
+      <doc xml:whitespace="preserve">Used in gda_connection_supports_feature() and gda_server_provider_supports_feature() to test if a connection
+or a database provider supports some specific feature.</doc>
+      <member name="aggregates"
+              value="0"
+              c:identifier="GDA_CONNECTION_FEATURE_AGGREGATES"/>
+      <member name="blobs"
+              value="1"
+              c:identifier="GDA_CONNECTION_FEATURE_BLOBS"/>
+      <member name="indexes"
+              value="2"
+              c:identifier="GDA_CONNECTION_FEATURE_INDEXES"/>
+      <member name="inheritance"
+              value="3"
+              c:identifier="GDA_CONNECTION_FEATURE_INHERITANCE"/>
+      <member name="namespaces"
+              value="4"
+              c:identifier="GDA_CONNECTION_FEATURE_NAMESPACES"/>
+      <member name="procedures"
+              value="5"
+              c:identifier="GDA_CONNECTION_FEATURE_PROCEDURES"/>
+      <member name="sequences"
+              value="6"
+              c:identifier="GDA_CONNECTION_FEATURE_SEQUENCES"/>
+      <member name="sql" value="7" c:identifier="GDA_CONNECTION_FEATURE_SQL"/>
+      <member name="transactions"
+              value="8"
+              c:identifier="GDA_CONNECTION_FEATURE_TRANSACTIONS"/>
+      <member name="savepoints"
+              value="9"
+              c:identifier="GDA_CONNECTION_FEATURE_SAVEPOINTS"/>
+      <member name="savepoints_remove"
+              value="10"
+              c:identifier="GDA_CONNECTION_FEATURE_SAVEPOINTS_REMOVE"/>
+      <member name="triggers"
+              value="11"
+              c:identifier="GDA_CONNECTION_FEATURE_TRIGGERS"/>
+      <member name="updatable_cursor"
+              value="12"
+              c:identifier="GDA_CONNECTION_FEATURE_UPDATABLE_CURSOR"/>
+      <member name="users"
+              value="13"
+              c:identifier="GDA_CONNECTION_FEATURE_USERS"/>
+      <member name="views"
+              value="14"
+              c:identifier="GDA_CONNECTION_FEATURE_VIEWS"/>
+      <member name="xa_transactions"
+              value="15"
+              c:identifier="GDA_CONNECTION_FEATURE_XA_TRANSACTIONS"/>
+      <member name="multi_threading"
+              value="16"
+              c:identifier="GDA_CONNECTION_FEATURE_MULTI_THREADING"/>
+      <member name="last"
+              value="17"
+              c:identifier="GDA_CONNECTION_FEATURE_LAST"/>
+    </enumeration>
+    <enumeration name="ConnectionMetaType" c:type="GdaConnectionMetaType">
+      <doc xml:whitespace="preserve">Used with gda_connection_get_meta_store_data() to describe what meta data to extract from
+a connection's associated #GdaMetaStore.</doc>
+      <member name="namespaces"
+              value="0"
+              c:identifier="GDA_CONNECTION_META_NAMESPACES"/>
+      <member name="types" value="1" c:identifier="GDA_CONNECTION_META_TYPES"/>
+      <member name="tables"
+              value="2"
+              c:identifier="GDA_CONNECTION_META_TABLES"/>
+      <member name="views" value="3" c:identifier="GDA_CONNECTION_META_VIEWS"/>
+      <member name="fields"
+              value="4"
+              c:identifier="GDA_CONNECTION_META_FIELDS"/>
+      <member name="indexes"
+              value="5"
+              c:identifier="GDA_CONNECTION_META_INDEXES"/>
+    </enumeration>
+    <bitfield name="ConnectionOptions" c:type="GdaConnectionOptions">
+      <doc xml:whitespace="preserve">Specifies some aspects of a connection when opening it.
+
+Additional information about the GDA_CONNECTION_OPTIONS_SQL_IDENTIFIERS_CASE_SENSITIVE flag:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;For example without this flag, if the table
+name specified in a #GdaServerOperation to create a table is
+&lt;emphasis&gt;MyTable&lt;/emphasis&gt;, then usually the database will create a table named
+&lt;emphasis&gt;mytable&lt;/emphasis&gt;, whereas with this flag, the table will be created
+as &lt;emphasis&gt;MyTable&lt;/emphasis&gt; (note that in the end the database may still decide
+to name the table &lt;emphasis&gt;mytable&lt;/emphasis&gt; or differently if it can't do
+otherwise).&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Libgda will not apply this rule when parsing SQL code, the SQL code being parsed
+has to be conform to the database it will be used with&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+Additional information about the GDA_CONNECTION_OPTIONS_THREAD_SAFE and GDA_CONNECTION_OPTIONS_THREAD_ISOLATED flags:
+The GDA_CONNECTION_OPTIONS_THREAD_SAFE flag specifies that it has to be able to use the returned connection object from
+several threads at once (locking is ensured by the #GdaConnection itself). Depending on the database provider's
+implementation and on the native libraries it uses, the "normal" connection object might not respect this requirement,
+and in this case a specific thread is started and used as the unique thread which will manipulate the actual connection,
+while a "wrapper connection" is actually returned and used by the caller (that wrapper connection passes method calls
+from the calling thread to the actual connection's specific thread, and gets the results back).
+
+The GDA_CONNECTION_OPTIONS_THREAD_ISOLATED forces using a specific thread and a "wrapper connection" even if the
+"normal" connection would itself be thread safe; this is useful for example to be sure the asynchronous API can
+always be used (see gda_connection_async_statement_execute()).
+
+Having a specific thread and a "wrapper connection" definitely has an impact on the performances (because it involves
+messages passing between threads for every method call), so using the
+GDA_CONNECTION_OPTIONS_THREAD_SAFE or GDA_CONNECTION_OPTIONS_THREAD_ISOLATED flags should be carefully considered.
+
+Note about the @GDA_CONNECTION_OPTIONS_AUTO_META_DATA flag:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;Every time a DDL statement is successfully executed, the associated mate data, if
+&lt;listitem&gt;&lt;para&gt;If a transaction is started and some DDL statements are executed and the transaction
+is not rolled back or committed, then the meta data may end up being wrong&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+      <member name="none"
+              value="0"
+              c:identifier="GDA_CONNECTION_OPTIONS_NONE"/>
+      <member name="read_only"
+              value="1"
+              c:identifier="GDA_CONNECTION_OPTIONS_READ_ONLY"/>
+      <member name="sql_identifiers_case_sensitive"
+              value="2"
+              c:identifier="GDA_CONNECTION_OPTIONS_SQL_IDENTIFIERS_CASE_SENSITIVE"/>
+      <member name="thread_safe"
+              value="4"
+              c:identifier="GDA_CONNECTION_OPTIONS_THREAD_SAFE"/>
+      <member name="thread_isolated"
+              value="8"
+              c:identifier="GDA_CONNECTION_OPTIONS_THREAD_ISOLATED"/>
+      <member name="auto_meta_data"
+              value="16"
+              c:identifier="GDA_CONNECTION_OPTIONS_AUTO_META_DATA"/>
+    </bitfield>
+    <record name="ConnectionPrivate"
+            c:type="GdaConnectionPrivate"
+            disguised="1">
+    </record>
+    <class name="DataAccessWrapper"
+           c:symbol-prefix="data_access_wrapper"
+           c:type="GdaDataAccessWrapper"
+           parent="GObject.Object"
+           glib:type-name="GdaDataAccessWrapper"
+           glib:get-type="gda_data_access_wrapper_get_type"
+           glib:type-struct="DataAccessWrapperClass">
+      <implements name="DataModel"/>
+      <function name="new" c:identifier="gda_data_access_wrapper_new">
+        <doc xml:whitespace="preserve">Creates a new #GdaDataModel object which buffers the rows of @model. This object is useful
+only if @model can only be accessed using cursor based method.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly created #GdaDataModel.</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModel</doc>
+            <type name="DataModel" c:type="GdaDataModel*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <property name="model"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="DataModel"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DataAccessWrapperPrivate"
+              c:type="GdaDataAccessWrapperPrivate*"/>
+      </field>
+    </class>
+    <record name="DataAccessWrapperClass"
+            c:type="GdaDataAccessWrapperClass"
+            glib:is-gtype-struct-for="DataAccessWrapper">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="DataAccessWrapperPrivate"
+            c:type="GdaDataAccessWrapperPrivate"
+            disguised="1">
+    </record>
+    <class name="DataComparator"
+           c:symbol-prefix="data_comparator"
+           c:type="GdaDataComparator"
+           parent="GObject.Object"
+           glib:type-name="GdaDataComparator"
+           glib:get-type="gda_data_comparator_get_type"
+           glib:type-struct="DataComparatorClass">
+      <constructor name="new" c:identifier="gda_data_comparator_new">
+        <doc xml:whitespace="preserve">Creates a new comparator to compute the differences from @old_model to @new_model: if one applies
+all the computed differences (as #GdaDiff structures) to @old_model, the resulting data model
+should have the same contents as @new_model.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaDataComparator object</doc>
+          <type name="DataComparator" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Data model to which the modifications should be applied</doc>
+            <type name="DataModel" c:type="GdaDataModel*"/>
+          </parameter>
+          <parameter name="new_model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Target data model.</doc>
+            <type name="DataModel" c:type="GdaDataModel*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="error_quark"
+                c:identifier="gda_data_comparator_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <virtual-method name="diff_computed">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="diff" transfer-ownership="none">
+            <type name="Diff" c:type="GdaDiff*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="compute_diff"
+              c:identifier="gda_data_comparator_compute_diff"
+              throws="1">
+        <doc xml:whitespace="preserve">Actually computes the differences between the data models for which @comp is defined. 
+
+For each difference computed, stored in a #GdaDiff structure, the "diff-computed" signal is emitted.
+If one connects to this signal and returns FALSE in the signal handler, then computing differences will be
+stopped and an error will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if all the differences have been successfully computed, and FALSE if an error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_diff" c:identifier="gda_data_comparator_get_diff">
+        <doc xml:whitespace="preserve">Get a pointer to the #GdaDiff structure representing the difference which number is @pos</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #GdaDiff, or %NULL if @pos is invalid</doc>
+          <type name="Diff" c:type="GdaDiff*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested difference number (starting at 0)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_diffs"
+              c:identifier="gda_data_comparator_get_n_diffs">
+        <doc xml:whitespace="preserve">Get the number of differences as computed by the last time gda_data_comparator_compute_diff() was called.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of computed differences</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_key_columns"
+              c:identifier="gda_data_comparator_set_key_columns">
+        <doc xml:whitespace="preserve">Defines the columns which will be used as a key when searching data. This is not mandatory but
+will speed things up as less data will be processed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="col_numbers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of @nb_cols values</doc>
+            <array length="1" zero-terminated="0" c:type="gint*">
+              <type name="gint" c:type="gint"/>
+            </array>
+          </parameter>
+          <parameter name="nb_cols" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the @col_numbers array</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="new-model" writable="1" transfer-ownership="none">
+        <type name="DataModel"/>
+      </property>
+      <property name="old-model" writable="1" transfer-ownership="none">
+        <type name="DataModel"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DataComparatorPrivate" c:type="GdaDataComparatorPrivate*"/>
+      </field>
+      <glib:signal name="diff-computed" when="last">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="DataComparatorClass"
+            c:type="GdaDataComparatorClass"
+            glib:is-gtype-struct-for="DataComparator">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="diff_computed">
+        <callback name="diff_computed">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="comp" transfer-ownership="none">
+              <type name="DataComparator" c:type="GdaDataComparator*"/>
+            </parameter>
+            <parameter name="diff" transfer-ownership="none">
+              <type name="Diff" c:type="GdaDiff*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="DataComparatorError" c:type="GdaDataComparatorError">
+      <member name="missing_data_model_error"
+              value="0"
+              c:identifier="GDA_DATA_COMPARATOR_MISSING_DATA_MODEL_ERROR"/>
+      <member name="column_types_mismatch_error"
+              value="1"
+              c:identifier="GDA_DATA_COMPARATOR_COLUMN_TYPES_MISMATCH_ERROR"/>
+      <member name="model_access_error"
+              value="2"
+              c:identifier="GDA_DATA_COMPARATOR_MODEL_ACCESS_ERROR"/>
+      <member name="user_cancelled_error"
+              value="3"
+              c:identifier="GDA_DATA_COMPARATOR_USER_CANCELLED_ERROR"/>
+    </enumeration>
+    <record name="DataComparatorPrivate"
+            c:type="GdaDataComparatorPrivate"
+            disguised="1">
+    </record>
+    <interface name="DataHandler"
+               c:symbol-prefix="data_handler"
+               c:type="GdaDataHandler"
+               glib:type-name="GdaDataHandler"
+               glib:get-type="gda_data_handler_get_type"
+               glib:type-struct="DataHandlerIface">
+      <function name="get_default"
+                c:identifier="gda_data_handler_get_default"
+                version="4.2.3">
+        <doc xml:whitespace="preserve">Obtain a pointer to a #GdaDataHandler which can manage #GValue values of type @for_type. The returned
+data handler will be adapted to use the current locale information (for example dates will be formatted
+taking into account the locale).
+
+The returned pointer is %NULL if there is no default data handler available for the @for_type data type</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaDataHandler which must not be modified or destroyed.</doc>
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType type</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="accepts_g_type" invoker="accepts_g_type">
+        <doc xml:whitespace="preserve">Checks wether the GdaDataHandler is able to handle the gda type given as argument.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the gda type can be handled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_descr" invoker="get_descr">
+        <doc xml:whitespace="preserve">Get a short description of the GdaDataHandler</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the description</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_sane_init_value" invoker="get_sane_init_value">
+        <doc xml:whitespace="preserve">Creates a new GValue which holds a sane initial value to be used if no value is specifically
+provided. For example for a simple string, this would return a new value containing the "" string.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GValue, or %NULL if no such value can be created.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_sql_from_value" invoker="get_sql_from_value">
+        <doc xml:whitespace="preserve">Creates a new string which is an SQL representation of the given value, the returned string
+can be used directly in an SQL statement. For example if @value is a G_TYPE_STRING, then
+the returned string will be correctly quoted. Note however that it is a better practice
+to use variables in statements instead of value literals, see
+the &lt;link linkend="GdaSqlParser.description"&gt;GdaSqlParser&lt;/link&gt; for more information.
+
+If the value is NULL or is of type GDA_TYPE_NULL,
+or is a G_TYPE_STRING and g_value_get_string() returns %NULL, the returned string is "NULL".</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new string, or %NULL if an error occurred</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the value to be converted to a string, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_str_from_value" invoker="get_str_from_value">
+        <doc xml:whitespace="preserve">Creates a new string which is a "user friendly" representation of the given value
+(in the user's locale, specially for the dates). If the value is 
+NULL or is of type GDA_TYPE_NULL, the returned string is a copy of "" (empty string).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new string, or %NULL if an error occurred</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the value to be converted to a string, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_value_from_sql" invoker="get_value_from_sql">
+        <doc xml:whitespace="preserve">Creates a new GValue which represents the SQL value given as argument. This is
+the opposite of the function gda_data_handler_get_sql_from_value(). The type argument
+is used to determine the real data type requested for the returned value.
+
+If the @sql string is %NULL, then the returned GValue is of type GDA_TYPE_NULL;
+if the @sql string does not correspond to a valid SQL string for the requested type, then
+the %NULL is returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GValue or %NULL on error</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sql" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an SQL string, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_value_from_str" invoker="get_value_from_str">
+        <doc xml:whitespace="preserve">Creates a new GValue which represents the @str value given as argument. This is
+the opposite of the function gda_data_handler_get_str_from_value(). The type argument
+is used to determine the real data type requested for the returned value.
+
+If the @str string is %NULL, then the returned GValue is of type GDA_TYPE_NULL;
+if the @str string does not correspond to a valid string for the requested type, then
+%NULL is returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GValue or %NULL on error</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a string or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="accepts_g_type"
+              c:identifier="gda_data_handler_accepts_g_type">
+        <doc xml:whitespace="preserve">Checks wether the GdaDataHandler is able to handle the gda type given as argument.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the gda type can be handled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_descr" c:identifier="gda_data_handler_get_descr">
+        <doc xml:whitespace="preserve">Get a short description of the GdaDataHandler</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the description</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_sane_init_value"
+              c:identifier="gda_data_handler_get_sane_init_value">
+        <doc xml:whitespace="preserve">Creates a new GValue which holds a sane initial value to be used if no value is specifically
+provided. For example for a simple string, this would return a new value containing the "" string.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GValue, or %NULL if no such value can be created.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sql_from_value"
+              c:identifier="gda_data_handler_get_sql_from_value">
+        <doc xml:whitespace="preserve">Creates a new string which is an SQL representation of the given value, the returned string
+can be used directly in an SQL statement. For example if @value is a G_TYPE_STRING, then
+the returned string will be correctly quoted. Note however that it is a better practice
+to use variables in statements instead of value literals, see
+the &lt;link linkend="GdaSqlParser.description"&gt;GdaSqlParser&lt;/link&gt; for more information.
+
+If the value is NULL or is of type GDA_TYPE_NULL,
+or is a G_TYPE_STRING and g_value_get_string() returns %NULL, the returned string is "NULL".</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new string, or %NULL if an error occurred</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the value to be converted to a string, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_str_from_value"
+              c:identifier="gda_data_handler_get_str_from_value">
+        <doc xml:whitespace="preserve">Creates a new string which is a "user friendly" representation of the given value
+(in the user's locale, specially for the dates). If the value is 
+NULL or is of type GDA_TYPE_NULL, the returned string is a copy of "" (empty string).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new string, or %NULL if an error occurred</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the value to be converted to a string, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_from_sql"
+              c:identifier="gda_data_handler_get_value_from_sql">
+        <doc xml:whitespace="preserve">Creates a new GValue which represents the SQL value given as argument. This is
+the opposite of the function gda_data_handler_get_sql_from_value(). The type argument
+is used to determine the real data type requested for the returned value.
+
+If the @sql string is %NULL, then the returned GValue is of type GDA_TYPE_NULL;
+if the @sql string does not correspond to a valid SQL string for the requested type, then
+the %NULL is returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GValue or %NULL on error</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sql" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an SQL string, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_from_str"
+              c:identifier="gda_data_handler_get_value_from_str">
+        <doc xml:whitespace="preserve">Creates a new GValue which represents the @str value given as argument. This is
+the opposite of the function gda_data_handler_get_str_from_value(). The type argument
+is used to determine the real data type requested for the returned value.
+
+If the @str string is %NULL, then the returned GValue is of type GDA_TYPE_NULL;
+if the @str string does not correspond to a valid string for the requested type, then
+%NULL is returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GValue or %NULL on error</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a string or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="DataHandlerIface"
+            c:type="GdaDataHandlerIface"
+            glib:is-gtype-struct-for="DataHandler">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_sql_from_value">
+        <callback name="get_sql_from_value">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the new string, or %NULL if an error occurred</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="dh" transfer-ownership="none">
+              <type name="DataHandler" c:type="GdaDataHandler*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">the value to be converted to a string, or %NULL</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_str_from_value">
+        <callback name="get_str_from_value">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the new string, or %NULL if an error occurred</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="dh" transfer-ownership="none">
+              <type name="DataHandler" c:type="GdaDataHandler*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">the value to be converted to a string, or %NULL</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_value_from_sql">
+        <callback name="get_value_from_sql">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the new #GValue or %NULL on error</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </return-value>
+          <parameters>
+            <parameter name="dh" transfer-ownership="none">
+              <type name="DataHandler" c:type="GdaDataHandler*"/>
+            </parameter>
+            <parameter name="sql" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">an SQL string, or %NULL</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a GType</doc>
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_value_from_str">
+        <callback name="get_value_from_str">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the new #GValue or %NULL on error</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </return-value>
+          <parameters>
+            <parameter name="dh" transfer-ownership="none">
+              <type name="DataHandler" c:type="GdaDataHandler*"/>
+            </parameter>
+            <parameter name="str" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">a string or %NULL</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a GType</doc>
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_sane_init_value">
+        <callback name="get_sane_init_value">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the new #GValue, or %NULL if no such value can be created.</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </return-value>
+          <parameters>
+            <parameter name="dh" transfer-ownership="none">
+              <type name="DataHandler" c:type="GdaDataHandler*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GType</doc>
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="accepts_g_type">
+        <callback name="accepts_g_type">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the gda type can be handled</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="dh" transfer-ownership="none">
+              <type name="DataHandler" c:type="GdaDataHandler*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GType</doc>
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_descr">
+        <callback name="get_descr">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the description</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="dh" transfer-ownership="none">
+              <type name="DataHandler" c:type="GdaDataHandler*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="DataMetaWrapper" c:type="GdaDataMetaWrapper">
+      <field name="object" writable="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" writable="1">
+        <type name="DataMetaWrapperPrivate"
+              c:type="GdaDataMetaWrapperPrivate*"/>
+      </field>
+    </record>
+    <record name="DataMetaWrapperClass" c:type="GdaDataMetaWrapperClass">
+      <field name="parent_class" writable="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="DataMetaWrapperMode" c:type="GdaDataMetaWrapperMode">
+      <member name="lc"
+              value="0"
+              c:identifier="GDA_DATA_META_WRAPPER_MODE_LC"/>
+      <member name="uc"
+              value="1"
+              c:identifier="GDA_DATA_META_WRAPPER_MODE_UC"/>
+    </enumeration>
+    <record name="DataMetaWrapperPrivate"
+            c:type="GdaDataMetaWrapperPrivate"
+            disguised="1">
+    </record>
+    <interface name="DataModel"
+               c:symbol-prefix="data_model"
+               c:type="GdaDataModel"
+               glib:type-name="GdaDataModel"
+               glib:get-type="gda_data_model_get_type"
+               glib:type-struct="DataModelIface">
+      <function name="error_quark" c:identifier="gda_data_model_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <virtual-method name="access_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="i_append_row" invoker="append_row" throws="1">
+        <doc xml:whitespace="preserve">Appends a row to the data model (the new row will possibly have NULL values for all columns,
+or some other values depending on the data model implementation)
+
+Upon errors -1 will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of the added row, or -1 if an error occurred</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="i_append_values"
+                      invoker="append_values"
+                      introspectable="0"
+                      throws="1">
+        <doc xml:whitespace="preserve">Appends a row to the given data model. If any value in @values is actually %NULL, then 
+it is considered as a default value. If @values is %NULL then all values are set to their default value.
+
+Upon errors -1 will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of the added row, or -1 if an error occurred</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="values" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">#GList of #GValue* representing the row to add.  The length must match model's column count.  These #GValue are value-copied (the user is still responsible for freeing them).</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="GLib.Value"/>
+            </type>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="i_create_iter" invoker="create_iter">
+        <doc xml:whitespace="preserve">Creates a new iterator object #GdaDataModelIter object which can be used to iterate through
+rows in @model. The new #GdaDataModelIter does not hold any reference to @model (ie. if @model
+is destroyed at some point, the new iterator will become useless but in any case it will not prevent
+the data model from being destroyed).
+
+Depending on the data model's implementation, a new #GdaDataModelIter object may be created,
+or a reference to an already existing #GdaDataModelIter may be returned. For example if @model only
+supports being accessed using a forward moving cursor (say a the result of a SELECT executed by SQLite
+with a cursor access mode specified), then this method will always return the same iterator.
+
+If a new #GdaDataModelIter is created, then the row it represents is undefined.
+
+For models which can be accessed 
+randomly, any row can be set using gda_data_model_iter_move_to_row(), 
+and for models which are accessible sequentially only then use
+gda_data_model_iter_move_next() (and gda_data_model_iter_move_prev() if
+supported).
+
+Note: for the #GdaDataProxy data model (which proxies any #GdaDataModel for modifications and
+has twice the number of columns of the proxied data model), this method will create an iterator
+in which only the columns of the proxied data model appear. If you need to have a #GdaDataModelIter
+in which all the proxy's columns appear, create it using:
+&lt;programlisting&gt;&lt;![CDATA[iter = g_object_new (GDA_TYPE_DATA_MODEL_ITER, "data-model", proxy, NULL);]]&gt;&lt;/programlisting&gt;</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdaDataModelIter object, or %NULL if an error occurred</doc>
+          <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="i_describe_column" invoker="describe_column">
+        <doc xml:whitespace="preserve">Queries the underlying data model implementation for a description
+of a given column. That description is returned in the form of
+a #GdaColumn structure, which contains all the information
+about the given column in the data model.
+
+WARNING: the returned #GdaColumn object belongs to the @model model and
+and should not be destroyed; any modification will affect the whole data model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the description of the column.</doc>
+          <type name="Column" c:type="GdaColumn*"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="i_find_row"
+                      invoker="get_row_from_values"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Returns the first row where all the values in @values at the columns identified at
+ cols_index match. If the row can't be identified, then returns -1;
+
+NOTE: the @cols_index array MUST contain a column index for each value in @values</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested row number, of -1 if not found</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of #GValue values (no %NULL is allowed)</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="GLib.Value"/>
+            </type>
+          </parameter>
+          <parameter name="cols_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #gint containing the column number to match each value of @values</doc>
+            <array zero-terminated="0" c:type="gint*">
+              <type name="gint" c:type="gint"/>
+            </array>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="i_get_access_flags" invoker="get_access_flags">
+        <doc xml:whitespace="preserve">Get the attributes of @model such as how to access the data it contains if it's modifiable, etc.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an ORed value of #GdaDataModelAccessFlags flags</doc>
+          <type name="DataModelAccessFlags" c:type="GdaDataModelAccessFlags"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="i_get_attributes_at" invoker="get_attributes_at">
+        <doc xml:whitespace="preserve">Get the attributes of the value stored at (row, col) in @model, which
+is an ORed value of #GdaValueAttribute flags. As a special case, if
+ row is -1, then the attributes returned correspond to a "would be" value
+if a row was added to @model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the attributes as an ORed value of #GdaValueAttribute</doc>
+          <type name="ValueAttribute" c:type="GdaValueAttribute"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid column number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid row number, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="i_get_exceptions"
+                      invoker="get_exceptions"
+                      version="4.2.6">
+        <doc xml:whitespace="preserve">Get the global data model exception(s) that occurred when using @model.
+This is useful for example for the LDAP related
+data models where some rows may be missing because the LDAP search has reached a limit
+imposed by the LDAP server.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a %NULL terminated array of #GError, or %NULL.</doc>
+          <array c:type="GError**">
+            <type name="GLib.Error"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="i_get_n_columns" invoker="get_n_columns">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of columns in the given data model.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="i_get_n_rows" invoker="get_n_rows">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of rows in the given data model, or -1 if the number of rows is not known</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="i_get_notify" invoker="get_notify">
+        <doc xml:whitespace="preserve">Returns the status of notifications changes on the given data model.
+
+Note: This function must be implemented but is recommended to use #gda_data_model_thaw
+and #gda_data_model_freeze functions instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="i_get_value_at" invoker="get_value_at" throws="1">
+        <doc xml:whitespace="preserve">Retrieves the data stored in the given position (identified by
+the @col and @row parameters) on a data model.
+
+Upon errors %NULL will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.
+
+This is the main function for accessing data in a model which allows random access to its data.
+To access data in a data model using a cursor, use a #GdaDataModelIter object, obtained using
+gda_data_model_create_iter().
+
+Note1: the returned #GValue must not be modified directly (unexpected behaviours may
+occur if you do so).
+
+Note2: the returned value may become invalid as soon as any Libgda part is executed again,
+which means if you want to keep the value, a copy must be made, however it will remain valid
+as long as the only Libgda usage is calling gda_data_model_get_value_at() for different values
+of the same row.
+
+If you want to modify a value stored in a #GdaDataModel, use the gda_data_model_set_value_at() or 
+gda_data_model_set_values() methods.
+
+Upon errors %NULL will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.
+
+position, or %NULL on error (out-of-bound position, etc).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue containing the value stored in the given</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid column number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid row number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="i_iter_at_row" invoker="iter_at_row">
+        <doc xml:whitespace="preserve">Moves @iter to the row number given by @row.
+
+Note: This function must be implemented but is recommended to use #GdaDataModelIter 
+object directly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModelIter object.</doc>
+            <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+          </parameter>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a row to point to with @iter</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="i_iter_next" invoker="iter_next">
+        <doc xml:whitespace="preserve">Moves @iter to the next row in @model.
+
+Note: This function must be implemented but is recommended to use #GdaDataModelIter 
+object directly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModelIter object.</doc>
+            <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="i_iter_prev" invoker="iter_prev">
+        <doc xml:whitespace="preserve">Moves @iter to the next row in @model.
+
+Note: This function must be implemented but is recommended to use #GdaDataModelIter 
+object directly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModelIter object.</doc>
+            <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="i_iter_set_value"
+                      invoker="iter_set_value"
+                      throws="1">
+        <doc xml:whitespace="preserve">Set @value to the given @column and row pointed by @iter in the given @model.
+
+Note: This function must be implemented but is recommended to use #GdaDataModelIter 
+object directly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModelIter object.</doc>
+            <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+          </parameter>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of column to set value to</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the to use to set on</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="i_remove_row" invoker="remove_row" throws="1">
+        <doc xml:whitespace="preserve">Removes a row from the data model.
+
+Upon errors FALSE will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row number to be removed.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="i_send_hint" invoker="send_hint">
+        <doc xml:whitespace="preserve">Sends a hint to the data model. The hint may or may not be handled by the data
+model, depending on its implementation</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a hint to send to the model</doc>
+            <type name="DataModelHint" c:type="GdaDataModelHint"/>
+          </parameter>
+          <parameter name="hint_value"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">an optional value to specify the hint, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="i_set_notify" invoker="set_notify">
+        <doc xml:whitespace="preserve">Enable or disable notifications changes on the given data model.
+
+Note: This function must be implemented but is recommended to use #gda_data_model_thaw
+and #gda_data_model_freeze functions instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="do_notify_changes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Set to TRUE if you require notifications.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="i_set_value_at" invoker="set_value_at" throws="1">
+        <doc xml:whitespace="preserve">Modifies a value in @model, at (@col, @row).
+
+Upon errors FALSE will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the value in the data model has been updated and no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue (not %NULL)</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="i_set_values"
+                      invoker="set_values"
+                      introspectable="0"
+                      throws="1">
+        <doc xml:whitespace="preserve">In a similar way to gda_data_model_set_value_at(), this method modifies a data model's contents
+by setting several values at once.
+
+If any value in @values is actually %NULL, then the value in the corresponding column is left
+unchanged.
+Upon errors FALSE will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value in the data model has been updated and no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="values" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a list of #GValue (or %NULL), one for at most the number of columns of @model</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="GLib.Value"/>
+            </type>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="reset" invoker="reset">
+        <doc xml:whitespace="preserve">Emits the 'reset' and 'changed' signal on @model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="row_inserted" invoker="row_inserted">
+        <doc xml:whitespace="preserve">Emits the 'row_inserted' and 'changed' signals on @model. 
+
+This method should only be used by #GdaDataModel implementations to 
+signal that a row has been inserted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="row_removed" invoker="row_removed">
+        <doc xml:whitespace="preserve">Emits the 'row_removed' and 'changed' signal on @model.
+
+This method should only be used by #GdaDataModel implementations to 
+signal that a row has been removed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="row_updated" invoker="row_updated">
+        <doc xml:whitespace="preserve">Emits the 'row_updated' and 'changed' signals on @model.
+
+This method should only be used by #GdaDataModel implementations to 
+signal that a row has been updated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_data_from_xml_node"
+              c:identifier="gda_data_model_add_data_from_xml_node"
+              throws="1">
+        <doc xml:whitespace="preserve">Adds the data from an XML node to the given data model (see the DTD for that node
+in the $prefix/share/libgda/dtd/libgda-array.dtd file).
+
+Upon errors FALSE will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an XML node representing a &amp;lt;gda_array_data&amp;gt; XML node.</doc>
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_row"
+              c:identifier="gda_data_model_append_row"
+              throws="1">
+        <doc xml:whitespace="preserve">Appends a row to the data model (the new row will possibly have NULL values for all columns,
+or some other values depending on the data model implementation)
+
+Upon errors -1 will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of the added row, or -1 if an error occurred</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="append_values"
+              c:identifier="gda_data_model_append_values"
+              introspectable="0"
+              throws="1">
+        <doc xml:whitespace="preserve">Appends a row to the given data model. If any value in @values is actually %NULL, then 
+it is considered as a default value. If @values is %NULL then all values are set to their default value.
+
+Upon errors -1 will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of the added row, or -1 if an error occurred</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="values" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">#GList of #GValue* representing the row to add.  The length must match model's column count.  These #GValue are value-copied (the user is still responsible for freeing them).</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="GLib.Value"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="array_copy_model"
+              c:identifier="gda_data_model_array_copy_model"
+              throws="1">
+        <doc xml:whitespace="preserve">Makes a copy of @src into a new #GdaDataModelArray object</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new data model, or %NULL if an error occurred</doc>
+          <type name="DataModelArray" c:type="GdaDataModelArray*"/>
+        </return-value>
+      </method>
+      <method name="create_iter" c:identifier="gda_data_model_create_iter">
+        <doc xml:whitespace="preserve">Creates a new iterator object #GdaDataModelIter object which can be used to iterate through
+rows in @model. The new #GdaDataModelIter does not hold any reference to @model (ie. if @model
+is destroyed at some point, the new iterator will become useless but in any case it will not prevent
+the data model from being destroyed).
+
+Depending on the data model's implementation, a new #GdaDataModelIter object may be created,
+or a reference to an already existing #GdaDataModelIter may be returned. For example if @model only
+supports being accessed using a forward moving cursor (say a the result of a SELECT executed by SQLite
+with a cursor access mode specified), then this method will always return the same iterator.
+
+If a new #GdaDataModelIter is created, then the row it represents is undefined.
+
+For models which can be accessed 
+randomly, any row can be set using gda_data_model_iter_move_to_row(), 
+and for models which are accessible sequentially only then use
+gda_data_model_iter_move_next() (and gda_data_model_iter_move_prev() if
+supported).
+
+Note: for the #GdaDataProxy data model (which proxies any #GdaDataModel for modifications and
+has twice the number of columns of the proxied data model), this method will create an iterator
+in which only the columns of the proxied data model appear. If you need to have a #GdaDataModelIter
+in which all the proxy's columns appear, create it using:
+&lt;programlisting&gt;&lt;![CDATA[iter = g_object_new (GDA_TYPE_DATA_MODEL_ITER, "data-model", proxy, NULL);]]&gt;&lt;/programlisting&gt;</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdaDataModelIter object, or %NULL if an error occurred</doc>
+          <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+        </return-value>
+      </method>
+      <method name="describe_column"
+              c:identifier="gda_data_model_describe_column">
+        <doc xml:whitespace="preserve">Queries the underlying data model implementation for a description
+of a given column. That description is returned in the form of
+a #GdaColumn structure, which contains all the information
+about the given column in the data model.
+
+WARNING: the returned #GdaColumn object belongs to the @model model and
+and should not be destroyed; any modification will affect the whole data model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the description of the column.</doc>
+          <type name="Column" c:type="GdaColumn*"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dump" c:identifier="gda_data_model_dump">
+        <doc xml:whitespace="preserve">Dumps a textual representation of the @model to the @to_stream stream
+
+The following environment variables can affect the resulting output:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;GDA_DATA_MODEL_DUMP_ROW_NUMBERS: if set, the first column of the output will contain row numbers&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;GDA_DATA_MODEL_DUMP_ATTRIBUTES: if set, also dump the data model's columns' types and value's attributes&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;GDA_DATA_MODEL_DUMP_TITLE: if set, also dump the data model's title&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;GDA_DATA_MODEL_NULL_AS_EMPTY: if set, replace the 'NULL' string with an empty string for NULL values &lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;GDA_DATA_MODEL_DUMP_TRUNCATE: if set to a numeric value, truncates the output to the width specified by the value. If the value is -1 then the actual terminal size (if it can be determined) is used&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="to_stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">where to dump the data model</doc>
+            <type name="gpointer" c:type="FILE*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dump_as_string"
+              c:identifier="gda_data_model_dump_as_string">
+        <doc xml:whitespace="preserve">Dumps a textual representation of the @model into a new string
+
+The following environment variables can affect the resulting output:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;GDA_DATA_MODEL_DUMP_ROW_NUMBERS: if set, the first column of the output will contain row numbers&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;GDA_DATA_MODEL_DUMP_TITLE: if set, also dump the data model's title&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;GDA_DATA_MODEL_NULL_AS_EMPTY: if set, replace the 'NULL' string with an empty string for NULL values &lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;GDA_DATA_MODEL_DUMP_TRUNCATE: if set to a numeric value, truncates the output to the width specified by the value. If the value is -1 then the actual terminal size (if it can be determined) is used&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="export_to_file"
+              c:identifier="gda_data_model_export_to_file"
+              throws="1">
+        <doc xml:whitespace="preserve">Exports data contained in @model to the @file file; the format is specified using the @format argument.
+
+Specifically, the parameters in the @options list can be:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;"SEPARATOR": a string value of which the first character is used as a separator in case of CSV export
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"QUOTE": a string value of which the first character is used as a quote character in case of CSV export
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"FIELD_QUOTE": a boolean value which can be set to FALSE if no quote around the individual fields 
+is requeted, in case of CSV export&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"NAME": a string value used to name the exported data if the export format is XML&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"FIELDS_NAME": a boolean value which, if set to %TRUE and in case of a CSV export, will add a first line with the name each exported field&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"OVERWRITE": a boolean value which tells if the file must be over-written if it already exists.&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"NULL_AS_EMPTY": a boolean value which, if set to %TRUE and in case of a CSV export, will render and NULL value as the empty string (instead of the 'NULL' string)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"INVALID_AS_NULL": a boolean value which, if set to %TRUE, considers any invalid data (for example for the date related values) as NULL&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+Warning: this function uses a #GdaDataModelIter iterator, and if @model does not offer a random access
+(check using gda_data_model_get_access_flags()), the iterator will be the same as normally used
+to access data in @model previously to calling this method, and this iterator will be moved (point to
+another row).
+
+Upon errors %FALSE will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format in which to export data</doc>
+            <type name="DataModelIOFormat" c:type="GdaDataModelIOFormat"/>
+          </parameter>
+          <parameter name="file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filename to export to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cols" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an array containing which columns of @model will be exported, or %NULL for all columns</doc>
+            <array length="3" zero-terminated="0" c:type="gint*">
+              <type name="gint" c:type="gint"/>
+            </array>
+          </parameter>
+          <parameter name="nb_cols" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of columns in @cols</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="rows" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an array containing which rows of @model will be exported, or %NULL for all rows</doc>
+            <array length="5" zero-terminated="0" c:type="gint*">
+              <type name="gint" c:type="gint"/>
+            </array>
+          </parameter>
+          <parameter name="nb_rows" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of rows in @rows</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="options" transfer-ownership="none">
+            <doc xml:whitespace="preserve">list of options for the export</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="export_to_string"
+              c:identifier="gda_data_model_export_to_string">
+        <doc xml:whitespace="preserve">Exports data contained in @model to a string; the format is specified using the @format argument, see the
+gda_data_model_export_to_file() documentation for more information about the @options argument (except for the
+"OVERWRITE" option).
+
+Warning: this function uses a #GdaDataModelIter iterator, and if @model does not offer a random access
+(check using gda_data_model_get_access_flags()), the iterator will be the same as normally used
+to access data in @model previously to calling this method, and this iterator will be moved (point to
+another row).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format in which to export data</doc>
+            <type name="DataModelIOFormat" c:type="GdaDataModelIOFormat"/>
+          </parameter>
+          <parameter name="cols" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an array containing which columns of @model will be exported, or %NULL for all columns</doc>
+            <array length="2" zero-terminated="0" c:type="gint*">
+              <type name="gint" c:type="gint"/>
+            </array>
+          </parameter>
+          <parameter name="nb_cols" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of columns in @cols</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="rows" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an array containing which rows of @model will be exported, or %NULL for all rows</doc>
+            <array length="4" zero-terminated="0" c:type="gint*">
+              <type name="gint" c:type="gint"/>
+            </array>
+          </parameter>
+          <parameter name="nb_rows" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of rows in @rows</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="options" transfer-ownership="none">
+            <doc xml:whitespace="preserve">list of options for the export</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="freeze" c:identifier="gda_data_model_freeze">
+        <doc xml:whitespace="preserve">Disables notifications of changes on the given data model. To
+re-enable notifications again, you should call the
+#gda_data_model_thaw function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_access_flags"
+              c:identifier="gda_data_model_get_access_flags">
+        <doc xml:whitespace="preserve">Get the attributes of @model such as how to access the data it contains if it's modifiable, etc.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an ORed value of #GdaDataModelAccessFlags flags</doc>
+          <type name="DataModelAccessFlags" c:type="GdaDataModelAccessFlags"/>
+        </return-value>
+      </method>
+      <method name="get_attributes_at"
+              c:identifier="gda_data_model_get_attributes_at">
+        <doc xml:whitespace="preserve">Get the attributes of the value stored at (row, col) in @model, which
+is an ORed value of #GdaValueAttribute flags. As a special case, if
+ row is -1, then the attributes returned correspond to a "would be" value
+if a row was added to @model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the attributes as an ORed value of #GdaValueAttribute</doc>
+          <type name="ValueAttribute" c:type="GdaValueAttribute"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid column number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid row number, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_index"
+              c:identifier="gda_data_model_get_column_index">
+        <doc xml:whitespace="preserve">Get the index of the first column named @name in @model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the column index, or -1 if no column named @name was found</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a column name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_name"
+              c:identifier="gda_data_model_get_column_name"
+              version="3.2">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name for the given column in a data model object.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_title"
+              c:identifier="gda_data_model_get_column_title">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the title for the given column in a data model object.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_exceptions"
+              c:identifier="gda_data_model_get_exceptions"
+              version="4.2.6">
+        <doc xml:whitespace="preserve">Get the global data model exception(s) that occurred when using @model.
+This is useful for example for the LDAP related
+data models where some rows may be missing because the LDAP search has reached a limit
+imposed by the LDAP server.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a %NULL terminated array of #GError, or %NULL.</doc>
+          <array c:type="GError**">
+            <type name="GLib.Error"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_n_columns" c:identifier="gda_data_model_get_n_columns">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of columns in the given data model.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_n_rows" c:identifier="gda_data_model_get_n_rows">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of rows in the given data model, or -1 if the number of rows is not known</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_notify" c:identifier="gda_data_model_get_notify">
+        <doc xml:whitespace="preserve">Returns the status of notifications changes on the given data model.
+
+Note: This function must be implemented but is recommended to use #gda_data_model_thaw
+and #gda_data_model_freeze functions instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_row_from_values"
+              c:identifier="gda_data_model_get_row_from_values"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the first row where all the values in @values at the columns identified at
+ cols_index match. If the row can't be identified, then returns -1;
+
+NOTE: the @cols_index array MUST contain a column index for each value in @values</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested row number, of -1 if not found</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of #GValue values (no %NULL is allowed)</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="GLib.Value"/>
+            </type>
+          </parameter>
+          <parameter name="cols_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #gint containing the column number to match each value of @values</doc>
+            <array zero-terminated="0" c:type="gint*">
+              <type name="gint" c:type="gint"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_typed_value_at"
+              c:identifier="gda_data_model_get_typed_value_at"
+              throws="1">
+        <doc xml:whitespace="preserve">Upon errors %NULL will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.
+
+This method is similar to gda_data_model_get_value_at(), except that it also allows one to specify the expected
+#GType of the value to get: if the data model returned a #GValue of a type different than the expected one, then
+this method returns %NULL and an error code.
+
+Note: the same limitations and usage instructions apply as for gda_data_model_get_value_at().
+
+Upon errors %NULL will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.
+
+position, or %NULL on error (out-of-bound position, wrong data type, etc).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue containing the value stored in the given</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid column number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid row number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="expected_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the expected data type of the returned value</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="nullok" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if TRUE, then NULL values (value of type %GDA_TYPE_NULL) will not generate any error</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_at"
+              c:identifier="gda_data_model_get_value_at"
+              throws="1">
+        <doc xml:whitespace="preserve">Retrieves the data stored in the given position (identified by
+the @col and @row parameters) on a data model.
+
+Upon errors %NULL will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.
+
+This is the main function for accessing data in a model which allows random access to its data.
+To access data in a data model using a cursor, use a #GdaDataModelIter object, obtained using
+gda_data_model_create_iter().
+
+Note1: the returned #GValue must not be modified directly (unexpected behaviours may
+occur if you do so).
+
+Note2: the returned value may become invalid as soon as any Libgda part is executed again,
+which means if you want to keep the value, a copy must be made, however it will remain valid
+as long as the only Libgda usage is calling gda_data_model_get_value_at() for different values
+of the same row.
+
+If you want to modify a value stored in a #GdaDataModel, use the gda_data_model_set_value_at() or 
+gda_data_model_set_values() methods.
+
+Upon errors %NULL will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.
+
+position, or %NULL on error (out-of-bound position, etc).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue containing the value stored in the given</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid column number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid row number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="import_from_file"
+              c:identifier="gda_data_model_import_from_file"
+              throws="1">
+        <doc xml:whitespace="preserve">Imports data contained in the @file file into @model; the format is detected.
+
+Upon errors FALSE will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filename to import from</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cols_trans"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GHashTable for columns translating, or %NULL, see gda_data_model_import_from_model()</doc>
+            <type name="GLib.HashTable" c:type="GHashTable*">
+              <type name="gint"/>
+              <type name="gint"/>
+            </type>
+          </parameter>
+          <parameter name="options" transfer-ownership="none">
+            <doc xml:whitespace="preserve">list of options for the export</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="import_from_model"
+              c:identifier="gda_data_model_import_from_model"
+              throws="1">
+        <doc xml:whitespace="preserve">Copy the contents of the @from data model to the @to data model. The copy stops as soon as an error
+orrurs.
+
+The @cols_trans is a hash table for which keys are @to columns numbers and the values are
+the corresponding column numbers in the @from data model. To set the values of a column in @to to NULL,
+create an entry in the hash table with a negative value. For example:
+&lt;programlisting&gt;&lt;![CDATA[GHashTable *hash;
+gint *ptr;
+hash = g_hash_table_new_full (g_int_hash, g_int_equal, g_free, NULL);
+ptr = g_new (gint, 1);
+*ptr = 2;
+g_hash_table_insert (hash, ptr, GINT_TO_POINTER (3));
+gda_data_model_import_from_model (...);
+g_hash_table_free (hash);
+]]&gt;&lt;/programlisting&gt;
+
+Upon errors FALSE will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="from" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source #GdaDataModel</doc>
+            <type name="DataModel" c:type="GdaDataModel*"/>
+          </parameter>
+          <parameter name="overwrite" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if @to is completely overwritten by @from's data, and FALSE if @from's data is appended to @to</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="cols_trans"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GHashTable for columns translating, or %NULL</doc>
+            <type name="GLib.HashTable" c:type="GHashTable*">
+              <type name="gint"/>
+              <type name="gint"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="import_from_string"
+              c:identifier="gda_data_model_import_from_string"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads the data from @string into @model.
+
+Upon errors FALSE will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the string to import data from</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cols_trans"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a hash table containing which columns of @model will be imported, or %NULL for all columns, see gda_data_model_import_from_model()</doc>
+            <type name="GLib.HashTable" c:type="GHashTable*">
+              <type name="gint"/>
+              <type name="gint"/>
+            </type>
+          </parameter>
+          <parameter name="options" transfer-ownership="none">
+            <doc xml:whitespace="preserve">list of options for the export</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_at_row" c:identifier="gda_data_model_iter_at_row">
+        <doc xml:whitespace="preserve">Moves @iter to the row number given by @row.
+
+Note: This function must be implemented but is recommended to use #GdaDataModelIter 
+object directly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModelIter object.</doc>
+            <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+          </parameter>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a row to point to with @iter</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_move_next_default"
+              c:identifier="gda_data_model_iter_move_next_default"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Method reserved to #GdaDataModelIter implementations, should not be called directly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter was moved correctly.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModelIter iterating in @model</doc>
+            <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_move_prev_default"
+              c:identifier="gda_data_model_iter_move_prev_default"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Method reserved to #GdaDataModelIter implementations, should not be called directly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter was moved correctly.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModelIter iterating in @model</doc>
+            <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_move_to_row_default"
+              c:identifier="gda_data_model_iter_move_to_row_default"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Method reserved to #GdaDataModelIter implementations, should not be called directly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter was moved correctly.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModelIter iterating in @model</doc>
+            <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+          </parameter>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested row</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_next" c:identifier="gda_data_model_iter_next">
+        <doc xml:whitespace="preserve">Moves @iter to the next row in @model.
+
+Note: This function must be implemented but is recommended to use #GdaDataModelIter 
+object directly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModelIter object.</doc>
+            <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_prev" c:identifier="gda_data_model_iter_prev">
+        <doc xml:whitespace="preserve">Moves @iter to the next row in @model.
+
+Note: This function must be implemented but is recommended to use #GdaDataModelIter 
+object directly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModelIter object.</doc>
+            <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_set_value"
+              c:identifier="gda_data_model_iter_set_value"
+              throws="1">
+        <doc xml:whitespace="preserve">Set @value to the given @column and row pointed by @iter in the given @model.
+
+Note: This function must be implemented but is recommended to use #GdaDataModelIter 
+object directly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModelIter object.</doc>
+            <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+          </parameter>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of column to set value to</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the to use to set on</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_row"
+              c:identifier="gda_data_model_remove_row"
+              throws="1">
+        <doc xml:whitespace="preserve">Removes a row from the data model.
+
+Upon errors FALSE will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row number to be removed.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset" c:identifier="gda_data_model_reset">
+        <doc xml:whitespace="preserve">Emits the 'reset' and 'changed' signal on @model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="row_inserted" c:identifier="gda_data_model_row_inserted">
+        <doc xml:whitespace="preserve">Emits the 'row_inserted' and 'changed' signals on @model. 
+
+This method should only be used by #GdaDataModel implementations to 
+signal that a row has been inserted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_removed" c:identifier="gda_data_model_row_removed">
+        <doc xml:whitespace="preserve">Emits the 'row_removed' and 'changed' signal on @model.
+
+This method should only be used by #GdaDataModel implementations to 
+signal that a row has been removed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_updated" c:identifier="gda_data_model_row_updated">
+        <doc xml:whitespace="preserve">Emits the 'row_updated' and 'changed' signals on @model.
+
+This method should only be used by #GdaDataModel implementations to 
+signal that a row has been updated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_hint" c:identifier="gda_data_model_send_hint">
+        <doc xml:whitespace="preserve">Sends a hint to the data model. The hint may or may not be handled by the data
+model, depending on its implementation</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a hint to send to the model</doc>
+            <type name="DataModelHint" c:type="GdaDataModelHint"/>
+          </parameter>
+          <parameter name="hint_value"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">an optional value to specify the hint, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_name"
+              c:identifier="gda_data_model_set_column_name"
+              version="3.2">
+        <doc xml:whitespace="preserve">Sets the @name of the given @col in @model, and if its title is not set, also sets the
+title to @name.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name for the given column.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_title"
+              c:identifier="gda_data_model_set_column_title">
+        <doc xml:whitespace="preserve">Sets the @title of the given @col in @model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">title for the given column.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_notify" c:identifier="gda_data_model_set_notify">
+        <doc xml:whitespace="preserve">Enable or disable notifications changes on the given data model.
+
+Note: This function must be implemented but is recommended to use #gda_data_model_thaw
+and #gda_data_model_freeze functions instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="do_notify_changes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Set to TRUE if you require notifications.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value_at"
+              c:identifier="gda_data_model_set_value_at"
+              throws="1">
+        <doc xml:whitespace="preserve">Modifies a value in @model, at (@col, @row).
+
+Upon errors FALSE will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the value in the data model has been updated and no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue (not %NULL)</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_values"
+              c:identifier="gda_data_model_set_values"
+              introspectable="0"
+              throws="1">
+        <doc xml:whitespace="preserve">In a similar way to gda_data_model_set_value_at(), this method modifies a data model's contents
+by setting several values at once.
+
+If any value in @values is actually %NULL, then the value in the corresponding column is left
+unchanged.
+Upon errors FALSE will be returned and @error will be assigned a
+#GError from the #GDA_DATA_MODEL_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value in the data model has been updated and no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row number.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="values" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a list of #GValue (or %NULL), one for at most the number of columns of @model</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="GLib.Value"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="thaw" c:identifier="gda_data_model_thaw">
+        <doc xml:whitespace="preserve">Re-enables notifications of changes on the given data model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <glib:signal name="access-changed" when="last">
+        <doc xml:whitespace="preserve">Gets emitted when @model's access flags have changed. Use
+gda_data_model_get_access_flags() to get the access flags.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="changed" when="last">
+        <doc xml:whitespace="preserve">Gets emitted when any value in @model has been changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="reset" when="last">
+        <doc xml:whitespace="preserve">Gets emitted when @model's contents has been completely reset (the number and
+type of columns may also have changed)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="row-inserted" when="last">
+        <doc xml:whitespace="preserve">Gets emitted when a row has been inserted in @model</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row number</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-removed" when="last">
+        <doc xml:whitespace="preserve">Gets emitted when a row has been removed from @model</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row number</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-updated" when="last">
+        <doc xml:whitespace="preserve">Gets emitted when a row has been modified in @model</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row number</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <bitfield name="DataModelAccessFlags" c:type="GdaDataModelAccessFlags">
+      <member name="random"
+              value="1"
+              c:identifier="GDA_DATA_MODEL_ACCESS_RANDOM"/>
+      <member name="cursor_forward"
+              value="2"
+              c:identifier="GDA_DATA_MODEL_ACCESS_CURSOR_FORWARD"/>
+      <member name="cursor_backward"
+              value="4"
+              c:identifier="GDA_DATA_MODEL_ACCESS_CURSOR_BACKWARD"/>
+      <member name="cursor"
+              value="6"
+              c:identifier="GDA_DATA_MODEL_ACCESS_CURSOR"/>
+      <member name="insert"
+              value="8"
+              c:identifier="GDA_DATA_MODEL_ACCESS_INSERT"/>
+      <member name="update"
+              value="16"
+              c:identifier="GDA_DATA_MODEL_ACCESS_UPDATE"/>
+      <member name="delete"
+              value="32"
+              c:identifier="GDA_DATA_MODEL_ACCESS_DELETE"/>
+      <member name="write"
+              value="56"
+              c:identifier="GDA_DATA_MODEL_ACCESS_WRITE"/>
+    </bitfield>
+    <class name="DataModelArray"
+           c:symbol-prefix="data_model_array"
+           c:type="GdaDataModelArray"
+           parent="GObject.Object"
+           glib:type-name="GdaDataModelArray"
+           glib:get-type="gda_data_model_array_get_type"
+           glib:type-struct="DataModelArrayClass">
+      <implements name="DataModel"/>
+      <function name="new" c:identifier="gda_data_model_array_new">
+        <doc xml:whitespace="preserve">Creates a new #GdaDataModel object without initializing the column
+types. Using gda_data_model_array_new_with_g_types() is usually better.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly created #GdaDataModel.</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cols" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns for rows in this data model.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="new_with_g_types"
+                c:identifier="gda_data_model_array_new_with_g_types"
+                shadowed-by="new_with_g_types_v"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GdaDataModel object with the column types as
+specified.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly created #GdaDataModel.</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cols" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns for rows in this data model.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="new_with_g_types_v"
+                c:identifier="gda_data_model_array_new_with_g_types_v"
+                shadows="new_with_g_types"
+                version="4.2.6">
+        <doc xml:whitespace="preserve">Creates a new #GdaDataModel object with the column types as
+specified.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly created #GdaDataModel.</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cols" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns for rows in this data model.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">array of types of the columns of the model to create as #GType, as many as indicated by @cols</doc>
+            <array zero-terminated="0" c:type="GType*">
+              <type name="GType" c:type="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="clear" c:identifier="gda_data_model_array_clear">
+        <doc xml:whitespace="preserve">Frees all the rows in @model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_row"
+              c:identifier="gda_data_model_array_get_row"
+              throws="1">
+        <doc xml:whitespace="preserve">Get a pointer to a row in @model</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaRow, or %NULL if an error occurred</doc>
+          <type name="Row" c:type="GdaRow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row number (starting from 0)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_n_columns"
+              c:identifier="gda_data_model_array_set_n_columns">
+        <doc xml:whitespace="preserve">Sets the number of columns for rows inserted in this model. 
+ cols must be greated than or equal to 0.
+
+Also clears @model's contents.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cols" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns for rows this data model should use.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="n-columns" writable="1" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="read-only" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DataModelArrayPrivate" c:type="GdaDataModelArrayPrivate*"/>
+      </field>
+    </class>
+    <record name="DataModelArrayClass"
+            c:type="GdaDataModelArrayClass"
+            glib:is-gtype-struct-for="DataModelArray">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="DataModelArrayPrivate"
+            c:type="GdaDataModelArrayPrivate"
+            disguised="1">
+    </record>
+    <class name="DataModelDir"
+           c:symbol-prefix="data_model_dir"
+           c:type="GdaDataModelDir"
+           parent="GObject.Object"
+           glib:type-name="GdaDataModelDir"
+           glib:get-type="gda_data_model_dir_get_type"
+           glib:type-struct="DataModelDirClass">
+      <implements name="DataModel"/>
+      <function name="new" c:identifier="gda_data_model_dir_new">
+        <doc xml:whitespace="preserve">Creates a new #GdaDataModel object to list all the files starting from @basedir</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaDataModel</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="basedir" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a directory</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="clean_errors"
+              c:identifier="gda_data_model_dir_clean_errors">
+        <doc xml:whitespace="preserve">Reset the list of errors which have occurred while using @model</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_errors"
+              c:identifier="gda_data_model_dir_get_errors"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the list of errors which have occurred while using @model</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a read-only list of #GError pointers, or %NULL if no error has occurred</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="GObject.Error"/>
+          </type>
+        </return-value>
+      </method>
+      <property name="basedir"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DataModelDirPrivate" c:type="GdaDataModelDirPrivate*"/>
+      </field>
+    </class>
+    <record name="DataModelDirClass"
+            c:type="GdaDataModelDirClass"
+            glib:is-gtype-struct-for="DataModelDir">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="DataModelDirPrivate"
+            c:type="GdaDataModelDirPrivate"
+            disguised="1">
+    </record>
+    <class name="DataModelDsnList"
+           c:symbol-prefix="data_model_dsn_list"
+           c:type="GdaDataModelDsnList"
+           parent="GObject.Object"
+           glib:type-name="GdaDataModelDsnList"
+           glib:get-type="gda_data_model_dsn_list_get_type"
+           glib:type-struct="DataModelDsnListClass">
+      <implements name="DataModel"/>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DataModelDsnListPrivate"
+              c:type="GdaDataModelDsnListPrivate*"/>
+      </field>
+    </class>
+    <record name="DataModelDsnListClass"
+            c:type="GdaDataModelDsnListClass"
+            glib:is-gtype-struct-for="DataModelDsnList">
+      <field name="object_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="DataModelDsnListPrivate"
+            c:type="GdaDataModelDsnListPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="DataModelError"
+                 c:type="GdaDataModelError"
+                 glib:error-domain="gda_data_model_error">
+      <member name="row_out_of_range_error"
+              value="0"
+              c:identifier="GDA_DATA_MODEL_ROW_OUT_OF_RANGE_ERROR"/>
+      <member name="column_out_of_range_error"
+              value="1"
+              c:identifier="GDA_DATA_MODEL_COLUMN_OUT_OF_RANGE_ERROR"/>
+      <member name="values_list_error"
+              value="2"
+              c:identifier="GDA_DATA_MODEL_VALUES_LIST_ERROR"/>
+      <member name="value_type_error"
+              value="3"
+              c:identifier="GDA_DATA_MODEL_VALUE_TYPE_ERROR"/>
+      <member name="row_not_found_error"
+              value="4"
+              c:identifier="GDA_DATA_MODEL_ROW_NOT_FOUND_ERROR"/>
+      <member name="access_error"
+              value="5"
+              c:identifier="GDA_DATA_MODEL_ACCESS_ERROR"/>
+      <member name="feature_non_supported_error"
+              value="6"
+              c:identifier="GDA_DATA_MODEL_FEATURE_NON_SUPPORTED_ERROR"/>
+      <member name="file_exist_error"
+              value="7"
+              c:identifier="GDA_DATA_MODEL_FILE_EXIST_ERROR"/>
+      <member name="xml_format_error"
+              value="8"
+              c:identifier="GDA_DATA_MODEL_XML_FORMAT_ERROR"/>
+      <member name="truncated_error"
+              value="9"
+              c:identifier="GDA_DATA_MODEL_TRUNCATED_ERROR"/>
+      <member name="other_error"
+              value="10"
+              c:identifier="GDA_DATA_MODEL_OTHER_ERROR"/>
+    </enumeration>
+    <enumeration name="DataModelHint" c:type="GdaDataModelHint">
+      <member name="start_batch_update"
+              value="0"
+              c:identifier="GDA_DATA_MODEL_HINT_START_BATCH_UPDATE"/>
+      <member name="end_batch_update"
+              value="1"
+              c:identifier="GDA_DATA_MODEL_HINT_END_BATCH_UPDATE"/>
+      <member name="refresh"
+              value="2"
+              c:identifier="GDA_DATA_MODEL_HINT_REFRESH"/>
+    </enumeration>
+    <enumeration name="DataModelIOFormat" c:type="GdaDataModelIOFormat">
+      <member name="data_array_xml"
+              value="0"
+              c:identifier="GDA_DATA_MODEL_IO_DATA_ARRAY_XML"/>
+      <member name="text_separated"
+              value="1"
+              c:identifier="GDA_DATA_MODEL_IO_TEXT_SEPARATED"/>
+    </enumeration>
+    <record name="DataModelIface"
+            c:type="GdaDataModelIface"
+            glib:is-gtype-struct-for="DataModel">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="i_get_n_rows">
+        <callback name="i_get_n_rows">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of rows in the given data model, or -1 if the number of rows is not known</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_get_n_columns">
+        <callback name="i_get_n_columns">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of columns in the given data model.</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_describe_column">
+        <callback name="i_describe_column">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the description of the column.</doc>
+            <type name="Column" c:type="GdaColumn*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="col" transfer-ownership="none">
+              <doc xml:whitespace="preserve">column number.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_get_access_flags">
+        <callback name="i_get_access_flags">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">an ORed value of #GdaDataModelAccessFlags flags</doc>
+            <type name="DataModelAccessFlags"
+                  c:type="GdaDataModelAccessFlags"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_get_value_at">
+        <callback name="i_get_value_at" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue containing the value stored in the given</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="col" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a valid column number.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a valid row number.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_get_attributes_at">
+        <callback name="i_get_attributes_at">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the attributes as an ORed value of #GdaValueAttribute</doc>
+            <type name="ValueAttribute" c:type="GdaValueAttribute"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="col" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a valid column number</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a valid row number, or -1</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_create_iter">
+        <callback name="i_create_iter">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GdaDataModelIter object, or %NULL if an error occurred</doc>
+            <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_iter_at_row">
+        <callback name="i_iter_at_row">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GdaDataModelIter object.</doc>
+              <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a row to point to with @iter</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_iter_next">
+        <callback name="i_iter_next">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GdaDataModelIter object.</doc>
+              <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_iter_prev">
+        <callback name="i_iter_prev">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GdaDataModelIter object.</doc>
+              <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_set_value_at">
+        <callback name="i_set_value_at" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if the value in the data model has been updated and no error occurred</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="col" transfer-ownership="none">
+              <doc xml:whitespace="preserve">column number.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">row number.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GValue (not %NULL)</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_iter_set_value">
+        <callback name="i_iter_set_value" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GdaDataModelIter object.</doc>
+              <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+            </parameter>
+            <parameter name="col" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the number of column to set value to</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the to use to set on</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_set_values" introspectable="0">
+        <callback name="i_set_values" introspectable="0" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the value in the data model has been updated and no error occurred</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">row number.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="values" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">a list of #GValue (or %NULL), one for at most the number of columns of @model</doc>
+              <type name="GLib.List" c:type="GList*">
+                <type name="GLib.Value"/>
+              </type>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_append_values" introspectable="0">
+        <callback name="i_append_values" introspectable="0" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of the added row, or -1 if an error occurred</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="values" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">#GList of #GValue* representing the row to add.  The length must match model's column count.  These #GValue are value-copied (the user is still responsible for freeing them).</doc>
+              <type name="GLib.List" c:type="GList*">
+                <type name="GLib.Value"/>
+              </type>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_append_row">
+        <callback name="i_append_row" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of the added row, or -1 if an error occurred</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_remove_row">
+        <callback name="i_remove_row" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the row number to be removed.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_find_row" introspectable="0">
+        <callback name="i_find_row" introspectable="0">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested row number, of -1 if not found</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="values" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a list of #GValue values (no %NULL is allowed)</doc>
+              <type name="GLib.SList" c:type="GSList*">
+                <type name="GLib.Value"/>
+              </type>
+            </parameter>
+            <parameter name="cols_index" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an array of #gint containing the column number to match each value of @values</doc>
+              <array zero-terminated="0" c:type="gint*">
+                <type name="gint" c:type="gint"/>
+              </array>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_set_notify">
+        <callback name="i_set_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="do_notify_changes" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Set to TRUE if you require notifications.</doc>
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_get_notify">
+        <callback name="i_get_notify">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_send_hint">
+        <callback name="i_send_hint">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="hint" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a hint to send to the model</doc>
+              <type name="DataModelHint" c:type="GdaDataModelHint"/>
+            </parameter>
+            <parameter name="hint_value"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">an optional value to specify the hint, or %NULL</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_inserted">
+        <callback name="row_inserted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">row number.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_updated">
+        <callback name="row_updated">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">row number.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_removed">
+        <callback name="row_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">row number.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reset">
+        <callback name="reset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="access_changed">
+        <callback name="access_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_get_exceptions">
+        <callback name="i_get_exceptions">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a %NULL terminated array of #GError, or %NULL.</doc>
+            <array c:type="GError**">
+              <type name="GLib.Error"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataModel" c:type="GdaDataModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="DataModelImport"
+           c:symbol-prefix="data_model_import"
+           c:type="GdaDataModelImport"
+           parent="GObject.Object"
+           glib:type-name="GdaDataModelImport"
+           glib:get-type="gda_data_model_import_get_type"
+           glib:type-struct="DataModelImportClass">
+      <implements name="DataModel"/>
+      <function name="new_file" c:identifier="gda_data_model_import_new_file">
+        <doc xml:whitespace="preserve">Creates a new #GdaDataModel object which contains the data stored within the @filename file.
+
+The options are the following ones:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;For the CSV format:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;ENCODING (string): specifies the encoding of the data in the file&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;SEPARATOR (string): specifies the CSV separator (comma as default)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;QUOTE (string): specifies the character used to as quote park (double quote as default)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;TITLE_AS_FIRST_LINE (boolean): consider that the first line of the file contains columns' titles&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;G_TYPE_&amp;lt;column number&amp;gt; (GType): specifies the type of value expected in column &amp;lt;column number&amp;gt;&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Other formats: no option&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+Note: after the creation, please use gda_data_model_import_get_errors() to check any error.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly created #GdaDataModel.</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the file to import data from</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="random_access" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if random access will be required</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="options" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">importing options</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="new_mem" c:identifier="gda_data_model_import_new_mem">
+        <doc xml:whitespace="preserve">Creates a new #GdaDataModel object which contains the data stored in the @data string.
+
+Important note: the @data string is not copied for memory efficiency reasons and should not
+therefore be altered in any way as long as the returned data model exists.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly created #GdaDataModel.</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the data to import</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="random_access" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if random access will be required</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="options" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">importing options, see gda_data_model_import_new_file() for more information</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="new_xml_node"
+                c:identifier="gda_data_model_import_new_xml_node">
+        <doc xml:whitespace="preserve">Creates a new #GdaDataModel and loads the data in @node. The resulting data model
+can be accessed in a random way.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly created #GdaDataModel.</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an XML node corresponding to a &amp;lt;data-array&amp;gt; tag</doc>
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="clean_errors"
+              c:identifier="gda_data_model_import_clean_errors">
+        <doc xml:whitespace="preserve">Clears the history of errors @model has to report</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_errors"
+              c:identifier="gda_data_model_import_get_errors"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the list of errors which @model has to report. The returned list is a list of
+#GError structures, and must not be modified</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the list of errors (which must not be modified), or %NULL</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="GObject.Error"/>
+          </type>
+        </return-value>
+      </method>
+      <property name="data-string"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Data to import, as a string.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="filename"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Name of the file to import.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="options"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Data model options.</doc>
+        <type name="Set"/>
+      </property>
+      <property name="random-access"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Defines if the data model will be accessed randomly or through a cursor. If set to %FALSE,
+access will have to be done using a cursor.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="strict"
+                version="4.2.1"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Defines the behaviour in case the imported data contains recoverable errors (usually too
+many or too few data per row). If set to %TRUE, an error will be reported and the import
+will stop, and if set to %FALSE, then the error will be reported but the import will not stop.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="xml-node"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Data to import, as a pointer to an XML node (a #xmlNodePtr).</doc>
+        <type name="gpointer"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DataModelImportPrivate"
+              c:type="GdaDataModelImportPrivate*"/>
+      </field>
+    </class>
+    <record name="DataModelImportClass"
+            c:type="GdaDataModelImportClass"
+            glib:is-gtype-struct-for="DataModelImport">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="DataModelImportPrivate"
+            c:type="GdaDataModelImportPrivate"
+            disguised="1">
+    </record>
+    <class name="DataModelIter"
+           c:symbol-prefix="data_model_iter"
+           c:type="GdaDataModelIter"
+           parent="Set"
+           glib:type-name="GdaDataModelIter"
+           glib:get-type="gda_data_model_iter_get_type"
+           glib:type-struct="DataModelIterClass">
+      <function name="error_quark"
+                c:identifier="gda_data_model_iter_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <virtual-method name="end_of_data">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="row_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_holder_for_field"
+              c:identifier="gda_data_model_iter_get_holder_for_field">
+        <doc xml:whitespace="preserve">Fetch a pointer to the #GdaHolder object which is synchronized with data at 
+column @col</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaHolder, or %NULL if an error occurred</doc>
+          <type name="Holder" c:type="GdaHolder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested column</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row" c:identifier="gda_data_model_iter_get_row">
+        <doc xml:whitespace="preserve">Get the row which @iter represents in the data model</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the row number, or -1 if @iter is invalid</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_value_at"
+              c:identifier="gda_data_model_iter_get_value_at">
+        <doc xml:whitespace="preserve">Get the value stored at the column @col in @iter. The returned value must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GValue, or %NULL if the value could not be fetched</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested column</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_at_e"
+              c:identifier="gda_data_model_iter_get_value_at_e"
+              version="4.2.10"
+              throws="1">
+        <doc xml:whitespace="preserve">Get the value stored at the column @col in @iter. The returned value must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GValue, or %NULL if the value could not be fetched</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested column</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_for_field"
+              c:identifier="gda_data_model_iter_get_value_for_field">
+        <doc xml:whitespace="preserve">Get the value stored at the column @field_name in @iter</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GValue, or %NULL</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested column name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate_contents"
+              c:identifier="gda_data_model_iter_invalidate_contents">
+        <doc xml:whitespace="preserve">Declare all the parameters in @iter invalid, without modifying the
+#GdaDataModel @iter is for or changing the row it represents. This method
+is for internal usage. Note that for gda_data_model_iter_is_valid() to return %FALSE,
+it is also necessary to set the "current-row" property to -1.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_valid" c:identifier="gda_data_model_iter_is_valid">
+        <doc xml:whitespace="preserve">Tells if @iter is a valid iterator (if it actually corresponds to a valid row in the model)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @iter is valid</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="move_next" c:identifier="gda_data_model_iter_move_next">
+        <doc xml:whitespace="preserve">Moves @iter one row further than where it already is 
+(synchronizes the values of the parameters in @iter with the values at the new row).
+
+If the iterator was on the data model's last row, then it can't be moved forward
+anymore, and the returned value is %FALSE; note also that the "current-row" property
+is set to -1 (which means that gda_data_model_iter_is_valid() would return %FALSE)
+
+This function can return %FALSE if it was not allowed to be moved (as it emits the
+"validate-set" signal before being moved).
+
+When this function returns %TRUE, then @iter has actually been moved to the next row,
+but some values may not have been read correctly in the row, in which case the
+correcsponding #GdaHolder will be left invalid.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the iterator is now at the next row</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="move_prev" c:identifier="gda_data_model_iter_move_prev">
+        <doc xml:whitespace="preserve">Moves @iter one row before where it already is (synchronizes the values of the parameters in @iter 
+with the values at the new row).
+
+If the iterator was on the data model's first row, then it can't be moved backwards
+anymore, and the returned value is %FALSE; note also that the "current-row" property
+is set to -1 (which means that gda_data_model_iter_is_valid() would return %FALSE).
+
+This function can return %FALSE if it was not allowed to be moved (as it emits the
+"validate-set" signal before being moved).
+
+When this function returns %TRUE, then @iter has actually been moved to the next row,
+but some values may not have been read correctly in the row, in which case the
+correcsponding #GdaHolder will be left invalid.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the iterator is now at the previous row</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="move_to_row"
+              c:identifier="gda_data_model_iter_move_to_row">
+        <doc xml:whitespace="preserve">Synchronizes the values of the parameters in @iter with the values at the @row row.
+
+If @row is not a valid row, then the returned value is %FALSE, and the "current-row"
+property is set to -1 (which means that gda_data_model_iter_is_valid() would return %FALSE),
+with the exception that if @row is -1, then the returned value is %TRUE.
+
+This function can return %FALSE if it was not allowed to be moved (as it emits the
+"validate-set" signal before being moved).
+
+When this function returns %TRUE, then @iter has actually been moved to the next row,
+but some values may not have been read correctly in the row, in which case the
+correcsponding #GdaHolder will be left invalid.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row to set @iter to</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value_at"
+              c:identifier="gda_data_model_iter_set_value_at"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets a value in @iter, at the column specified by @col</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue (not %NULL)</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="current-row" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="data-model"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="DataModel"/>
+      </property>
+      <property name="forced-model" writable="1" transfer-ownership="none">
+        <type name="DataModel"/>
+      </property>
+      <property name="update-model" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="object">
+        <type name="Set" c:type="GdaSet"/>
+      </field>
+      <field name="priv">
+        <type name="DataModelIterPrivate" c:type="GdaDataModelIterPrivate*"/>
+      </field>
+      <glib:signal name="end-of-data" when="first">
+        <doc xml:whitespace="preserve">Gets emitted when @iter has reached the end of available data (which means the previous
+row it was on was the last one).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="row-changed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted when the row @iter is currently pointing has changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new iter's row</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="DataModelIterClass"
+            c:type="GdaDataModelIterClass"
+            glib:is-gtype-struct-for="DataModelIter">
+      <field name="parent_class">
+        <type name="SetClass" c:type="GdaSetClass"/>
+      </field>
+      <field name="row_changed">
+        <callback name="row_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_of_data">
+        <callback name="end_of_data">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="DataModelIter" c:type="GdaDataModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="DataModelIterError" c:type="GdaDataModelIterError">
+      <member name="data_model_iter_column_out_of_range_error"
+              value="0"
+              c:identifier="GDA_DATA_MODEL_ITER_COLUMN_OUT_OF_RANGE_ERROR"/>
+    </enumeration>
+    <record name="DataModelIterPrivate"
+            c:type="GdaDataModelIterPrivate"
+            disguised="1">
+    </record>
+    <class name="DataPivot"
+           c:symbol-prefix="data_pivot"
+           c:type="GdaDataPivot"
+           parent="GObject.Object"
+           glib:type-name="GdaDataPivot"
+           glib:get-type="gda_data_pivot_get_type"
+           glib:type-struct="DataPivotClass">
+      <implements name="DataModel"/>
+      <function name="error_quark" c:identifier="gda_data_pivot_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <function name="new" c:identifier="gda_data_pivot_new">
+        <doc xml:whitespace="preserve">Creates a new #GdaDataModel which will contain analysed data from @model.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly created #GdaDataModel.</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaDataModel to analyse data from, or %NULL</doc>
+            <type name="DataModel" c:type="GdaDataModel*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="add_data"
+              c:identifier="gda_data_pivot_add_data"
+              version="5.0"
+              throws="1">
+        <doc xml:whitespace="preserve">Specifies that @field has to be included in the analysis.
+ field is a field specification with the following accepted syntaxes:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;a column name in the source data model (see &lt;link linkend="gda-data-model-get-column-index"&gt;gda_data_model_get_column_index()&lt;/link&gt;); or&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;an SQL expression involving a column name in the source data model, for examples:
+&lt;programlisting&gt;
+price
+firstname || ' ' || lastname 
+nb BETWEEN 5 AND 10&lt;/programlisting&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+It is also possible to specify several fields to be added, while separating them by a comma (in effect
+still forming a valid SQL syntax).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="aggregate_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of aggregate operation to perform</doc>
+            <type name="DataPivotAggregate" c:type="GdaDataPivotAggregate"/>
+          </parameter>
+          <parameter name="field" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the field description, see below</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="alias" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the field alias, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_field"
+              c:identifier="gda_data_pivot_add_field"
+              version="5.0"
+              throws="1">
+        <doc xml:whitespace="preserve">Specifies that @field has to be included in the analysis.
+ field is a field specification with the following accepted syntaxes:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;a column name in the source data model (see &lt;link linkend="gda-data-model-get-column-index"&gt;gda_data_model_get_column_index()&lt;/link&gt;); or&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;an SQL expression involving a column name in the source data model, for example:
+&lt;programlisting&gt;
+price
+firstname || ' ' || lastname 
+nb BETWEEN 5 AND 10&lt;/programlisting&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+It is also possible to specify several fields to be added, while separating them by a comma (in effect
+still forming a valid SQL syntax).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of field to add</doc>
+            <type name="DataPivotFieldType" c:type="GdaDataPivotFieldType"/>
+          </parameter>
+          <parameter name="field" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the field description, see below</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="alias" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the field alias, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="populate"
+              c:identifier="gda_data_pivot_populate"
+              version="5.0"
+              throws="1">
+        <doc xml:whitespace="preserve">Acutally populates @pivot by analysing the data from the provided data model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="model" writable="1" transfer-ownership="none">
+        <type name="DataModel"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DataPivotPrivate" c:type="GdaDataPivotPrivate*"/>
+      </field>
+    </class>
+    <enumeration name="DataPivotAggregate" c:type="GdaDataPivotAggregate">
+      <doc xml:whitespace="preserve">Possible operations for the data fields.</doc>
+      <member name="avg" value="0" c:identifier="GDA_DATA_PIVOT_AVG"/>
+      <member name="count" value="1" c:identifier="GDA_DATA_PIVOT_COUNT"/>
+      <member name="max" value="2" c:identifier="GDA_DATA_PIVOT_MAX"/>
+      <member name="min" value="3" c:identifier="GDA_DATA_PIVOT_MIN"/>
+      <member name="sum" value="4" c:identifier="GDA_DATA_PIVOT_SUM"/>
+    </enumeration>
+    <record name="DataPivotClass"
+            c:type="GdaDataPivotClass"
+            glib:is-gtype-struct-for="DataPivot">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="DataPivotError" c:type="GdaDataPivotError">
+      <doc xml:whitespace="preserve">Possible #GdaDataPivot related errors.</doc>
+      <member name="internal_error"
+              value="0"
+              c:identifier="GDA_DATA_PIVOT_INTERNAL_ERROR"/>
+      <member name="source_model_error"
+              value="1"
+              c:identifier="GDA_DATA_PIVOT_SOURCE_MODEL_ERROR"/>
+      <member name="field_format_error"
+              value="2"
+              c:identifier="GDA_DATA_PIVOT_FIELD_FORMAT_ERROR"/>
+      <member name="usage_error"
+              value="3"
+              c:identifier="GDA_DATA_PIVOT_USAGE_ERROR"/>
+      <member name="overflow_error"
+              value="4"
+              c:identifier="GDA_DATA_PIVOT_OVERFLOW_ERROR"/>
+    </enumeration>
+    <enumeration name="DataPivotFieldType" c:type="GdaDataPivotFieldType">
+      <doc xml:whitespace="preserve">Define types of field to be used when defining a #GdaDataPivot analysis.</doc>
+      <member name="row" value="0" c:identifier="GDA_DATA_PIVOT_FIELD_ROW"/>
+      <member name="column"
+              value="1"
+              c:identifier="GDA_DATA_PIVOT_FIELD_COLUMN"/>
+    </enumeration>
+    <record name="DataPivotPrivate" c:type="GdaDataPivotPrivate" disguised="1">
+    </record>
+    <class name="DataProxy"
+           c:symbol-prefix="data_proxy"
+           c:type="GdaDataProxy"
+           parent="GObject.Object"
+           glib:type-name="GdaDataProxy"
+           glib:get-type="gda_data_proxy_get_type"
+           glib:type-struct="DataProxyClass">
+      <implements name="DataModel"/>
+      <function name="error_quark" c:identifier="gda_data_proxy_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <function name="new" c:identifier="gda_data_proxy_new">
+        <doc xml:whitespace="preserve">Creates a new proxy for @model</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaDataProxy object</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Data model to be proxied</doc>
+            <type name="DataModel" c:type="GdaDataModel*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="filter_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="row_changes_applied">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="proxied_row" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="row_delete_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="to_be_deleted" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="sample_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample_start" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="sample_end" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="sample_size_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample_size" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="validate_row_changes">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Error" c:type="GError*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="proxied_row" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="alter_value_attributes"
+              c:identifier="gda_data_proxy_alter_value_attributes">
+        <doc xml:whitespace="preserve">Alters the attributes of the value stored at (proxy_row, col) in @proxy. the @alter_flags
+can only contain the GDA_VALUE_ATTR_IS_NULL, GDA_VALUE_ATTR_IS_DEFAULT and GDA_VALUE_ATTR_IS_UNCHANGED
+flags (other flags are ignored).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A proxy row number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid column number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="alter_flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags to alter the attributes</doc>
+            <type name="ValueAttribute" c:type="GdaValueAttribute"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_all_changes"
+              c:identifier="gda_data_proxy_apply_all_changes"
+              throws="1">
+        <doc xml:whitespace="preserve">Apply all the changes stored in the proxy to the proxied data model. The changes are done row
+after row, and if an error
+occurs, then it is possible that not all the changes to all the rows have been applied.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="apply_row_changes"
+              c:identifier="gda_data_proxy_apply_row_changes"
+              throws="1">
+        <doc xml:whitespace="preserve">Commits the modified data in the proxy back into the #GdaDataModel.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row number to commit</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cancel_all_changes"
+              c:identifier="gda_data_proxy_cancel_all_changes">
+        <doc xml:whitespace="preserve">Cancel all the changes stored in the proxy (the @proxy will be reset to its state
+as it was just after creation).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="cancel_row_changes"
+              c:identifier="gda_data_proxy_cancel_row_changes">
+        <doc xml:whitespace="preserve">Resets data at the corresponding row and column. If @proxy_row corresponds to a new row, then
+that new row is deleted from @proxy.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row to cancel changes</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column to cancel changes, or less than 0 to cancel any change on the @row row</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete" c:identifier="gda_data_proxy_delete">
+        <doc xml:whitespace="preserve">Marks the row @proxy_row to be deleted</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A proxy row number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_filter_expr"
+              c:identifier="gda_data_proxy_get_filter_expr">
+        <doc xml:whitespace="preserve">Get the current filter expression used by @proxy.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current filter expression or %NULL if no filter has been set</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_filtered_n_rows"
+              c:identifier="gda_data_proxy_get_filtered_n_rows">
+        <doc xml:whitespace="preserve">Get the total number of filtered rows in @proxy if a filter has been applied. As new rows
+(rows added to the proxy and not yet added to the proxied data model) and rows to remove
+(rows marked for removal but not yet removed from the proxied data model) are also filtered,
+the returned number also contains references to new rows and rows to be removed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of filtered rows in @proxy, or -1 if no filter has been applied</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_n_modified_rows"
+              c:identifier="gda_data_proxy_get_n_modified_rows">
+        <doc xml:whitespace="preserve">Get the number of rows which have been modified in the proxy (the sum of rows existing in
+the proxied data model which have been modified, and new rows).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of modified rows</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_n_new_rows"
+              c:identifier="gda_data_proxy_get_n_new_rows">
+        <doc xml:whitespace="preserve">Get the number of rows which have been added to @proxy and which are not part of
+the proxied data model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of new rows</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_proxied_model"
+              c:identifier="gda_data_proxy_get_proxied_model">
+        <doc xml:whitespace="preserve">Fetch the #GdaDataModel which @proxy does proxy</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the proxied data model</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+      </method>
+      <method name="get_proxied_model_n_cols"
+              c:identifier="gda_data_proxy_get_proxied_model_n_cols">
+        <doc xml:whitespace="preserve">Get the number of columns in the proxied data model</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of columns, or -1 if an error occurred</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_proxied_model_n_rows"
+              c:identifier="gda_data_proxy_get_proxied_model_n_rows">
+        <doc xml:whitespace="preserve">Get the number of rows in the proxied data model</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of rows, or -1 if the number of rows is not known</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_proxied_model_row"
+              c:identifier="gda_data_proxy_get_proxied_model_row">
+        <doc xml:whitespace="preserve">Get the @proxy's proxied model row corresponding to @proxy_row</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the proxied model's row, or -1 if @proxy row which only exists @proxy</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A proxy row number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sample_end"
+              c:identifier="gda_data_proxy_get_sample_end">
+        <doc xml:whitespace="preserve">Get the number of the last row to be available in @proxy (in reference to the proxied data model)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of the last proxied model's row.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_sample_size"
+              c:identifier="gda_data_proxy_get_sample_size">
+        <doc xml:whitespace="preserve">Get the size of each chunk of data displayed at a time.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the chunk (or sample) size, or 0 if chunking is disabled.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_sample_start"
+              c:identifier="gda_data_proxy_get_sample_start">
+        <doc xml:whitespace="preserve">Get the number of the first row to be available in @proxy (in reference to the proxied data model)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of the first proxied model's row.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_value_attributes"
+              c:identifier="gda_data_proxy_get_value_attributes">
+        <doc xml:whitespace="preserve">Get the attributes of the value stored at (proxy_row, col) in @proxy, which
+is an ORed value of #GdaValueAttribute flags</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaValueAttribute with the value's attributes at given position</doc>
+          <type name="ValueAttribute" c:type="GdaValueAttribute"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a proxy row</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid proxy column</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_values" c:identifier="gda_data_proxy_get_values">
+        <doc xml:whitespace="preserve">Retrieve a whole list of values from the @proxy data model. This function
+calls gda_data_proxy_get_value()
+for each column index specified in @cols_index, and generates a #GSList on the way.
+
+or %NULL if an error occurred</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a new list of values (the list must be freed, not the values),</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="GObject.Value"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="proxy_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a proxy row</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="cols_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">array containing the columns for which the values are requested</doc>
+            <array zero-terminated="0" c:type="gint*">
+              <type name="gint" c:type="gint"/>
+            </array>
+          </parameter>
+          <parameter name="n_cols" transfer-ownership="none">
+            <doc xml:whitespace="preserve">size of @cols_index</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_changed" c:identifier="gda_data_proxy_has_changed">
+        <doc xml:whitespace="preserve">Tells if @proxy contains any modifications not applied to the proxied data model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if there are some modifications in @proxy</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_read_only" c:identifier="gda_data_proxy_is_read_only">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the proxied data model is itself read-only</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="row_has_changed"
+              c:identifier="gda_data_proxy_row_has_changed">
+        <doc xml:whitespace="preserve">Tells if the row number @proxy_row has changed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the row has changed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A proxy row number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_is_deleted"
+              c:identifier="gda_data_proxy_row_is_deleted">
+        <doc xml:whitespace="preserve">Tells if the row number @proxy_row is marked to be deleted.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the row is marked to be deleted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A proxy row number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_is_inserted"
+              c:identifier="gda_data_proxy_row_is_inserted">
+        <doc xml:whitespace="preserve">Tells if the row number @proxy_row is a row which has been inserted in @proxy
+(and is thus not in the proxied data model).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the row is an inserted row</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A proxy row number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter_expr"
+              c:identifier="gda_data_proxy_set_filter_expr"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets a filter among the rows presented by @proxy. The filter is defined by a filter expression
+which can be any SQL valid expression using @proxy's columns. For instance if @proxy has the "id" and
+"name" columns, then a filter can be "length(name) &lt; 5" to filter only the rows where the length of the
+name is strictly inferior to 5, or "id &gt;= 1000 and id &lt; 2000 order by name limit 50" to filter only the rows where the id
+is between 1000 and 2000, ordered by name and limited to 50 rows.
+
+Note about column names: real column names can be used (double quoted if necessary), but columns can also be named
+"_&amp;lt;column number&amp;gt;" with column numbers starting at 1.
+
+Note that any previous filter expression is replaced with the new @filter_expr if no error occurs
+(if an error occurs, then any previous filter is left unchanged).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_expr"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">an SQL based expression which will filter the contents of @proxy, or %NULL to remove any previous filter</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ordering_column"
+              c:identifier="gda_data_proxy_set_ordering_column"
+              throws="1">
+        <doc xml:whitespace="preserve">Orders by the @col column</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column number to order from</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sample_size"
+              c:identifier="gda_data_proxy_set_sample_size">
+        <doc xml:whitespace="preserve">Sets the size of each chunk of data to display: the maximum number of rows which
+can be "displayed" at a time (the maximum number of rows which @proxy pretends to have).
+The default value is arbitrary 300 as it is big enough to
+be able to display quite a lot of data, but small enough to avoid too much data
+displayed at the same time.
+
+Note: the rows which have been added but not yet committed will always be displayed
+regardless of the current chunk of data, and the modified rows which are not visible
+when the displayed chunk of data changes are still held as modified rows.
+
+To remove the chunking of the data to display, simply pass @sample_size the %0 value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested size of a chunk, or 0</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sample_start"
+              c:identifier="gda_data_proxy_set_sample_start">
+        <doc xml:whitespace="preserve">Sets the number of the first row to be available in @proxy (in reference to the proxied data model)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of the first row to be displayed</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="undelete" c:identifier="gda_data_proxy_undelete">
+        <doc xml:whitespace="preserve">Remove the "to be deleted" mark at the row @proxy_row, if it existed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A proxy row number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="defer-sync" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="model"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="DataModel"/>
+      </property>
+      <property name="prepend-null-entry"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="sample-size"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DataProxyPrivate" c:type="GdaDataProxyPrivate*"/>
+      </field>
+      <glib:signal name="filter-changed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted when @proxy's filter has been changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="row-changes-applied" when="first">
+        <doc xml:whitespace="preserve">Gets emitted when @proxy has committed a row change to the proxied data model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the proxy's row</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="proxied_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the proxied data model's row</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-delete-changed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted whenever a row has been marked to be deleted, or has been unmarked to be deleted</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the concerned @proxy's row</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="to_be_deleted" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tells if the @row is marked to be deleted</doc>
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="sample-changed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted whenever @proxy's sample size has been changed. @sample_start and @sample_end are
+in reference to the proxied data model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first row of the sample</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="sample_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the last row of the sample</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="sample-size-changed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted whenever @proxy's sample size has been changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new sample size</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="validate-row-changes" when="last">
+        <doc xml:whitespace="preserve">Gets emitted when @proxy is about to commit a row change to the proxied data model. If any
+callback returns a non %NULL value, then the change commit fails with the returned #GError</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GError if validation failed, or %NULL</doc>
+          <type name="GLib.Error"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the proxy's row</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="proxied_row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the proxied data model's row</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="DataProxyClass"
+            c:type="GdaDataProxyClass"
+            glib:is-gtype-struct-for="DataProxy">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="row_delete_changed">
+        <callback name="row_delete_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="DataProxy" c:type="GdaDataProxy*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="to_be_deleted" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sample_size_changed">
+        <callback name="sample_size_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="DataProxy" c:type="GdaDataProxy*"/>
+            </parameter>
+            <parameter name="sample_size" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sample_changed">
+        <callback name="sample_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="DataProxy" c:type="GdaDataProxy*"/>
+            </parameter>
+            <parameter name="sample_start" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="sample_end" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="validate_row_changes">
+        <callback name="validate_row_changes">
+          <return-value transfer-ownership="full">
+            <type name="GLib.Error" c:type="GError*"/>
+          </return-value>
+          <parameters>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="DataProxy" c:type="GdaDataProxy*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="proxied_row" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_changes_applied">
+        <callback name="row_changes_applied">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="DataProxy" c:type="GdaDataProxy*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="proxied_row" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="filter_changed">
+        <callback name="filter_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="DataProxy" c:type="GdaDataProxy*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="DataProxyError" c:type="GdaDataProxyError">
+      <member name="commit_error"
+              value="0"
+              c:identifier="GDA_DATA_PROXY_COMMIT_ERROR"/>
+      <member name="commit_cancelled"
+              value="1"
+              c:identifier="GDA_DATA_PROXY_COMMIT_CANCELLED"/>
+      <member name="read_only_value"
+              value="2"
+              c:identifier="GDA_DATA_PROXY_READ_ONLY_VALUE"/>
+      <member name="read_only_row"
+              value="3"
+              c:identifier="GDA_DATA_PROXY_READ_ONLY_ROW"/>
+      <member name="filter_error"
+              value="4"
+              c:identifier="GDA_DATA_PROXY_FILTER_ERROR"/>
+    </enumeration>
+    <record name="DataProxyPrivate" c:type="GdaDataProxyPrivate" disguised="1">
+    </record>
+    <class name="DataSelect"
+           c:symbol-prefix="data_select"
+           c:type="GdaDataSelect"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GdaDataSelect"
+           glib:get-type="gda_data_select_get_type"
+           glib:type-struct="DataSelectClass">
+      <implements name="DataModel"/>
+      <function name="error_quark" c:identifier="gda_data_select_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <virtual-method name="fetch_at" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="prow" transfer-ownership="none">
+            <type name="Row" c:type="GdaRow**"/>
+          </parameter>
+          <parameter name="rownum" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fetch_nb_rows">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="fetch_next" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="prow" transfer-ownership="none">
+            <type name="Row" c:type="GdaRow**"/>
+          </parameter>
+          <parameter name="rownum" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fetch_prev" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="prow" transfer-ownership="none">
+            <type name="Row" c:type="GdaRow**"/>
+          </parameter>
+          <parameter name="rownum" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fetch_random" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="prow" transfer-ownership="none">
+            <type name="Row" c:type="GdaRow**"/>
+          </parameter>
+          <parameter name="rownum" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="store_all" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="compute_columns_attributes"
+              c:identifier="gda_data_select_compute_columns_attributes"
+              throws="1">
+        <doc xml:whitespace="preserve">Computes correct attributes for each of @model's columns, which includes the "NOT NULL" attribute, the
+default value, the precision and scale for numeric values.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="compute_modification_statements"
+              c:identifier="gda_data_select_compute_modification_statements"
+              throws="1">
+        <doc xml:whitespace="preserve">Makes @model try to compute INSERT, UPDATE and DELETE statements to be used when modifying @model's contents.
+Note: any modification statement set using gda_data_select_set_modification_statement() will first be unset
+
+This function is similar to calling gda_data_select_compute_modification_statements_ext with
+ cond_type set to %GDA_DATA_SELECT_COND_PK</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred. If %FALSE is returned, then some modification statement may still have been computed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="compute_modification_statements_ext"
+              c:identifier="gda_data_select_compute_modification_statements_ext"
+              version="4.2.9"
+              throws="1">
+        <doc xml:whitespace="preserve">Makes @model try to compute INSERT, UPDATE and DELETE statements to be used when modifying @model's contents.
+Note: any modification statement set using gda_data_select_set_modification_statement() will first be unset</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred. If %FALSE is returned, then some modification statement may still have been computed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cond_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of condition for the modifications where one row only should be identified</doc>
+            <type name="DataSelectConditionType"
+                  c:type="GdaDataSelectConditionType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="compute_row_selection_condition"
+              c:identifier="gda_data_select_compute_row_selection_condition"
+              throws="1">
+        <doc xml:whitespace="preserve">Offers the same features as gda_data_select_set_row_selection_condition() but the expression
+is computed from the meta data associated to the connection being used when @model was created.
+
+NOTE1: make sure the meta data associated to the connection is up to date before using this
+method, see gda_connection_update_meta_store().
+
+NOTE2: if the SELECT statement from which @model has been created uses more than one table, or
+if the table used does not have any primary key, then this method will fail</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_connection"
+              c:identifier="gda_data_select_get_connection">
+        <doc xml:whitespace="preserve">Get a pointer to the #GdaConnection object which was used when @model was created
+(and which may be used internally by @model).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the #GdaConnection, or %NULL</doc>
+          <type name="Connection" c:type="GdaConnection*"/>
+        </return-value>
+      </method>
+      <method name="rerun"
+              c:identifier="gda_data_select_rerun"
+              version="4.2"
+              throws="1">
+        <doc xml:whitespace="preserve">Requests that @model be re-run to have an updated result. If an error occurs,
+then @model will not be changed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_modification_statement"
+              c:identifier="gda_data_select_set_modification_statement"
+              throws="1">
+        <doc xml:whitespace="preserve">Informs @model that it should allow modifications to the data in some columns and some rows
+using @mod_stmt to propagate those modifications into the database.
+
+If @mod_stmt is:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;an UPDATE statement, then all the rows in @model will be modifyable&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;a DELETE statement, then it will be possible to delete rows in @model&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;in INSERT statement, then it will be possible to add some rows to @model&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;any other statement, then this method will return an error&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+This method can be called several times to specify different types of modification.
+
+If @mod_stmt is an UPDATE or DELETE statement then it should have a WHERE part which identifies
+a unique row in @model (please note that this property can't be checked but may result
+in @model behaving in an unpredictable way).
+
+NOTE1: However, if the gda_data_select_set_row_selection_condition()
+or gda_data_select_set_row_selection_condition_sql() have been successfully be called before, the WHERE
+part of @mod_stmt &lt;emphasis&gt;WILL&lt;/emphasis&gt; be modified to use the row selection condition specified through one of
+these methods (please not that it is then possible to avoid specifying a WHERE part in @mod_stmt then).
+
+NOTE2: if gda_data_select_set_row_selection_condition()
+or gda_data_select_set_row_selection_condition_sql() have not yet been successfully be called before, then
+the WHERE part of @mod_stmt will be used as if one of these functions had been called.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mod_stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement (INSERT, UPDATE or DELETE)</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_modification_statement_sql"
+              c:identifier="gda_data_select_set_modification_statement_sql"
+              throws="1">
+        <doc xml:whitespace="preserve">Offers the same feature as gda_data_select_set_modification_statement() but using an SQL statement</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sql" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an SQL text</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_selection_condition"
+              c:identifier="gda_data_select_set_row_selection_condition"
+              introspectable="0"
+              throws="1">
+        <doc xml:whitespace="preserve">Offers the same features as gda_data_select_set_row_selection_condition_sql() but using a #GdaSqlExpr
+structure instead of an SQL syntax.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="expr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaSqlExpr expression</doc>
+            <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_selection_condition_sql"
+              c:identifier="gda_data_select_set_row_selection_condition_sql"
+              throws="1">
+        <doc xml:whitespace="preserve">Specifies the SQL condition corresponding to the WHERE part of a SELECT statement which would
+return only 1 row (the expression of the primary key).
+
+For example for a table created as &lt;![CDATA["CREATE TABLE mytable (part1 int NOT NULL, part2 string NOT NULL,
+name string, PRIMARY KEY (part1, part2))"]]&gt;, and if @pmodel corresponds to the execution of the
+&lt;![CDATA["SELECT name, part1, part2 FROM mytable"]]&gt;, then the sensible value for @sql_where would be
+&lt;![CDATA["part1 = ##-1::int AND part2 = ##-2::string"]]&gt; because the values of the 'part1' field are located
+in @pmodel's column number 1 and the values of the 'part2' field are located
+in @pmodel's column number 2 and the primary key is composed of (part1, part2).
+
+For more information about the syntax of the parameters (named &lt;![CDATA["##-1::int"]]&gt; for example), see the
+&lt;link linkend="GdaSqlParser.description"&gt;GdaSqlParser&lt;/link&gt; documentation, and
+gda_data_select_set_modification_statement().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sql_where" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an SQL condition (without the WHERE keyword)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="auto-reset" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="connection"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Connection"/>
+      </property>
+      <property name="delete-stmt" writable="1" transfer-ownership="none">
+        <type name="Statement"/>
+      </property>
+      <property name="exec-params"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Set"/>
+      </property>
+      <property name="execution-delay"
+                version="4.2.9"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This property stores the execution delay which has been necessary to obtain the data</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="insert-stmt" writable="1" transfer-ownership="none">
+        <type name="Statement"/>
+      </property>
+      <property name="model-usage"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="prepared-stmt" writable="1" transfer-ownership="none">
+        <type name="PStmt"/>
+      </property>
+      <property name="select-stmt" transfer-ownership="none">
+        <type name="Statement"/>
+      </property>
+      <property name="store-all-rows" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="update-stmt" writable="1" transfer-ownership="none">
+        <type name="Statement"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DataSelectPrivate" c:type="GdaDataSelectPrivate*"/>
+      </field>
+      <field name="prep_stmt">
+        <type name="PStmt" c:type="GdaPStmt*"/>
+      </field>
+      <field name="nb_stored_rows">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="advertized_nrows">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved3" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved4" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="DataSelectClass"
+            c:type="GdaDataSelectClass"
+            glib:is-gtype-struct-for="DataSelect">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="fetch_nb_rows">
+        <callback name="fetch_nb_rows">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataSelect" c:type="GdaDataSelect*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fetch_random">
+        <callback name="fetch_random" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataSelect" c:type="GdaDataSelect*"/>
+            </parameter>
+            <parameter name="prow" transfer-ownership="none">
+              <type name="Row" c:type="GdaRow**"/>
+            </parameter>
+            <parameter name="rownum" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="store_all">
+        <callback name="store_all" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataSelect" c:type="GdaDataSelect*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fetch_next">
+        <callback name="fetch_next" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataSelect" c:type="GdaDataSelect*"/>
+            </parameter>
+            <parameter name="prow" transfer-ownership="none">
+              <type name="Row" c:type="GdaRow**"/>
+            </parameter>
+            <parameter name="rownum" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fetch_prev">
+        <callback name="fetch_prev" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataSelect" c:type="GdaDataSelect*"/>
+            </parameter>
+            <parameter name="prow" transfer-ownership="none">
+              <type name="Row" c:type="GdaRow**"/>
+            </parameter>
+            <parameter name="rownum" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fetch_at">
+        <callback name="fetch_at" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="DataSelect" c:type="GdaDataSelect*"/>
+            </parameter>
+            <parameter name="prow" transfer-ownership="none">
+              <type name="Row" c:type="GdaRow**"/>
+            </parameter>
+            <parameter name="rownum" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="DataSelectConditionType"
+                 c:type="GdaDataSelectConditionType">
+      <doc xml:whitespace="preserve">Defines what criteria gda_data_select_compute_modification_statements_ext() uses
+to uniquely identify a single row in a table when creating modification statements.</doc>
+      <member name="pk" value="0" c:identifier="GDA_DATA_SELECT_COND_PK"/>
+      <member name="all_columns"
+              value="1"
+              c:identifier="GDA_DATA_SELECT_COND_ALL_COLUMNS"/>
+    </enumeration>
+    <enumeration name="DataSelectError" c:type="GdaDataSelectError">
+      <member name="modification_statement_error"
+              value="0"
+              c:identifier="GDA_DATA_SELECT_MODIFICATION_STATEMENT_ERROR"/>
+      <member name="missing_modification_statement_error"
+              value="1"
+              c:identifier="GDA_DATA_SELECT_MISSING_MODIFICATION_STATEMENT_ERROR"/>
+      <member name="connection_error"
+              value="2"
+              c:identifier="GDA_DATA_SELECT_CONNECTION_ERROR"/>
+      <member name="access_error"
+              value="3"
+              c:identifier="GDA_DATA_SELECT_ACCESS_ERROR"/>
+      <member name="sql_error"
+              value="4"
+              c:identifier="GDA_DATA_SELECT_SQL_ERROR"/>
+      <member name="safety_locked_error"
+              value="5"
+              c:identifier="GDA_DATA_SELECT_SAFETY_LOCKED_ERROR"/>
+    </enumeration>
+    <record name="DataSelectPrivate"
+            c:type="GdaDataSelectPrivate"
+            disguised="1">
+    </record>
+    <glib:boxed glib:name="Default"
+                c:symbol-prefix="default"
+                glib:type-name="GdaDefault"
+                glib:get-type="gda_default_get_type">
+      <function name="escape_string" c:identifier="gda_default_escape_string">
+        <doc xml:whitespace="preserve">Escapes @string to make it understandable by a DBMS. The escape method is very common and replaces any
+occurrence of "'" with "''" and "\" with "\\"</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string to escape</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="unescape_string"
+                c:identifier="gda_default_unescape_string">
+        <doc xml:whitespace="preserve">Do the reverse of gda_default_escape_string(): transforms any "''" into "'", any
+"\\" into "\" and any "\'" into "'".</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new unescaped string, or %NULL in an error was found in @string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string to unescape</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+    </glib:boxed>
+    <record name="Diff" c:type="GdaDiff">
+      <field name="type" writable="1">
+        <type name="DiffType" c:type="GdaDiffType"/>
+      </field>
+      <field name="old_row" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="new_row" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="values" writable="1">
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+    </record>
+    <enumeration name="DiffType" c:type="GdaDiffType">
+      <member name="add_row" value="0" c:identifier="GDA_DIFF_ADD_ROW"/>
+      <member name="remove_row" value="1" c:identifier="GDA_DIFF_REMOVE_ROW"/>
+      <member name="modify_row" value="2" c:identifier="GDA_DIFF_MODIFY_ROW"/>
+    </enumeration>
+    <record name="DsnInfo" c:type="GdaDsnInfo">
+      <doc xml:whitespace="preserve">This structure defines the properties of a named data source (DSN).</doc>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="provider" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="cnc_string" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="auth_string" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="is_system" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved3" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved4" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <constant name="EXTRA_AUTO_INCREMENT"
+              value="AUTO_INCREMENT"
+              c:type="GDA_EXTRA_AUTO_INCREMENT">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <record name="GeometricPoint"
+            c:type="GdaGeometricPoint"
+            glib:type-name="GdaGeometricPoint"
+            glib:get-type="gda_geometricpoint_get_type"
+            c:symbol-prefix="geometricpoint">
+      <field name="x" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <function name="copy" c:identifier="gda_geometricpoint_copy">
+        <return-value transfer-ownership="full">
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="boxed" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="free" c:identifier="gda_geometricpoint_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="boxed" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <class name="HandlerBin"
+           c:symbol-prefix="handler_bin"
+           c:type="GdaHandlerBin"
+           parent="GObject.Object"
+           glib:type-name="GdaHandlerBin"
+           glib:get-type="gda_handler_bin_get_type"
+           glib:type-struct="HandlerBinClass">
+      <implements name="DataHandler"/>
+      <function name="new" c:identifier="gda_handler_bin_new">
+        <doc xml:whitespace="preserve">Creates a data handler for binary values</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new object</doc>
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+      </function>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="HandlerBinPriv" c:type="GdaHandlerBinPriv*"/>
+      </field>
+    </class>
+    <record name="HandlerBinClass"
+            c:type="GdaHandlerBinClass"
+            glib:is-gtype-struct-for="HandlerBin">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="HandlerBinPriv" c:type="GdaHandlerBinPriv" disguised="1">
+    </record>
+    <class name="HandlerBoolean"
+           c:symbol-prefix="handler_boolean"
+           c:type="GdaHandlerBoolean"
+           parent="GObject.Object"
+           glib:type-name="GdaHandlerBoolean"
+           glib:get-type="gda_handler_boolean_get_type"
+           glib:type-struct="HandlerBooleanClass">
+      <implements name="DataHandler"/>
+      <function name="new" c:identifier="gda_handler_boolean_new">
+        <doc xml:whitespace="preserve">Creates a data handler for booleans</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new object</doc>
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+      </function>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="HandlerBooleanPriv" c:type="GdaHandlerBooleanPriv*"/>
+      </field>
+    </class>
+    <record name="HandlerBooleanClass"
+            c:type="GdaHandlerBooleanClass"
+            glib:is-gtype-struct-for="HandlerBoolean">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="HandlerBooleanPriv"
+            c:type="GdaHandlerBooleanPriv"
+            disguised="1">
+    </record>
+    <class name="HandlerNumerical"
+           c:symbol-prefix="handler_numerical"
+           c:type="GdaHandlerNumerical"
+           parent="GObject.Object"
+           glib:type-name="GdaHandlerNumerical"
+           glib:get-type="gda_handler_numerical_get_type"
+           glib:type-struct="HandlerNumericalClass">
+      <implements name="DataHandler"/>
+      <function name="new" c:identifier="gda_handler_numerical_new">
+        <doc xml:whitespace="preserve">Creates a data handler for numerical values</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new object</doc>
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+      </function>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="HandlerNumericalPriv" c:type="GdaHandlerNumericalPriv*"/>
+      </field>
+    </class>
+    <record name="HandlerNumericalClass"
+            c:type="GdaHandlerNumericalClass"
+            glib:is-gtype-struct-for="HandlerNumerical">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="HandlerNumericalPriv"
+            c:type="GdaHandlerNumericalPriv"
+            disguised="1">
+    </record>
+    <class name="HandlerString"
+           c:symbol-prefix="handler_string"
+           c:type="GdaHandlerString"
+           parent="GObject.Object"
+           glib:type-name="GdaHandlerString"
+           glib:get-type="gda_handler_string_get_type"
+           glib:type-struct="HandlerStringClass">
+      <implements name="DataHandler"/>
+      <function name="new" c:identifier="gda_handler_string_new">
+        <doc xml:whitespace="preserve">Creates a data handler for strings</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new object</doc>
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+      </function>
+      <function name="new_with_provider"
+                c:identifier="gda_handler_string_new_with_provider">
+        <doc xml:whitespace="preserve">Creates a data handler for strings, which will use some specific methods implemented
+by the @prov object (possibly also @cnc).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new object</doc>
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+        <parameters>
+          <parameter name="prov" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaServerProvider object</doc>
+            <type name="ServerProvider" c:type="GdaServerProvider*"/>
+          </parameter>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="HandlerStringPriv" c:type="GdaHandlerStringPriv*"/>
+      </field>
+    </class>
+    <record name="HandlerStringClass"
+            c:type="GdaHandlerStringClass"
+            glib:is-gtype-struct-for="HandlerString">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="HandlerStringPriv"
+            c:type="GdaHandlerStringPriv"
+            disguised="1">
+    </record>
+    <class name="HandlerTime"
+           c:symbol-prefix="handler_time"
+           c:type="GdaHandlerTime"
+           parent="GObject.Object"
+           glib:type-name="GdaHandlerTime"
+           glib:get-type="gda_handler_time_get_type"
+           glib:type-struct="HandlerTimeClass">
+      <implements name="DataHandler"/>
+      <function name="new" c:identifier="gda_handler_time_new">
+        <doc xml:whitespace="preserve">Creates a data handler for time values</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new object</doc>
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+      </function>
+      <function name="new_no_locale"
+                c:identifier="gda_handler_time_new_no_locale">
+        <doc xml:whitespace="preserve">Creates a data handler for time values, but using the default C locale
+instead of the current user locale.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new object</doc>
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+      </function>
+      <method name="get_format" c:identifier="gda_handler_time_get_format">
+        <doc xml:whitespace="preserve">Get a string representing the locale-dependent way to enter a date/time/datetime, using
+a syntax suitable for the #GnomeDbFormatEntry widget</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of data being handled</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_no_locale_str_from_value"
+              c:identifier="gda_handler_time_get_no_locale_str_from_value">
+        <doc xml:whitespace="preserve">locale into account</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string representing @value without taking the current</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sql_spec" c:identifier="gda_handler_time_set_sql_spec">
+        <doc xml:whitespace="preserve">Specifies the SQL output style of the @dh data handler. The general format is "FIRSTsSECsTHIRD"
+where FIRST, SEC and THIRD are specified by @first, @sec and @trird and 's' is the separator,
+specified by @separator.
+
+The default implementation is @first=G_DATE_MONTH, @sec=G_DATE_DAY and @third=G_DATE_YEAR
+(the year is rendered on 4 digits) and the separator is '-'</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first" transfer-ownership="none">
+            <doc xml:whitespace="preserve">what comes first in the date representation</doc>
+            <type name="GLib.DateDMY" c:type="GDateDMY"/>
+          </parameter>
+          <parameter name="sec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">what comes second in the date representation</doc>
+            <type name="GLib.DateDMY" c:type="GDateDMY"/>
+          </parameter>
+          <parameter name="third" transfer-ownership="none">
+            <doc xml:whitespace="preserve">what comes third in the date representation</doc>
+            <type name="GLib.DateDMY" c:type="GDateDMY"/>
+          </parameter>
+          <parameter name="separator" transfer-ownership="none">
+            <doc xml:whitespace="preserve">separator character used between year, month and day</doc>
+            <type name="gchar" c:type="gchar"/>
+          </parameter>
+          <parameter name="twodigits_years" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if year part of date must be rendered on 2 digits</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_str_spec"
+              c:identifier="gda_handler_time_set_str_spec"
+              version="4.2.1">
+        <doc xml:whitespace="preserve">Specifies the human readable output style of the @dh data handler.
+The general format is "FIRSTsSECsTHIRD"
+where FIRST, SEC and THIRD are specified by @first, @sec and @trird and 's' is the separator,
+specified by @separator.
+
+The default implementation depends on the current locale, except if @dh was created
+using gda_handler_time_new_no_locale().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first" transfer-ownership="none">
+            <doc xml:whitespace="preserve">what comes first in the date representation</doc>
+            <type name="GLib.DateDMY" c:type="GDateDMY"/>
+          </parameter>
+          <parameter name="sec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">what comes second in the date representation</doc>
+            <type name="GLib.DateDMY" c:type="GDateDMY"/>
+          </parameter>
+          <parameter name="third" transfer-ownership="none">
+            <doc xml:whitespace="preserve">what comes third in the date representation</doc>
+            <type name="GLib.DateDMY" c:type="GDateDMY"/>
+          </parameter>
+          <parameter name="separator" transfer-ownership="none">
+            <doc xml:whitespace="preserve">separator character used between year, month and day</doc>
+            <type name="gchar" c:type="gchar"/>
+          </parameter>
+          <parameter name="twodigits_years" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if year part of date must be rendered on 2 digits</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="HandlerTimePriv" c:type="GdaHandlerTimePriv*"/>
+      </field>
+    </class>
+    <record name="HandlerTimeClass"
+            c:type="GdaHandlerTimeClass"
+            glib:is-gtype-struct-for="HandlerTime">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="HandlerTimePriv" c:type="GdaHandlerTimePriv" disguised="1">
+    </record>
+    <class name="HandlerType"
+           c:symbol-prefix="handler_type"
+           c:type="GdaHandlerType"
+           parent="GObject.Object"
+           glib:type-name="GdaHandlerType"
+           glib:get-type="gda_handler_type_get_type"
+           glib:type-struct="HandlerTypeClass">
+      <implements name="DataHandler"/>
+      <function name="new" c:identifier="gda_handler_type_new">
+        <doc xml:whitespace="preserve">Creates a data handler for Gda types</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new object</doc>
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+      </function>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="HandlerTypePriv" c:type="GdaHandlerTypePriv*"/>
+      </field>
+    </class>
+    <record name="HandlerTypeClass"
+            c:type="GdaHandlerTypeClass"
+            glib:is-gtype-struct-for="HandlerType">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="HandlerTypePriv" c:type="GdaHandlerTypePriv" disguised="1">
+    </record>
+    <class name="Holder"
+           c:symbol-prefix="holder"
+           c:type="GdaHolder"
+           parent="GObject.Object"
+           glib:type-name="GdaHolder"
+           glib:get-type="gda_holder_get_type"
+           glib:type-struct="HolderClass">
+      <implements name="Lockable"/>
+      <constructor name="new" c:identifier="gda_holder_new">
+        <doc xml:whitespace="preserve">Creates a new holder of type @type</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaHolder object</doc>
+          <type name="Holder" c:type="GdaHolder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GType requested</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_inline"
+                   c:identifier="gda_holder_new_inline"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GdaHolder object with an ID set to @id, of type @type, 
+and containing the value passed as the last argument.
+
+Note that this function is a utility function and that only a limited set of types are supported. Trying
+to use an unsupported type will result in a warning, and the returned value holder holding a safe default
+value.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaHolder object</doc>
+          <type name="Holder" c:type="GdaHolder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid GLib type</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="id" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the id of the holder to create, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="error_quark" c:identifier="gda_holder_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <virtual-method name="att_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="att_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="att_value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="source_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="validate_change">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Error" c:type="GError*"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="copy" c:identifier="gda_holder_copy">
+        <doc xml:whitespace="preserve">Copy constructor.
+
+Note1: if @orig is set with a static value (see gda_holder_take_static_value()) 
+its copy will have a fresh new allocated GValue, so that user should free it when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaHolder object</doc>
+          <type name="Holder" c:type="GdaHolder*"/>
+        </return-value>
+      </method>
+      <method name="force_invalid" c:identifier="gda_holder_force_invalid">
+        <doc xml:whitespace="preserve">Forces a holder to be invalid; to set it valid again, a new value must be assigned
+to it using gda_holder_set_value() or gda_holder_take_value().
+
+ holder's value is set to %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="force_invalid_e"
+              c:identifier="gda_holder_force_invalid_e"
+              version="4.2.10">
+        <doc xml:whitespace="preserve">Forces a holder to be invalid; to set it valid again, a new value must be assigned
+to it using gda_holder_set_value() or gda_holder_take_value().
+
+ holder's value is set to %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="full" allow-none="1">
+            <doc xml:whitespace="preserve">a #GError explaining why @holder is declared invalid, or %NULL</doc>
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute" c:identifier="gda_holder_get_attribute">
+        <doc xml:whitespace="preserve">Get the value associated to a named attribute.
+
+Attributes can have any name, but Libgda proposes some default names, see &lt;link linkend="libgda-40-Attributes-manager.synopsis"&gt;this section&lt;/link&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a read-only #GValue, or %NULL if not attribute named @attribute has been set for @holder</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute name as a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bind" c:identifier="gda_holder_get_bind">
+        <doc xml:whitespace="preserve">Get the holder which makes @holder change its value when the holder's value is changed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaHolder or %NULL</doc>
+          <type name="Holder" c:type="GdaHolder*"/>
+        </return-value>
+      </method>
+      <method name="get_default_value"
+              c:identifier="gda_holder_get_default_value">
+        <doc xml:whitespace="preserve">Get the default value held into the holder. WARNING: the default value does not need to be of 
+the same type as the one required by @holder.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default value</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="get_g_type" c:identifier="gda_holder_get_g_type">
+        <doc xml:whitespace="preserve">Get @holder's type</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the data type</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_id" c:identifier="gda_holder_get_id">
+        <doc xml:whitespace="preserve">Get the ID of @holder. The ID can be set using @holder's "id" property</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID (don't modify the string).</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_not_null" c:identifier="gda_holder_get_not_null">
+        <doc xml:whitespace="preserve">Get wether the holder can be NULL or not</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the holder cannot be NULL</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_source_model"
+              c:identifier="gda_holder_get_source_model">
+        <doc xml:whitespace="preserve">If gda_holder_set_source_model() has been used to provide a hint that @holder's value
+should be among the values contained in a column of a data model, then this method
+returns which data model, and if @col is not %NULL, then it is set to the restricting column
+as well.
+
+Otherwise, this method returns %NULL, and if @col is not %NULL, then it is set to 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #GdaDataModel, or %NULL</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a place to store the column in the model sourcing the holder, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value" c:identifier="gda_holder_get_value">
+        <doc xml:whitespace="preserve">Get the value held into the holder. If @holder is set to use its default value
+and that default value is not of the same type as @holder, then %NULL is returned.
+
+If @holder is set to NULL, then the returned value is a #GDA_TYPE_NULL GValue.
+
+If @holder is invalid, then the returned value is %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value, or %NULL</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="get_value_str" c:identifier="gda_holder_get_value_str">
+        <doc xml:whitespace="preserve">Same functionality as gda_holder_get_value() except that it returns the value as a string
+(the conversion is done using @dh if not %NULL, or the default data handler otherwise).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the value, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="dh" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaDataHandler to use, or %NULL</doc>
+            <type name="DataHandler" c:type="GdaDataHandler*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_valid" c:identifier="gda_holder_is_valid">
+        <doc xml:whitespace="preserve">Get the validity of @holder (that is, of the value held by @holder)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @holder's value can safely be used</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_valid_e"
+              c:identifier="gda_holder_is_valid_e"
+              version="4.2.10"
+              throws="1">
+        <doc xml:whitespace="preserve">Get the validity of @holder (that is, of the value held by @holder)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @holder's value can safely be used</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_attribute" c:identifier="gda_holder_set_attribute">
+        <doc xml:whitespace="preserve">Set the value associated to a named attribute. The @attribute string is 'stolen' by this method, and
+the memory it uses will be freed using the @destroy function when no longer needed (if @destroy is %NULL,
+then the string will not be freed at all).
+
+Attributes can have any name, but Libgda proposes some default names, 
+see &lt;link linkend="libgda-40-Attributes-manager.synopsis"&gt;this section&lt;/link&gt;.
+
+For example one would use it as:
+
+&lt;code&gt;
+gda_holder_set_attribute (holder, g_strdup (my_attribute), g_free, my_value);
+gda_holder_set_attribute (holder, GDA_ATTRIBUTE_NAME, NULL, my_value);
+&lt;/code&gt;
+
+If there is already an attribute named @attribute set, then its value is replaced with the new value (@value is
+copied), except if @value is %NULL, in which case the attribute is removed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">a function to be called when @attribute is not needed anymore, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bind" c:identifier="gda_holder_set_bind" throws="1">
+        <doc xml:whitespace="preserve">Sets @holder to change when @bind_to changes (and does not make @bind_to change when @holder changes).
+For the operation to succeed, the GType of @holder and @bind_to must be the same, with the exception that
+any of them can have a %GDA_TYPE_NULL type (in this situation, the GType of the two #GdaHolder objects
+involved is set to match the other when any of them sets its type to something different than GDA_TYPE_NULL).
+
+If @bind_to is %NULL, then @holder will not be bound anymore.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="bind_to" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaHolder or %NULL</doc>
+            <type name="Holder" c:type="GdaHolder*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default_value"
+              c:identifier="gda_holder_set_default_value">
+        <doc xml:whitespace="preserve">Sets the default value within the holder. If @value is %NULL then @holder won't have a
+default value anymore. To set a default value to %NULL, then pass a #GValue created using
+gda_value_new_null().
+
+NOTE: the default value does not need to be of the same type as the one required by @holder.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a value to set the holder's default value, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_not_null" c:identifier="gda_holder_set_not_null">
+        <doc xml:whitespace="preserve">Sets if the holder can have a NULL value. If @not_null is TRUE, then that won't be allowed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="not_null" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if @holder should not accept %NULL values</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_source_model"
+              c:identifier="gda_holder_set_source_model"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets an hint that @holder's values should be restricted among the values
+contained in the @col column of the @model data model. Note that this is just a hint,
+meaning this policy is not enforced by @holder's implementation.
+
+If @model is %NULL, then the effect is to cancel ant previous call to gda_holder_set_source_model()
+where @model was not %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModel object or %NULL</doc>
+            <type name="DataModel" c:type="GdaDataModel*"/>
+          </parameter>
+          <parameter name="col" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the reference column in @model</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value" c:identifier="gda_holder_set_value" throws="1">
+        <doc xml:whitespace="preserve">Sets the value within the holder. If @holder is an alias for another
+holder, then the value is also set for that other holder.
+
+On success, the action of any call to gda_holder_force_invalid() is cancelled
+as soon as this method is called (even if @holder's value does not actually change)
+
+If the value is not different from the one already contained within @holder,
+then @holder is not changed and no signal is emitted.
+
+Note1: the @value argument is treated the same way if it is %NULL or if it is a #GDA_TYPE_NULL value
+
+Note2: if @holder can't accept the @value value, then this method returns FALSE, and @holder will be left
+in an invalid state.
+
+Note3: before the change is accepted by @holder, the "validate-change" signal will be emitted (the value
+of which can prevent the change from happening) which can be connected to to have a greater control
+of which values @holder can have, or implement some business rules.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if value has been set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a value to set the holder to, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value_str"
+              c:identifier="gda_holder_set_value_str"
+              throws="1">
+        <doc xml:whitespace="preserve">Same functionality as gda_holder_set_value() except that it uses a string representation
+of the value to set, which will be converted into a GValue first (using default data handler if
+ dh is %NULL).
+
+Note1: if @value is %NULL or is the "NULL" string, then @holder's value is set to %NULL.
+Note2: if @holder can't accept the @value value, then this method returns FALSE, and @holder will be left
+in an invalid state.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if value has been set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dh" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataHandler to use, or %NULL</doc>
+            <type name="DataHandler" c:type="GdaDataHandler*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a value to set the holder to, as a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value_to_default"
+              c:identifier="gda_holder_set_value_to_default">
+        <doc xml:whitespace="preserve">Set @holder's value to its default value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @holder has got a default value</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="take_static_value"
+              c:identifier="gda_holder_take_static_value"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets the const value within the holder. If @holder is an alias for another
+holder, then the value is also set for that other holder.
+
+The value will not be freed, and user should take care of it, either for its
+freeing or for its correct value at the moment of query.
+
+If the value is not different from the one already contained within @holder,
+then @holder is not changed and no signal is emitted.
+
+Note1: if @holder can't accept the @value value, then this method returns NULL, and @holder will be left
+in an invalid state.
+
+Note2: before the change is accepted by @holder, the "validate-change" signal will be emitted (the value
+of which can prevent the change from happening) which can be connected to to have a greater control
+of which values @holder can have, or implement some business rules.
+
+the static GValue user set previously, so that he can free it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">NULL if an error occurred or if the previous GValue was NULL itself. It returns</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a const value to set the holder to</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="value_changed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a boolean set with TRUE if the value changes, FALSE elsewhere.</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_value"
+              c:identifier="gda_holder_take_value"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets the value within the holder. If @holder is an alias for another
+holder, then the value is also set for that other holder.
+
+On success, the action of any call to gda_holder_force_invalid() is cancelled
+as soon as this method is called (even if @holder's value does not actually change).
+
+If the value is not different from the one already contained within @holder,
+then @holder is not changed and no signal is emitted.
+
+Note1: if @holder can't accept the @value value, then this method returns FALSE, and @holder will be left
+in an invalid state.
+
+Note2: before the change is accepted by @holder, the "validate-change" signal will be emitted (the value
+of which can prevent the change from happening) which can be connected to to have a greater control
+of which values @holder can have, or implement some business rules.
+
+Note3: if user previously set this holder with gda_holder_take_static_value () the GValue
+stored internally will be forgiven and replaced by the @value. User should then
+take care of the 'old' static GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if value has been set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a value to set the holder to</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="value_is_default"
+              c:identifier="gda_holder_value_is_default">
+        <doc xml:whitespace="preserve">Tells if @holder's current value is the default one.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @holder @holder's current value is the default one</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="description" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="full-bind" writable="1" transfer-ownership="none">
+        <type name="Holder"/>
+      </property>
+      <property name="g-type"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="GType"/>
+      </property>
+      <property name="id" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="name" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="not-null" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="simple-bind" writable="1" transfer-ownership="none">
+        <type name="Holder"/>
+      </property>
+      <property name="source-column" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="source-model" writable="1" transfer-ownership="none">
+        <type name="DataModel"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="HolderPrivate" c:type="GdaHolderPrivate*"/>
+      </field>
+      <glib:signal name="attribute-changed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted when any @holder's attribute has changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="att_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute's name</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="att_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute's value</doc>
+            <type name="GObject.Value"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="changed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted when @holder's value has changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="source-changed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted when the data model in which @holder's values should be has changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="validate-change" when="last">
+        <doc xml:whitespace="preserve">Gets emitted when @holder is going to change its value. One can connect to
+this signal to control which values @holder can have (for example to implement some business rules)
+
+otherwise.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">NULL if @holder is allowed to change its value to @new_value, or a #GError</doc>
+          <type name="GLib.Error"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the proposed new value for @holder</doc>
+            <type name="GObject.Value"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="HolderClass"
+            c:type="GdaHolderClass"
+            glib:is-gtype-struct-for="Holder">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="holder" transfer-ownership="none">
+              <type name="Holder" c:type="GdaHolder*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="source_changed">
+        <callback name="source_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="holder" transfer-ownership="none">
+              <type name="Holder" c:type="GdaHolder*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="validate_change">
+        <callback name="validate_change">
+          <return-value transfer-ownership="full">
+            <type name="GLib.Error" c:type="GError*"/>
+          </return-value>
+          <parameters>
+            <parameter name="holder" transfer-ownership="none">
+              <type name="Holder" c:type="GdaHolder*"/>
+            </parameter>
+            <parameter name="new_value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="att_changed">
+        <callback name="att_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="holder" transfer-ownership="none">
+              <type name="Holder" c:type="GdaHolder*"/>
+            </parameter>
+            <parameter name="att_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="att_value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="HolderError" c:type="GdaHolderError">
+      <member name="string_conversion_error"
+              value="0"
+              c:identifier="GDA_HOLDER_STRING_CONVERSION_ERROR"/>
+      <member name="value_type_error"
+              value="1"
+              c:identifier="GDA_HOLDER_VALUE_TYPE_ERROR"/>
+      <member name="value_null_error"
+              value="2"
+              c:identifier="GDA_HOLDER_VALUE_NULL_ERROR"/>
+    </enumeration>
+    <record name="HolderPrivate" c:type="GdaHolderPrivate" disguised="1">
+    </record>
+    <interface name="Lockable"
+               c:symbol-prefix="lockable"
+               c:type="GdaLockable"
+               glib:type-name="GdaLockable"
+               glib:get-type="gda_lockable_get_type"
+               glib:type-struct="LockableIface">
+      <virtual-method name="i_lock">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="i_trylock">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="i_unlock">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="lock" c:identifier="gda_lockable_lock">
+        <doc xml:whitespace="preserve">Locks @lockable. If it is already locked by another thread, the current thread will block until it is unlocked 
+by the other thread.
+
+This function can be used even if g_thread_init() has not yet been called, and, in that case, will do nothing.
+
+Note: unlike g_mutex_lock(), this method recursive, which means a thread can lock @lockable several times 
+(and has to unlock it as many times to actually unlock it).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="trylock" c:identifier="gda_lockable_trylock">
+        <doc xml:whitespace="preserve">Tries to lock @lockable. If it is already locked by another thread, then it immediately returns FALSE, otherwise
+it locks @lockable.
+
+This function can be used even if g_thread_init() has not yet been called, and, in that case, will do nothing.
+
+Note: unlike g_mutex_lock(), this method recursive, which means a thread can lock @lockable several times 
+(and has to unlock it as many times to actually unlock it).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the object has successfully been locked.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="unlock" c:identifier="gda_lockable_unlock">
+        <doc xml:whitespace="preserve">Unlocks @lockable. This method should not be called if the current does not already holds a lock on @lockable (having
+used gda_lockable_lock() or gda_lockable_trylock()).
+
+This function can be used even if g_thread_init() has not yet been called, and, in that case, will do nothing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="LockableIface"
+            c:type="GdaLockableIface"
+            glib:is-gtype-struct-for="Lockable">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="i_lock">
+        <callback name="i_lock">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="lock" transfer-ownership="none">
+              <type name="Lockable" c:type="GdaLockable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_trylock">
+        <callback name="i_trylock">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="lock" transfer-ownership="none">
+              <type name="Lockable" c:type="GdaLockable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="i_unlock">
+        <callback name="i_unlock">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="lock" transfer-ownership="none">
+              <type name="Lockable" c:type="GdaLockable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="MetaContext" c:type="GdaMetaContext">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GdaMetaContext&lt;/structname&gt; represents a meta data modification
+context: the &lt;emphasis&gt;how&lt;/emphasis&gt; when used with gda_meta_store_modify_with_context(),
+and the &lt;emphasis&gt;what&lt;/emphasis&gt; when used with gda_connection_update_meta_store().</doc>
+      <field name="table_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="column_names" writable="1">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="column_values" writable="1">
+        <type name="GObject.Value" c:type="GValue**"/>
+      </field>
+    </record>
+    <record name="MetaDbObject" c:type="GdaMetaDbObject">
+      <doc xml:whitespace="preserve">Struture to hold information about each database object (tables, views, ...),
+its contents must not be modified.
+
+Note: @obj_catalog, @obj_schema, @obj_name, @obj_short_name and @obj_full_name respect the
+&lt;link linkend="information_schema:sql_identifiers"&gt;SQL identifiers&lt;/link&gt; convention used in
+#GdaMetaStore objects. Before using these SQL identifiers, you should check the
+gda_sql_identifier_quote() to know if is it is necessary to surround by double quotes
+before using in an SQL statement.</doc>
+      <union name="extra" c:type="extra">
+        <field name="meta_table" writable="1">
+          <type name="MetaTable" c:type="GdaMetaTable"/>
+        </field>
+        <field name="meta_view" writable="1">
+          <type name="MetaView" c:type="GdaMetaView"/>
+        </field>
+      </union>
+      <field name="obj_type" writable="1">
+        <type name="MetaDbObjectType" c:type="GdaMetaDbObjectType"/>
+      </field>
+      <field name="outdated" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="obj_catalog" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="obj_schema" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="obj_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="obj_short_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="obj_full_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="obj_owner" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="depend_list" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="MetaDbObject"/>
+        </type>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved3" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved4" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <enumeration name="MetaDbObjectType" c:type="GdaMetaDbObjectType">
+      <doc xml:whitespace="preserve">Type of database object which can be handled as a #GdaMetaDbObject</doc>
+      <member name="unknown" value="0" c:identifier="GDA_META_DB_UNKNOWN"/>
+      <member name="table" value="1" c:identifier="GDA_META_DB_TABLE"/>
+      <member name="view" value="2" c:identifier="GDA_META_DB_VIEW"/>
+    </enumeration>
+    <enumeration name="MetaForeignKeyPolicy" c:type="GdaMetaForeignKeyPolicy">
+      <doc xml:whitespace="preserve">Defines the filtering policy of a foreign key when invoked on an UPDATE
+or DELETE operation.</doc>
+      <member name="unknown"
+              value="0"
+              c:identifier="GDA_META_FOREIGN_KEY_UNKNOWN"/>
+      <member name="none" value="1" c:identifier="GDA_META_FOREIGN_KEY_NONE"/>
+      <member name="no_action"
+              value="2"
+              c:identifier="GDA_META_FOREIGN_KEY_NO_ACTION"/>
+      <member name="restrict"
+              value="3"
+              c:identifier="GDA_META_FOREIGN_KEY_RESTRICT"/>
+      <member name="cascade"
+              value="4"
+              c:identifier="GDA_META_FOREIGN_KEY_CASCADE"/>
+      <member name="set_null"
+              value="5"
+              c:identifier="GDA_META_FOREIGN_KEY_SET_NULL"/>
+      <member name="set_default"
+              value="6"
+              c:identifier="GDA_META_FOREIGN_KEY_SET_DEFAULT"/>
+    </enumeration>
+    <bitfield name="MetaGraphInfo" c:type="GdaMetaGraphInfo">
+      <member name="meta_graph_columns"
+              value="1"
+              c:identifier="GDA_META_GRAPH_COLUMNS"/>
+    </bitfield>
+    <enumeration name="MetaSortType" c:type="GdaMetaSortType">
+      <doc xml:whitespace="preserve">Types of sorting</doc>
+      <member name="alhapetical"
+              value="0"
+              c:identifier="GDA_META_SORT_ALHAPETICAL"/>
+      <member name="dependencies"
+              value="1"
+              c:identifier="GDA_META_SORT_DEPENDENCIES"/>
+    </enumeration>
+    <class name="MetaStore"
+           c:symbol-prefix="meta_store"
+           c:type="GdaMetaStore"
+           parent="GObject.Object"
+           glib:type-name="GdaMetaStore"
+           glib:get-type="gda_meta_store_get_type"
+           glib:type-struct="MetaStoreClass">
+      <constructor name="new" c:identifier="gda_meta_store_new">
+        <doc xml:whitespace="preserve">Create a new #GdaMetaStore object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created object, or %NULL if an error occurred</doc>
+          <type name="MetaStore" c:type="GdaMetaStore*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc_string"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a connection string, or %NULL for an in-memory internal database</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_file"
+                   c:identifier="gda_meta_store_new_with_file">
+        <doc xml:whitespace="preserve">Create a new #GdaMetaStore object using @file_name as its internal
+database</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created object, or %NULL if an error occurred</doc>
+          <type name="MetaStore" c:type="GdaMetaStore*"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="error_quark" c:identifier="gda_meta_store_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <function name="sql_identifier_quote"
+                c:identifier="gda_meta_store_sql_identifier_quote"
+                version="4.0.3">
+        <doc xml:whitespace="preserve">Use this method to get a correctly quoted (if necessary) SQL identifier which can be used
+to retrieve or filter information in a #GdaMetaStore which stores meta data about @cnc.
+
+The returned SQL identifier can be used in conjunction with gda_connection_update_meta_store(),
+gda_connection_get_meta_store_data(), gda_connection_get_meta_store_data_v() and
+gda_meta_store_extract().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string, to free with g_free() once not needed anymore</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an SQL identifier</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cnc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaConnection</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="meta_changed" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="changes" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="meta_reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="suggest_update">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Error" c:type="GError*"/>
+        </return-value>
+        <parameters>
+          <parameter name="suggest" transfer-ownership="none">
+            <type name="MetaContext" c:type="GdaMetaContext*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="create_modify_data_model"
+              c:identifier="gda_meta_store_create_modify_data_model">
+        <doc xml:whitespace="preserve">Creates a new #GdaDataModelArray data model which can be used, after being correctly filled,
+with the gda_meta_store_modify*() methods.*
+
+To be used by provider's implementation</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaDataModel</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="table_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a table present in @store</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="declare_foreign_key"
+              c:identifier="gda_meta_store_declare_foreign_key"
+              version="4.2.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Defines a new declared foreign key into @store. If another declared foreign key is already defined
+between the two tables and with the same name, then it is first removed.
+
+This method begins a transaction if possible (ie. none is already started), and if it can't,
+then if there is an error, the job may be partially done.
+
+A check is always performed to make sure all the database objects actually
+exist and returns an error if not. The check is performed using @mstruct if it's not %NULL (in
+this case only the tables already represented in @mstruct will be considered, in other words: @mstruct
+will not be modified), and using an internal #GdaMetaStruct is %NULL.
+
+The @catalog, @schema, @table, @ref_catalog, @ref_schema and @ref_table must follow the SQL
+identifiers naming convention, see the &lt;link linkend="gen:sql_identifiers"&gt;SQL identifiers&lt;/link&gt;
+section. The same convention needs to be respected for the strings in @conames and @ref_colnames.
+
+If @catalog is not %NULL, then @schema must also be not %NULL (the same restriction applies to
+ ref_catalog and @ref_schema).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mstruct" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaMetaStruct, or %NULL</doc>
+            <type name="MetaStruct" c:type="GdaMetaStruct*"/>
+          </parameter>
+          <parameter name="fk_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the foreign key to declare</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="catalog" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the catalog in which the table (for which the foreign key is for) is, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="schema" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the schema in which the table (for which the foreign key is for) is, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="table" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the table (for which the foreign key is for)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ref_catalog"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the catalog in which the referenced table is, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ref_schema"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the schema in which the referenced table is, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ref_table" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the referenced table</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="nb_cols" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of columns involved (&gt;0)</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="colnames" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of column names from the table for which the foreign key is for</doc>
+            <array length="8" zero-terminated="0" c:type="gchar**">
+              <type name="utf8" c:type="gchar*"/>
+            </array>
+          </parameter>
+          <parameter name="ref_colnames" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of column names from the referenced table</doc>
+            <array length="8" zero-terminated="0" c:type="gchar**">
+              <type name="utf8" c:type="gchar*"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="extract"
+              c:identifier="gda_meta_store_extract"
+              shadowed-by="extract_v"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Extracts some data stored in @store using a custom SELECT query. If the @select_sql filter involves
+SQL identifiers (such as table or column names), then the values should have been adapted using
+gda_meta_store_sql_identifier_quote().
+
+For more information about
+SQL identifiers are represented in @store, see the
+&lt;link linkend="information_schema:sql_identifiers"&gt;meta data section about SQL identifiers&lt;/link&gt;.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaDataModel, or %NULL if an error occurred</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="select_sql" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a SELECT statement</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a place to store errors, or %NULL</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="extract_v"
+              c:identifier="gda_meta_store_extract_v"
+              shadows="extract"
+              version="4.2.6"
+              throws="1">
+        <doc xml:whitespace="preserve">Extracts some data stored in @store using a custom SELECT query. If the @select_sql filter involves
+SQL identifiers (such as table or column names), then the values should have been adapted using
+gda_meta_store_sql_identifier_quote().
+
+For more information about
+SQL identifiers are represented in @store, see the
+&lt;link linkend="information_schema:sql_identifiers"&gt;meta data section about SQL identifiers&lt;/link&gt;.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaDataModel, or %NULL if an error occurred</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="select_sql" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a SELECT statement</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="vars" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a hash table with all variables names as keys and GValue* as value, representing values for all the variables mentioned in @select_sql. If there is no variable then this part can be omitted.</doc>
+            <type name="GLib.HashTable" c:type="GHashTable*">
+              <type name="gchar"/>
+              <type name="GObject.Value"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_value"
+              c:identifier="gda_meta_store_get_attribute_value"
+              throws="1">
+        <doc xml:whitespace="preserve">The #GdaMetaStore object maintains a list of (name,value) attributes (attributes names starting with a '_'
+character are for internal use only and cannot be altered). This method and the gda_meta_store_set_attribute_value()
+method allows the user to add, set or remove attributes specific to their usage.
+
+This method allows to get the value of a attribute stored in @store. The returned attribute value is
+placed at @att_value, the caller is responsible for free that string.
+
+If there is no attribute named @att_name then @att_value is set to %NULL
+and @error will contain the GDA_META_STORE_ATTRIBUTE_NOT_FOUND_ERROR error code, and FALSE is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="att_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the attribute to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="att_value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">the place to store the attribute value</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_internal_connection"
+              c:identifier="gda_meta_store_get_internal_connection">
+        <doc xml:whitespace="preserve">Get a pointer to the #GdaConnection object internally used by @store to store
+its contents.
+
+The returned connection can be used to access some other data than the one managed by @store
+itself. The returned object is not owned by the caller (if you need to keep it, then use g_object_ref()).
+Do not close the connection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaConnection, or %NULL</doc>
+          <type name="Connection" c:type="GdaConnection*"/>
+        </return-value>
+      </method>
+      <method name="get_version" c:identifier="gda_meta_store_get_version">
+        <doc xml:whitespace="preserve">Get @store's internal schema's version</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the version (incremented each time the schema changes, backward compatible)</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="modify"
+              c:identifier="gda_meta_store_modify"
+              shadowed-by="modify_v"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Propagates an update to @store, the update's contents is represented by @new_data, this function is
+primarily reserved to database providers.
+
+For example tell @store to update its list of tables, @new_data should contain the same columns as the "_tables"
+table of @store, and contain one row per table in the store; there should not be any more argument after the @error
+argument.
+
+Now, to update only one table, the @new_data data model should have one row for the table to update (or no row
+at all if the table does not exist anymore), and have values for the primary key of the "_tables" table of
+ store, namely "table_catalog", "table_schema" and "table_name".</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="table_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the table to modify within @store</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaDataModel containing the new data to set in @table_name, or %NULL (treated as a data model with no row at all)</doc>
+            <type name="DataModel" c:type="GdaDataModel*"/>
+          </parameter>
+          <parameter name="condition" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">SQL expression (which may contain variables) defining the rows which are being obsoleted by @new_data, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a place to store errors, or %NULL</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_v"
+              c:identifier="gda_meta_store_modify_v"
+              shadows="modify"
+              version="4.2.6"
+              throws="1">
+        <doc xml:whitespace="preserve">Propagates an update to @store, the update's contents is represented by @new_data, this function is
+primarily reserved to database providers.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="table_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the table to modify within @store</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaDataModel containing the new data to set in @table_name, or %NULL (treated as a data model with no row at all)</doc>
+            <type name="DataModel" c:type="GdaDataModel*"/>
+          </parameter>
+          <parameter name="condition" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">SQL expression (which may contain variables) defining the rows which are being obsoleted by @new_data, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="nvalues" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of values in @value_names and @values</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="value_names" transfer-ownership="none">
+            <doc xml:whitespace="preserve">names of values</doc>
+            <array length="3" zero-terminated="0" c:type="gchar**">
+              <type name="utf8" c:type="gchar*"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">values</doc>
+            <array length="3" zero-terminated="0" c:type="GValue**">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_with_context"
+              c:identifier="gda_meta_store_modify_with_context"
+              throws="1">
+        <doc xml:whitespace="preserve">Propagates an update to @store, the update's contents is represented by @new_data, this function is
+primarily reserved to database providers.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaMetaContext context describing what to modify in @store</doc>
+            <type name="MetaContext" c:type="GdaMetaContext*"/>
+          </parameter>
+          <parameter name="new_data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaDataModel containing the new data to set in @table_name, or %NULL (treated as a data model with no row at all)</doc>
+            <type name="DataModel" c:type="GdaDataModel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="schema_add_custom_object"
+              c:identifier="gda_meta_store_schema_add_custom_object"
+              throws="1">
+        <doc xml:whitespace="preserve">The internal database used by @store can be 'augmented' with some user-defined database objects
+(such as tables or views). This method allows one to add a new database object.
+
+If the internal database already contains the object, then:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;if the object is equal to the provided description then TRUE is returned&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;if the object exists but differs from the provided description, then FALSE is returned,
+with the GDA_META_STORE_SCHEMA_OBJECT_CONFLICT_ERROR error code&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+The @xml_description defines the table of view's definition, for example:
+&lt;programlisting&gt;&lt;![CDATA[&lt;table name="mytable"&gt;
+
+The partial DTD for this XML description of the object to add is the following (the top node must be
+a &amp;lt;table&amp;gt; or a &amp;lt;view&amp;gt;):
+&lt;programlisting&gt;&lt;![CDATA[&lt;!ELEMENT table (column*,check*,fkey*,unique*)&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the new object has successfully been added</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="xml_description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an XML description of the table or view to add to @store</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="schema_get_all_tables"
+              c:identifier="gda_meta_store_schema_get_all_tables">
+        <doc xml:whitespace="preserve">Get an ordered list of the tables @store knows about. The tables are ordered in a way that tables dependencies
+are respected: if table B has a foreign key on table A, then table A will be listed before table B in the returned
+list.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a new list of tables names (as gchar*), the list must be freed when no longer needed, but the strings present in the list must not be modified.</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="schema_get_depend_tables"
+              c:identifier="gda_meta_store_schema_get_depend_tables">
+        <doc xml:whitespace="preserve">Get an ordered list of the tables @store knows about on which the @table_name table depends (recursively).
+The tables are ordered in a way that tables dependencies
+are respected: if table B has a foreign key on table A, then table A will be listed before table B in the returned
+list.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a new list of tables names (as gchar*), the list must be freed when no longer needed, but the strings present in the list must not be modified.</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="table_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the table for which all the dependencies must be listed</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="schema_get_structure"
+              c:identifier="gda_meta_store_schema_get_structure"
+              throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GdaMetaStruct object representing @store's internal database structure.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaMetaStruct object, or %NULL if an error occurred</doc>
+          <type name="MetaStruct" c:type="GdaMetaStruct*"/>
+        </return-value>
+      </method>
+      <method name="schema_remove_custom_object"
+              c:identifier="gda_meta_store_schema_remove_custom_object"
+              throws="1">
+        <doc xml:whitespace="preserve">Removes the custom database object named @obj_name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the custom object has successfully been removed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="obj_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the custom object to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_value"
+              c:identifier="gda_meta_store_set_attribute_value"
+              throws="1">
+        <doc xml:whitespace="preserve">Set the value of the attribute named @att_name to @att_value; see gda_meta_store_get_attribute_value() for
+more information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="att_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the attribute to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="att_value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">value of the attribute to set, or %NULL to unset the attribute</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_identifiers_style"
+              c:identifier="gda_meta_store_set_identifiers_style"
+              version="4.2">
+        <doc xml:whitespace="preserve">Specifies how @store must handle SQL identifiers it has to store. This method is mainly used by
+database providers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a style</doc>
+            <type name="SqlIdentifierStyle" c:type="GdaSqlIdentifierStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reserved_keywords_func"
+              c:identifier="gda_meta_store_set_reserved_keywords_func"
+              version="4.2">
+        <doc xml:whitespace="preserve">Specifies a function which @store will use to determine if a keyword is an SQL reserved
+keyword or not.
+
+This method is mainly used by database providers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call">
+            <doc xml:whitespace="preserve">a #GdaSqlReservedKeywordsFunc function, or %NULL</doc>
+            <type name="SqlReservedKeywordsFunc"
+                  c:type="GdaSqlReservedKeywordsFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="undeclare_foreign_key"
+              c:identifier="gda_meta_store_undeclare_foreign_key"
+              version="4.2.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Removes a declared foreign key from @store.
+
+This method begins a transaction if possible (ie. none is already started), and if it can't, then if there
+is an error, the job may be partially done.
+
+A check is always performed to make sure all the database objects actually
+exist and returns an error if not. The check is performed using @mstruct if it's not %NULL (in
+this case only the tables already represented in @mstruct will be considered, in other words: @mstruct
+will not be modified), and using an internal #GdaMetaStruct is %NULL.
+
+See gda_meta_store_declare_foreign_key() for more information anout the @catalog, @schema, @name,
+ ref_catalog, @ref_schema and @ref_name arguments.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mstruct" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaMetaStruct, or %NULL</doc>
+            <type name="MetaStruct" c:type="GdaMetaStruct*"/>
+          </parameter>
+          <parameter name="fk_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the foreign key to declare</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="catalog" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the catalog in which the table (for which the foreign key is for) is, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="schema" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the schema in which the table (for which the foreign key is for) is, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="table" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the table (for which the foreign key is for)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ref_catalog"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the catalog in which the referenced table is, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ref_schema"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the schema in which the referenced table is, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ref_table" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the referenced table</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="catalog"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="cnc"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Connection"/>
+      </property>
+      <property name="cnc-string"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="schema"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="MetaStorePrivate" c:type="GdaMetaStorePrivate*"/>
+      </field>
+      <glib:signal name="meta-changed" when="first" introspectable="0">
+        <doc xml:whitespace="preserve">This signal is emitted when the @store's contents have changed (the changes are in the @changes list)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="changes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of changes made, as a #GSList of pointers to #GdaMetaStoreChange (which must not be modified)</doc>
+            <type/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="meta-reset" when="first">
+        <doc xml:whitespace="preserve">This signal is emitted when the @store's contents have been reset completely and when
+no detailed changes are available</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="suggest-update" when="last" introspectable="0">
+        <doc xml:whitespace="preserve">This signal is emitted when the contents of a table should be updated (data to update or insert only;
+deleting data is done automatically). This signal is used for internal purposes by the #GdaConnection
+object.
+
+signal, or %NULL if signal propagation should continue</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GError error structure if there was an error when processing the</doc>
+          <type name="GLib.Error"/>
+        </return-value>
+        <parameters>
+          <parameter name="suggest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the suggested update, as a #GdaMetaContext structure</doc>
+            <type/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="MetaStoreChange" c:type="GdaMetaStoreChange">
+      <field name="c_type" writable="1">
+        <type name="MetaStoreChangeType" c:type="GdaMetaStoreChangeType"/>
+      </field>
+      <field name="table_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="keys" writable="1">
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+    </record>
+    <enumeration name="MetaStoreChangeType" c:type="GdaMetaStoreChangeType">
+      <member name="add" value="0" c:identifier="GDA_META_STORE_ADD"/>
+      <member name="remove" value="1" c:identifier="GDA_META_STORE_REMOVE"/>
+      <member name="modify" value="2" c:identifier="GDA_META_STORE_MODIFY"/>
+    </enumeration>
+    <record name="MetaStoreClass"
+            c:type="GdaMetaStoreClass"
+            glib:is-gtype-struct-for="MetaStore">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="cpriv">
+        <type name="MetaStoreClassPrivate" c:type="GdaMetaStoreClassPrivate*"/>
+      </field>
+      <field name="meta_reset">
+        <callback name="meta_reset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="store" transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="suggest_update">
+        <callback name="suggest_update">
+          <return-value transfer-ownership="full">
+            <type name="GLib.Error" c:type="GError*"/>
+          </return-value>
+          <parameters>
+            <parameter name="store" transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter name="suggest" transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="meta_changed" introspectable="0">
+        <callback name="meta_changed" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="store" transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter name="changes" transfer-ownership="none">
+              <type name="GLib.SList" c:type="GSList*">
+                <type name="gpointer" c:type="gpointer"/>
+              </type>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="MetaStoreClassPrivate"
+            c:type="GdaMetaStoreClassPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="MetaStoreError" c:type="GdaMetaStoreError">
+      <member name="incorrect_schema_error"
+              value="0"
+              c:identifier="GDA_META_STORE_INCORRECT_SCHEMA_ERROR"/>
+      <member name="unsupported_provider_error"
+              value="1"
+              c:identifier="GDA_META_STORE_UNSUPPORTED_PROVIDER_ERROR"/>
+      <member name="internal_error"
+              value="2"
+              c:identifier="GDA_META_STORE_INTERNAL_ERROR"/>
+      <member name="meta_context_error"
+              value="3"
+              c:identifier="GDA_META_STORE_META_CONTEXT_ERROR"/>
+      <member name="modify_contents_error"
+              value="4"
+              c:identifier="GDA_META_STORE_MODIFY_CONTENTS_ERROR"/>
+      <member name="extract_sql_error"
+              value="5"
+              c:identifier="GDA_META_STORE_EXTRACT_SQL_ERROR"/>
+      <member name="attribute_not_found_error"
+              value="6"
+              c:identifier="GDA_META_STORE_ATTRIBUTE_NOT_FOUND_ERROR"/>
+      <member name="attribute_error"
+              value="7"
+              c:identifier="GDA_META_STORE_ATTRIBUTE_ERROR"/>
+      <member name="schema_object_not_found_error"
+              value="8"
+              c:identifier="GDA_META_STORE_SCHEMA_OBJECT_NOT_FOUND_ERROR"/>
+      <member name="schema_object_conflict_error"
+              value="9"
+              c:identifier="GDA_META_STORE_SCHEMA_OBJECT_CONFLICT_ERROR"/>
+      <member name="schema_object_descr_error"
+              value="10"
+              c:identifier="GDA_META_STORE_SCHEMA_OBJECT_DESCR_ERROR"/>
+      <member name="transaction_already_started_error"
+              value="11"
+              c:identifier="GDA_META_STORE_TRANSACTION_ALREADY_STARTED_ERROR"/>
+    </enumeration>
+    <record name="MetaStorePrivate" c:type="GdaMetaStorePrivate" disguised="1">
+    </record>
+    <class name="MetaStruct"
+           c:symbol-prefix="meta_struct"
+           c:type="GdaMetaStruct"
+           parent="GObject.Object"
+           glib:type-name="GdaMetaStruct"
+           glib:get-type="gda_meta_struct_get_type"
+           glib:type-struct="MetaStructClass">
+      <constructor name="new" c:identifier="gda_meta_struct_new">
+        <doc xml:whitespace="preserve">Creates a new #GdaMetaStruct object. The @features specifies the extra features which will also be computed:
+the more features, the more time it takes to run. Features such as table's columns, each column's attributes, etc
+are not optional and will always be computed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GdaMetaStruct object</doc>
+          <type name="MetaStruct" c:type="GdaMetaStruct*"/>
+        </return-value>
+        <parameters>
+          <parameter name="store" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaMetaStore from which the new #GdaMetaStruct object will fetch information</doc>
+            <type name="MetaStore" c:type="GdaMetaStore*"/>
+          </parameter>
+          <parameter name="features" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the kind of extra information the new #GdaMetaStruct object will compute</doc>
+            <type name="MetaStructFeature" c:type="GdaMetaStructFeature"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="error_quark" c:identifier="gda_meta_struct_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <method name="complement"
+              c:identifier="gda_meta_struct_complement"
+              throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GdaMetaDbObject structure in @mstruct to represent the database object (of type @type)
+which can be uniquely identified as @catalog  schema @name.
+
+If @catalog is not %NULL, then @schema should not be %NULL.
+
+If both @catalog and @schema are %NULL, then the database object will be the one which is
+"visible" by default (that is which can be accessed only by its short @name name).
+
+If @catalog is %NULL and @schema is not %NULL, then the database object will be the one which 
+can be accessed by its @schema  name name.
+
+Important note: @catalog, @schema and @name will be used using the following convention:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;be surrounded by double quotes for a case sensitive search&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;otherwise for case insensitive search&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+For more information, see the &lt;link linkend="information_schema:sql_identifiers"&gt;
+meta data section about SQL identifiers&lt;/link&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaMetaDbObject corresponding to the database object if no error occurred, or %NULL</doc>
+          <type name="MetaDbObject" c:type="GdaMetaDbObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of object to add (which can be GDA_META_DB_UNKNOWN)</doc>
+            <type name="MetaDbObjectType" c:type="GdaMetaDbObjectType"/>
+          </parameter>
+          <parameter name="catalog" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the catalog the object belongs to (as a G_TYPE_STRING GValue), or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="schema" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the schema the object belongs to (as a G_TYPE_STRING GValue), or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object's name (as a G_TYPE_STRING GValue), not %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="complement_all"
+              c:identifier="gda_meta_struct_complement_all"
+              throws="1">
+        <doc xml:whitespace="preserve">This method is similar to gda_meta_struct_complement() and gda_meta_struct_complement_default()
+but creates #GdaMetaDbObject for all the database object.
+
+Please refer to gda_meta_struct_complement() form more information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="complement_default"
+              c:identifier="gda_meta_struct_complement_default"
+              throws="1">
+        <doc xml:whitespace="preserve">This method is similar to gda_meta_struct_complement() and gda_meta_struct_complement_all()
+but creates #GdaMetaDbObject for all the
+database object which are usable using only their short name (that is which do not need to be prefixed by 
+the schema in which they are to be used).
+
+Please refer to gda_meta_struct_complement() form more information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="complement_depend"
+              c:identifier="gda_meta_struct_complement_depend"
+              throws="1">
+        <doc xml:whitespace="preserve">This method is similar to gda_meta_struct_complement() but creates #GdaMetaDbObject for all the dependencies
+of @dbo.
+
+Please refer to gda_meta_struct_complement() form more information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dbo" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaMetaDbObject part of @mstruct</doc>
+            <type name="MetaDbObject" c:type="GdaMetaDbObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="complement_schema"
+              c:identifier="gda_meta_struct_complement_schema"
+              throws="1">
+        <doc xml:whitespace="preserve">This method is similar to gda_meta_struct_complement() but creates #GdaMetaDbObject for all the
+database object which are in the @schema schema (and in the @catalog catalog).
+If @catalog is %NULL, then any catalog will be used, and
+if @schema is %NULL then any schema will be used (if @schema is %NULL then catalog must also be %NULL).
+
+Please refer to gda_meta_struct_complement() form more information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="catalog" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">name of a catalog, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="schema" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">name of a schema, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dump_as_graph"
+              c:identifier="gda_meta_struct_dump_as_graph"
+              throws="1">
+        <doc xml:whitespace="preserve">Creates a new graph (in the GraphViz syntax) representation of @mstruct.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string, or %NULL if an error occurred.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">informs what kind of information to show in the resulting graph</doc>
+            <type name="MetaGraphInfo" c:type="GdaMetaGraphInfo"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_all_db_objects"
+              c:identifier="gda_meta_struct_get_all_db_objects"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get a list of all the #GdaMetaDbObject structures representing database objects in @mstruct. Note that
+no #GdaMetaDbObject structure must not be modified.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a new #GSList list of pointers to #GdaMetaDbObject structures which must be destroyed after usage using g_slist_free(). The individual #GdaMetaDbObject must not be modified.</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="MetaObject"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_db_object"
+              c:identifier="gda_meta_struct_get_db_object">
+        <doc xml:whitespace="preserve">Tries to locate the #GdaMetaDbObject structure representing the database object named after
+ catalog, @schema and @name.
+
+If one or both of @catalog and @schema are %NULL, and more than one database object matches the name, then
+the return value is also %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaMetaDbObject or %NULL if not found</doc>
+          <type name="MetaDbObject" c:type="GdaMetaDbObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="catalog" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the catalog the object belongs to (as a G_TYPE_STRING GValue), or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="schema" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the schema the object belongs to (as a G_TYPE_STRING GValue), or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object's name (as a G_TYPE_STRING GValue), not %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_table_column"
+              c:identifier="gda_meta_struct_get_table_column"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Tries to find the #GdaMetaTableColumn representing the column named @col_name in @table.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaMetaTableColumn or %NULL if not found</doc>
+          <type name="MetaTableColumn" c:type="GdaMetaTableColumn*"/>
+        </return-value>
+        <parameters>
+          <parameter name="table" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdaMetaTable structure to find the column for</doc>
+            <type name="MetaTable" c:type="GdaMetaTable*"/>
+          </parameter>
+          <parameter name="col_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the column to find (as a G_TYPE_STRING GValue)</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort_db_objects"
+              c:identifier="gda_meta_struct_sort_db_objects"
+              throws="1">
+        <doc xml:whitespace="preserve">Reorders the list of database objects within @mstruct in a way specified by @sort_type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the kind of sorting requested</doc>
+            <type name="MetaSortType" c:type="GdaMetaSortType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="features"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="meta-store"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="MetaStore"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="MetaStructPrivate" c:type="GdaMetaStructPrivate*"/>
+      </field>
+    </class>
+    <record name="MetaStructClass"
+            c:type="GdaMetaStructClass"
+            glib:is-gtype-struct-for="MetaStruct">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="MetaStructError" c:type="GdaMetaStructError">
+      <member name="unknown_object_error"
+              value="0"
+              c:identifier="GDA_META_STRUCT_UNKNOWN_OBJECT_ERROR"/>
+      <member name="duplicate_object_error"
+              value="1"
+              c:identifier="GDA_META_STRUCT_DUPLICATE_OBJECT_ERROR"/>
+      <member name="incoherence_error"
+              value="2"
+              c:identifier="GDA_META_STRUCT_INCOHERENCE_ERROR"/>
+      <member name="xml_error"
+              value="3"
+              c:identifier="GDA_META_STRUCT_XML_ERROR"/>
+    </enumeration>
+    <bitfield name="MetaStructFeature" c:type="GdaMetaStructFeature">
+      <doc xml:whitespace="preserve">Controls which features are computed about database objects.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="GDA_META_STRUCT_FEATURE_NONE"/>
+      <member name="foreign_keys"
+              value="1"
+              c:identifier="GDA_META_STRUCT_FEATURE_FOREIGN_KEYS"/>
+      <member name="view_dependencies"
+              value="2"
+              c:identifier="GDA_META_STRUCT_FEATURE_VIEW_DEPENDENCIES"/>
+      <member name="all" value="3" c:identifier="GDA_META_STRUCT_FEATURE_ALL"/>
+    </bitfield>
+    <record name="MetaStructPrivate"
+            c:type="GdaMetaStructPrivate"
+            disguised="1">
+    </record>
+    <record name="MetaTable" c:type="GdaMetaTable">
+      <doc xml:whitespace="preserve">This structure specifies a #GdaMetaDbObject to represent a table's specific attributes,
+its contents must not be modified.
+
+Note that in some cases, the columns cannot be determined for views, and in this case the
+ columns will be %NULL (this can be the case for example with SQLite where a view
+uses a function which is not natively provided by SQLite.</doc>
+      <field name="columns" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="MetaTableColumn"/>
+        </type>
+      </field>
+      <field name="pk_cols_array" writable="1">
+        <type name="gint" c:type="gint*"/>
+      </field>
+      <field name="pk_cols_nb" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="reverse_fk_list" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="MetaTableForeignKey"/>
+        </type>
+      </field>
+      <field name="fk_list" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="MetaTableForeignKey"/>
+        </type>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved3" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved4" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <record name="MetaTableColumn" c:type="GdaMetaTableColumn">
+      <doc xml:whitespace="preserve">This structure represents a table of view's column, its contents must not be modified.</doc>
+      <field name="column_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="column_type" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="gtype" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="pkey" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="nullok" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved3" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved4" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="foreach_attribute"
+              c:identifier="gda_meta_table_column_foreach_attribute">
+        <doc xml:whitespace="preserve">Calls @func for each attribute set to tcol</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a #GdaAttributesManagerFunc function</doc>
+            <type name="AttributesManagerFunc"
+                  c:type="GdaAttributesManagerFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to be passed as last argument of @func each time it is called</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute"
+              c:identifier="gda_meta_table_column_get_attribute">
+        <doc xml:whitespace="preserve">Get the value associated to a named attribute.
+
+Attributes can have any name, but Libgda proposes some default names, see &lt;link linkend="libgda-5.0-Attributes-manager.synopsis"&gt;this section&lt;/link&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a read-only #GValue, or %NULL if not attribute named @attribute has been set for @column</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute name as a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute"
+              c:identifier="gda_meta_table_column_set_attribute">
+        <doc xml:whitespace="preserve">Set the value associated to a named attribute.
+
+Attributes can have any name, but Libgda proposes some default names, see &lt;link linkend="libgda-40-Attributes-manager.synopsis"&gt;this section&lt;/link&gt;.
+If there is already an attribute named @attribute set, then its value is replaced with the new @value, 
+except if @value is %NULL, in which case the attribute is removed.
+
+Warning: @attribute is not copied, if it needs to be freed when not used anymore, then @destroy should point to
+the functions which will free it (typically g_free()). If @attribute does not need to be freed, then @destroy can be %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute name as a static string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GValue, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">function called when @attribute has to be freed, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="MetaTableForeignKey" c:type="GdaMetaTableForeignKey">
+      <doc xml:whitespace="preserve">This structure represents a foreign key constraint, its contents must not be modified.</doc>
+      <field name="meta_table" writable="1">
+        <type name="MetaDbObject" c:type="GdaMetaDbObject*"/>
+      </field>
+      <field name="depend_on" writable="1">
+        <type name="MetaDbObject" c:type="GdaMetaDbObject*"/>
+      </field>
+      <field name="cols_nb" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="fk_cols_array" writable="1">
+        <type name="gint" c:type="gint*"/>
+      </field>
+      <field name="fk_names_array" writable="1">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="ref_pk_cols_array" writable="1">
+        <type name="gint" c:type="gint*"/>
+      </field>
+      <field name="ref_pk_names_array" writable="1">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="on_update_policy" readable="0" private="1">
+        <type name="MetaForeignKeyPolicy" c:type="GdaMetaForeignKeyPolicy"/>
+      </field>
+      <field name="on_delete_policy" readable="0" private="1">
+        <type name="MetaForeignKeyPolicy" c:type="GdaMetaForeignKeyPolicy"/>
+      </field>
+      <field name="declared" readable="0" private="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="fk_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved3" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved4" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <record name="MetaView" c:type="GdaMetaView">
+      <doc xml:whitespace="preserve">This structure specifies a #GdaMetaDbObject to represent a view's specific attributes,
+its contents must not be modified.</doc>
+      <field name="table" writable="1">
+        <type name="MetaTable" c:type="GdaMetaTable"/>
+      </field>
+      <field name="view_def" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="is_updatable" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved3" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved4" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <record name="Mutex" c:type="GdaMutex" disguised="1">
+      <method name="free" c:identifier="gda_mutex_free">
+        <doc xml:whitespace="preserve">Destroys @mutex.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="lock" c:identifier="gda_mutex_lock">
+        <doc xml:whitespace="preserve">Locks @mutex. If @mutex is already locked by another thread, the current thread will block until @mutex is unlocked by the other thread.
+
+This function can be used even if g_thread_init() has not yet been called, and, in that case, will do nothing.
+
+Note: unlike g_mutex_lock(), the #GdaMutex is recursive, which means a thread can lock it several times (and has
+to unlock it as many times to actually unlock it).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="trylock" c:identifier="gda_mutex_trylock">
+        <doc xml:whitespace="preserve">Tries to lock @mutex. If @mutex is already locked by another thread, it immediately returns FALSE.
+Otherwise it locks @mutex and returns TRUE
+
+This function can be used even if g_thread_init() has not yet been called, and, in that case, will immediately return TRUE.
+
+Note: Unlike g_mutex_trylock(), the #GdaMutex is recursive, which means a thread can lock it several times (and has
+to unlock it as many times to actually unlock it)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if @mutex could be locked.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="unlock" c:identifier="gda_mutex_unlock">
+        <doc xml:whitespace="preserve">Unlocks @mutex. If another thread is blocked in a gda_mutex_lock() call for @mutex, it wil
+be woken and can lock @mutex itself.
+This function can be used even if g_thread_init() has not yet been called, and, in that case, will do nothing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <function name="new" c:identifier="gda_mutex_new" introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GdaMutex.
+
+Note: Unlike g_mutex_new(), this function will return %NULL if g_thread_init() has not been called yet.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaMutex</doc>
+          <type name="Mutex" c:type="GdaMutex*"/>
+        </return-value>
+      </function>
+    </record>
+    <glib:boxed glib:name="Null"
+                c:symbol-prefix="null"
+                glib:type-name="GdaNull"
+                glib:get-type="gda_null_get_type">
+    </glib:boxed>
+    <record name="Numeric"
+            c:type="GdaNumeric"
+            glib:type-name="GdaNumeric"
+            glib:get-type="gda_numeric_get_type"
+            c:symbol-prefix="numeric">
+      <doc xml:whitespace="preserve">Holds numbers represented as strings.
+
+This struct must be considered as opaque. Any access to its members must use its
+accessors added since version 5.0.2.</doc>
+      <field name="number" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="precision" writable="1">
+        <type name="glong" c:type="glong"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="glong" c:type="glong"/>
+      </field>
+      <field name="reserved" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <constructor name="new" c:identifier="gda_numeric_new" version="5.0.2">
+        <doc xml:whitespace="preserve">Creates a new #GdaNumeric with defaults.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaNumeric.</doc>
+          <type name="Numeric" c:type="GdaNumeric*"/>
+        </return-value>
+      </constructor>
+      <method name="copy" c:identifier="gda_numeric_copy">
+        <doc xml:whitespace="preserve">Creates a new #GdaNumeric structure from an existing one.
+
+Free-function: gda_numeric_free</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GdaNumeric which contains a copy of information in @boxed.</doc>
+          <type name="Numeric" c:type="GdaNumeric*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gda_numeric_free">
+        <doc xml:whitespace="preserve">Deallocates all memory associated to the given @boxed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_double"
+              c:identifier="gda_numeric_get_double"
+              version="5.0.2">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gdouble representation of @numeric</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_precision"
+              c:identifier="gda_numeric_get_precision"
+              version="5.0.2">
+        <doc xml:whitespace="preserve">Gets the precision of a #GdaNumeric.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer with the precision of a #GdaNumeric.</doc>
+          <type name="glong" c:type="glong"/>
+        </return-value>
+      </method>
+      <method name="get_string"
+              c:identifier="gda_numeric_get_string"
+              version="5.0.2">
+        <doc xml:whitespace="preserve">Get the string representation of @numeric.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string representing the stored valued in @numeric</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_width"
+              c:identifier="gda_numeric_get_width"
+              version="5.0.2">
+        <doc xml:whitespace="preserve">Gets the width of a #GdaNumeric. (Not yet implemented).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer with the width of a #GdaNumeric. (Not jet implemented).</doc>
+          <type name="glong" c:type="glong"/>
+        </return-value>
+      </method>
+      <method name="set_double"
+              c:identifier="gda_numeric_set_double"
+              version="5.0.2">
+        <doc xml:whitespace="preserve">Sets @numeric using a #gdouble represented by @number.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="number" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gdouble</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_string"
+              c:identifier="gda_numeric_set_from_string">
+        <doc xml:whitespace="preserve">Sets @numeric with a number represented by @str.
+
+* Since: 5.0.2</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_precision"
+              c:identifier="gda_numeric_set_precision"
+              version="5.0.2">
+        <doc xml:whitespace="preserve">Sets the precision of a #GdaNumeric.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="precision" transfer-ownership="none">
+            <type name="glong" c:type="glong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_width"
+              c:identifier="gda_numeric_set_width"
+              version="5.0.2">
+        <doc xml:whitespace="preserve">Sets the width of a #GdaNumeric. (Not yet implemented).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="glong" c:type="glong"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="PStmt"
+           c:symbol-prefix="pstmt"
+           c:type="GdaPStmt"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GdaPStmt"
+           glib:get-type="gda_pstmt_get_type"
+           glib:type-struct="PStmtClass">
+      <method name="copy_contents" c:identifier="gda_pstmt_copy_contents">
+        <doc xml:whitespace="preserve">Copies @src's data to @dest</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaPStmt object</doc>
+            <type name="PStmt" c:type="GdaPStmt*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_gda_statement"
+              c:identifier="gda_pstmt_get_gda_statement">
+        <doc xml:whitespace="preserve">Get a pointer to the #GdaStatement which led to the creation of this prepared statement.
+
+Note: if that statement has been modified since the creation of @pstmt, then this method
+will return %NULL</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaStatement</doc>
+          <type name="Statement" c:type="GdaStatement*"/>
+        </return-value>
+      </method>
+      <method name="set_gda_statement"
+              c:identifier="gda_pstmt_set_gda_statement">
+        <doc xml:whitespace="preserve">Informs @pstmt that it corresponds to the preparation of the @stmt statement</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="PStmtPrivate" c:type="GdaPStmtPrivate*"/>
+      </field>
+      <field name="sql">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="param_ids" introspectable="0">
+        <type name="GLib.SList" c:type="GSList*">
+          <type c:type="string"/>
+        </type>
+      </field>
+      <field name="ncols">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="types">
+        <type name="GType" c:type="GType*"/>
+      </field>
+      <field name="tmpl_columns" introspectable="0">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="Colum"/>
+        </type>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="PStmtClass"
+            c:type="GdaPStmtClass"
+            glib:is-gtype-struct-for="PStmt">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="PStmtPrivate" c:type="GdaPStmtPrivate" disguised="1">
+    </record>
+    <record name="ProviderInfo" c:type="GdaProviderInfo">
+      <doc xml:whitespace="preserve">This structure holds the information associated to a database provider as discovered by Libgda.</doc>
+      <field name="id" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="location" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="dsn_params" writable="1">
+        <type name="Set" c:type="GdaSet*"/>
+      </field>
+      <field name="auth_params" writable="1">
+        <type name="Set" c:type="GdaSet*"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved3" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved4" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <record name="QuarkList"
+            c:type="GdaQuarkList"
+            glib:type-name="GdaQuarkList"
+            glib:get-type="gda_quark_list_get_type"
+            c:symbol-prefix="quark_list">
+      <constructor name="new" c:identifier="gda_quark_list_new">
+        <doc xml:whitespace="preserve">Creates a new #GdaQuarkList, which is a set of key-&gt;value pairs,
+very similar to GLib's GHashTable, but with the only purpose to
+make easier the parsing and creation of data source connection
+strings.
+
+
+Free-function: gda_quark_list_free</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GdaQuarkList.</doc>
+          <type name="QuarkList" c:type="GdaQuarkList*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_string"
+                   c:identifier="gda_quark_list_new_from_string">
+        <doc xml:whitespace="preserve">Creates a new #GdaQuarkList given a string.
+
+ string must be a semi-colon separated list of "&amp;lt;key&amp;gt;=&amp;lt;value&amp;gt;" strings (for example
+"DB_NAME=notes;USERNAME=alfred"). Each key and value must respect the RFC 1738 recommendations: the
+&lt;constant&gt;&amp;lt;&amp;gt;&amp;quot;#%{}|\^~[]&amp;apos;`;/?:@=&amp;amp;&lt;/constant&gt; and space characters are replaced by 
+&lt;constant&gt;&amp;quot;%%ab&amp;quot;&lt;/constant&gt; where
+&lt;constant&gt;ab&lt;/constant&gt; is the hexadecimal number corresponding to the character (for example the
+"DB_NAME=notes;USERNAME=al%%20fred" string will specify a username as "al fred"). If this formalism
+is not respected, then some unexpected results may occur.
+
+
+Free-function: gda_quark_list_free</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GdaQuarkList.</doc>
+          <type name="QuarkList" c:type="GdaQuarkList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_from_string"
+              c:identifier="gda_quark_list_add_from_string">
+        <doc xml:whitespace="preserve">@string must be a semi-colon separated list of "&amp;lt;key&amp;gt;=&amp;lt;value&amp;gt;" strings (for example
+"DB_NAME=notes;USERNAME=alfred"). Each key and value must respect the RFC 1738 recommendations: the
+&lt;constant&gt;&amp;lt;&amp;gt;&amp;quot;#%{}|\^~[]&amp;apos;`;/?:@=&amp;amp;&lt;/constant&gt; and space characters are replaced by 
+&lt;constant&gt;&amp;quot;%%ab&amp;quot;&lt;/constant&gt; where
+&lt;constant&gt;ab&lt;/constant&gt; is the hexadecimal number corresponding to the character (for example the
+"DB_NAME=notes;USERNAME=al%%20fred" string will specify a username as "al fred"). If this formalism
+is not respected, then some unexpected results may occur.
+
+Adds new key-&gt;value pairs from the given @string. If @cleanup is
+set to %TRUE, the previous contents will be discarded before adding
+the new pairs.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cleanup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to cleanup the previous content or not.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear" c:identifier="gda_quark_list_clear">
+        <doc xml:whitespace="preserve">Removes all strings in the given #GdaQuarkList.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy" c:identifier="gda_quark_list_copy">
+        <doc xml:whitespace="preserve">Creates a new #GdaQuarkList from an existing one.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GdaQuarkList with a copy of the data in @qlist.</doc>
+          <type name="QuarkList" c:type="GdaQuarkList*"/>
+        </return-value>
+      </method>
+      <method name="find" c:identifier="gda_quark_list_find">
+        <doc xml:whitespace="preserve">Searches for the value identified by @name in the given #GdaQuarkList.
+
+if not found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value associated with the given key if found, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the value to search for.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach" c:identifier="gda_quark_list_foreach">
+        <doc xml:whitespace="preserve">Calls the given function for each of the key/value pairs in @qlist. The function is passed the key and value 
+of each pair, and the given user_data parameter. @qlist may not be modified while iterating over it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">the function to call for each key/value pair</doc>
+            <type name="GLib.HFunc" c:type="GHFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to the function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="gda_quark_list_free">
+        <doc xml:whitespace="preserve">Releases all memory occupied by the given #GdaQuarkList.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove" c:identifier="gda_quark_list_remove">
+        <doc xml:whitespace="preserve">Removes an entry from the #GdaQuarkList, given its name.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an entry name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="RepetitiveStatement"
+           c:symbol-prefix="repetitive_statement"
+           c:type="GdaRepetitiveStatement"
+           parent="GObject.Object"
+           glib:type-name="GdaRepetitiveStatement"
+           glib:get-type="gda_repetitive_statement_get_type"
+           glib:type-struct="RepetitiveStatementClass">
+      <constructor name="new"
+                   c:identifier="gda_repetitive_statement_new"
+                   version="4.2">
+        <doc xml:whitespace="preserve">Creates a new #GdaRepetitiveStatement object which, when executed, will execute @stmt once for all
+the values set which will have been defined using gda_repetitive_statement_append_set().
+Use gda_connection_repetitive_statement_execute() to actually execute it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaRepetitiveStatement object</doc>
+          <type name="RepetitiveStatement" c:type="GdaRepetitiveStatement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="append_set"
+              c:identifier="gda_repetitive_statement_append_set"
+              version="4.2">
+        <doc xml:whitespace="preserve">Specifies that @rstmt be executed one time with the values contained in @values. 
+
+A new #GdaSet to be used as the @values argument can be obtained using
+gda_repetitive_statement_get_template_set().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GdaRepetitiveStatement object</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaSet object with the values to be used</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+          <parameter name="make_copy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @values is copied, and %FALSE if @values is only ref'ed</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_all_sets"
+              c:identifier="gda_repetitive_statement_get_all_sets"
+              version="4.2">
+        <doc xml:whitespace="preserve">Get all the values sets which will have been added using gda_repetitive_statement_append_set().</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a new #GSList of #GdaSet objects (free with g_slist_free()).</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Set"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_template_set"
+              c:identifier="gda_repetitive_statement_get_template_set"
+              version="4.2"
+              throws="1">
+        <doc xml:whitespace="preserve">Gets a new #GdaSet object with the parameters used by the template statement in the
+ rstmt object. 
+
+Use this object with gda_repetitive_statement_append_set().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="set" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a place to store the returned template set</doc>
+            <type name="Set" c:type="GdaSet**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="statement"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Statement"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="RepetitiveStatementClass"
+            c:type="GdaRepetitiveStatementClass"
+            glib:is-gtype-struct-for="RepetitiveStatement">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <class name="Row"
+           c:symbol-prefix="row"
+           c:type="GdaRow"
+           parent="GObject.Object"
+           glib:type-name="GdaRow"
+           glib:get-type="gda_row_get_type"
+           glib:type-struct="RowClass">
+      <constructor name="new" c:identifier="gda_row_new">
+        <doc xml:whitespace="preserve">Creates a #GdaRow which can hold @count #GValue values.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GdaRow object.</doc>
+          <type name="Row" c:type="GdaRow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of #GValue in the new #GdaRow.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_length" c:identifier="gda_row_get_length">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of columns that the @row has.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_value" c:identifier="gda_row_get_value">
+        <doc xml:whitespace="preserve">Gets a pointer to a #GValue stored in a #GdaRow.
+
+This is a pointer to the internal array of values. Don't try to free
+or modify it (modifying is reserved to database provider's implementations).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the #GValue in the position @num of @row.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">field index.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate_value" c:identifier="gda_row_invalidate_value">
+        <doc xml:whitespace="preserve">Marks @value as being invalid. This method is mainly used by database
+providers' implementations to report any error while reading a value from the database.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue belonging to @row (obtained with gda_row_get_value()).</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate_value_e"
+              c:identifier="gda_row_invalidate_value_e"
+              version="4.2.10">
+        <doc xml:whitespace="preserve">Marks @value as being invalid. This method is mainly used by database
+providers' implementations to report any error while reading a value from the database.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue belonging to @row (obtained with gda_row_get_value()).</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="full" allow-none="1">
+            <doc xml:whitespace="preserve">the error which lead to the invalidation</doc>
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="value_is_valid" c:identifier="gda_row_value_is_valid">
+        <doc xml:whitespace="preserve">Tells if @value has been marked as being invalid by gda_row_invalidate_value().
+This method is mainly used by database
+providers' implementations to report any error while reading a value from the database.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @value is valid</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue belonging to @row (obtained with gda_row_get_value()).</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="value_is_valid_e"
+              c:identifier="gda_row_value_is_valid_e"
+              version="4.2.10"
+              throws="1">
+        <doc xml:whitespace="preserve">Tells if @value has been marked as being invalid by gda_row_invalidate_value().
+This method is mainly used by database
+providers' implementations to report any error while reading a value from the database.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @value is valid</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue belonging to @row (obtained with gda_row_get_value()).</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="nb-values"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="RowPrivate" c:type="GdaRowPrivate*"/>
+      </field>
+    </class>
+    <record name="RowClass"
+            c:type="GdaRowClass"
+            glib:is-gtype-struct-for="Row">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RowPrivate" c:type="GdaRowPrivate" disguised="1">
+    </record>
+    <constant name="SQLSTATE_GENERAL_ERROR"
+              value="HY000"
+              c:type="GDA_SQLSTATE_GENERAL_ERROR">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="SQLSTATE_NO_ERROR"
+              value="00000"
+              c:type="GDA_SQLSTATE_NO_ERROR">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <class name="ServerOperation"
+           c:symbol-prefix="server_operation"
+           c:type="GdaServerOperation"
+           parent="GObject.Object"
+           glib:type-name="GdaServerOperation"
+           glib:get-type="gda_server_operation_get_type"
+           glib:type-struct="ServerOperationClass">
+      <constructor name="new" c:identifier="gda_server_operation_new">
+        <doc xml:whitespace="preserve">IMPORTANT NOTE: Using this funtion is not the recommended way of creating a #GdaServerOperation object, the
+correct way is to use gda_server_provider_create_operation(); this method is reserved for the database provider's
+implementation.
+
+Creates a new #GdaServerOperation object from the @xml_file specifications
+
+The @xml_file must respect the DTD described in the "libgda-server-operation.dtd" file: its top
+node must be a &amp;lt;serv_op&amp;gt; tag.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaServerOperation object</doc>
+          <type name="ServerOperation" c:type="GdaServerOperation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="op_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type of operation</doc>
+            <type name="ServerOperationType" c:type="GdaServerOperationType"/>
+          </parameter>
+          <parameter name="xml_file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file which has the specifications for the GdaServerOperation object to create</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="error_quark"
+                c:identifier="gda_server_operation_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <function name="op_type_to_string"
+                c:identifier="gda_server_operation_op_type_to_string">
+        <doc xml:whitespace="preserve">Get a string version of @type</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a non %NULL string (do not free or modify)</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaServerOperationType value</doc>
+            <type name="ServerOperationType" c:type="GdaServerOperationType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="prepare_create_database"
+                c:identifier="gda_server_operation_prepare_create_database"
+                version="4.2.3"
+                throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GdaServerOperation object which contains the specifications required
+to create a database. Once these specifications provided, use
+gda_server_operation_perform_create_database() to perform the database creation.
+
+If @db_name is left %NULL, then the name of the database to create will have to be set in the
+returned #GdaServerOperation using gda_server_operation_set_value_at().
+
+creation</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">new #GdaServerOperation object, or %NULL if the provider does not support database</doc>
+          <type name="ServerOperation" c:type="GdaServerOperation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="provider" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the database provider to use</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="db_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the name of the database to create, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="prepare_create_table"
+                c:identifier="gda_server_operation_prepare_create_table"
+                version="4.2.3"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Add more arguments if the flag needs them:
+
+GDA_SERVER_OPERATION_CREATE_TABLE_FKEY_FLAG:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;string with the table's name referenced&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;an integer with the number pairs "local_field", "referenced_field"
+used in the reference&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Pairs of "local_field", "referenced_field" to use, must match
+the number specified above.&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;a string with the action for ON DELETE; can be: "RESTRICT", "CASCADE",
+"NO ACTION", "SET NULL" and "SET DEFAULT". Example: "ON UPDATE CASCADE".&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;a string with the action for ON UPDATE (see above).&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+Create a #GdaServerOperation object using an opened connection, taking three
+arguments, a column's name the column's GType and #GdaServerOperationCreateTableFlag
+flag, you need to finish the list using %NULL.
+
+You'll be able to modify the #GdaServerOperation object to add custom options * to the operation. When finished call #gda_server_operation_perform_create_table
+or #gda_server_provider_perform_operation
+in order to execute the operation.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdaServerOperation if no errors; NULL and set @error otherwise</doc>
+          <type name="ServerOperation" c:type="GdaServerOperation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an opened connection</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="table_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the table to create</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a place to store errors, or %NULL</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="prepare_drop_database"
+                c:identifier="gda_server_operation_prepare_drop_database"
+                version="4.2.3"
+                throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GdaServerOperation object which contains the specifications required
+to drop a database. Once these specifications provided, use
+gda_server_operation_perform_drop_database() to perform the database creation.
+
+If @db_name is left %NULL, then the name of the database to drop will have to be set in the
+returned #GdaServerOperation using gda_server_operation_set_value_at().
+
+destruction</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">new #GdaServerOperation object, or %NULL if the provider does not support database</doc>
+          <type name="ServerOperation" c:type="GdaServerOperation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="provider" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the database provider to use</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="db_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the name of the database to drop, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="prepare_drop_table"
+                c:identifier="gda_server_operation_prepare_drop_table"
+                version="4.2.3"
+                throws="1">
+        <doc xml:whitespace="preserve">This is just a convenient function to create a #GdaServerOperation to drop a
+table in an opened connection.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaServerOperation or %NULL if couldn't create the opereration.</doc>
+          <type name="ServerOperation" c:type="GdaServerOperation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an opened connection</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="table_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the table to drop</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="string_to_op_type"
+                c:identifier="gda_server_operation_string_to_op_type"
+                version="4.2">
+        <doc xml:whitespace="preserve">Performs the reverse of gda_server_operation_op_type_to_string()
+
+of a #GdaServerOperationType</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaServerOperationType represented by @str, or #G_MAXINT if @str is not a valid representation</doc>
+          <type name="ServerOperationType" c:type="GdaServerOperationType"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="seq_item_added">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="seq_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="item_index" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="seq_item_remove">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="seq_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="item_index" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_item_to_sequence"
+              c:identifier="gda_server_operation_add_item_to_sequence">
+        <doc xml:whitespace="preserve">been added to the sequence.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index of the new entry in the sequence (like 5 for example if a 6th item has</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="seq_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path to the sequence to which an item must be added (like "/SEQ_NAME" for instance)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="del_item_from_sequence"
+              c:identifier="gda_server_operation_del_item_from_sequence">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the specified node has been removed from the sequence</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="item_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path to the sequence's item to remove (like "/SEQ_NAME/5" for instance)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_node_info"
+              c:identifier="gda_server_operation_get_node_info"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get information about the node identified by @path. The returned #GdaServerOperationNode structure can be 
+copied but not modified; it may change or cease to exist if @op changes</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaServerOperationNode structure, or %NULL if the node was not found</doc>
+          <type c:type="GdaServerOperationNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a node (starting with "/") as a format string, similar to g_strdup_printf()'s argument</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_node_parent"
+              c:identifier="gda_server_operation_get_node_parent">
+        <doc xml:whitespace="preserve">Get the complete path to the parent of the node defined by @path</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string or %NULL if the node does not have any parent or does not exist.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_node_path_portion"
+              c:identifier="gda_server_operation_get_node_path_portion">
+        <doc xml:whitespace="preserve">Get the last part of @path</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string, or %NULL if an error occurred</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_node_type"
+              c:identifier="gda_server_operation_get_node_type">
+        <doc xml:whitespace="preserve">Convenience function to get the type of a node.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of node, or GDA_SERVER_OPERATION_NODE_UNKNOWN if the node was not found</doc>
+          <type name="ServerOperationNodeType"
+                c:type="GdaServerOperationNodeType"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="status" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a place to store the status of the node, or %NULL</doc>
+            <type name="ServerOperationNodeStatus"
+                  c:type="GdaServerOperationNodeStatus*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_op_type"
+              c:identifier="gda_server_operation_get_op_type">
+        <doc xml:whitespace="preserve">Get the type of operation @op is for</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaServerOperationType enum</doc>
+          <type name="ServerOperationType" c:type="GdaServerOperationType"/>
+        </return-value>
+      </method>
+      <method name="get_root_nodes"
+              c:identifier="gda_server_operation_get_root_nodes">
+        <doc xml:whitespace="preserve">Get an array of strings containing the paths of nodes situated at the root of @op.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new array, which must be freed with g_strfreev().</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_sequence_item_names"
+              c:identifier="gda_server_operation_get_sequence_item_names">
+        <doc xml:whitespace="preserve">Fetch the contents of a sequence. @path can describe either a sequence (for example "/SEQNAME") or an item in a sequence
+(for example "/SEQNAME/3")</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a array of strings containing the complete paths of the nodes contained at @path (free with g_strfreev())</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a sequence node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sequence_max_size"
+              c:identifier="gda_server_operation_get_sequence_max_size">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the maximum number of items in the sequence at @path, or 0 if @path is not a sequence node</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a sequence node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sequence_min_size"
+              c:identifier="gda_server_operation_get_sequence_min_size">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the minimum number of items in the sequence at @path, or 0 if @path is not a sequence node</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a sequence node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sequence_name"
+              c:identifier="gda_server_operation_get_sequence_name">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the sequence at @path</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a sequence node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sequence_size"
+              c:identifier="gda_server_operation_get_sequence_size">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of items in the sequence at @path, or 0 if @path is not a sequence node</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a sequence node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sql_identifier_at"
+              c:identifier="gda_server_operation_get_sql_identifier_at"
+              shadowed-by="get_sql_identifier_at_path"
+              version="4.0.3"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This method is similar to gda_server_operation_get_value_at(), but for SQL identifiers: a new string
+is returned instead of a #GValue. Also the returned string is assumed to represents an SQL identifier
+and will correctly be quoted to be used with @cnc, or @prov if @cnc is %NULL (a generic quoting rule
+will be applied if both are %NULL).
+
+if the @path is not defined or @path does not hold any value, or if the value held is not a string
+(in that last case a warning is shown).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string, or %NULL if the value is undefined or</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="prov" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaServerProvider, or %NULL</doc>
+            <type name="ServerProvider" c:type="GdaServerProvider*"/>
+          </parameter>
+          <parameter name="path_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sql_identifier_at_path"
+              c:identifier="gda_server_operation_get_sql_identifier_at_path"
+              shadows="get_sql_identifier_at"
+              version="4.2.6">
+        <doc xml:whitespace="preserve">This method is similar to gda_server_operation_get_value_at(), but for SQL identifiers: a new string
+is returned instead of a #GValue. Also the returned string is assumed to represents an SQL identifier
+and will correctly be quoted to be used with @cnc, or @prov if @cnc is %NULL (a generic quoting rule
+will be applied if both are %NULL).
+
+if the @path is not defined or @path does not hold any value, or if the value held is not a string
+(in that last case a warning is shown).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string, or %NULL if the value is undefined or</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="prov" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaServerProvider, or %NULL</doc>
+            <type name="ServerProvider" c:type="GdaServerProvider*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_at"
+              c:identifier="gda_server_operation_get_value_at"
+              shadowed-by="get_value_at_path"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the value for the node at the path formed using @path_format and ... (the rules are the same as
+for g_strdup_printf())
+
+if the @path is not defined or @path does not hold any value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a constant #GValue if a value has been defined, or %NULL if the value is undefined or</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_at_path"
+              c:identifier="gda_server_operation_get_value_at_path"
+              shadows="get_value_at"
+              version="4.2.6">
+        <doc xml:whitespace="preserve">Get the value for the node at the @path path</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a constant #GValue if a value has been defined, or %NULL if the value is undefined or if the @path is not defined or @path does not hold any value.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_valid"
+              c:identifier="gda_server_operation_is_valid"
+              throws="1">
+        <doc xml:whitespace="preserve">Tells if all the required values in @op have been defined.
+
+if @xml_file is not %NULL, the validity of @op is tested against that specification, 
+and not against the current @op's specification.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @op is valid</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="xml_file" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an XML specification file (see gda_server_operation_new()) or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_data_from_xml"
+              c:identifier="gda_server_operation_load_data_from_xml"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads the contents of @node into @op. The XML tree passed through the @node
+argument must correspond to an XML tree saved using gda_server_operation_save_data_to_xml().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #xmlNodePtr</doc>
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="perform_create_database"
+              c:identifier="gda_server_operation_perform_create_database"
+              version="4.2.3"
+              throws="1">
+        <doc xml:whitespace="preserve">Creates a new database using the specifications in @op. @op can be obtained using
+gda_server_provider_create_operation(), or gda_server_operation_prepare_create_database().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred and the database has been created, FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="provider" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the database provider to use, or %NULL if @op has been created using gda_server_operation_prepare_create_database()</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="perform_create_table"
+              c:identifier="gda_server_operation_perform_create_table"
+              version="4.2.3"
+              throws="1">
+        <doc xml:whitespace="preserve">Performs a prepared #GdaServerOperation to create a table. This could perform
+an operation created by #gda_server_operation_prepare_create_table or any other using the
+the #GdaServerOperation API.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the table was created; FALSE and set @error otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="perform_drop_database"
+              c:identifier="gda_server_operation_perform_drop_database"
+              version="4.2.3"
+              throws="1">
+        <doc xml:whitespace="preserve">Destroys an existing database using the specifications in @op. @op can be obtained using
+gda_server_provider_create_operation(), or gda_server_operation_prepare_drop_database().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred and the database has been destroyed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="provider" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the database provider to use, or %NULL if @op has been created using gda_server_operation_prepare_drop_database()</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="perform_drop_table"
+              c:identifier="gda_server_operation_perform_drop_table"
+              version="4.2.3"
+              throws="1">
+        <doc xml:whitespace="preserve">This is just a convenient function to perform a drop a table operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the table was dropped</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="save_data_to_xml"
+              c:identifier="gda_server_operation_save_data_to_xml"
+              introspectable="0"
+              throws="1">
+        <doc xml:whitespace="preserve">Creates a new #xmlNodePtr tree which can be used to save the #op object. This
+XML structure can then be saved to disk if necessary. Use xmlFreeNode to free
+the associated memory when not needed anymore.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #xmlNodePtr structure, or %NULL</doc>
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </return-value>
+      </method>
+      <method name="set_value_at"
+              c:identifier="gda_server_operation_set_value_at"
+              shadowed-by="set_value_at_path"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Set the value for the node at the path formed using @path_format and the ... ellipse (the rules are the same as
+for g_strdup_printf()). 
+
+Note that trying to set a value for a path which is not used by the current
+provider, such as "/TABLE_OPTIONS_P/TABLE_ENGINE" for a PostgreSQL connection (this option is only supported for MySQL), 
+will &lt;emphasis&gt;not&lt;/emphasis&gt; generate
+any error; this allows one to give values to a superset of the parameters and thus use the same code for several providers.
+
+Here are the possible formats of @path_format:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;If the path corresponds to a #GdaHolder, then the parameter is set to &lt;![CDATA["@value"]]&gt;&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;If the path corresponds to a sequence item like for example "/SEQUENCE_NAME/5/NAME" for
+the "NAME" value of the 6th item of the "SEQUENCE_NAME" sequence then:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;if the sequence already has 6 or more items, then the value is just set to the corresponding 
+value in the 6th item of the sequence&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;if the sequence has less then 6 items, then items are added up to the 6th one before setting
+the value to the corresponding in the 6th item of the sequence&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;If the path corresponds to a #GdaDataModel, like for example "/ARRAY/@@COLUMN/5" for the value at the
+6th row of the "COLUMN" column of the "ARRAY" data model, then:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;if the data model already contains 6 or more rows, then the value is just set&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;if the data model has less than 6 rows, then rows are added up to the 6th one before setting
+the value&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a place to store errors or %NULL</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="path_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value_at_path"
+              c:identifier="gda_server_operation_set_value_at_path"
+              shadows="set_value_at"
+              version="4.2.6"
+              throws="1">
+        <doc xml:whitespace="preserve">Set the value for the node at the path formed using @path_format and the ... ellipse (the rules are the same as
+for g_strdup_printf()). 
+
+Note that trying to set a value for a path which is not used by the current
+provider, such as "/TABLE_OPTIONS_P/TABLE_ENGINE" for a PostgreSQL connection (this option is only supported for MySQL), 
+will &lt;emphasis&gt;not&lt;/emphasis&gt; generate
+any error; this allows one to give values to a superset of the parameters and thus use the same code for several providers.
+
+Here are the possible formats of @path_format:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;If the path corresponds to a #GdaHolder, then the parameter is set to &lt;![CDATA["@value"]]&gt;&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;If the path corresponds to a sequence item like for example "/SEQUENCE_NAME/5/NAME" for
+the "NAME" value of the 6th item of the "SEQUENCE_NAME" sequence then:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;if the sequence already has 6 or more items, then the value is just set to the corresponding 
+value in the 6th item of the sequence&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;if the sequence has less then 6 items, then items are added up to the 6th one before setting
+the value to the corresponding in the 6th item of the sequence&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;If the path corresponds to a #GdaDataModel, like for example "/ARRAY/@@COLUMN/5" for the value at the
+6th row of the "COLUMN" column of the "ARRAY" data model, then:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;if the data model already contains 6 or more rows, then the value is just set&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;if the data model has less than 6 rows, then rows are added up to the 6th one before setting
+the value&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a complete path to a node (starting with "/")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="connection"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Connection"/>
+      </property>
+      <property name="op-type"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="provider"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="ServerProvider"/>
+      </property>
+      <property name="spec-filename"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ServerOperationPrivate"
+              c:type="GdaServerOperationPrivate*"/>
+      </field>
+      <glib:signal name="sequence-item-added" when="first">
+        <doc xml:whitespace="preserve">Gets emitted whenever a new sequence item (from a sequence template) has been added</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="seq_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path to the new sequence item</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="item_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index (starting from 0) of the new sequence item in the sequence</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="sequence-item-remove" when="first">
+        <doc xml:whitespace="preserve">Gets emitted whenever a sequence item is about to be removed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="seq_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path to the sequence item to be removed</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="item_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index (starting from 0) of the sequence item in the sequence</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ServerOperationClass"
+            c:type="GdaServerOperationClass"
+            glib:is-gtype-struct-for="ServerOperation">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="seq_item_added">
+        <callback name="seq_item_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="op" transfer-ownership="none">
+              <type name="ServerOperation" c:type="GdaServerOperation*"/>
+            </parameter>
+            <parameter name="seq_path" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="item_index" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="seq_item_remove">
+        <callback name="seq_item_remove">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="op" transfer-ownership="none">
+              <type name="ServerOperation" c:type="GdaServerOperation*"/>
+            </parameter>
+            <parameter name="seq_path" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="item_index" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <bitfield name="ServerOperationCreateTableFlag"
+              c:type="GdaServerOperationCreateTableFlag">
+      <member name="nothing_flag"
+              value="1"
+              c:identifier="GDA_SERVER_OPERATION_CREATE_TABLE_NOTHING_FLAG"/>
+      <member name="pkey_flag"
+              value="2"
+              c:identifier="GDA_SERVER_OPERATION_CREATE_TABLE_PKEY_FLAG"/>
+      <member name="not_null_flag"
+              value="4"
+              c:identifier="GDA_SERVER_OPERATION_CREATE_TABLE_NOT_NULL_FLAG"/>
+      <member name="unique_flag"
+              value="8"
+              c:identifier="GDA_SERVER_OPERATION_CREATE_TABLE_UNIQUE_FLAG"/>
+      <member name="autoinc_flag"
+              value="16"
+              c:identifier="GDA_SERVER_OPERATION_CREATE_TABLE_AUTOINC_FLAG"/>
+      <member name="fkey_flag"
+              value="32"
+              c:identifier="GDA_SERVER_OPERATION_CREATE_TABLE_FKEY_FLAG"/>
+      <member name="pkey_autoinc_flag"
+              value="18"
+              c:identifier="GDA_SERVER_OPERATION_CREATE_TABLE_PKEY_AUTOINC_FLAG"/>
+    </bitfield>
+    <enumeration name="ServerOperationError" c:type="GdaServerOperationError">
+      <member name="object_name_error"
+              value="0"
+              c:identifier="GDA_SERVER_OPERATION_OBJECT_NAME_ERROR"/>
+      <member name="incorrect_value_error"
+              value="1"
+              c:identifier="GDA_SERVER_OPERATION_INCORRECT_VALUE_ERROR"/>
+      <member name="xml_error"
+              value="2"
+              c:identifier="GDA_SERVER_OPERATION_XML_ERROR"/>
+    </enumeration>
+    <enumeration name="ServerOperationNodeStatus"
+                 c:type="GdaServerOperationNodeStatus">
+      <member name="optional"
+              value="0"
+              c:identifier="GDA_SERVER_OPERATION_STATUS_OPTIONAL"/>
+      <member name="required"
+              value="1"
+              c:identifier="GDA_SERVER_OPERATION_STATUS_REQUIRED"/>
+      <member name="unknown"
+              value="2"
+              c:identifier="GDA_SERVER_OPERATION_STATUS_UNKNOWN"/>
+    </enumeration>
+    <enumeration name="ServerOperationNodeType"
+                 c:type="GdaServerOperationNodeType">
+      <member name="paramlist"
+              value="0"
+              c:identifier="GDA_SERVER_OPERATION_NODE_PARAMLIST"/>
+      <member name="data_model"
+              value="1"
+              c:identifier="GDA_SERVER_OPERATION_NODE_DATA_MODEL"/>
+      <member name="param"
+              value="2"
+              c:identifier="GDA_SERVER_OPERATION_NODE_PARAM"/>
+      <member name="sequence"
+              value="3"
+              c:identifier="GDA_SERVER_OPERATION_NODE_SEQUENCE"/>
+      <member name="sequence_item"
+              value="4"
+              c:identifier="GDA_SERVER_OPERATION_NODE_SEQUENCE_ITEM"/>
+      <member name="data_model_column"
+              value="5"
+              c:identifier="GDA_SERVER_OPERATION_NODE_DATA_MODEL_COLUMN"/>
+      <member name="unknown"
+              value="6"
+              c:identifier="GDA_SERVER_OPERATION_NODE_UNKNOWN"/>
+    </enumeration>
+    <record name="ServerOperationPrivate"
+            c:type="GdaServerOperationPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="ServerOperationType" c:type="GdaServerOperationType">
+      <member name="create_db"
+              value="0"
+              c:identifier="GDA_SERVER_OPERATION_CREATE_DB"/>
+      <member name="drop_db"
+              value="1"
+              c:identifier="GDA_SERVER_OPERATION_DROP_DB"/>
+      <member name="create_table"
+              value="2"
+              c:identifier="GDA_SERVER_OPERATION_CREATE_TABLE"/>
+      <member name="drop_table"
+              value="3"
+              c:identifier="GDA_SERVER_OPERATION_DROP_TABLE"/>
+      <member name="rename_table"
+              value="4"
+              c:identifier="GDA_SERVER_OPERATION_RENAME_TABLE"/>
+      <member name="add_column"
+              value="5"
+              c:identifier="GDA_SERVER_OPERATION_ADD_COLUMN"/>
+      <member name="drop_column"
+              value="6"
+              c:identifier="GDA_SERVER_OPERATION_DROP_COLUMN"/>
+      <member name="create_index"
+              value="7"
+              c:identifier="GDA_SERVER_OPERATION_CREATE_INDEX"/>
+      <member name="drop_index"
+              value="8"
+              c:identifier="GDA_SERVER_OPERATION_DROP_INDEX"/>
+      <member name="create_view"
+              value="9"
+              c:identifier="GDA_SERVER_OPERATION_CREATE_VIEW"/>
+      <member name="drop_view"
+              value="10"
+              c:identifier="GDA_SERVER_OPERATION_DROP_VIEW"/>
+      <member name="comment_table"
+              value="11"
+              c:identifier="GDA_SERVER_OPERATION_COMMENT_TABLE"/>
+      <member name="comment_column"
+              value="12"
+              c:identifier="GDA_SERVER_OPERATION_COMMENT_COLUMN"/>
+      <member name="create_user"
+              value="13"
+              c:identifier="GDA_SERVER_OPERATION_CREATE_USER"/>
+      <member name="alter_user"
+              value="14"
+              c:identifier="GDA_SERVER_OPERATION_ALTER_USER"/>
+      <member name="drop_user"
+              value="15"
+              c:identifier="GDA_SERVER_OPERATION_DROP_USER"/>
+      <member name="last" value="16" c:identifier="GDA_SERVER_OPERATION_LAST"/>
+    </enumeration>
+    <class name="ServerProvider"
+           c:symbol-prefix="server_provider"
+           c:type="GdaServerProvider"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GdaServerProvider"
+           glib:get-type="gda_server_provider_get_type"
+           glib:type-struct="ServerProviderClass">
+      <function name="error_quark"
+                c:identifier="gda_server_provider_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <function name="load_file_contents"
+                c:identifier="gda_server_provider_load_file_contents">
+        <doc xml:whitespace="preserve">Loads and returns the contents of @filename, which is searched in several places
+This function should only be used by database provider's
+implementations</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string containing @filename's contents, or %NULL if not found or if an error occurred</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="inst_dir" transfer-ownership="none">
+            <doc xml:whitespace="preserve">directory where the database provider has been installed</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data_dir" transfer-ownership="none">
+            <doc xml:whitespace="preserve">DATA directory to look for ($prefix/share)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the file to load</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="add_savepoint" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="begin_transaction" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="level" transfer-ownership="none">
+            <type name="TransactionIsolation"
+                  c:type="GdaTransactionIsolation"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="cancel" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="task_id" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_connection">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="commit_transaction" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_connection" introspectable="0">
+        <return-value>
+          <type name="Connection" c:type="GdaConnection*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="create_operation"
+                      invoker="create_operation"
+                      throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GdaServerOperation object which can be modified in order to perform the @type type of
+action. The @options can contain:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;named values which ID is a path in the resulting GdaServerOperation object, to initialize some value&lt;/listitem&gt;
+&lt;listitem&gt;named values which may change the contents of the GdaServerOperation, see &lt;link linkend="gda-server-op-information-std"&gt;this section&lt;/link&gt; for more information&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaServerOperation object, or %NULL in the provider does not support the @type type of operation or if an error occurred</doc>
+          <type name="ServerOperation" c:type="GdaServerOperation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object which will be used to perform an action, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of operation requested</doc>
+            <type name="ServerOperationType" c:type="GdaServerOperationType"/>
+          </parameter>
+          <parameter name="options" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an optional list of parameters</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_parser" invoker="create_parser">
+        <doc xml:whitespace="preserve">Creates a new #GdaSqlParser object which is adapted to @provider (and possibly depending on
+ cnc for the actual database version).
+
+If @prov does not have its own parser, then %NULL is returned, and a general SQL parser can be obtained
+using gda_sql_parser_new().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaSqlParser object, or %NULL.</doc>
+          <type name="SqlParser" c:type="GdaSqlParser*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="delete_savepoint" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="escape_string" invoker="escape_string">
+        <doc xml:whitespace="preserve">Escapes @str for use within an SQL command (to avoid SQL injection attacks). Note that the returned value still needs
+to be enclosed in single quotes before being used in an SQL statement.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string suitable to use in SQL statements</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string to escape</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_data_handler" introspectable="0">
+        <return-value>
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="g_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="dbms_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_database">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_def_dbms_type">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="g_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_name" invoker="get_name">
+        <doc xml:whitespace="preserve">Get the name (identifier) of the provider</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the provider's name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_server_version" invoker="get_server_version">
+        <doc xml:whitespace="preserve">Get the version of the database to which the connection is opened.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a (read only) string, or %NULL if an error occurred</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaConnection object</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_version" invoker="get_version">
+        <doc xml:whitespace="preserve">Get the version of the provider.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the version identification.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="handle_async" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="identifier_quote">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="for_meta_store" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="force_quotes" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_busy" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="open_connection" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none">
+            <type name="QuarkList" c:type="GdaQuarkList*"/>
+          </parameter>
+          <parameter name="auth" transfer-ownership="none">
+            <type name="QuarkList" c:type="GdaQuarkList*"/>
+          </parameter>
+          <parameter name="task_id" transfer-ownership="none">
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="async_cb" transfer-ownership="none" closure="5">
+            <type name="ServerProviderAsyncCallback"
+                  c:type="GdaServerProviderAsyncCallback"/>
+          </parameter>
+          <parameter name="cb_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="perform_operation" introspectable="0" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="op" transfer-ownership="none">
+            <type name="ServerOperation" c:type="GdaServerOperation*"/>
+          </parameter>
+          <parameter name="task_id" transfer-ownership="none">
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="async_cb" transfer-ownership="none" closure="4">
+            <type name="ServerProviderAsyncCallback"
+                  c:type="GdaServerProviderAsyncCallback"/>
+          </parameter>
+          <parameter name="cb_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="render_operation"
+                      invoker="render_operation"
+                      throws="1">
+        <doc xml:whitespace="preserve">Creates an SQL statement (possibly using some specific extensions of the DBMS) corresponding to the
+ op operation. Note that the returned string may actually contain more than one SQL statement.
+
+This function's purpose is mainly informative to get the actual SQL code which would be executed to perform
+the operation; to actually perform the operation, use gda_server_provider_perform_operation().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string, or %NULL if an error occurred or operation cannot be rendered as SQL.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object which will be used to render the action, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="op" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaServerOperation object</doc>
+            <type name="ServerOperation" c:type="GdaServerOperation*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="rollback_savepoint" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="rollback_transaction" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="statement_execute" introspectable="0" throws="1">
+        <return-value>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="stmt" transfer-ownership="none">
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none">
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+          <parameter name="model_usage" transfer-ownership="none">
+            <type name="StatementModelUsage" c:type="GdaStatementModelUsage"/>
+          </parameter>
+          <parameter name="col_types" transfer-ownership="none">
+            <type name="GType" c:type="GType*"/>
+          </parameter>
+          <parameter name="last_inserted_row" transfer-ownership="none">
+            <type name="Set" c:type="GdaSet**"/>
+          </parameter>
+          <parameter name="task_id" transfer-ownership="none">
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="exec_cb" transfer-ownership="none" closure="8">
+            <type name="ServerProviderExecCallback"
+                  c:type="GdaServerProviderExecCallback"/>
+          </parameter>
+          <parameter name="cb_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="statement_prepare" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="stmt" transfer-ownership="none">
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="statement_rewrite" introspectable="0" throws="1">
+        <return-value>
+          <type name="SqlStatement" c:type="GdaSqlStatement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="stmt" transfer-ownership="none">
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none">
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="statement_to_sql" introspectable="0" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="stmt" transfer-ownership="none">
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none">
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="StatementSqlFlag" c:type="GdaStatementSqlFlag"/>
+          </parameter>
+          <parameter name="params_used" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList**">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="supports_feature" invoker="supports_feature">
+        <doc xml:whitespace="preserve">Tests if a feature is supported</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @feature is supported</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="feature" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GdaConnectionFeature feature to test</doc>
+            <type name="ConnectionFeature" c:type="GdaConnectionFeature"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="supports_operation" invoker="supports_operation">
+        <doc xml:whitespace="preserve">Tells if @provider supports the @type of operation on the @cnc connection, using the
+(optional) @options parameters.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation is supported</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object which would be used to perform an action, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of operation requested</doc>
+            <type name="ServerOperationType" c:type="GdaServerOperationType"/>
+          </parameter>
+          <parameter name="options" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a list of named parameters, or %NULL</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unescape_string" invoker="unescape_string">
+        <doc xml:whitespace="preserve">Unescapes @str for use within an SQL command. This is the exact opposite of gda_server_provider_escape_string().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string to escape</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="create_operation"
+              c:identifier="gda_server_provider_create_operation"
+              throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GdaServerOperation object which can be modified in order to perform the @type type of
+action. The @options can contain:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;named values which ID is a path in the resulting GdaServerOperation object, to initialize some value&lt;/listitem&gt;
+&lt;listitem&gt;named values which may change the contents of the GdaServerOperation, see &lt;link linkend="gda-server-op-information-std"&gt;this section&lt;/link&gt; for more information&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaServerOperation object, or %NULL in the provider does not support the @type type of operation or if an error occurred</doc>
+          <type name="ServerOperation" c:type="GdaServerOperation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object which will be used to perform an action, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of operation requested</doc>
+            <type name="ServerOperationType" c:type="GdaServerOperationType"/>
+          </parameter>
+          <parameter name="options" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an optional list of parameters</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_parser"
+              c:identifier="gda_server_provider_create_parser">
+        <doc xml:whitespace="preserve">Creates a new #GdaSqlParser object which is adapted to @provider (and possibly depending on
+ cnc for the actual database version).
+
+If @prov does not have its own parser, then %NULL is returned, and a general SQL parser can be obtained
+using gda_sql_parser_new().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaSqlParser object, or %NULL.</doc>
+          <type name="SqlParser" c:type="GdaSqlParser*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="escape_string"
+              c:identifier="gda_server_provider_escape_string">
+        <doc xml:whitespace="preserve">Escapes @str for use within an SQL command (to avoid SQL injection attacks). Note that the returned value still needs
+to be enclosed in single quotes before being used in an SQL statement.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string suitable to use in SQL statements</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string to escape</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_file" c:identifier="gda_server_provider_find_file">
+        <doc xml:whitespace="preserve">Finds the location of a @filename. This function should only be used by database provider's
+implementations</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the complete path to @filename, or %NULL if not found</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="inst_dir" transfer-ownership="none">
+            <doc xml:whitespace="preserve">directory where @prov is installed</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the file to find</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_data_handler_dbms"
+              c:identifier="gda_server_provider_get_data_handler_dbms">
+        <doc xml:whitespace="preserve">Find a #GdaDataHandler object to manipulate data of type @for_type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaDataHandler, or %NULL if the provider does not know about the @for_type type</doc>
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="for_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a DBMS type definition</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_data_handler_default"
+              c:identifier="gda_server_provider_get_data_handler_default">
+        <doc xml:whitespace="preserve">Provides the implementation when the default Libgda's data handlers must be used</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaDataHandler, or %NULL</doc>
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="dbms_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a DBMS type definition</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_data_handler_g_type"
+              c:identifier="gda_server_provider_get_data_handler_g_type">
+        <doc xml:whitespace="preserve">Find a #GdaDataHandler object to manipulate data of type @for_type. The returned object must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaDataHandler, or %NULL if the provider does not support the requested @for_type data type</doc>
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="for_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_dbms_type"
+              c:identifier="gda_server_provider_get_default_dbms_type">
+        <doc xml:whitespace="preserve">Get the name of the most common data type which has @type type.
+
+The returned value may be %NULL either if the provider does not implement that method, or if
+there is no DBMS data type which could contain data of the @g_type type (for example %NULL may be
+returned if a DBMS has integers only up to 4 bytes and a #G_TYPE_INT64 is requested).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the DBMS type, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType value type</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name" c:identifier="gda_server_provider_get_name">
+        <doc xml:whitespace="preserve">Get the name (identifier) of the provider</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the provider's name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_server_version"
+              c:identifier="gda_server_provider_get_server_version">
+        <doc xml:whitespace="preserve">Get the version of the database to which the connection is opened.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a (read only) string, or %NULL if an error occurred</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaConnection object</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_version"
+              c:identifier="gda_server_provider_get_version">
+        <doc xml:whitespace="preserve">Get the version of the provider.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the version identification.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="handler_declare"
+              c:identifier="gda_server_provider_handler_declare">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dh" transfer-ownership="none">
+            <type name="DataHandler" c:type="GdaDataHandler*"/>
+          </parameter>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="g_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="dbms_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="handler_find"
+              c:identifier="gda_server_provider_handler_find">
+        <return-value transfer-ownership="none">
+          <type name="DataHandler" c:type="GdaDataHandler*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="g_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="dbms_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="internal_get_parser"
+              c:identifier="gda_server_provider_internal_get_parser">
+        <doc xml:whitespace="preserve">This is a factory method to get a unique instance of a #GdaSqlParser object
+for each #GdaServerProvider object
+Don't unref it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaSqlParser</doc>
+          <type name="SqlParser" c:type="GdaSqlParser*"/>
+        </return-value>
+      </method>
+      <method name="perform_operation"
+              c:identifier="gda_server_provider_perform_operation"
+              throws="1">
+        <doc xml:whitespace="preserve">Performs the operation described by @op. Note that @op is not destroyed by this method
+and can be reused.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object which will be used to perform the action, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="op" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaServerOperation object</doc>
+            <type name="ServerOperation" c:type="GdaServerOperation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="perform_operation_default"
+              c:identifier="gda_server_provider_perform_operation_default"
+              throws="1">
+        <doc xml:whitespace="preserve">Performs the operation described by @op, using the SQL from the rendering of the operation</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object which will be used to perform an action, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="op" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaServerOperation object</doc>
+            <type name="ServerOperation" c:type="GdaServerOperation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="render_operation"
+              c:identifier="gda_server_provider_render_operation"
+              throws="1">
+        <doc xml:whitespace="preserve">Creates an SQL statement (possibly using some specific extensions of the DBMS) corresponding to the
+ op operation. Note that the returned string may actually contain more than one SQL statement.
+
+This function's purpose is mainly informative to get the actual SQL code which would be executed to perform
+the operation; to actually perform the operation, use gda_server_provider_perform_operation().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string, or %NULL if an error occurred or operation cannot be rendered as SQL.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object which will be used to render the action, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="op" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaServerOperation object</doc>
+            <type name="ServerOperation" c:type="GdaServerOperation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="string_to_value"
+              c:identifier="gda_server_provider_string_to_value">
+        <doc xml:whitespace="preserve">Use @provider to create a new #GValue from a single string representation. 
+
+The @preferred_type can optionally ask @provider to return a #GValue of the requested type 
+(but if such a value can't be created from @string, then %NULL is returned); 
+pass #G_TYPE_INVALID if any returned type is acceptable.
+
+The returned value is either a new #GValue or %NULL in the following cases:
+- @string cannot be converted to @preferred_type type
+- the provider does not handle @preferred_type
+- the provider could not make a #GValue from @string
+
+If @dbms_type is not %NULL, then if will contain a constant string representing
+the database type used for the conversion if the conversion was successfull, or %NULL
+otherwise.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GValue, or %NULL</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the SQL string to convert to a value</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="preferred_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType, or #G_TYPE_INVALID</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="dbms_type" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">place to get the actual database type used if the conversion succeeded, or %NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="supports_feature"
+              c:identifier="gda_server_provider_supports_feature">
+        <doc xml:whitespace="preserve">Tests if a feature is supported</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @feature is supported</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="feature" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GdaConnectionFeature feature to test</doc>
+            <type name="ConnectionFeature" c:type="GdaConnectionFeature"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="supports_operation"
+              c:identifier="gda_server_provider_supports_operation">
+        <doc xml:whitespace="preserve">Tells if @provider supports the @type of operation on the @cnc connection, using the
+(optional) @options parameters.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation is supported</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object which would be used to perform an action, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of operation requested</doc>
+            <type name="ServerOperationType" c:type="GdaServerOperationType"/>
+          </parameter>
+          <parameter name="options" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a list of named parameters, or %NULL</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unescape_string"
+              c:identifier="gda_server_provider_unescape_string">
+        <doc xml:whitespace="preserve">Unescapes @str for use within an SQL command. This is the exact opposite of gda_server_provider_escape_string().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string to escape</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="value_to_sql_string"
+              c:identifier="gda_server_provider_value_to_sql_string">
+        <doc xml:whitespace="preserve">Produces a fully quoted and escaped string from a GValue</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">escaped and quoted value or NULL if not supported.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="from" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GValue to convert from</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ServerProviderPrivate" c:type="GdaServerProviderPrivate*"/>
+      </field>
+    </class>
+    <callback name="ServerProviderAsyncCallback"
+              c:type="GdaServerProviderAsyncCallback">
+      <doc xml:whitespace="preserve">Function to be called by Libgda when the associated asynchronous method invoked finishes.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="provider" transfer-ownership="none">
+          <type name="ServerProvider" c:type="GdaServerProvider*"/>
+        </parameter>
+        <parameter name="cnc" transfer-ownership="none">
+          <type name="Connection" c:type="GdaConnection*"/>
+        </parameter>
+        <parameter name="task_id" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="result_status" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="error" transfer-ownership="none">
+          <type name="GLib.Error" c:type="GError*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ServerProviderClass"
+            c:type="GdaServerProviderClass"
+            glib:is-gtype-struct-for="ServerProvider">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="limiting_thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="get_name">
+        <callback name="get_name">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the provider's name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_version">
+        <callback name="get_version">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the version identification.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_server_version">
+        <callback name="get_server_version">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a (read only) string, or %NULL if an error occurred</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GdaConnection object</doc>
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="supports_feature">
+        <callback name="supports_feature">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @feature is supported</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="feature" transfer-ownership="none">
+              <doc xml:whitespace="preserve">#GdaConnectionFeature feature to test</doc>
+              <type name="ConnectionFeature" c:type="GdaConnectionFeature"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_data_handler" introspectable="0">
+        <callback name="get_data_handler" introspectable="0">
+          <return-value>
+            <type name="DataHandler" c:type="GdaDataHandler*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="g_type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+            <parameter name="dbms_type" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_def_dbms_type">
+        <callback name="get_def_dbms_type">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="g_type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="escape_string">
+        <callback name="escape_string">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a new string suitable to use in SQL statements</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="str" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string to escape</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unescape_string">
+        <callback name="unescape_string">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a new string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="str" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string to escape</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="open_connection" introspectable="0">
+        <callback name="open_connection" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="params" transfer-ownership="none">
+              <type name="QuarkList" c:type="GdaQuarkList*"/>
+            </parameter>
+            <parameter name="auth" transfer-ownership="none">
+              <type name="QuarkList" c:type="GdaQuarkList*"/>
+            </parameter>
+            <parameter name="task_id" transfer-ownership="none">
+              <type name="guint" c:type="guint*"/>
+            </parameter>
+            <parameter name="async_cb" transfer-ownership="none" closure="6">
+              <type name="ServerProviderAsyncCallback"
+                    c:type="GdaServerProviderAsyncCallback"/>
+            </parameter>
+            <parameter name="cb_data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_connection">
+        <callback name="close_connection">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_database">
+        <callback name="get_database">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="supports_operation">
+        <callback name="supports_operation">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the operation is supported</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">a #GdaConnection object which would be used to perform an action, or %NULL</doc>
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the type of operation requested</doc>
+              <type name="ServerOperationType"
+                    c:type="GdaServerOperationType"/>
+            </parameter>
+            <parameter name="options" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">a list of named parameters, or %NULL</doc>
+              <type name="Set" c:type="GdaSet*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_operation">
+        <callback name="create_operation" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a new #GdaServerOperation object, or %NULL in the provider does not support the @type type of operation or if an error occurred</doc>
+            <type name="ServerOperation" c:type="GdaServerOperation*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">a #GdaConnection object which will be used to perform an action, or %NULL</doc>
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the type of operation requested</doc>
+              <type name="ServerOperationType"
+                    c:type="GdaServerOperationType"/>
+            </parameter>
+            <parameter name="options" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an optional list of parameters</doc>
+              <type name="Set" c:type="GdaSet*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="render_operation">
+        <callback name="render_operation" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a new string, or %NULL if an error occurred or operation cannot be rendered as SQL.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">a #GdaConnection object which will be used to render the action, or %NULL</doc>
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="op" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GdaServerOperation object</doc>
+              <type name="ServerOperation" c:type="GdaServerOperation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="perform_operation" introspectable="0">
+        <callback name="perform_operation" introspectable="0" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="op" transfer-ownership="none">
+              <type name="ServerOperation" c:type="GdaServerOperation*"/>
+            </parameter>
+            <parameter name="task_id" transfer-ownership="none">
+              <type name="guint" c:type="guint*"/>
+            </parameter>
+            <parameter name="async_cb" transfer-ownership="none" closure="5">
+              <type name="ServerProviderAsyncCallback"
+                    c:type="GdaServerProviderAsyncCallback"/>
+            </parameter>
+            <parameter name="cb_data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="begin_transaction">
+        <callback name="begin_transaction" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="level" transfer-ownership="none">
+              <type name="TransactionIsolation"
+                    c:type="GdaTransactionIsolation"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="commit_transaction">
+        <callback name="commit_transaction" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="rollback_transaction">
+        <callback name="rollback_transaction" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_savepoint">
+        <callback name="add_savepoint" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="rollback_savepoint">
+        <callback name="rollback_savepoint" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_savepoint">
+        <callback name="delete_savepoint" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_parser">
+        <callback name="create_parser">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a new #GdaSqlParser object, or %NULL.</doc>
+            <type name="SqlParser" c:type="GdaSqlParser*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">a #GdaConnection, or %NULL</doc>
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="statement_to_sql" introspectable="0">
+        <callback name="statement_to_sql" introspectable="0" throws="1">
+          <return-value transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="stmt" transfer-ownership="none">
+              <type name="Statement" c:type="GdaStatement*"/>
+            </parameter>
+            <parameter name="params" transfer-ownership="none">
+              <type name="Set" c:type="GdaSet*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="StatementSqlFlag" c:type="GdaStatementSqlFlag"/>
+            </parameter>
+            <parameter name="params_used" transfer-ownership="none">
+              <type name="GLib.SList" c:type="GSList**">
+                <type name="gpointer" c:type="gpointer"/>
+              </type>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="statement_prepare">
+        <callback name="statement_prepare" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="stmt" transfer-ownership="none">
+              <type name="Statement" c:type="GdaStatement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="statement_execute" introspectable="0">
+        <callback name="statement_execute" introspectable="0" throws="1">
+          <return-value>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="stmt" transfer-ownership="none">
+              <type name="Statement" c:type="GdaStatement*"/>
+            </parameter>
+            <parameter name="params" transfer-ownership="none">
+              <type name="Set" c:type="GdaSet*"/>
+            </parameter>
+            <parameter name="model_usage" transfer-ownership="none">
+              <type name="StatementModelUsage"
+                    c:type="GdaStatementModelUsage"/>
+            </parameter>
+            <parameter name="col_types" transfer-ownership="none">
+              <type name="GType" c:type="GType*"/>
+            </parameter>
+            <parameter name="last_inserted_row" transfer-ownership="none">
+              <type name="Set" c:type="GdaSet**"/>
+            </parameter>
+            <parameter name="task_id" transfer-ownership="none">
+              <type name="guint" c:type="guint*"/>
+            </parameter>
+            <parameter name="exec_cb" transfer-ownership="none" closure="9">
+              <type name="ServerProviderExecCallback"
+                    c:type="GdaServerProviderExecCallback"/>
+            </parameter>
+            <parameter name="cb_data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_busy">
+        <callback name="is_busy" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cancel">
+        <callback name="cancel" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="task_id" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_connection" introspectable="0">
+        <callback name="create_connection" introspectable="0">
+          <return-value>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="meta_funcs">
+        <type name="ServerProviderMeta" c:type="GdaServerProviderMeta"/>
+      </field>
+      <field name="xa_funcs">
+        <type name="ServerProviderXa" c:type="GdaServerProviderXa*"/>
+      </field>
+      <field name="identifier_quote">
+        <callback name="identifier_quote">
+          <return-value transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="for_meta_store" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="force_quotes" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="handle_async">
+        <callback name="handle_async" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="statement_rewrite" introspectable="0">
+        <callback name="statement_rewrite" introspectable="0" throws="1">
+          <return-value>
+            <type name="SqlStatement" c:type="GdaSqlStatement*"/>
+          </return-value>
+          <parameters>
+            <parameter name="provider" transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="stmt" transfer-ownership="none">
+              <type name="Statement" c:type="GdaStatement*"/>
+            </parameter>
+            <parameter name="params" transfer-ownership="none">
+              <type name="Set" c:type="GdaSet*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved5" introspectable="0">
+        <callback name="_gda_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved6" introspectable="0">
+        <callback name="_gda_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ServerProviderError" c:type="GdaServerProviderError">
+      <member name="method_non_implemented_error"
+              value="0"
+              c:identifier="GDA_SERVER_PROVIDER_METHOD_NON_IMPLEMENTED_ERROR"/>
+      <member name="prepare_stmt_error"
+              value="1"
+              c:identifier="GDA_SERVER_PROVIDER_PREPARE_STMT_ERROR"/>
+      <member name="empty_stmt_error"
+              value="2"
+              c:identifier="GDA_SERVER_PROVIDER_EMPTY_STMT_ERROR"/>
+      <member name="missing_param_error"
+              value="3"
+              c:identifier="GDA_SERVER_PROVIDER_MISSING_PARAM_ERROR"/>
+      <member name="statement_exec_error"
+              value="4"
+              c:identifier="GDA_SERVER_PROVIDER_STATEMENT_EXEC_ERROR"/>
+      <member name="operation_error"
+              value="5"
+              c:identifier="GDA_SERVER_PROVIDER_OPERATION_ERROR"/>
+      <member name="internal_error"
+              value="6"
+              c:identifier="GDA_SERVER_PROVIDER_INTERNAL_ERROR"/>
+      <member name="busy_error"
+              value="7"
+              c:identifier="GDA_SERVER_PROVIDER_BUSY_ERROR"/>
+      <member name="non_supported_error"
+              value="8"
+              c:identifier="GDA_SERVER_PROVIDER_NON_SUPPORTED_ERROR"/>
+      <member name="server_version_error"
+              value="9"
+              c:identifier="GDA_SERVER_PROVIDER_SERVER_VERSION_ERROR"/>
+      <member name="data_error"
+              value="10"
+              c:identifier="GDA_SERVER_PROVIDER_DATA_ERROR"/>
+      <member name="default_value_handling_error"
+              value="11"
+              c:identifier="GDA_SERVER_PROVIDER_DEFAULT_VALUE_HANDLING_ERROR"/>
+      <member name="misuse_error"
+              value="12"
+              c:identifier="GDA_SERVER_PROVIDER_MISUSE_ERROR"/>
+      <member name="file_not_found_error"
+              value="13"
+              c:identifier="GDA_SERVER_PROVIDER_FILE_NOT_FOUND_ERROR"/>
+    </enumeration>
+    <callback name="ServerProviderExecCallback"
+              c:type="GdaServerProviderExecCallback">
+      <doc xml:whitespace="preserve">Function to be called by Libgda when the associated asynchronous method invoked finishes</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="provider" transfer-ownership="none">
+          <type name="ServerProvider" c:type="GdaServerProvider*"/>
+        </parameter>
+        <parameter name="cnc" transfer-ownership="none">
+          <type name="Connection" c:type="GdaConnection*"/>
+        </parameter>
+        <parameter name="task_id" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="result_obj" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="error" transfer-ownership="none">
+          <type name="GLib.Error" c:type="GError*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ServerProviderHandlerInfo"
+            c:type="GdaServerProviderHandlerInfo">
+      <field name="cnc" writable="1">
+        <type name="Connection" c:type="GdaConnection*"/>
+      </field>
+      <field name="g_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="dbms_type" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <record name="ServerProviderInfo"
+            c:type="GdaServerProviderInfo"
+            disguised="1">
+    </record>
+    <record name="ServerProviderMeta" c:type="GdaServerProviderMeta">
+      <doc xml:whitespace="preserve">These methods must be implemented by providers to update a connection's associated metadata (in a 
+#GdaMetaStore object), see the &lt;link linkend="prov-metadata"&gt;Virtual methods for providers/Methods - metadata&lt;/link&gt;
+for more information.</doc>
+      <field name="_info" introspectable="0">
+        <callback name="_info" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_btypes" introspectable="0">
+        <callback name="_btypes" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_udt" introspectable="0">
+        <callback name="_udt" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="udt">
+        <callback name="udt">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="udt_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="udt_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_udt_cols" introspectable="0">
+        <callback name="_udt_cols" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="udt_cols">
+        <callback name="udt_cols">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="udt_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="udt_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="udt_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_enums" introspectable="0">
+        <callback name="_enums" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enums">
+        <callback name="enums">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="udt_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="udt_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="udt_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_domains" introspectable="0">
+        <callback name="_domains" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="domains">
+        <callback name="domains">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="domain_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="domain_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_constraints_dom" introspectable="0">
+        <callback name="_constraints_dom" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="constraints_dom">
+        <callback name="constraints_dom">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="domain_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="domain_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="domain_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_el_types" introspectable="0">
+        <callback name="_el_types" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="el_types">
+        <callback name="el_types">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="specific_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_collations" introspectable="0">
+        <callback name="_collations" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="collations">
+        <callback name="collations">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="collation_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="collation_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="collation_name_n" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_character_sets" introspectable="0">
+        <callback name="_character_sets" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="character_sets">
+        <callback name="character_sets">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="chset_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="chset_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="chset_name_n" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_schemata" introspectable="0">
+        <callback name="_schemata" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="schemata">
+        <callback name="schemata">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="catalog_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="schema_name_n" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_tables_views" introspectable="0">
+        <callback name="_tables_views" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="tables_views">
+        <callback name="tables_views">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="table_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_name_n" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_columns" introspectable="0">
+        <callback name="_columns" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="columns">
+        <callback name="columns">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="table_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_view_cols" introspectable="0">
+        <callback name="_view_cols" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="view_cols">
+        <callback name="view_cols">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="view_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="view_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="view_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_constraints_tab" introspectable="0">
+        <callback name="_constraints_tab" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="constraints_tab">
+        <callback name="constraints_tab">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="table_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="constraint_name_n" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_constraints_ref" introspectable="0">
+        <callback name="_constraints_ref" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="constraints_ref">
+        <callback name="constraints_ref">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="table_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="constraint_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_key_columns" introspectable="0">
+        <callback name="_key_columns" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_columns">
+        <callback name="key_columns">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="table_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="constraint_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_check_columns" introspectable="0">
+        <callback name="_check_columns" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="check_columns">
+        <callback name="check_columns">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="table_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="constraint_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_triggers" introspectable="0">
+        <callback name="_triggers" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="triggers">
+        <callback name="triggers">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="table_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_routines" introspectable="0">
+        <callback name="_routines" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="routines">
+        <callback name="routines">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="routine_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="routine_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="routine_name_n" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_routine_col" introspectable="0">
+        <callback name="_routine_col" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="routine_col">
+        <callback name="routine_col">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="rout_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="rout_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="rout_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_routine_par" introspectable="0">
+        <callback name="_routine_par" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="routine_par">
+        <callback name="routine_par">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="rout_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="rout_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="rout_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_indexes_tab" introspectable="0">
+        <callback name="_indexes_tab" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="indexes_tab">
+        <callback name="indexes_tab">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="table_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="index_name_n" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_index_cols" introspectable="0">
+        <callback name="_index_cols" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="index_cols">
+        <callback name="index_cols">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaStore" c:type="GdaMetaStore*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="MetaContext" c:type="GdaMetaContext*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError**"/>
+            </parameter>
+            <parameter name="table_catalog" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_schema" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="table_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="index_name" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved5" introspectable="0">
+        <callback name="_gda_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved6" introspectable="0">
+        <callback name="_gda_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved7" introspectable="0">
+        <callback name="_gda_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved8" introspectable="0">
+        <callback name="_gda_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved9" introspectable="0">
+        <callback name="_gda_reserved9">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved10" introspectable="0">
+        <callback name="_gda_reserved10">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved11" introspectable="0">
+        <callback name="_gda_reserved11">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved12" introspectable="0">
+        <callback name="_gda_reserved12">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved13" introspectable="0">
+        <callback name="_gda_reserved13">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved14" introspectable="0">
+        <callback name="_gda_reserved14">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved15" introspectable="0">
+        <callback name="_gda_reserved15">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved16" introspectable="0">
+        <callback name="_gda_reserved16">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ServerProviderPrivate" c:type="GdaServerProviderPrivate">
+      <field name="data_handlers" writable="1">
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="parser" writable="1">
+        <type name="SqlParser" c:type="GdaSqlParser*"/>
+      </field>
+    </record>
+    <record name="ServerProviderXa" c:type="GdaServerProviderXa">
+      <field name="xa_start">
+        <callback name="xa_start" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="XaTransactionId" c:type="GdaXaTransactionId*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="xa_end">
+        <callback name="xa_end" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="XaTransactionId" c:type="GdaXaTransactionId*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="xa_prepare">
+        <callback name="xa_prepare" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="XaTransactionId" c:type="GdaXaTransactionId*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="xa_commit">
+        <callback name="xa_commit" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="XaTransactionId" c:type="GdaXaTransactionId*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="xa_rollback">
+        <callback name="xa_rollback" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="XaTransactionId" c:type="GdaXaTransactionId*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="xa_recover" introspectable="0">
+        <callback name="xa_recover" introspectable="0" throws="1">
+          <return-value>
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="ServerProvider" c:type="GdaServerProvider*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Set"
+           c:symbol-prefix="set"
+           c:type="GdaSet"
+           parent="GObject.Object"
+           glib:type-name="GdaSet"
+           glib:get-type="gda_set_get_type"
+           glib:type-struct="SetClass">
+      <constructor name="new" c:identifier="gda_set_new">
+        <doc xml:whitespace="preserve">Creates a new #GdaSet object, and populates it with the list given as argument.
+The list can then be freed as it is copied. All the value holders in @holders are referenced counted
+and modified, so they should not be used anymore afterwards.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaSet object</doc>
+          <type name="Set" c:type="GdaSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="holders" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of #GdaHolder objects</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="Holder"/>
+            </type>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_spec_node"
+                   c:identifier="gda_set_new_from_spec_node"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GdaSet object from the @xml_spec
+specifications</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new object, or %NULL if an error occurred</doc>
+          <type name="Set" c:type="GdaSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="xml_spec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #xmlNodePtr for a &amp;lt;holders&amp;gt; tag</doc>
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_spec_string"
+                   c:identifier="gda_set_new_from_spec_string"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GdaSet object from the @xml_spec
+specifications</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new object, or %NULL if an error occurred</doc>
+          <type name="Set" c:type="GdaSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="xml_spec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_inline"
+                   c:identifier="gda_set_new_inline"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GdaSet containing holders defined by each triplet in ...
+For each triplet (id, Glib type and value), 
+the value must be of the correct type (gchar * if type is G_STRING, ...)
+
+Note that this function is a utility function and that only a limited set of types are supported. Trying
+to use an unsupported type will result in a warning, and the returned value holder holding a safe default
+value.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaSet object</doc>
+          <type name="Set" c:type="GdaSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="nb" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of value holders which will be contained in the new #GdaSet</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_read_only"
+                   c:identifier="gda_set_new_read_only"
+                   version="4.2">
+        <doc xml:whitespace="preserve">Creates a new #GdaSet like gda_set_new(), but does not allow modifications to any of the #GdaHolder
+object in @holders. This function is used for Libgda's database providers' implementation.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaSet object</doc>
+          <type name="Set" c:type="GdaSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="holders" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of #GdaHolder objects</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="Holder"/>
+            </type>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="error_quark" c:identifier="gda_set_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <virtual-method name="holder_attr_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder" transfer-ownership="none">
+            <type name="Holder" c:type="GdaHolder*"/>
+          </parameter>
+          <parameter name="attr_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="holder_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder" transfer-ownership="none">
+            <type name="Holder" c:type="GdaHolder*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="holder_type_set">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder" transfer-ownership="none">
+            <type name="Holder" c:type="GdaHolder*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="public_data_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="source_model_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="SetSource" c:type="GdaSetSource*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="validate_holder_change">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Error" c:type="GError*"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder" transfer-ownership="none">
+            <type name="Holder" c:type="GdaHolder*"/>
+          </parameter>
+          <parameter name="new_value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="validate_set">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Error" c:type="GError*"/>
+        </return-value>
+      </virtual-method>
+      <method name="add_holder" c:identifier="gda_set_add_holder">
+        <doc xml:whitespace="preserve">Adds @holder to the list of holders managed within @set.
+
+NOTE: if @set already has a #GdaHolder with the same ID as @holder, then @holder
+will not be added to the set (even if @holder's type or value is not the same as the
+one already in @set).
+
+with the same ID)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @holder has been added to @set (and FALSE if it has not been added because there is another #GdaHolder</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaHolder object</doc>
+            <type name="Holder" c:type="GdaHolder*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gda_set_copy">
+        <doc xml:whitespace="preserve">Creates a new #GdaSet object, copy of @set</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaSet object</doc>
+          <type name="Set" c:type="GdaSet*"/>
+        </return-value>
+      </method>
+      <method name="get_group" c:identifier="gda_set_get_group">
+        <doc xml:whitespace="preserve">Finds a #GdaSetGroup which lists a  #GdaSetNode containing @holder,
+don't modify the returned structure.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested #GdaSetGroup or %NULL</doc>
+          <type name="SetGroup" c:type="GdaSetGroup*"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaHolder object</doc>
+            <type name="Holder" c:type="GdaHolder*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_holder" c:identifier="gda_set_get_holder">
+        <doc xml:whitespace="preserve">Finds a #GdaHolder using its ID</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested #GdaHolder or %NULL</doc>
+          <type name="Holder" c:type="GdaHolder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the requested value holder</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_holder_value" c:identifier="gda_set_get_holder_value">
+        <doc xml:whitespace="preserve">Get the value of the #GdaHolder which ID is @holder_id</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested GValue, or %NULL (see gda_holder_get_value())</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the holder to set the value</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_node" c:identifier="gda_set_get_node">
+        <doc xml:whitespace="preserve">Finds a #GdaSetNode holding information for @holder, don't modify the returned structure</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested #GdaSetNode or %NULL</doc>
+          <type name="SetNode" c:type="GdaSetNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaHolder object</doc>
+            <type name="Holder" c:type="GdaHolder*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_nth_holder"
+              c:identifier="gda_set_get_nth_holder"
+              version="4.2">
+        <doc xml:whitespace="preserve">Finds a #GdaHolder using its position</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested #GdaHolder or %NULL</doc>
+          <type name="Holder" c:type="GdaHolder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the requested #GdaHolder, starting at %0</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_source" c:identifier="gda_set_get_source">
+        <doc xml:whitespace="preserve">Finds a #GdaSetSource which contains the #GdaDataModel restricting the possible values of
+ holder, don't modify the returned structure.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested #GdaSetSource or %NULL</doc>
+          <type name="SetSource" c:type="GdaSetSource*"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaHolder object</doc>
+            <type name="Holder" c:type="GdaHolder*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_source_for_model"
+              c:identifier="gda_set_get_source_for_model">
+        <doc xml:whitespace="preserve">Finds the #GdaSetSource structure used in @set for which @model is a
+the data model (the returned structure should not be modified).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested #GdaSetSource pointer or %NULL.</doc>
+          <type name="SetSource" c:type="GdaSetSource*"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModel object</doc>
+            <type name="DataModel" c:type="GdaDataModel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_valid" c:identifier="gda_set_is_valid" throws="1">
+        <doc xml:whitespace="preserve">This method tells if all @set's #GdaHolder objects are valid, and if
+they represent a valid combination of values, as defined by rules
+external to Libgda: the "validate-set" signal is emitted and if none of the signal handlers return an
+error, then the returned value is TRUE, otherwise the return value is FALSE as soon as a signal handler
+returns an error.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the set is valid</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="merge_with_set" c:identifier="gda_set_merge_with_set">
+        <doc xml:whitespace="preserve">Add to @set all the holders of @set_to_merge. 
+Note1: only the #GdaHolder of @set_to_merge for which no holder in @set has the same ID are merged
+Note2: all the #GdaHolder merged in @set are still used by @set_to_merge.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="set_to_merge" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaSet object</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_holder" c:identifier="gda_set_remove_holder">
+        <doc xml:whitespace="preserve">Removes a #GdaHolder from the list of holders managed by @set</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdaHolder to remove from @set</doc>
+            <type name="Holder" c:type="GdaHolder*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_source_model"
+              c:identifier="gda_set_replace_source_model"
+              version="4.2">
+        <doc xml:whitespace="preserve">Replaces @source-&gt;data_model with @model, which must have the same
+characteristics as @source-&gt;data_model (same column types)
+
+Also for each #GdaHolder for which @source-&gt;data_model is a source model,
+this method calls gda_holder_set_source_model() with @model to replace
+the source by the new model</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a #GdaSetSource in @set</doc>
+            <type name="SetSource" c:type="GdaSetSource*"/>
+          </parameter>
+          <parameter name="model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaDataModel</doc>
+            <type name="DataModel" c:type="GdaDataModel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_holder_value"
+              c:identifier="gda_set_set_holder_value"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Set the value of the #GdaHolder which ID is @holder_id to a specified value</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred and the value was set correctly</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a place to store errors, or %NULL</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="holder_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the holder to set the value</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="description" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="holders"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gpointer"/>
+      </property>
+      <property name="id" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="name" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="SetPrivate" c:type="GdaSetPrivate*"/>
+      </field>
+      <field name="holders">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="Holder"/>
+        </type>
+      </field>
+      <field name="nodes_list">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="SetNode"/>
+        </type>
+      </field>
+      <field name="sources_list">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="SetSource"/>
+        </type>
+      </field>
+      <field name="groups_list">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="SetGroup"/>
+        </type>
+      </field>
+      <glib:signal name="holder-attr-changed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted when an attribute for any of the #GdaHolder objects managed by @set has changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the GdaHolder for which an attribute changed</doc>
+            <type name="Holder"/>
+          </parameter>
+          <parameter name="attr_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute's name</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute's value</doc>
+            <type name="GObject.Value"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="holder-changed" when="first">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Holder"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="holder-type-set" when="first" version="4.2">
+        <doc xml:whitespace="preserve">Gets emitted when @holder in @set has its type finally set, in case
+it was #GDA_TYPE_NULL</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdaHolder for which the #GType has been set</doc>
+            <type name="Holder"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="public-data-changed" when="first">
+        <doc xml:whitespace="preserve">Gets emitted when @set's public data (#GdaSetNode, #GdaSetGroup or #GdaSetSource values) have changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="source-model-changed" when="first" version="4.2">
+        <doc xml:whitespace="preserve">Gets emitted when the data model in @source has changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdaSetSource for which the @data_model attribute has changed</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="validate-holder-change" when="last">
+        <doc xml:whitespace="preserve">Gets emitted when a #GdaHolder's in @set is going to change its value. One can connect to
+this signal to control which values @holder can have (for example to implement some business rules)
+
+otherwise.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">NULL if @holder is allowed to change its value to @new_value, or a #GError</doc>
+          <type name="GLib.Error"/>
+        </return-value>
+        <parameters>
+          <parameter name="holder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdaHolder which is going to change</doc>
+            <type name="Holder"/>
+          </parameter>
+          <parameter name="new_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the proposed new value for @holder</doc>
+            <type name="GObject.Value"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="validate-set" when="last">
+        <doc xml:whitespace="preserve">Gets emitted when gda_set_is_valid() is called, use
+this signal to control which combination of values @set's holder can have (for example to implement some business rules)
+
+otherwise.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">NULL if @set's contents has been validated, or a #GError</doc>
+          <type name="GLib.Error"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="SetClass"
+            c:type="GdaSetClass"
+            glib:is-gtype-struct-for="Set">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="validate_holder_change">
+        <callback name="validate_holder_change">
+          <return-value transfer-ownership="full">
+            <type name="GLib.Error" c:type="GError*"/>
+          </return-value>
+          <parameters>
+            <parameter name="set" transfer-ownership="none">
+              <type name="Set" c:type="GdaSet*"/>
+            </parameter>
+            <parameter name="holder" transfer-ownership="none">
+              <type name="Holder" c:type="GdaHolder*"/>
+            </parameter>
+            <parameter name="new_value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="validate_set">
+        <callback name="validate_set">
+          <return-value transfer-ownership="full">
+            <type name="GLib.Error" c:type="GError*"/>
+          </return-value>
+          <parameters>
+            <parameter name="set" transfer-ownership="none">
+              <type name="Set" c:type="GdaSet*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="holder_changed">
+        <callback name="holder_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="set" transfer-ownership="none">
+              <type name="Set" c:type="GdaSet*"/>
+            </parameter>
+            <parameter name="holder" transfer-ownership="none">
+              <type name="Holder" c:type="GdaHolder*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="holder_attr_changed">
+        <callback name="holder_attr_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="set" transfer-ownership="none">
+              <type name="Set" c:type="GdaSet*"/>
+            </parameter>
+            <parameter name="holder" transfer-ownership="none">
+              <type name="Holder" c:type="GdaHolder*"/>
+            </parameter>
+            <parameter name="attr_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="attr_value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="public_data_changed">
+        <callback name="public_data_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="set" transfer-ownership="none">
+              <type name="Set" c:type="GdaSet*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="holder_type_set">
+        <callback name="holder_type_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="set" transfer-ownership="none">
+              <type name="Set" c:type="GdaSet*"/>
+            </parameter>
+            <parameter name="holder" transfer-ownership="none">
+              <type name="Holder" c:type="GdaHolder*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="source_model_changed">
+        <callback name="source_model_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="set" transfer-ownership="none">
+              <type name="Set" c:type="GdaSet*"/>
+            </parameter>
+            <parameter name="source" transfer-ownership="none">
+              <type name="SetSource" c:type="GdaSetSource*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="SetError" c:type="GdaSetError">
+      <member name="xml_spec_error"
+              value="0"
+              c:identifier="GDA_SET_XML_SPEC_ERROR"/>
+      <member name="holder_not_found_error"
+              value="1"
+              c:identifier="GDA_SET_HOLDER_NOT_FOUND_ERROR"/>
+      <member name="invalid_error"
+              value="2"
+              c:identifier="GDA_SET_INVALID_ERROR"/>
+      <member name="read_only_error"
+              value="3"
+              c:identifier="GDA_SET_READ_ONLY_ERROR"/>
+      <member name="implementation_error"
+              value="4"
+              c:identifier="GDA_SET_IMPLEMENTATION_ERROR"/>
+    </enumeration>
+    <record name="SetGroup" c:type="GdaSetGroup">
+      <field name="nodes" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="SetNode"/>
+        </type>
+      </field>
+      <field name="nodes_source" writable="1">
+        <type name="SetSource" c:type="GdaSetSource*"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <record name="SetNode" c:type="GdaSetNode">
+      <field name="holder" writable="1">
+        <type name="Holder" c:type="GdaHolder*"/>
+      </field>
+      <field name="source_model" writable="1">
+        <type name="DataModel" c:type="GdaDataModel*"/>
+      </field>
+      <field name="source_column" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <record name="SetPrivate" c:type="GdaSetPrivate" disguised="1">
+    </record>
+    <record name="SetSource" c:type="GdaSetSource">
+      <field name="data_model" writable="1">
+        <type name="DataModel" c:type="GdaDataModel*"/>
+      </field>
+      <field name="nodes" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="SetNode"/>
+        </type>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved3" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved4" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <class name="Short"
+           c:symbol-prefix="short"
+           glib:type-name="GdaShort"
+           glib:get-type="gda_short_get_type"
+           glib:fundamental="1">
+    </class>
+    <record name="SqlAnyPart" c:type="GdaSqlAnyPart" introspectable="0">
+      <doc xml:whitespace="preserve">Base structure of which all structures (except #GdaSqlStatement) "inherit". It identifies, for each structure,
+its type and its parent in the structure hierarchy.</doc>
+      <field name="type" writable="1">
+        <type name="SqlAnyPartType" c:type="GdaSqlAnyPartType"/>
+      </field>
+      <field name="parent" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+      </field>
+      <method name="check_structure"
+              c:identifier="gda_sql_any_part_check_structure"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="foreach"
+              c:identifier="gda_sql_any_part_foreach"
+              introspectable="0"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <type name="SqlForeachFunc" c:type="GdaSqlForeachFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="SqlAnyPartType"
+                 introspectable="0"
+                 c:type="GdaSqlAnyPartType">
+      <doc xml:whitespace="preserve">Type of part.</doc>
+      <member name="stmt_select"
+              value="0"
+              c:identifier="GDA_SQL_ANY_STMT_SELECT"/>
+      <member name="stmt_insert"
+              value="1"
+              c:identifier="GDA_SQL_ANY_STMT_INSERT"/>
+      <member name="stmt_update"
+              value="2"
+              c:identifier="GDA_SQL_ANY_STMT_UPDATE"/>
+      <member name="stmt_delete"
+              value="3"
+              c:identifier="GDA_SQL_ANY_STMT_DELETE"/>
+      <member name="stmt_compound"
+              value="4"
+              c:identifier="GDA_SQL_ANY_STMT_COMPOUND"/>
+      <member name="stmt_begin"
+              value="5"
+              c:identifier="GDA_SQL_ANY_STMT_BEGIN"/>
+      <member name="stmt_rollback"
+              value="6"
+              c:identifier="GDA_SQL_ANY_STMT_ROLLBACK"/>
+      <member name="stmt_commit"
+              value="7"
+              c:identifier="GDA_SQL_ANY_STMT_COMMIT"/>
+      <member name="stmt_savepoint"
+              value="8"
+              c:identifier="GDA_SQL_ANY_STMT_SAVEPOINT"/>
+      <member name="stmt_rollback_savepoint"
+              value="9"
+              c:identifier="GDA_SQL_ANY_STMT_ROLLBACK_SAVEPOINT"/>
+      <member name="stmt_delete_savepoint"
+              value="10"
+              c:identifier="GDA_SQL_ANY_STMT_DELETE_SAVEPOINT"/>
+      <member name="stmt_unknown"
+              value="11"
+              c:identifier="GDA_SQL_ANY_STMT_UNKNOWN"/>
+      <member name="expr" value="500" c:identifier="GDA_SQL_ANY_EXPR"/>
+      <member name="sql_field"
+              value="501"
+              c:identifier="GDA_SQL_ANY_SQL_FIELD"/>
+      <member name="sql_table"
+              value="502"
+              c:identifier="GDA_SQL_ANY_SQL_TABLE"/>
+      <member name="sql_function"
+              value="503"
+              c:identifier="GDA_SQL_ANY_SQL_FUNCTION"/>
+      <member name="sql_operation"
+              value="504"
+              c:identifier="GDA_SQL_ANY_SQL_OPERATION"/>
+      <member name="sql_case" value="505" c:identifier="GDA_SQL_ANY_SQL_CASE"/>
+      <member name="sql_select_field"
+              value="506"
+              c:identifier="GDA_SQL_ANY_SQL_SELECT_FIELD"/>
+      <member name="sql_select_target"
+              value="507"
+              c:identifier="GDA_SQL_ANY_SQL_SELECT_TARGET"/>
+      <member name="sql_select_join"
+              value="508"
+              c:identifier="GDA_SQL_ANY_SQL_SELECT_JOIN"/>
+      <member name="sql_select_from"
+              value="509"
+              c:identifier="GDA_SQL_ANY_SQL_SELECT_FROM"/>
+      <member name="sql_select_order"
+              value="510"
+              c:identifier="GDA_SQL_ANY_SQL_SELECT_ORDER"/>
+    </enumeration>
+    <class name="SqlBuilder"
+           c:symbol-prefix="sql_builder"
+           c:type="GdaSqlBuilder"
+           parent="GObject.Object"
+           glib:type-name="GdaSqlBuilder"
+           glib:get-type="gda_sql_builder_get_type"
+           glib:type-struct="SqlBuilderClass">
+      <constructor name="new" c:identifier="gda_sql_builder_new" version="4.2">
+        <doc xml:whitespace="preserve">Create a new #GdaSqlBuilder object to build #GdaStatement or #GdaSqlStatement
+objects of type @stmt_type
+
+statement type)</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created object, or %NULL if an error occurred (such as unsupported</doc>
+          <type name="SqlBuilder" c:type="GdaSqlBuilder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of statement to build</doc>
+            <type name="SqlStatementType" c:type="GdaSqlStatementType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="error_quark" c:identifier="gda_sql_builder_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <method name="add_case"
+              c:identifier="gda_sql_builder_add_case"
+              shadowed-by="add_case_v"
+              version="4.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new CASE ... WHEN ... THEN ... ELSE ... END expression.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="test_expr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the expression ID representing the test of the CASE, or %0</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+          <parameter name="else_expr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the expression ID representing the ELSE expression, or %0</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_case_v"
+              c:identifier="gda_sql_builder_add_case_v"
+              shadows="add_case"
+              version="4.2">
+        <doc xml:whitespace="preserve">Creates a new CASE ... WHEN ... THEN ... ELSE ... END expression. The WHEN expression and the THEN
+expression IDs are taken from the @when_array and @then_array at the same index, for each index inferior to
+ args_size </doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="test_expr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the expression ID representing the test of the CASE, or %0</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+          <parameter name="else_expr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the expression ID representing the ELSE expression, or %0</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+          <parameter name="when_array" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array containing each WHEN expression ID, having at least @args_size elements</doc>
+            <array length="4" zero-terminated="0" c:type="GdaSqlBuilderId*">
+              <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+            </array>
+          </parameter>
+          <parameter name="then_array" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array containing each THEN expression ID, having at least @args_size elements</doc>
+            <array length="4" zero-terminated="0" c:type="GdaSqlBuilderId*">
+              <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+            </array>
+          </parameter>
+          <parameter name="args_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of @when_array and @then_array</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_cond"
+              c:identifier="gda_sql_builder_add_cond"
+              version="4.2">
+        <doc xml:whitespace="preserve">Builds a new expression which represents a condition (or operation).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="op" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type of condition</doc>
+            <type name="SqlOperatorType" c:type="GdaSqlOperatorType"/>
+          </parameter>
+          <parameter name="op1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the 1st argument (not 0)</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+          <parameter name="op2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the 2nd argument (may be %0 if @op needs only one operand)</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+          <parameter name="op3" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the 3rd argument (may be %0 if @op needs only one or two operand)</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_cond_v"
+              c:identifier="gda_sql_builder_add_cond_v"
+              version="4.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Builds a new expression which represents a condition (or operation).
+
+As a side case, if @ops_ids_size is 1,
+then @op is ignored, and the returned ID represents @op_ids[0] (this avoids any problem for example
+when @op is GDA_SQL_OPERATOR_TYPE_AND and there is in fact only one operand).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="op" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type of condition</doc>
+            <type name="SqlOperatorType" c:type="GdaSqlOperatorType"/>
+          </parameter>
+          <parameter name="op_ids" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of ID for the arguments (not %0)</doc>
+            <array length="2" zero-terminated="0" c:type="GdaSqlBuilderId*">
+              <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+            </array>
+          </parameter>
+          <parameter name="op_ids_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">size of @ops_ids</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_expr"
+              c:identifier="gda_sql_builder_add_expr"
+              version="4.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Defines an expression in @builder which may be reused to build other parts of a statement.
+
+The new expression will contain the value passed as the @... argument.
+
+If @type is G_TYPE_STRING then it is possible to customize how the value has to be interpreted by passing a
+specific #GdaDataHandler object as @dh. This feature is very rarely used and the @dh argument should generally
+be %NULL.
+
+Note that for composite types such as #GdaNumeric, #Gdate, #GdaTime, ... pointer to these
+structures are expected, they should no be passed by value. For example:
+&lt;programlisting&gt;&lt;![CDATA[GDate *date = g_date_new_dmy (27, G_DATE_MAY, 1972);
+
+will correspond in SQL to:
+&lt;programlisting&gt;
+'05-27-1972'
+'my string'
+25
+&lt;/programlisting&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="dh" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">deprecated useless argument, just pass %NULL</doc>
+            <type name="DataHandler" c:type="GdaDataHandler*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the GType of the following argument</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_expr_value"
+              c:identifier="gda_sql_builder_add_expr_value"
+              version="4.2">
+        <doc xml:whitespace="preserve">Defines an expression in @builder which may be reused to build other parts of a statement.
+
+The new expression will contain the value passed as the @value argument.
+
+If @value's type is a string then it is possible to customize how the value has to be interpreted by passing a
+specific #GdaDataHandler object as @dh. This feature is very rarely used and the @dh argument should generally
+be %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="dh" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">deprecated useless argument, just pass %NULL</doc>
+            <type name="DataHandler" c:type="GdaDataHandler*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">value to set the expression to, or %NULL or a GDA_TYPE_NULL value to represent an SQL NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_field_id"
+              c:identifier="gda_sql_builder_add_field_id"
+              version="4.2">
+        <doc xml:whitespace="preserve">Defines an expression representing a field in @builder,
+which may be reused to build other parts of a statement,
+for instance as a parameter to gda_sql_builder_add_cond() or
+gda_sql_builder_add_field_value_id().
+
+Calling this with a %NULL @table_name is equivalent to calling gda_sql_builder_add_id().
+
+For SELECT queries, see gda_sql_builder_select_add_field().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a field name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="table_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a table name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_field_value"
+              c:identifier="gda_sql_builder_add_field_value"
+              version="4.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Valid only for: INSERT, UPDATE statements.
+
+Specifies that the field represented by @field_name will be set to the value identified
+by @... of type @type. See gda_sql_builder_add_expr() for more information.
+
+This is a C convenience function. See also gda_sql_builder_add_field_value_as_gvalue().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a field name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the GType of the following argument</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_field_value_as_gvalue"
+              c:identifier="gda_sql_builder_add_field_value_as_gvalue"
+              version="4.2">
+        <doc xml:whitespace="preserve">Valid only for: INSERT, UPDATE statements.
+
+Specifies that the field represented by @field_name will be set to the value identified
+by @value</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a field name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">value to set the field to, or %NULL or a GDA_TYPE_NULL value to represent an SQL NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_field_value_id"
+              c:identifier="gda_sql_builder_add_field_value_id"
+              version="4.2">
+        <doc xml:whitespace="preserve">Valid only for: INSERT, UPDATE, SELECT statements
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;For UPDATE: specifies that the field represented by @field_id will be set to the value identified
+by @value_id.&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;For SELECT: add a selected item to the statement, and if @value_id is not %0, then use it as an
+alias&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;For INSERT: if @field_id represents an SQL identifier (obtained using gda_sql_builder_add_id()): then if
+ value_id is not %0 then specifies that the field represented by @field_id will be set to the
+value identified by @value_id, otherwise just specifies a named field to be given a value.
+If @field_id represents a sub SELECT (obtained using gda_sql_builder_add_sub_select()), then
+this method call defines the sub SELECT from which values to insert are taken.&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+See also gda_sql_builder_add_field_value() and gda_sql_builder_add_field_value_as_gvalue().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the field's name or definition</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+          <parameter name="value_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the value to set the field to, or %0</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_function"
+              c:identifier="gda_sql_builder_add_function"
+              shadowed-by="add_function_v"
+              version="4.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Builds a new expression which represents a function applied to some arguments</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="func_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the functions's name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_function_v"
+              c:identifier="gda_sql_builder_add_function_v"
+              shadows="add_function"
+              version="4.2">
+        <doc xml:whitespace="preserve">Builds a new expression which represents a function applied to some arguments</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="func_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the functions's name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of IDs representing the function's arguments</doc>
+            <array length="2" zero-terminated="0" c:type="GdaSqlBuilderId*">
+              <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+            </array>
+          </parameter>
+          <parameter name="args_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">@args's size</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_id"
+              c:identifier="gda_sql_builder_add_id"
+              version="4.2">
+        <doc xml:whitespace="preserve">Defines an expression representing an identifier in @builder,
+which may be reused to build other parts of a statement,
+for instance as a parameter to gda_sql_builder_add_cond() or
+gda_sql_builder_add_field_value_id().
+
+The new expression will contain the @str literal.
+For example:
+&lt;programlisting&gt;
+gda_sql_builder_add_id (b, "name")
+gda_sql_builder_add_id (b, "date")
+&lt;/programlisting&gt;
+
+will be rendered as SQL as:
+&lt;programlisting&gt;
+name
+"date"
+&lt;/programlisting&gt;
+
+because "date" is an SQL reserved keyword.
+
+For fields, see gda_sql_builder_add_field_id().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_param"
+              c:identifier="gda_sql_builder_add_param"
+              version="4.2">
+        <doc xml:whitespace="preserve">Defines a parameter in @builder which may be reused to build other parts of a statement.
+
+The new expression will contain the @string literal.
+For example:
+&lt;programlisting&gt;
+gda_sql_builder_add_param (b, "age", G_TYPE_INT, FALSE)
+&lt;/programlisting&gt;
+
+will be rendered as SQL as:
+&lt;programlisting&gt;&lt;![CDATA[
+##age::int
+]]&gt;
+&lt;/programlisting&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="param_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">parameter's name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">parameter's type</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="nullok" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if the parameter can be set to %NULL</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_sub_select"
+              c:identifier="gda_sql_builder_add_sub_select"
+              version="4.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds an expression which is a subselect.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="sqlst" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a #GdaSqlStatement, which has to be a SELECT or compound SELECT. This will be copied.</doc>
+            <type name="SqlStatement" c:type="GdaSqlStatement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="compound_add_sub_select"
+              c:identifier="gda_sql_builder_compound_add_sub_select"
+              version="4.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Add a sub select to a COMPOUND statement</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sqlst" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a #GdaSqlStatement, which has to be a SELECT or compound SELECT. This will be copied.</doc>
+            <type name="SqlStatement" c:type="GdaSqlStatement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="compound_add_sub_select_from_builder"
+              c:identifier="gda_sql_builder_compound_add_sub_select_from_builder"
+              version="4.2">
+        <doc xml:whitespace="preserve">Add a sub select to a COMPOUND statement</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="subselect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaSqlBuilder, which has to be a SELECT or compound SELECT. This will be copied.</doc>
+            <type name="SqlBuilder" c:type="GdaSqlBuilder*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="compound_set_type"
+              c:identifier="gda_sql_builder_compound_set_type"
+              version="4.2">
+        <doc xml:whitespace="preserve">Changes the type of compound which @builder is making, for a COMPOUND statement</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="compound_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a type of compound</doc>
+            <type name="SqlStatementCompoundType"
+                  c:type="GdaSqlStatementCompoundType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="export_expression"
+              c:identifier="gda_sql_builder_export_expression"
+              version="4.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Exports a part managed by @builder as a new #GdaSqlExpr, which can represent any expression
+in a statement.
+
+needed anymore. If the part with @id as ID cannot be found, the returned value is %NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to a new #GdaSqlExpr structure, free using gda_sql_expr_free() when not</doc>
+          <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the expression to be exported, (must be a valid ID in @builder, not %0)</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sql_statement"
+              c:identifier="gda_sql_builder_get_sql_statement"
+              version="4.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GdaSqlStatement structure from @builder's contents.
+
+The returned pointer belongs to @builder's internal representation.
+Use gda_sql_statement_copy() if you need to keep it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaSqlStatement pointer</doc>
+          <type name="SqlStatement" c:type="GdaSqlStatement*"/>
+        </return-value>
+      </method>
+      <method name="get_statement"
+              c:identifier="gda_sql_builder_get_statement"
+              version="4.2"
+              throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GdaStatement statement from @builder's contents.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaStatement object, or %NULL if an error occurred</doc>
+          <type name="Statement" c:type="GdaStatement*"/>
+        </return-value>
+      </method>
+      <method name="import_expression"
+              c:identifier="gda_sql_builder_import_expression"
+              version="4.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Imports the @expr into @builder.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="expr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaSqlExpr obtained using gda_sql_builder_export_expression()</doc>
+            <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="import_expression_from_builder"
+              c:identifier="gda_sql_builder_import_expression_from_builder"
+              version="4.2">
+        <doc xml:whitespace="preserve">Imports the an expression located in @query into @builder.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new expression, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaSqlBuilder object to get expression from</doc>
+            <type name="SqlBuilder" c:type="GdaSqlBuilder*"/>
+          </parameter>
+          <parameter name="expr_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaSqlBuilderId of the expression in @query</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="join_add_field"
+              c:identifier="gda_sql_builder_join_add_field"
+              version="4.2">
+        <doc xml:whitespace="preserve">Alter a join in a SELECT statement to make its condition use equal field 
+values in the fields named @field_name in both tables, via the USING keyword.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new join, or %0 if there was an error</doc>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="join_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the join to modify (not %0)</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+          <parameter name="field_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the field to use in the join condition (not %NULL)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_add_field"
+              c:identifier="gda_sql_builder_select_add_field"
+              version="4.2">
+        <doc xml:whitespace="preserve">Valid only for: SELECT statements.
+
+Add a selected selected item to the SELECT statement.
+
+For non-SELECT statements, see gda_sql_builder_add_field_id().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the added field, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a field name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="table_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a table name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="alias" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an alias (eg. for the "AS" clause), or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_add_target"
+              c:identifier="gda_sql_builder_select_add_target"
+              version="4.2">
+        <doc xml:whitespace="preserve">Adds a new target to a SELECT statement</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new target, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="table_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the target table</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="alias" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the alias to give to the target, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_add_target_id"
+              c:identifier="gda_sql_builder_select_add_target_id"
+              version="4.2">
+        <doc xml:whitespace="preserve">Adds a new target to a SELECT statement. If there already exists a target representing
+the same table and the same alias (or with the same absence of alias) then the same target
+ID is returned instead of the ID of a new target.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new (or existing) target, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="table_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the expression holding a table reference (not %0)</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+          <parameter name="alias" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the alias to give to the target, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_group_by"
+              c:identifier="gda_sql_builder_select_group_by"
+              version="4.2">
+        <doc xml:whitespace="preserve">Valid only for: SELECT statements
+
+Adds the @expr_id expression to the GROUP BY clause's expressions list</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expr_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the expression to set use in the GROUP BY clause, or 0 to unset any previous GROUP BY clause</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_join_targets"
+              c:identifier="gda_sql_builder_select_join_targets"
+              version="4.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Joins two targets in a SELECT statement, using the @join_type type of join.
+
+Note: if the target represented by @left_target_id is actually situated after (on the right) of
+the target represented by @right_target_id, then the actual type of join may be switched from
+%GDA_SQL_SELECT_JOIN_LEFT to %GDA_SQL_SELECT_JOIN_RIGHT or from %GDA_SQL_SELECT_JOIN_RIGHT to
+%GDA_SQL_SELECT_JOIN_LEFT.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the new join, or %0 if there was an error</doc>
+          <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+        </return-value>
+        <parameters>
+          <parameter name="left_target_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the left target to use (not %0)</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+          <parameter name="right_target_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the right target to use (not %0)</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+          <parameter name="join_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of join</doc>
+            <type name="SqlSelectJoinType" c:type="GdaSqlSelectJoinType"/>
+          </parameter>
+          <parameter name="join_expr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">joining expression's ID, or %0</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_order_by"
+              c:identifier="gda_sql_builder_select_order_by"
+              version="4.2">
+        <doc xml:whitespace="preserve">Adds a new ORDER BY expression to a SELECT statement.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expr_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the expression to use during sorting (not %0)</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+          <parameter name="asc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for an ascending sorting</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="collation_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">name of the collation to use when sorting, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_set_distinct"
+              c:identifier="gda_sql_builder_select_set_distinct"
+              version="4.2">
+        <doc xml:whitespace="preserve">Defines (if @distinct is %TRUE) or removes (if @distinct is %FALSE) a DISTINCT clause
+for a SELECT statement.
+
+If @distinct is %TRUE, then the ID of an expression can be specified as the @expr_id argument:
+if not %0, this is the expression used to apply the DISTINCT clause on (the resuting SQL
+will then usually be "... DISTINCT ON &amp;lt;expression&amp;gt;...").</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="distinct" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set to %TRUE to have the DISTINCT requirement</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="expr_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the DISTINCT ON expression, or %0 if no expression is to be used. It is ignored if @distinct is %FALSE.</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_set_having"
+              c:identifier="gda_sql_builder_select_set_having"
+              version="4.2">
+        <doc xml:whitespace="preserve">Valid only for: SELECT statements
+
+Sets the HAVING condition of the statement</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cond_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the expression to set as HAVING condition, or 0 to unset any previous HAVING condition</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_set_limit"
+              c:identifier="gda_sql_builder_select_set_limit"
+              version="4.2">
+        <doc xml:whitespace="preserve">If @limit_count_expr_id is not %0, defines the maximum number of rows in the #GdaDataModel
+resulting from the execution of the built statement. In this case, the offset from which the
+rows must be collected can be defined by the @limit_offset_expr_id expression if not %0 (note that
+this feature may not be supported by all the database providers).
+
+If @limit_count_expr_id is %0, then removes any LIMIT which may have been imposed by a previous
+call to this method.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="limit_count_expr_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the LIMIT expression, or %0</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+          <parameter name="limit_offset_expr_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the OFFSET expression, or %0</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_table"
+              c:identifier="gda_sql_builder_set_table"
+              version="4.2">
+        <doc xml:whitespace="preserve">Valid only for: INSERT, UPDATE, DELETE statements
+
+Sets the name of the table on which the built statement operates.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="table_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a table name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_where"
+              c:identifier="gda_sql_builder_set_where"
+              version="4.2">
+        <doc xml:whitespace="preserve">Valid only for: UPDATE, DELETE, SELECT statements
+
+Sets the WHERE condition of the statement</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cond_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of the expression to set as WHERE condition, or 0 to unset any previous WHERE condition</doc>
+            <type name="SqlBuilderId" c:type="GdaSqlBuilderId"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="stmt-type"
+                introspectable="0"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Specifies the type of statement to be built, can only be
+GDA_SQL_STATEMENT_SELECT, GDA_SQL_STATEMENT_INSERT, GDA_SQL_STATEMENT_UPDATE
+or GDA_SQL_STATEMENT_DELETE</doc>
+        <type/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="SqlBuilderPrivate" c:type="GdaSqlBuilderPrivate*"/>
+      </field>
+    </class>
+    <record name="SqlBuilderClass"
+            c:type="GdaSqlBuilderClass"
+            glib:is-gtype-struct-for="SqlBuilder">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="SqlBuilderError" c:type="GdaSqlBuilderError">
+      <member name="wrong_type_error"
+              value="0"
+              c:identifier="GDA_SQL_BUILDER_WRONG_TYPE_ERROR"/>
+      <member name="misuse_error"
+              value="1"
+              c:identifier="GDA_SQL_BUILDER_MISUSE_ERROR"/>
+    </enumeration>
+    <record name="SqlBuilderPrivate"
+            c:type="GdaSqlBuilderPrivate"
+            disguised="1">
+    </record>
+    <record name="SqlCase" c:type="GdaSqlCase" introspectable="0">
+      <doc xml:whitespace="preserve">This structure represents a CASE WHEN... construct</doc>
+      <field name="any" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart"/>
+      </field>
+      <field name="base_expr" writable="1">
+        <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+      </field>
+      <field name="when_expr_list" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="then_expr_list" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="else_expr" writable="1">
+        <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="copy" c:identifier="gda_sql_case_copy" introspectable="0">
+        <return-value>
+          <type name="SqlCase" c:type="GdaSqlCase*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gda_sql_case_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="serialize" c:identifier="gda_sql_case_serialize">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <function name="new" c:identifier="gda_sql_case_new" introspectable="0">
+        <return-value>
+          <type name="SqlCase" c:type="GdaSqlCase*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <enumeration name="SqlError"
+                 c:type="GdaSqlError"
+                 glib:error-domain="gda_sql_error">
+      <member name="structure_contents_error"
+              value="0"
+              c:identifier="GDA_SQL_STRUCTURE_CONTENTS_ERROR"/>
+      <member name="malformed_identifier_error"
+              value="1"
+              c:identifier="GDA_SQL_MALFORMED_IDENTIFIER_ERROR"/>
+      <member name="missing_identifier_error"
+              value="2"
+              c:identifier="GDA_SQL_MISSING_IDENTIFIER_ERROR"/>
+      <member name="validation_error"
+              value="3"
+              c:identifier="GDA_SQL_VALIDATION_ERROR"/>
+    </enumeration>
+    <record name="SqlExpr"
+            c:type="GdaSqlExpr"
+            introspectable="0"
+            glib:type-name="GdaSqlExpr"
+            glib:get-type="gda_sql_expr_get_type"
+            c:symbol-prefix="sql_expr">
+      <doc xml:whitespace="preserve">This structure contains any expression, either as a value (the @value part is set),
+a variable (the @param_spec is set), or as other types of expressions.
+
+Note 1 about the @value field: if the expression represents a string value in the SQL statement,
+the string itself must be represented as it would be in the actual SQL, ie. it should be
+escaped (accordingly to the escaping rules of the database which will use the SQL). For 
+example a string representing the &lt;userinput&gt;'joe'&lt;/userinput&gt; value should be
+&lt;userinput&gt;"'joe'"&lt;/userinput&gt; and not &lt;userinput&gt;"joe"&lt;/userinput&gt;.
+
+Note 2 about the @value field: if the expression represents an SQL identifier (such as a table
+or field name), then the @value_is_ident should be set to %TRUE, and @value should be a string
+which may contain double quotes around SQL identifiers which also are reserved keywords or which
+are case sensitive.</doc>
+      <field name="any" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </field>
+      <field name="param_spec" writable="1">
+        <type c:type="GdaSqlParamSpec*"/>
+      </field>
+      <field name="func" writable="1">
+        <type name="SqlFunction" c:type="GdaSqlFunction*"/>
+      </field>
+      <field name="cond" writable="1">
+        <type name="SqlOperation" c:type="GdaSqlOperation*"/>
+      </field>
+      <field name="select" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+      </field>
+      <field name="case_s" writable="1">
+        <type name="SqlCase" c:type="GdaSqlCase*"/>
+      </field>
+      <field name="cast_as" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="value_is_ident" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved3" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved4" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gda_sql_expr_new"
+                   introspectable="0">
+        <return-value transfer-ownership="full">
+          <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="gda_sql_expr_copy" introspectable="0">
+        <return-value transfer-ownership="full">
+          <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gda_sql_expr_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="serialize" c:identifier="gda_sql_expr_serialize">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="take_select" c:identifier="gda_sql_expr_take_select">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <type name="SqlStatement" c:type="GdaSqlStatement*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="SqlField" c:type="GdaSqlField" introspectable="0">
+      <doc xml:whitespace="preserve">any: 
+This structure represents the name of a table's field.</doc>
+      <field name="any" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart"/>
+      </field>
+      <field name="field_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="validity_meta_table_column" writable="1">
+        <type name="MetaTableColumn" c:type="GdaMetaTableColumn*"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="copy" c:identifier="gda_sql_field_copy" introspectable="0">
+        <return-value>
+          <type name="SqlField" c:type="GdaSqlField*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gda_sql_field_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="serialize" c:identifier="gda_sql_field_serialize">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="take_name" c:identifier="gda_sql_field_take_name">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <function name="new" c:identifier="gda_sql_field_new" introspectable="0">
+        <return-value>
+          <type name="SqlField" c:type="GdaSqlField*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <callback name="SqlForeachFunc"
+              c:type="GdaSqlForeachFunc"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Specifies the type of functions passed to gda_sql_any_part_foreach().</doc>
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="part" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current #GdaSqlAnyPart node</doc>
+          <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data passed to gda_sql_any_part_foreach().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="SqlFunction" c:type="GdaSqlFunction" introspectable="0">
+      <doc xml:whitespace="preserve">This structure represents a function or an aggregate with zero or more arguments.</doc>
+      <field name="any" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart"/>
+      </field>
+      <field name="function_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="args_list" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="check_clean" c:identifier="gda_sql_function_check_clean">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="gda_sql_function_copy"
+              introspectable="0">
+        <return-value>
+          <type name="SqlFunction" c:type="GdaSqlFunction*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gda_sql_function_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="serialize" c:identifier="gda_sql_function_serialize">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="take_args_list"
+              c:identifier="gda_sql_function_take_args_list">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="args" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_name" c:identifier="gda_sql_function_take_name">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <function name="new"
+                c:identifier="gda_sql_function_new"
+                introspectable="0">
+        <return-value>
+          <type name="SqlFunction" c:type="GdaSqlFunction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <bitfield name="SqlIdentifierStyle" c:type="GdaSqlIdentifierStyle">
+      <doc xml:whitespace="preserve">Specifies how SQL identifiers are represented by a specific database</doc>
+      <member name="lower_case"
+              value="1"
+              c:identifier="GDA_SQL_IDENTIFIERS_LOWER_CASE"/>
+      <member name="upper_case"
+              value="2"
+              c:identifier="GDA_SQL_IDENTIFIERS_UPPER_CASE"/>
+    </bitfield>
+    <record name="SqlOperation" c:type="GdaSqlOperation" introspectable="0">
+      <doc xml:whitespace="preserve">This structure represents an operation between one or more operands.</doc>
+      <field name="any" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart"/>
+      </field>
+      <field name="operator_type" writable="1">
+        <type name="SqlOperatorType" c:type="GdaSqlOperatorType"/>
+      </field>
+      <field name="operands" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="copy"
+              c:identifier="gda_sql_operation_copy"
+              introspectable="0">
+        <return-value>
+          <type name="SqlOperation" c:type="GdaSqlOperation*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gda_sql_operation_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="serialize" c:identifier="gda_sql_operation_serialize">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <function name="new"
+                c:identifier="gda_sql_operation_new"
+                introspectable="0">
+        <return-value>
+          <type name="SqlOperation" c:type="GdaSqlOperation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="operator_from_string"
+                c:identifier="gda_sql_operation_operator_from_string">
+        <return-value transfer-ownership="none">
+          <type name="SqlOperatorType" c:type="GdaSqlOperatorType"/>
+        </return-value>
+        <parameters>
+          <parameter name="op" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="operator_to_string"
+                c:identifier="gda_sql_operation_operator_to_string">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="op" transfer-ownership="none">
+            <type name="SqlOperatorType" c:type="GdaSqlOperatorType"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <enumeration name="SqlOperatorType" c:type="GdaSqlOperatorType">
+      <member name="and" value="0" c:identifier="GDA_SQL_OPERATOR_TYPE_AND"/>
+      <member name="or" value="1" c:identifier="GDA_SQL_OPERATOR_TYPE_OR"/>
+      <member name="eq" value="2" c:identifier="GDA_SQL_OPERATOR_TYPE_EQ"/>
+      <member name="is" value="3" c:identifier="GDA_SQL_OPERATOR_TYPE_IS"/>
+      <member name="like" value="4" c:identifier="GDA_SQL_OPERATOR_TYPE_LIKE"/>
+      <member name="between"
+              value="5"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_BETWEEN"/>
+      <member name="gt" value="6" c:identifier="GDA_SQL_OPERATOR_TYPE_GT"/>
+      <member name="lt" value="7" c:identifier="GDA_SQL_OPERATOR_TYPE_LT"/>
+      <member name="geq" value="8" c:identifier="GDA_SQL_OPERATOR_TYPE_GEQ"/>
+      <member name="leq" value="9" c:identifier="GDA_SQL_OPERATOR_TYPE_LEQ"/>
+      <member name="diff"
+              value="10"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_DIFF"/>
+      <member name="regexp"
+              value="11"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_REGEXP"/>
+      <member name="regexp_ci"
+              value="12"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_REGEXP_CI"/>
+      <member name="not_regexp"
+              value="13"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_NOT_REGEXP"/>
+      <member name="not_regexp_ci"
+              value="14"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_NOT_REGEXP_CI"/>
+      <member name="similar"
+              value="15"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_SIMILAR"/>
+      <member name="isnull"
+              value="16"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_ISNULL"/>
+      <member name="isnotnull"
+              value="17"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_ISNOTNULL"/>
+      <member name="not" value="18" c:identifier="GDA_SQL_OPERATOR_TYPE_NOT"/>
+      <member name="in" value="19" c:identifier="GDA_SQL_OPERATOR_TYPE_IN"/>
+      <member name="notin"
+              value="20"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_NOTIN"/>
+      <member name="concat"
+              value="21"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_CONCAT"/>
+      <member name="plus"
+              value="22"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_PLUS"/>
+      <member name="minus"
+              value="23"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_MINUS"/>
+      <member name="star"
+              value="24"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_STAR"/>
+      <member name="div" value="25" c:identifier="GDA_SQL_OPERATOR_TYPE_DIV"/>
+      <member name="rem" value="26" c:identifier="GDA_SQL_OPERATOR_TYPE_REM"/>
+      <member name="bitand"
+              value="27"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_BITAND"/>
+      <member name="bitor"
+              value="28"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_BITOR"/>
+      <member name="bitnot"
+              value="29"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_BITNOT"/>
+      <member name="ilike"
+              value="30"
+              c:identifier="GDA_SQL_OPERATOR_TYPE_ILIKE"/>
+    </enumeration>
+    <class name="SqlParser"
+           c:symbol-prefix="sql_parser"
+           c:type="GdaSqlParser"
+           parent="GObject.Object"
+           glib:type-name="GdaSqlParser"
+           glib:get-type="gda_sql_parser_get_type"
+           glib:type-struct="SqlParserClass">
+      <implements name="Lockable"/>
+      <constructor name="new" c:identifier="gda_sql_parser_new">
+        <doc xml:whitespace="preserve">Creates a new #GdaSqlParser object</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new object</doc>
+          <type name="SqlParser" c:type="GdaSqlParser*"/>
+        </return-value>
+      </constructor>
+      <function name="error_quark" c:identifier="gda_sql_parser_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <method name="parse_file_as_batch"
+              c:identifier="gda_sql_parser_parse_file_as_batch"
+              throws="1">
+        <doc xml:whitespace="preserve">Parse @filename's contents and creates a #GdaBatch object which contains all the
+#GdaStatement objects created while parsing (one object per SQL statement).
+
+ filename's contents are parsed and #GdaStatement objects are created as long as no error is found. If an error is found
+at some point, then the parsing stops, @error may be set and %NULL is returned
+
+if @sql is %NULL, then the returned #GdaBatch object will contain no statement.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaBatch object, or %NULL if an error occurred</doc>
+          <type name="Batch" c:type="GdaBatch*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the file to parse</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_string"
+              c:identifier="gda_sql_parser_parse_string"
+              throws="1">
+        <doc xml:whitespace="preserve">Parses @sql and creates a #GdaStatement statement from the first SQL statement contained in @sql: if @sql
+contains more than one statement, then the remaining part of the string is not parsed at all, and @remain (if
+not %NULL) will point at the first non parsed character.
+
+To include variables in the @sql string, see the
+&lt;link linkend="GdaSqlParser.description"&gt;GdaSqlParser's object description&lt;/link&gt;.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaStatement object, or %NULL if an error occurred</doc>
+          <type name="Statement" c:type="GdaStatement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sql" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the SQL string to parse</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="remain"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store a pointer to remaining part of @sql in case @sql has multiple statement, or %NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_string_as_batch"
+              c:identifier="gda_sql_parser_parse_string_as_batch"
+              throws="1">
+        <doc xml:whitespace="preserve">Parse @sql and creates a #GdaBatch object which contains all the #GdaStatement objects created while parsing (one object
+per SQL statement). Empty statements (composed of spaces only) do not appear in the resulting object.
+
+ sql is parsed and #GdaStatement objects are created as long as no error is found in @sql. If an error is found
+at some point, then the parsing stops and @remain may contain a non %NULL pointer, @error may be set, and %NULL
+is returned.
+
+if @sql is %NULL, then the returned #GdaBatch object will contain no statement.
+
+To include variables in the @sql string, see the
+&lt;link linkend="GdaSqlParser.description"&gt;GdaSqlParser's object description&lt;/link&gt;.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaBatch object, or %NULL if an error occurred</doc>
+          <type name="Batch" c:type="GdaBatch*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sql" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the SQL string to parse</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="remain"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store a pointer to remaining part of @sql in case an error occurred while parsing @sql, or %NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_overflow_error"
+              c:identifier="gda_sql_parser_set_overflow_error">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_syntax_error"
+              c:identifier="gda_sql_parser_set_syntax_error">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="column-error" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="line-error" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="mode" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="tokenizer-flavour"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="SqlParserPrivate" c:type="GdaSqlParserPrivate*"/>
+      </field>
+    </class>
+    <record name="SqlParserClass"
+            c:type="GdaSqlParserClass"
+            glib:is-gtype-struct-for="SqlParser">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="delim_alloc" introspectable="0">
+        <callback name="delim_alloc" introspectable="0">
+          <return-value>
+            <type name="gpointer" c:type="void*"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delim_free">
+        <callback name="delim_free">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="gpointer" c:type="void*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delim_trace">
+        <callback name="delim_trace">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="gpointer" c:type="void*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delim_parse" introspectable="0">
+        <callback name="delim_parse" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="gpointer" c:type="void*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type c:type="GdaSqlParserIface*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delim_tokens_trans">
+        <type name="gint" c:type="gint*"/>
+      </field>
+      <field name="parser_alloc" introspectable="0">
+        <callback name="parser_alloc" introspectable="0">
+          <return-value>
+            <type name="gpointer" c:type="void*"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parser_free">
+        <callback name="parser_free">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="gpointer" c:type="void*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parser_trace">
+        <callback name="parser_trace">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="gpointer" c:type="void*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parser_parse" introspectable="0">
+        <callback name="parser_parse" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="gpointer" c:type="void*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter transfer-ownership="none">
+              <type c:type="GdaSqlParserIface*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parser_tokens_trans">
+        <type name="gint" c:type="gint*"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="SqlParserError" c:type="GdaSqlParserError">
+      <member name="syntax_error"
+              value="0"
+              c:identifier="GDA_SQL_PARSER_SYNTAX_ERROR"/>
+      <member name="overflow_error"
+              value="1"
+              c:identifier="GDA_SQL_PARSER_OVERFLOW_ERROR"/>
+      <member name="empty_sql_error"
+              value="2"
+              c:identifier="GDA_SQL_PARSER_EMPTY_SQL_ERROR"/>
+    </enumeration>
+    <enumeration name="SqlParserFlavour" c:type="GdaSqlParserFlavour">
+      <member name="standard"
+              value="0"
+              c:identifier="GDA_SQL_PARSER_FLAVOUR_STANDARD"/>
+      <member name="sqlite"
+              value="1"
+              c:identifier="GDA_SQL_PARSER_FLAVOUR_SQLITE"/>
+      <member name="mysql"
+              value="2"
+              c:identifier="GDA_SQL_PARSER_FLAVOUR_MYSQL"/>
+      <member name="oracle"
+              value="3"
+              c:identifier="GDA_SQL_PARSER_FLAVOUR_ORACLE"/>
+      <member name="postgresql"
+              value="4"
+              c:identifier="GDA_SQL_PARSER_FLAVOUR_POSTGRESQL"/>
+    </enumeration>
+    <enumeration name="SqlParserMode" c:type="GdaSqlParserMode">
+      <member name="parse" value="0" c:identifier="GDA_SQL_PARSER_MODE_PARSE"/>
+      <member name="delimit"
+              value="1"
+              c:identifier="GDA_SQL_PARSER_MODE_DELIMIT"/>
+    </enumeration>
+    <record name="SqlParserPrivate" c:type="GdaSqlParserPrivate" disguised="1">
+    </record>
+    <record name="SqlRenderingContext" c:type="GdaSqlRenderingContext">
+      <field name="flags" writable="1">
+        <type name="StatementSqlFlag" c:type="GdaStatementSqlFlag"/>
+      </field>
+      <field name="params" writable="1">
+        <type name="Set" c:type="GdaSet*"/>
+      </field>
+      <field name="params_used" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="provider" writable="1">
+        <type name="ServerProvider" c:type="GdaServerProvider*"/>
+      </field>
+      <field name="cnc" writable="1">
+        <type name="Connection" c:type="GdaConnection*"/>
+      </field>
+      <field name="render_value" writable="1">
+        <type name="SqlRenderingValue" c:type="GdaSqlRenderingValue"/>
+      </field>
+      <field name="render_param_spec" introspectable="0" writable="1">
+        <type name="SqlRenderingPSpecFunc" c:type="GdaSqlRenderingPSpecFunc"/>
+      </field>
+      <field name="render_expr" introspectable="0" writable="1">
+        <type name="SqlRenderingExpr" c:type="GdaSqlRenderingExpr"/>
+      </field>
+      <field name="render_unknown" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_begin" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_rollback" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_commit" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_savepoint" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_rollback_savepoint" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_delete_savepoint" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_select" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_insert" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_delete" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_update" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_compound" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_field" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_table" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_function" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_operation" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_case" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_select_field" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_select_target" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_select_join" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_select_from" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_select_order" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="render_distinct" introspectable="0" writable="1">
+        <type name="SqlRenderingFunc" c:type="GdaSqlRenderingFunc"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved5" introspectable="0">
+        <callback name="_gda_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved6" introspectable="0">
+        <callback name="_gda_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved7" introspectable="0">
+        <callback name="_gda_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="SqlRenderingExpr"
+              c:type="GdaSqlRenderingExpr"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Rendering function type to render a #GdaSqlExpr</doc>
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="expr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GdaSqlExpr to render</doc>
+          <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the rendering context</doc>
+          <type name="SqlRenderingContext" c:type="GdaSqlRenderingContext*"/>
+        </parameter>
+        <parameter name="is_default" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to a #gboolean which is set to TRUE if value should be considered as a default value</doc>
+          <type name="gboolean" c:type="gboolean*"/>
+        </parameter>
+        <parameter name="is_null" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to a #gboolean which is set to TRUE if value should be considered as NULL</doc>
+          <type name="gboolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="SqlRenderingFunc"
+              c:type="GdaSqlRenderingFunc"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Function to render any #GdaSqlAnyPart.</doc>
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaSqlAnyPart pointer, to be cast to the correct type depending on which part the function has to render</doc>
+          <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the rendering context</doc>
+          <type name="SqlRenderingContext" c:type="GdaSqlRenderingContext*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="SqlRenderingPSpecFunc"
+              c:type="GdaSqlRenderingPSpecFunc"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Rendering function type to render a #GdaSqlParamSpec</doc>
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GdaSqlParamSpec to render</doc>
+          <type c:type="GdaSqlParamSpec*"/>
+        </parameter>
+        <parameter name="expr" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">#GdaSqlExpr which may hold the default value for the parameter, or %NULL</doc>
+          <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the rendering context</doc>
+          <type name="SqlRenderingContext" c:type="GdaSqlRenderingContext*"/>
+        </parameter>
+        <parameter name="is_default" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to a #gboolean which is set to TRUE if value should be considered as a default value</doc>
+          <type name="gboolean" c:type="gboolean*"/>
+        </parameter>
+        <parameter name="is_null" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to a #gboolean which is set to TRUE if value should be considered as NULL</doc>
+          <type name="gboolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="SqlRenderingValue"
+              c:type="GdaSqlRenderingValue"
+              throws="1">
+      <doc xml:whitespace="preserve">Rendering function type to render a #GValue</doc>
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GValue to render</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the rendering context</doc>
+          <type name="SqlRenderingContext" c:type="GdaSqlRenderingContext*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="SqlReservedKeywordsFunc"
+              c:type="GdaSqlReservedKeywordsFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="word" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="SqlSelectField"
+            c:type="GdaSqlSelectField"
+            introspectable="0">
+      <doc xml:whitespace="preserve">This structure represents a selected item in a SELECT statement (when executed, the returned data set
+will have one column per selected item). Note that the @table_name and 
+ field_name field parts &lt;emphasis&gt;will be&lt;/emphasis&gt; overwritten by &amp;LIBGDA;,
+set the value of @expr-&gt;value instead.</doc>
+      <field name="any" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart"/>
+      </field>
+      <field name="expr" writable="1">
+        <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+      </field>
+      <field name="field_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="table_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="as" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="validity_meta_object" writable="1">
+        <type name="MetaDbObject" c:type="GdaMetaDbObject*"/>
+      </field>
+      <field name="validity_meta_table_column" writable="1">
+        <type name="MetaTableColumn" c:type="GdaMetaTableColumn*"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="copy"
+              c:identifier="gda_sql_select_field_copy"
+              introspectable="0">
+        <return-value>
+          <type name="SqlSelectField" c:type="GdaSqlSelectField*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gda_sql_select_field_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="serialize" c:identifier="gda_sql_select_field_serialize">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="take_alias" c:identifier="gda_sql_select_field_take_alias">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alias" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_expr"
+              c:identifier="gda_sql_select_field_take_expr"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expr" transfer-ownership="none">
+            <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_star_value"
+              c:identifier="gda_sql_select_field_take_star_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <function name="new"
+                c:identifier="gda_sql_select_field_new"
+                introspectable="0">
+        <return-value>
+          <type name="SqlSelectField" c:type="GdaSqlSelectField*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <record name="SqlSelectFrom" c:type="GdaSqlSelectFrom" introspectable="0">
+      <doc xml:whitespace="preserve">This structure represents the FROM clause of a SELECT statement, it lists targets and joins</doc>
+      <field name="any" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart"/>
+      </field>
+      <field name="targets" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="SqlSelectTarget"/>
+        </type>
+      </field>
+      <field name="joins" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="SqlSelectJoin"/>
+        </type>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="copy"
+              c:identifier="gda_sql_select_from_copy"
+              introspectable="0">
+        <return-value>
+          <type name="SqlSelectFrom" c:type="GdaSqlSelectFrom*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gda_sql_select_from_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="serialize" c:identifier="gda_sql_select_from_serialize">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="take_new_join"
+              c:identifier="gda_sql_select_from_take_new_join"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="join" transfer-ownership="none">
+            <type name="SqlSelectJoin" c:type="GdaSqlSelectJoin*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_new_target"
+              c:identifier="gda_sql_select_from_take_new_target"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <type name="SqlSelectTarget" c:type="GdaSqlSelectTarget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <function name="new"
+                c:identifier="gda_sql_select_from_new"
+                introspectable="0">
+        <return-value>
+          <type name="SqlSelectFrom" c:type="GdaSqlSelectFrom*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <record name="SqlSelectJoin" c:type="GdaSqlSelectJoin" introspectable="0">
+      <doc xml:whitespace="preserve">This structure represents a join between two targets in a SELECT statement.</doc>
+      <field name="any" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="SqlSelectJoinType" c:type="GdaSqlSelectJoinType"/>
+      </field>
+      <field name="position" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="expr" writable="1">
+        <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+      </field>
+      <field name="use" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="copy"
+              c:identifier="gda_sql_select_join_copy"
+              introspectable="0">
+        <return-value>
+          <type name="SqlSelectJoin" c:type="GdaSqlSelectJoin*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gda_sql_select_join_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="serialize" c:identifier="gda_sql_select_join_serialize">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <function name="new"
+                c:identifier="gda_sql_select_join_new"
+                introspectable="0">
+        <return-value>
+          <type name="SqlSelectJoin" c:type="GdaSqlSelectJoin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="type_to_string"
+                c:identifier="gda_sql_select_join_type_to_string">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="SqlSelectJoinType" c:type="GdaSqlSelectJoinType"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <enumeration name="SqlSelectJoinType" c:type="GdaSqlSelectJoinType">
+      <member name="cross" value="0" c:identifier="GDA_SQL_SELECT_JOIN_CROSS"/>
+      <member name="natural"
+              value="1"
+              c:identifier="GDA_SQL_SELECT_JOIN_NATURAL"/>
+      <member name="inner" value="2" c:identifier="GDA_SQL_SELECT_JOIN_INNER"/>
+      <member name="left" value="3" c:identifier="GDA_SQL_SELECT_JOIN_LEFT"/>
+      <member name="right" value="4" c:identifier="GDA_SQL_SELECT_JOIN_RIGHT"/>
+      <member name="full" value="5" c:identifier="GDA_SQL_SELECT_JOIN_FULL"/>
+    </enumeration>
+    <record name="SqlSelectOrder"
+            c:type="GdaSqlSelectOrder"
+            introspectable="0">
+      <doc xml:whitespace="preserve">This structure represents the ordering of a SELECT statement.</doc>
+      <field name="any" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart"/>
+      </field>
+      <field name="expr" writable="1">
+        <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+      </field>
+      <field name="asc" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="collation_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="copy"
+              c:identifier="gda_sql_select_order_copy"
+              introspectable="0">
+        <return-value>
+          <type name="SqlSelectOrder" c:type="GdaSqlSelectOrder*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gda_sql_select_order_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="serialize" c:identifier="gda_sql_select_order_serialize">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <function name="new"
+                c:identifier="gda_sql_select_order_new"
+                introspectable="0">
+        <return-value>
+          <type name="SqlSelectOrder" c:type="GdaSqlSelectOrder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <record name="SqlSelectTarget"
+            c:type="GdaSqlSelectTarget"
+            introspectable="0">
+      <doc xml:whitespace="preserve">This structure represents a target used to fetch data from in a SELECT statement; it can represent a table or
+a sub select. Note that the @table_name
+part &lt;emphasis&gt;will be&lt;/emphasis&gt; overwritten by &amp;LIBGDA;,
+set the value of @expr-&gt;value instead.</doc>
+      <field name="any" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart"/>
+      </field>
+      <field name="expr" writable="1">
+        <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+      </field>
+      <field name="table_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="as" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="validity_meta_object" writable="1">
+        <type name="MetaDbObject" c:type="GdaMetaDbObject*"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="copy"
+              c:identifier="gda_sql_select_target_copy"
+              introspectable="0">
+        <return-value>
+          <type name="SqlSelectTarget" c:type="GdaSqlSelectTarget*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gda_sql_select_target_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="serialize" c:identifier="gda_sql_select_target_serialize">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="take_alias"
+              c:identifier="gda_sql_select_target_take_alias">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alias" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_select"
+              c:identifier="gda_sql_select_target_take_select">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stmt" transfer-ownership="none">
+            <type name="SqlStatement" c:type="GdaSqlStatement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_table_name"
+              c:identifier="gda_sql_select_target_take_table_name">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <function name="new"
+                c:identifier="gda_sql_select_target_new"
+                introspectable="0">
+        <return-value>
+          <type name="SqlSelectTarget" c:type="GdaSqlSelectTarget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <record name="SqlStatement" c:type="GdaSqlStatement" disguised="1">
+      <doc xml:whitespace="preserve">This structure is the top level structure encapsulating several type of statements.</doc>
+      <method name="compound_set_type"
+              c:identifier="gda_sql_statement_compound_set_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="SqlStatementCompoundType"
+                  c:type="GdaSqlStatementCompoundType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="compound_take_stmt"
+              c:identifier="gda_sql_statement_compound_take_stmt">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="s" transfer-ownership="none">
+            <type name="SqlStatement" c:type="GdaSqlStatement*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="SqlStatementCheckValidityData"
+            c:type="GdaSqlStatementCheckValidityData"
+            introspectable="0">
+      <doc xml:whitespace="preserve">Validation against a dictionary</doc>
+      <field name="cnc" writable="1">
+        <type name="Connection" c:type="GdaConnection*"/>
+      </field>
+      <field name="store" writable="1">
+        <type name="MetaStore" c:type="GdaMetaStore*"/>
+      </field>
+      <field name="mstruct" writable="1">
+        <type name="MetaStruct" c:type="GdaMetaStruct*"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved3" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved4" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <record name="SqlStatementCompound"
+            c:type="GdaSqlStatementCompound"
+            introspectable="0">
+      <field name="any" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart"/>
+      </field>
+      <field name="compound_type" writable="1">
+        <type name="SqlStatementCompoundType"
+              c:type="GdaSqlStatementCompoundType"/>
+      </field>
+      <field name="stmt_list" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <enumeration name="SqlStatementCompoundType"
+                 c:type="GdaSqlStatementCompoundType">
+      <member name="union"
+              value="0"
+              c:identifier="GDA_SQL_STATEMENT_COMPOUND_UNION"/>
+      <member name="union_all"
+              value="1"
+              c:identifier="GDA_SQL_STATEMENT_COMPOUND_UNION_ALL"/>
+      <member name="intersect"
+              value="2"
+              c:identifier="GDA_SQL_STATEMENT_COMPOUND_INTERSECT"/>
+      <member name="intersect_all"
+              value="3"
+              c:identifier="GDA_SQL_STATEMENT_COMPOUND_INTERSECT_ALL"/>
+      <member name="except"
+              value="4"
+              c:identifier="GDA_SQL_STATEMENT_COMPOUND_EXCEPT"/>
+      <member name="except_all"
+              value="5"
+              c:identifier="GDA_SQL_STATEMENT_COMPOUND_EXCEPT_ALL"/>
+    </enumeration>
+    <record name="SqlStatementContentsInfo"
+            c:type="GdaSqlStatementContentsInfo"
+            introspectable="0">
+      <doc xml:whitespace="preserve">Contents' infos</doc>
+      <field name="type" writable="1">
+        <type name="SqlStatementType" c:type="GdaSqlStatementType"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="construct">
+        <callback name="construct">
+          <return-value>
+            <type name="gpointer" c:type="gpointer"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="free">
+        <callback name="free">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy">
+        <callback name="copy">
+          <return-value>
+            <type name="gpointer" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="serialize">
+        <callback name="serialize">
+          <return-value transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="check_structure_func" writable="1">
+        <type name="SqlForeachFunc" c:type="GdaSqlForeachFunc"/>
+      </field>
+      <field name="check_validity_func" writable="1">
+        <type name="SqlForeachFunc" c:type="GdaSqlForeachFunc"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved3" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved4" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <record name="SqlStatementDelete"
+            c:type="GdaSqlStatementDelete"
+            disguised="1">
+    </record>
+    <record name="SqlStatementInsert"
+            c:type="GdaSqlStatementInsert"
+            disguised="1">
+      <doc xml:whitespace="preserve">The statement is an INSERT statement, any kind of INSERT statement can be represented using this structure 
+(if this is not the case
+then report a bug).
+&lt;mediaobject&gt;
+&lt;imageobject role="html"&gt;
+&lt;imagedata fileref="stmt-insert1.png" format="PNG"/&gt;
+&lt;/imageobject&gt;
+&lt;caption&gt;
+&lt;para&gt;
+Example of a #GdaSqlStatement having a #GdaSqlStatementInsert as its contents with 2 lists of values
+to insert.
+&lt;/para&gt;
+&lt;/caption&gt;
+&lt;/mediaobject&gt;
+&lt;mediaobject&gt;
+&lt;imageobject role="html"&gt;
+&lt;imagedata fileref="stmt-insert2.png" format="PNG"/&gt;
+&lt;/imageobject&gt;
+&lt;caption&gt;
+&lt;para&gt;
+Another example of a #GdaSqlStatement having a #GdaSqlStatementInsert as its contents, using a SELECT
+to express the values to insert.
+&lt;/para&gt;
+&lt;/caption&gt;
+&lt;/mediaobject&gt;</doc>
+    </record>
+    <record name="SqlStatementSelect"
+            c:type="GdaSqlStatementSelect"
+            disguised="1">
+    </record>
+    <record name="SqlStatementTransaction"
+            c:type="GdaSqlStatementTransaction"
+            disguised="1">
+      <doc xml:whitespace="preserve">The statement is a transaction management related statement (BEGIN, ROLLBACK, etc). The #GdaSqlStatementTransaction structure
+does not hold enough information to reconstruct the complete SQL statement (some information may be missing) - the aim of this
+structure is to identify a minimum set of information in the transaction statement. Note that the complete SQL which created the
+statement should be available in the #GdaSqlStatement structure which encapsulates this structure.</doc>
+    </record>
+    <enumeration name="SqlStatementType" c:type="GdaSqlStatementType">
+      <doc xml:whitespace="preserve">Known types of statements</doc>
+      <member name="select" value="0" c:identifier="GDA_SQL_STATEMENT_SELECT"/>
+      <member name="insert" value="1" c:identifier="GDA_SQL_STATEMENT_INSERT"/>
+      <member name="update" value="2" c:identifier="GDA_SQL_STATEMENT_UPDATE"/>
+      <member name="delete" value="3" c:identifier="GDA_SQL_STATEMENT_DELETE"/>
+      <member name="compound"
+              value="4"
+              c:identifier="GDA_SQL_STATEMENT_COMPOUND"/>
+      <member name="begin" value="5" c:identifier="GDA_SQL_STATEMENT_BEGIN"/>
+      <member name="rollback"
+              value="6"
+              c:identifier="GDA_SQL_STATEMENT_ROLLBACK"/>
+      <member name="commit" value="7" c:identifier="GDA_SQL_STATEMENT_COMMIT"/>
+      <member name="savepoint"
+              value="8"
+              c:identifier="GDA_SQL_STATEMENT_SAVEPOINT"/>
+      <member name="rollback_savepoint"
+              value="9"
+              c:identifier="GDA_SQL_STATEMENT_ROLLBACK_SAVEPOINT"/>
+      <member name="delete_savepoint"
+              value="10"
+              c:identifier="GDA_SQL_STATEMENT_DELETE_SAVEPOINT"/>
+      <member name="unknown"
+              value="11"
+              c:identifier="GDA_SQL_STATEMENT_UNKNOWN"/>
+      <member name="none" value="12" c:identifier="GDA_SQL_STATEMENT_NONE"/>
+    </enumeration>
+    <record name="SqlStatementUnknown"
+            c:type="GdaSqlStatementUnknown"
+            disguised="1">
+      <doc xml:whitespace="preserve">Represents any statement which type is not identified (any DDL statement or database specific dialect)</doc>
+    </record>
+    <record name="SqlStatementUpdate"
+            c:type="GdaSqlStatementUpdate"
+            disguised="1">
+    </record>
+    <record name="SqlTable" c:type="GdaSqlTable" introspectable="0">
+      <doc xml:whitespace="preserve">This structure represents the name of a table.</doc>
+      <field name="any" writable="1">
+        <type name="SqlAnyPart" c:type="GdaSqlAnyPart"/>
+      </field>
+      <field name="table_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="validity_meta_object" writable="1">
+        <type name="MetaDbObject" c:type="GdaMetaDbObject*"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="copy" c:identifier="gda_sql_table_copy" introspectable="0">
+        <return-value>
+          <type name="SqlTable" c:type="GdaSqlTable*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gda_sql_table_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="serialize" c:identifier="gda_sql_table_serialize">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="take_name" c:identifier="gda_sql_table_take_name">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <function name="new" c:identifier="gda_sql_table_new" introspectable="0">
+        <return-value>
+          <type name="SqlTable" c:type="GdaSqlTable*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <class name="Statement"
+           c:symbol-prefix="statement"
+           c:type="GdaStatement"
+           parent="GObject.Object"
+           glib:type-name="GdaStatement"
+           glib:get-type="gda_statement_get_type"
+           glib:type-struct="StatementClass">
+      <constructor name="new" c:identifier="gda_statement_new">
+        <doc xml:whitespace="preserve">Creates a new #GdaStatement object</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new object</doc>
+          <type name="Statement" c:type="GdaStatement*"/>
+        </return-value>
+      </constructor>
+      <function name="error_quark" c:identifier="gda_statement_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <virtual-method name="checked">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="checked" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="check_structure"
+              c:identifier="gda_statement_check_structure"
+              throws="1">
+        <doc xml:whitespace="preserve">Checks that @stmt's structure is correct.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @stmt's structure is correct</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="check_validity"
+              c:identifier="gda_statement_check_validity"
+              throws="1">
+        <doc xml:whitespace="preserve">If @cnc is not %NULL then checks that every object (table, field, function) used in @stmt 
+actually exists in @cnc's database
+
+If @cnc is %NULL, then cleans anything related to @cnc in @stmt.
+
+See gda_sql_statement_check_validity() for more information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if every object actually exists in @cnc's database</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gda_statement_copy">
+        <doc xml:whitespace="preserve">Copy constructor</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a the new copy of @orig</doc>
+          <type name="Statement" c:type="GdaStatement*"/>
+        </return-value>
+      </method>
+      <method name="get_parameters"
+              c:identifier="gda_statement_get_parameters"
+              throws="1">
+        <doc xml:whitespace="preserve">Get a new #GdaSet object which groups all the execution parameters
+which @stmt needs. This new object is returned though @out_params.
+
+Note that if @stmt does not need any parameter, then @out_params is set to %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="out_params"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a place to store a new #GdaSet object, or %NULL</doc>
+            <type name="Set" c:type="GdaSet**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_statement_type"
+              c:identifier="gda_statement_get_statement_type">
+        <doc xml:whitespace="preserve">Get the type of statement held by @stmt. It returns GDA_SQL_STATEMENT_NONE if
+ stmt does not hold any statement</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the statement type</doc>
+          <type name="SqlStatementType" c:type="GdaSqlStatementType"/>
+        </return-value>
+      </method>
+      <method name="is_useless" c:identifier="gda_statement_is_useless">
+        <doc xml:whitespace="preserve">Tells if @stmt is composed only of spaces (that is it has no real SQL code), and is completely
+useless as such.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if executing @stmt does nothing</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="normalize"
+              c:identifier="gda_statement_normalize"
+              throws="1">
+        <doc xml:whitespace="preserve">"Normalizes" some parts of @stmt, see gda_sql_statement_normalize() for more
+information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaConnection object</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rewrite_for_default_values"
+              c:identifier="gda_statement_rewrite_for_default_values"
+              version="4.2"
+              introspectable="0"
+              throws="1">
+        <doc xml:whitespace="preserve">Rewrites @stmt and creates a new #GdaSqlStatement where all the variables which are to a DEFAULT value
+(as returned by gda_holder_value_is_default()) are either removed from the statement (if @remove
+is %TRUE) or replaced by the "DEFAULT" keyword (if @remove is %FALSE).
+
+This function is only useful for database providers' implementations which have to deal with default
+values when executing statements, and is only relevant in the case of INSERT or UPDATE statements
+(in the latter case an error is returned if @remove is %TRUE).
+
+For example the &lt;programlisting&gt;&lt;![CDATA[INSERT INTO mytable (id, name) VALUES (23, ##name::string)]]&gt;&lt;/programlisting&gt;
+is re-written into &lt;programlisting&gt;&lt;![CDATA[INSERT INTO mytable (id, name) VALUES (23, DEFAULT)]]&gt;&lt;/programlisting&gt;
+if @remove is %FALSE and into &lt;programlisting&gt;&lt;![CDATA[INSERT INTO mytable (id) VALUES (23)]]&gt;&lt;/programlisting&gt;
+if @remove is %TRUE.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a new #GdaSqlStatement, or %NULL if an error occurred</doc>
+          <type name="SqlStatement" c:type="GdaSqlStatement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="params" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaSet containing the variable's values to be bound when executing @stmt</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+          <parameter name="remove" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set to %TRUE if DEFAULT fields are removed, of %FALSE if the "DEFAULT" keyword is used</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="serialize" c:identifier="gda_statement_serialize">
+        <doc xml:whitespace="preserve">Creates a string representing the contents of @stmt.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string containing the serialized version of @stmt</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="to_sql_extended"
+              c:identifier="gda_statement_to_sql_extended"
+              throws="1">
+        <doc xml:whitespace="preserve">Renders @stmt as an SQL statement, with some control on how it is rendered.
+
+If @cnc is not %NULL, then the rendered SQL will better be suited to be used by @cnc (in particular
+it may include some SQL tweaks and/or proprietary extensions specific to the database engine used by @cnc):
+in this case the result is similar to calling gda_connection_statement_to_sql().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string if no error occurred</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">parameters contained in a single #GdaSet object, or %NULL</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of flags to control the rendering</doc>
+            <type name="StatementSqlFlag" c:type="GdaStatementSqlFlag"/>
+          </parameter>
+          <parameter name="params_used"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="container"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a place to store the list of actual #GdaHolder objects in @params used to do the rendering, or %NULL</doc>
+            <type name="GLib.SList" c:type="GSList**">
+              <type name="Holder"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_sql_real"
+              c:identifier="gda_statement_to_sql_real"
+              throws="1">
+        <doc xml:whitespace="preserve">Renders @stmt to its SQL representation, using @context to specify how each part of @stmt must
+be rendered. This function is mainly used by database provider's implementations which require
+to specialize some aspects of SQL rendering to be adapted to the database,'s own SQL dialect
+(for example SQLite rewrites the 'FALSE' and 'TRUE' literals as '0' and 'NOT 0').</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string, or %NULL if an error occurred</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaSqlRenderingContext context</doc>
+            <type name="SqlRenderingContext" c:type="GdaSqlRenderingContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="structure" writable="1" transfer-ownership="none">
+        <type name="gpointer"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="StatementPrivate" c:type="GdaStatementPrivate*"/>
+      </field>
+      <glib:signal name="checked" when="first">
+        <doc xml:whitespace="preserve">Gets emitted whenever the structure and contents
+of @stmt have been verified (emitted after gda_statement_check_validity()).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Connection"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="reset" when="first">
+        <doc xml:whitespace="preserve">Gets emitted whenever the @stmt has changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="StatementClass"
+            c:type="GdaStatementClass"
+            glib:is-gtype-struct-for="Statement">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="checked">
+        <callback name="checked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stmt" transfer-ownership="none">
+              <type name="Statement" c:type="GdaStatement*"/>
+            </parameter>
+            <parameter name="cnc" transfer-ownership="none">
+              <type name="Connection" c:type="GdaConnection*"/>
+            </parameter>
+            <parameter name="checked" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reset">
+        <callback name="reset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stmt" transfer-ownership="none">
+              <type name="Statement" c:type="GdaStatement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="StatementError" c:type="GdaStatementError">
+      <member name="parse_error"
+              value="0"
+              c:identifier="GDA_STATEMENT_PARSE_ERROR"/>
+      <member name="syntax_error"
+              value="1"
+              c:identifier="GDA_STATEMENT_SYNTAX_ERROR"/>
+      <member name="no_cnc_error"
+              value="2"
+              c:identifier="GDA_STATEMENT_NO_CNC_ERROR"/>
+      <member name="cnc_closed_error"
+              value="3"
+              c:identifier="GDA_STATEMENT_CNC_CLOSED_ERROR"/>
+      <member name="exec_error"
+              value="4"
+              c:identifier="GDA_STATEMENT_EXEC_ERROR"/>
+      <member name="param_type_error"
+              value="5"
+              c:identifier="GDA_STATEMENT_PARAM_TYPE_ERROR"/>
+      <member name="param_error"
+              value="6"
+              c:identifier="GDA_STATEMENT_PARAM_ERROR"/>
+    </enumeration>
+    <bitfield name="StatementModelUsage" c:type="GdaStatementModelUsage">
+      <doc xml:whitespace="preserve">These flags specify how the #GdaDataModel returned when executing a #GdaStatement will be used</doc>
+      <member name="random_access"
+              value="1"
+              c:identifier="GDA_STATEMENT_MODEL_RANDOM_ACCESS"/>
+      <member name="cursor_forward"
+              value="2"
+              c:identifier="GDA_STATEMENT_MODEL_CURSOR_FORWARD"/>
+      <member name="cursor_backward"
+              value="4"
+              c:identifier="GDA_STATEMENT_MODEL_CURSOR_BACKWARD"/>
+      <member name="cursor"
+              value="6"
+              c:identifier="GDA_STATEMENT_MODEL_CURSOR"/>
+      <member name="allow_noparam"
+              value="8"
+              c:identifier="GDA_STATEMENT_MODEL_ALLOW_NOPARAM"/>
+    </bitfield>
+    <record name="StatementPrivate" c:type="GdaStatementPrivate" disguised="1">
+    </record>
+    <bitfield name="StatementSqlFlag" c:type="GdaStatementSqlFlag">
+      <doc xml:whitespace="preserve">Specifies rendering options</doc>
+      <member name="params_as_values"
+              value="0"
+              c:identifier="GDA_STATEMENT_SQL_PARAMS_AS_VALUES"/>
+      <member name="pretty" value="1" c:identifier="GDA_STATEMENT_SQL_PRETTY"/>
+      <member name="params_long"
+              value="2"
+              c:identifier="GDA_STATEMENT_SQL_PARAMS_LONG"/>
+      <member name="params_short"
+              value="4"
+              c:identifier="GDA_STATEMENT_SQL_PARAMS_SHORT"/>
+      <member name="params_as_colon"
+              value="8"
+              c:identifier="GDA_STATEMENT_SQL_PARAMS_AS_COLON"/>
+      <member name="params_as_dollar"
+              value="16"
+              c:identifier="GDA_STATEMENT_SQL_PARAMS_AS_DOLLAR"/>
+      <member name="params_as_qmark"
+              value="32"
+              c:identifier="GDA_STATEMENT_SQL_PARAMS_AS_QMARK"/>
+      <member name="params_as_uqmark"
+              value="64"
+              c:identifier="GDA_STATEMENT_SQL_PARAMS_AS_UQMARK"/>
+    </bitfield>
+    <constant name="TIMEZONE_INVALID"
+              value="86400"
+              c:type="GDA_TIMEZONE_INVALID">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="ThreadNotification" c:type="GdaThreadNotification">
+      <doc xml:whitespace="preserve">A notification to be read through the #GIOChannel which is returned by gda_thread_wrapper_get_io_channel(),
+for example:
+&lt;programlisting&gt;&lt;![CDATA[
+gboolean
+wrapper_ioc_cb (GIOChannel *source, GIOCondition condition, gpointer data)
+{
+GIOStatus status;
+gsize nread;
+GdaThreadNotification notif;
+if (condition &amp; G_IO_IN) {
+status = g_io_channel_read_chars (source, (gchar*) &amp;notif, sizeof (notif), &amp;nread, NULL);
+if ((status != G_IO_STATUS_NORMAL) || (nread != sizeof (notif)))
+goto onerror;
+switch (notif.type) {
+case GDA_THREAD_NOTIFICATION_JOB:
+check_for_wrapper_result (bcnc);
+break;
+case GDA_THREAD_NOTIFICATION_SIGNAL:
+gda_thread_wrapper_iterate (bcnc-&gt;priv-&gt;wrapper, FALSE);
+break;
+default:
+goto onerror;
+break;
+}
+}
+if (condition &amp; (G_IO_ERR | G_IO_HUP | G_IO_NVAL))
+goto onerror;
+return TRUE; // keep callback
+
+onerror:
+g_io_channel_shutdown (bcnc-&gt;priv-&gt;ioc, FALSE, NULL);
+return FALSE; // removed callback
+}
+
+{
+[...]
+GIOChannel *ioc;
+ioc = gda_thread_wrapper_get_io_channel (wrapper);
+if (!ioc)
+[handle error]
+else {
+guint watch_id;
+watch_id = g_io_add_watch (ioc, G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+(GIOFunc) wrapper_ioc_cb, NULL);
+}
+}
+]]&gt;&lt;/programlisting&gt;</doc>
+      <field name="type" writable="1">
+        <type name="ThreadNotificationType"
+              c:type="GdaThreadNotificationType"/>
+      </field>
+      <field name="job_id" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <enumeration name="ThreadNotificationType"
+                 c:type="GdaThreadNotificationType">
+      <doc xml:whitespace="preserve">Defines the kind of notification which can be obtained when reading from te #GIOChannel
+returned by gda_thread_wrapper_get_io_channel().</doc>
+      <member name="job" value="1" c:identifier="GDA_THREAD_NOTIFICATION_JOB"/>
+      <member name="signal"
+              value="2"
+              c:identifier="GDA_THREAD_NOTIFICATION_SIGNAL"/>
+    </enumeration>
+    <class name="ThreadWrapper"
+           c:symbol-prefix="thread_wrapper"
+           c:type="GdaThreadWrapper"
+           parent="GObject.Object"
+           glib:type-name="GdaThreadWrapper"
+           glib:get-type="gda_thread_wrapper_get_type"
+           glib:type-struct="ThreadWrapperClass">
+      <constructor name="new"
+                   c:identifier="gda_thread_wrapper_new"
+                   version="4.2">
+        <doc xml:whitespace="preserve">Creates a new #GdaThreadWrapper object</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaThreadWrapper object, or %NULL if threads are not supported/enabled</doc>
+          <type name="ThreadWrapper" c:type="GdaThreadWrapper*"/>
+        </return-value>
+      </constructor>
+      <function name="error_quark"
+                c:identifier="gda_thread_wrapper_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <method name="cancel"
+              c:identifier="gda_thread_wrapper_cancel"
+              version="4.2">
+        <doc xml:whitespace="preserve">Cancels a job not yet executed. This may fail for the following reasons:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;the job @id could not be found, either because it has already been treated or because
+it does not exist or because it was created in another thread&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;the job @id is currently being treated by the worker thread&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the job has been cancelled, or %FALSE in any other case.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of a job as returned by gda_thread_wrapper_execute() or gda_thread_wrapper_execute_void()</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_raw"
+              c:identifier="gda_thread_wrapper_connect_raw"
+              version="4.2">
+        <doc xml:whitespace="preserve">Connects a callback function to a signal for a particular object. The difference with g_signal_connect() and
+similar functions are:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;the @callback argument is not a #GCallback function, so the callback signature is not
+dependent on the signal itself&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;the signal handler must not have to return any value&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;the @callback function will be called asynchronously, the caller may need to use 
+gda_thread_wrapper_iterate() to get the notification&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;if @private_job and @private_thread control in which case the signal is propagated.&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+Also note that signal handling is done asynchronously: when emitted in the worker thread, it
+will be "queued" to be processed in the user thread when it has the chance (when gda_thread_wrapper_iterate()
+is called directly or indirectly). The side effect is that the callback function is usually
+called long after the object emitting the signal has finished emitting it.
+
+To disconnect a signal handler, don't use any of the g_signal_handler_*() functions but the
+gda_thread_wrapper_disconnect() method.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the handler ID</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="instance" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the instance to connect to</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="sig_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string of the form "signal-name::detail"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="private_thread" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set to %TRUE if @callback is to be invoked only if the signal has been emitted while in @wrapper's private sub thread (ie. used when @wrapper is executing some functions specified by gda_thread_wrapper_execute() or gda_thread_wrapper_execute_void()), and to %FALSE if the callback is to be invoked whenever the signal is emitted, independently of the thread in which the signal is emitted.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="private_job" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set to %TRUE if @callback is to be invoked only if the signal has been emitted when a job created for the calling thread is being executed, and to %FALSE if @callback has to be called whenever the @sig_name signal is emitted by @instance. Note that this argument is not taken into account if @private_thread is set to %FALSE.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="5">
+            <doc xml:whitespace="preserve">a #GdaThreadWrapperCallback function</doc>
+            <type name="ThreadWrapperCallback"
+                  c:type="GdaThreadWrapperCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @callback's calls</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="disconnect"
+              c:identifier="gda_thread_wrapper_disconnect"
+              version="4.2">
+        <doc xml:whitespace="preserve">Disconnects the emission of a signal, does the opposite of gda_thread_wrapper_connect_raw().
+
+As soon as this method returns, the callback function set when gda_thread_wrapper_connect_raw()
+was called will not be called anymore (even if the object has emitted the signal in the worker
+thread and this signal has not been handled in the user thread).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a handler ID, as returned by gda_thread_wrapper_connect_raw()</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="execute"
+              c:identifier="gda_thread_wrapper_execute"
+              version="4.2"
+              introspectable="0"
+              throws="1">
+        <doc xml:whitespace="preserve">Make @wrapper execute the @func function with the @arg argument (along with a #GError which is not @error)
+in the sub thread managed by @wrapper. To execute a function which does not return anything,
+use gda_thread_wrapper_execute_void().
+
+This method returns immediately, and the caller then needs to use gda_thread_wrapper_fetch_result() to
+check if the execution has finished and get the result.
+
+Once @func's execution is finished, if @arg is not %NULL, the @arg_destroy_func destruction function is called
+on @arg. This call occurs in the thread calling gda_thread_wrapper_fetch_result().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the job ID, or 0 if an error occurred</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     destroy="2">
+            <doc xml:whitespace="preserve">the function to execute, not %NULL</doc>
+            <type name="ThreadWrapperFunc" c:type="GdaThreadWrapperFunc"/>
+          </parameter>
+          <parameter name="arg" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">argument to pass to @func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="arg_destroy_func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">function to be called when the execution has finished, to destroy @arg, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="execute_void"
+              c:identifier="gda_thread_wrapper_execute_void"
+              version="4.2"
+              throws="1">
+        <doc xml:whitespace="preserve">Make @wrapper execute the @func function with the @arg argument (along with a #GError which is not @error)
+in the sub thread managed by @wrapper. To execute a function which returns some pointer,
+use gda_thread_wrapper_execute().
+
+This method returns immediately. Calling gda_thread_wrapper_fetch_result() is not necessary as @func
+does not return any result. However, it may be necessary to call gda_thread_wrapper_iterate() to give @wrapper a
+chance to execute the @arg_destroy_func function if not %NULL (note that gda_thread_wrapper_iterate() is
+called by gda_thread_wrapper_fetch_result() itself).
+
+Once @func's execution is finished, if @arg is not %NULL, the @arg_destroy_func destruction function is called
+on @arg. This call occurs in the thread calling gda_thread_wrapper_fetch_result().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the job ID, or 0 if an error occurred</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     destroy="2">
+            <doc xml:whitespace="preserve">the function to execute, not %NULL</doc>
+            <type name="ThreadWrapperVoidFunc"
+                  c:type="GdaThreadWrapperVoidFunc"/>
+          </parameter>
+          <parameter name="arg" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">argument to pass to @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="arg_destroy_func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">function to be called when the execution has finished, to destroy @arg, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fetch_result"
+              c:identifier="gda_thread_wrapper_fetch_result"
+              version="4.2"
+              throws="1">
+        <doc xml:whitespace="preserve">Use this method to check if the execution of a function is finished. The function's execution must have
+been requested using gda_thread_wrapper_execute().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pointer returned by the execution, or %NULL if no result is available</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="may_lock" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if this funct must lock the caller untill a result is available</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="exp_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">ID of the job for which a result is expected</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_io_channel"
+              c:identifier="gda_thread_wrapper_get_io_channel"
+              version="4.2.9">
+        <doc xml:whitespace="preserve">Allow @wrapper to notify when an execution job is finished, by making its exec ID
+readable through a new #GIOChannel. This function is useful when the notification needs
+to be included into a main loop. This also notifies that signals (emitted by objects in
+ wrapper's internal thread) are available.
+
+The returned #GIOChannel will have something to read everytime an execution job is finished
+for an execution job submitted from the calling thread. The user whould read #GdaThreadNotification
+structures from the channel and analyse its contents to call gda_thread_wrapper_iterate()
+or gda_thread_wrapper_fetch_result().
+
+Note1: the new communication channel will only be operational for jobs submitted after this
+function returns, and for signals which have been connected after this function returns. A safe
+practice is to call this function before the @wrapper object has been used.
+
+Note2: this function will return the same #GIOChannel everytime it's called from the same thread.
+
+Note3: if the usage of the returned #GIOChannel reveals an error, then g_io_channel_shutdown() and
+g_io_channel_unref() should be called on the #GIOChannel to let @wrapper know it should not use
+that object anymore.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GIOChannel, or %NULL if it could not be created</doc>
+          <type name="GLib.IOChannel" c:type="GIOChannel*"/>
+        </return-value>
+      </method>
+      <method name="get_waiting_size"
+              c:identifier="gda_thread_wrapper_get_waiting_size"
+              version="4.2">
+        <doc xml:whitespace="preserve">Use this method to query the number of functions which have been queued to be executed
+but which have not yet been executed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of jobs not yet executed</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="iterate"
+              c:identifier="gda_thread_wrapper_iterate"
+              version="4.2">
+        <doc xml:whitespace="preserve">This method gives @wrapper a chance to check if some functions to be executed have finished
+&lt;emphasis&gt;for the calling thread&lt;/emphasis&gt;. In this case it handles the execution result and
+makes it ready to be processed using gda_thread_wrapper_fetch_result().
+
+This method also allows @wrapper to handle signals which may have been emitted by objects
+while in the worker thread, and call the callback function specified when gda_thread_wrapper_connect_raw()
+was used.
+
+If @may_block is %TRUE, then it will block untill there is one finished execution 
+(functions returning void and signals are ignored regarding this argument).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="may_block" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the call may block</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="steal_signal"
+              c:identifier="gda_thread_wrapper_steal_signal"
+              version="4.2">
+        <doc xml:whitespace="preserve">Requests that the signal which ID is @id (which has been obtained using gda_thread_wrapper_connect_raw())
+be treated by the calling thread instead of by the thread in which gda_thread_wrapper_connect_raw()
+was called.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a signal ID</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_io_channel"
+              c:identifier="gda_thread_wrapper_unset_io_channel"
+              version="4.2.9">
+        <doc xml:whitespace="preserve">Does the opposite of gda_thread_wrapper_get_io_channel()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ThreadWrapperPrivate" c:type="GdaThreadWrapperPrivate*"/>
+      </field>
+    </class>
+    <callback name="ThreadWrapperCallback" c:type="GdaThreadWrapperCallback">
+      <doc xml:whitespace="preserve">Specifies the type of function to be passed to gda_thread_wrapper_connect_raw()</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="wrapper" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaThreadWrapper</doc>
+          <type name="ThreadWrapper" c:type="GdaThreadWrapper*"/>
+        </parameter>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the instance which emitted the signal</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signame" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the signal being emitted</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of GValue in @param_values</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">array of @n_param_values GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="gda_reserved" transfer-ownership="none">
+          <doc xml:whitespace="preserve">reserved</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the data (which is the @data argument passed to gda_thread_wrapper_connect_raw())</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ThreadWrapperClass"
+            c:type="GdaThreadWrapperClass"
+            glib:is-gtype-struct-for="ThreadWrapper">
+      <field name="object_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ThreadWrapperError" c:type="GdaThreadWrapperError">
+      <member name="thread_wrapper_unknown_error"
+              value="0"
+              c:identifier="GDA_THREAD_WRAPPER_UNKNOWN_ERROR"/>
+    </enumeration>
+    <callback name="ThreadWrapperFunc"
+              c:type="GdaThreadWrapperFunc"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Specifies the type of function to be passed to gda_thread_wrapper_execute().</doc>
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="arg" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to the data (which is the @arg argument passed to gda_thread_wrapper_execute_void())</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ThreadWrapperPrivate"
+            c:type="GdaThreadWrapperPrivate"
+            disguised="1">
+    </record>
+    <callback name="ThreadWrapperVoidFunc"
+              c:type="GdaThreadWrapperVoidFunc"
+              throws="1">
+      <doc xml:whitespace="preserve">Specifies the type of function to be passed to gda_thread_wrapper_execute_void().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="arg" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the data (which is the @arg argument passed to gda_thread_wrapper_execute_void())</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Time"
+            c:type="GdaTime"
+            glib:type-name="GdaTime"
+            glib:get-type="gda_time_get_type"
+            c:symbol-prefix="time">
+      <field name="hour" writable="1">
+        <type name="gushort" c:type="gushort"/>
+      </field>
+      <field name="minute" writable="1">
+        <type name="gushort" c:type="gushort"/>
+      </field>
+      <field name="second" writable="1">
+        <type name="gushort" c:type="gushort"/>
+      </field>
+      <field name="fraction" writable="1">
+        <type name="gulong" c:type="gulong"/>
+      </field>
+      <field name="timezone" writable="1">
+        <type name="glong" c:type="glong"/>
+      </field>
+      <method name="valid" c:identifier="gda_time_valid" version="4.2">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if #GdaTime is valid; %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <function name="copy" c:identifier="gda_time_copy">
+        <return-value transfer-ownership="full">
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="boxed" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="free" c:identifier="gda_time_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="boxed" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <record name="Timestamp"
+            c:type="GdaTimestamp"
+            glib:type-name="GdaTimestamp"
+            glib:get-type="gda_timestamp_get_type"
+            c:symbol-prefix="timestamp">
+      <field name="year" writable="1">
+        <type name="gshort" c:type="gshort"/>
+      </field>
+      <field name="month" writable="1">
+        <type name="gushort" c:type="gushort"/>
+      </field>
+      <field name="day" writable="1">
+        <type name="gushort" c:type="gushort"/>
+      </field>
+      <field name="hour" writable="1">
+        <type name="gushort" c:type="gushort"/>
+      </field>
+      <field name="minute" writable="1">
+        <type name="gushort" c:type="gushort"/>
+      </field>
+      <field name="second" writable="1">
+        <type name="gushort" c:type="gushort"/>
+      </field>
+      <field name="fraction" writable="1">
+        <type name="gulong" c:type="gulong"/>
+      </field>
+      <field name="timezone" writable="1">
+        <type name="glong" c:type="glong"/>
+      </field>
+      <method name="valid" c:identifier="gda_timestamp_valid" version="4.2">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if #GdaTimestamp is valid; %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <function name="copy" c:identifier="gda_timestamp_copy">
+        <return-value transfer-ownership="full">
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="boxed" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="free" c:identifier="gda_timestamp_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="boxed" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <enumeration name="TransactionIsolation" c:type="GdaTransactionIsolation">
+      <member name="unknown"
+              value="0"
+              c:identifier="GDA_TRANSACTION_ISOLATION_UNKNOWN"/>
+      <member name="read_committed"
+              value="1"
+              c:identifier="GDA_TRANSACTION_ISOLATION_READ_COMMITTED"/>
+      <member name="read_uncommitted"
+              value="2"
+              c:identifier="GDA_TRANSACTION_ISOLATION_READ_UNCOMMITTED"/>
+      <member name="repeatable_read"
+              value="3"
+              c:identifier="GDA_TRANSACTION_ISOLATION_REPEATABLE_READ"/>
+      <member name="serializable"
+              value="4"
+              c:identifier="GDA_TRANSACTION_ISOLATION_SERIALIZABLE"/>
+    </enumeration>
+    <class name="TransactionStatus"
+           c:symbol-prefix="transaction_status"
+           c:type="GdaTransactionStatus"
+           parent="GObject.Object"
+           glib:type-name="GdaTransactionStatus"
+           glib:get-type="gda_transaction_status_get_type"
+           glib:type-struct="TransactionStatusClass">
+      <constructor name="new" c:identifier="gda_transaction_status_new">
+        <doc xml:whitespace="preserve">Creates a new #GdaTransactionStatus object, which allows a fine-tune and
+full control of transactions to be used with providers.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created object.</doc>
+          <type name="TransactionStatus" c:type="GdaTransactionStatus*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name for the transaction</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_event_sql"
+              c:identifier="gda_transaction_status_add_event_sql"
+              introspectable="0">
+        <return-value>
+          <type name="TransactionStatusEvent"
+                c:type="GdaTransactionStatusEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sql" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="conn_event" transfer-ownership="none">
+            <type name="ConnectionEvent" c:type="GdaConnectionEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_event_sub"
+              c:identifier="gda_transaction_status_add_event_sub"
+              introspectable="0">
+        <return-value>
+          <type name="TransactionStatusEvent"
+                c:type="GdaTransactionStatusEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sub_trans" transfer-ownership="none">
+            <type name="TransactionStatus" c:type="GdaTransactionStatus*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_event_svp"
+              c:identifier="gda_transaction_status_add_event_svp"
+              introspectable="0">
+        <return-value>
+          <type name="TransactionStatusEvent"
+                c:type="GdaTransactionStatusEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="svp_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find" c:identifier="gda_transaction_status_find">
+        <return-value transfer-ownership="full">
+          <type name="TransactionStatus" c:type="GdaTransactionStatus*"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="destev" transfer-ownership="none">
+            <type name="TransactionStatusEvent"
+                  c:type="GdaTransactionStatusEvent**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_current"
+              c:identifier="gda_transaction_status_find_current">
+        <doc xml:whitespace="preserve">Find a pointer to the "current" _unnamed_ transaction, which is the last
+transaction if there are several nested transactions</doc>
+        <return-value transfer-ownership="full">
+          <type name="TransactionStatus" c:type="GdaTransactionStatus*"/>
+        </return-value>
+        <parameters>
+          <parameter name="destev" transfer-ownership="none">
+            <type name="TransactionStatusEvent"
+                  c:type="GdaTransactionStatusEvent**"/>
+          </parameter>
+          <parameter name="unnamed_only" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free_events"
+              c:identifier="gda_transaction_status_free_events">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="TransactionStatusEvent"
+                  c:type="GdaTransactionStatusEvent*"/>
+          </parameter>
+          <parameter name="free_after" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="isolation_level">
+        <type name="TransactionIsolation" c:type="GdaTransactionIsolation"/>
+      </field>
+      <field name="state">
+        <type name="TransactionStatusState"
+              c:type="GdaTransactionStatusState"/>
+      </field>
+      <field name="events">
+        <type name="GLib.List" c:type="GList*">
+          <type name="TransactionStatusEvent"/>
+        </type>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="TransactionStatusClass"
+            c:type="GdaTransactionStatusClass"
+            glib:is-gtype-struct-for="TransactionStatus">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="TransactionStatusEvent" c:type="GdaTransactionStatusEvent">
+      <field name="trans" writable="1">
+        <type name="TransactionStatus" c:type="GdaTransactionStatus*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="TransactionStatusEventType"
+              c:type="GdaTransactionStatusEventType"/>
+      </field>
+      <union name="pl" c:type="pl">
+        <field name="svp_name" writable="1">
+          <type name="utf8" c:type="gchar*"/>
+        </field>
+        <field name="sql" writable="1">
+          <type name="utf8" c:type="gchar*"/>
+        </field>
+        <field name="sub_trans" writable="1">
+          <type name="TransactionStatus" c:type="GdaTransactionStatus*"/>
+        </field>
+      </union>
+      <field name="conn_event" writable="1">
+        <type name="ConnectionEvent" c:type="GdaConnectionEvent*"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <enumeration name="TransactionStatusEventType"
+                 c:type="GdaTransactionStatusEventType">
+      <member name="savepoint"
+              value="0"
+              c:identifier="GDA_TRANSACTION_STATUS_EVENT_SAVEPOINT"/>
+      <member name="sql"
+              value="1"
+              c:identifier="GDA_TRANSACTION_STATUS_EVENT_SQL"/>
+      <member name="sub_transaction"
+              value="2"
+              c:identifier="GDA_TRANSACTION_STATUS_EVENT_SUB_TRANSACTION"/>
+    </enumeration>
+    <enumeration name="TransactionStatusState"
+                 c:type="GdaTransactionStatusState">
+      <member name="ok"
+              value="0"
+              c:identifier="GDA_TRANSACTION_STATUS_STATE_OK"/>
+      <member name="failed"
+              value="1"
+              c:identifier="GDA_TRANSACTION_STATUS_STATE_FAILED"/>
+    </enumeration>
+    <class name="Tree"
+           c:symbol-prefix="tree"
+           c:type="GdaTree"
+           parent="GObject.Object"
+           glib:type-name="GdaTree"
+           glib:get-type="gda_tree_get_type"
+           glib:type-struct="TreeClass">
+      <constructor name="new" c:identifier="gda_tree_new" version="4.2">
+        <doc xml:whitespace="preserve">Creates a new #GdaTree object</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaTree object</doc>
+          <type name="Tree" c:type="GdaTree*"/>
+        </return-value>
+      </constructor>
+      <function name="error_quark" c:identifier="gda_tree_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <virtual-method name="node_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="TreeNode" c:type="GdaTreeNode*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="node_deleted">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="node_has_child_toggled">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="TreeNode" c:type="GdaTreeNode*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="node_inserted">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="TreeNode" c:type="GdaTreeNode*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_manager"
+              c:identifier="gda_tree_add_manager"
+              version="4.2">
+        <doc xml:whitespace="preserve">Sets @manager as a top #GdaTreeManager object, which will be responsible for creating top level nodes in @tree.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="manager" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaTreeManager object</doc>
+            <type name="TreeManager" c:type="GdaTreeManager*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clean" c:identifier="gda_tree_clean" version="4.2">
+        <doc xml:whitespace="preserve">Removes any node in @tree</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="dump" c:identifier="gda_tree_dump" version="4.2">
+        <doc xml:whitespace="preserve">Dumps the contents of @tree to @stream, using a hierarchical view.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaTreeNode to start the dump from, or %NULL for a full dump</doc>
+            <type name="TreeNode" c:type="GdaTreeNode*"/>
+          </parameter>
+          <parameter name="stream" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a stream to send the dump to, or %NULL for STDOUT</doc>
+            <type name="gpointer" c:type="FILE*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_node" c:identifier="gda_tree_get_node" version="4.2">
+        <doc xml:whitespace="preserve">Locates a #GdaTreeNode using the @tree_path path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested #GdaTreeNode pointer, or %NULL if not found</doc>
+          <type name="TreeNode" c:type="GdaTreeNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tree_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">full path to the required nodes (if @use_names is %TRUE, then it must start with '/')</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="use_names" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE, then @tree_path will be interpreted as a unix style path, and if %FALSE, then @tree_path will be interpreted similarly to the #GtkTreePath's string representation.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_node_manager"
+              c:identifier="gda_tree_get_node_manager"
+              version="4.2">
+        <doc xml:whitespace="preserve">Get the #GdaTreeManager which created @node in @tree</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaTreeManager, or %NULL if @node is not present in @tree</doc>
+          <type name="TreeManager" c:type="GdaTreeManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaTreeNode present in @tree</doc>
+            <type name="TreeNode" c:type="GdaTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_node_path"
+              c:identifier="gda_tree_get_node_path"
+              version="4.2">
+        <doc xml:whitespace="preserve">Get the path associated to @node in @tree.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string, or %NULL if @node is not in @tree</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaTreeNode node in @tree</doc>
+            <type name="TreeNode" c:type="GdaTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_nodes_in_path"
+              c:identifier="gda_tree_get_nodes_in_path"
+              version="4.2">
+        <doc xml:whitespace="preserve">The returned list is a list of all the #GdaTreeNode nodes &lt;emphasis&gt;below&lt;/emphasis&gt; the node
+at the specified path.
+
+As a corner case if @tree_path is %NULL, then the returned list contains all the top level nodes.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a new list of #GdaTreeNode pointers, free it with g_slist_free()</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="TreeNode"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="tree_path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">full path to the required nodes (if @use_names is %TRUE, then it must start with '/'), or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="use_names" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE, then @tree_path will be interpreted as a unix style path, and if %FALSE, then @tree_path will be interpreted similarly to the #GtkTreePath's string representation.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute"
+              c:identifier="gda_tree_set_attribute"
+              version="4.2">
+        <doc xml:whitespace="preserve">Sets an attribute to @tree, which will be accessible to any node in it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">a function to be called when @attribute is not needed anymore, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_all"
+              c:identifier="gda_tree_update_all"
+              version="4.2"
+              throws="1">
+        <doc xml:whitespace="preserve">Requests that @tree be populated with nodes. If an error occurs, then @tree's contents is left
+unchanged, and otherwise @tree's previous contents is completely replaced by the new one.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="update_children"
+              c:identifier="gda_tree_update_children"
+              version="4.2.8"
+              throws="1">
+        <doc xml:whitespace="preserve">Update the children of @node in @tree (not recursively, to update recursively, use
+gda_tree_update_part()). If @node is %NULL then the top level nodes are updated.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdaTreeNode node in @tree, or %NULL</doc>
+            <type name="TreeNode" c:type="GdaTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_part"
+              c:identifier="gda_tree_update_part"
+              version="4.2"
+              throws="1">
+        <doc xml:whitespace="preserve">Requests that @tree be populated with nodes, starting from @node</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaTreeNode node in @tree</doc>
+            <type name="TreeNode" c:type="GdaTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="is-list" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Tells if the GdaTree is a list or a tree.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="TreePrivate" c:type="GdaTreePrivate*"/>
+      </field>
+      <glib:signal name="node-changed" when="last" version="4.2">
+        <doc xml:whitespace="preserve">Gets emitted when a @node has changed in @tree</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdaTreeNode which has changed</doc>
+            <type name="TreeNode"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="node-deleted" when="last" version="4.2">
+        <doc xml:whitespace="preserve">Gets emitted when a @node has been removed from @tree</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="node_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position the node held in @tree as a tree path</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="node-has-child-toggled" when="last" version="4.2">
+        <doc xml:whitespace="preserve">Gets emitted when a @node has has a child when it did not have any or when it
+does not have a ny children anymore when it had some</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdaTreeNode which changed from having children to being a leaf or the other way around</doc>
+            <type name="TreeNode"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="node-inserted" when="last" version="4.2">
+        <doc xml:whitespace="preserve">Gets emitted when a @node has been inserted in @tree</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdaTreeNode which has inserted</doc>
+            <type name="TreeNode"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="TreeClass"
+            c:type="GdaTreeClass"
+            glib:is-gtype-struct-for="Tree">
+      <field name="object_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="node_changed">
+        <callback name="node_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree" transfer-ownership="none">
+              <type name="Tree" c:type="GdaTree*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <type name="TreeNode" c:type="GdaTreeNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="node_inserted">
+        <callback name="node_inserted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree" transfer-ownership="none">
+              <type name="Tree" c:type="GdaTree*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <type name="TreeNode" c:type="GdaTreeNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="node_has_child_toggled">
+        <callback name="node_has_child_toggled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree" transfer-ownership="none">
+              <type name="Tree" c:type="GdaTree*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <type name="TreeNode" c:type="GdaTreeNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="node_deleted">
+        <callback name="node_deleted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree" transfer-ownership="none">
+              <type name="Tree" c:type="GdaTree*"/>
+            </parameter>
+            <parameter name="node_path" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TreeError" c:type="GdaTreeError">
+      <member name="tree_unknown_error"
+              value="0"
+              c:identifier="GDA_TREE_UNKNOWN_ERROR"/>
+    </enumeration>
+    <class name="TreeManager"
+           c:symbol-prefix="tree_manager"
+           c:type="GdaTreeManager"
+           parent="GObject.Object"
+           glib:type-name="GdaTreeManager"
+           glib:get-type="gda_tree_manager_get_type"
+           glib:type-struct="TreeManagerClass">
+      <constructor name="new_with_func"
+                   c:identifier="gda_tree_manager_new_with_func"
+                   version="4.2"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Use this method to create a new #GdaTreeManager if it's more convenient than subclassing; all is needed
+is the @update_func function which is responsible for creating or updating the children nodes of a specified #GdaTreeNode.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaTreeManager</doc>
+          <type name="TreeManager" c:type="GdaTreeManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="update_func" transfer-ownership="none" scope="call">
+            <doc xml:whitespace="preserve">the function to call when the manager object is requested to create or update its list of #GdaTreeNode nodes</doc>
+            <type name="TreeManagerNodesFunc"
+                  c:type="GdaTreeManagerNodesFunc"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="error_quark" c:identifier="gda_tree_manager_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <virtual-method name="update_children" introspectable="0" throws="1">
+        <return-value>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="TreeNode" c:type="GdaTreeNode*"/>
+          </parameter>
+          <parameter name="children_nodes" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+          <parameter name="out_error" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_manager"
+              c:identifier="gda_tree_manager_add_manager"
+              version="4.2">
+        <doc xml:whitespace="preserve">Adds a sub manager to @manager. Use this method to create the skeleton structure
+of a #GdaTree. Note that a single #GdaTreeManager can be used by several #GdaTree objects
+or several times in the same #GdaTree's structure.
+
+Please note that it's possible for @mgr and @sub to be the same object, but beware of the possible
+infinite recursive behaviour in this case when creating children nodes 
+(depending on the actual implementation of the #GdaTreeManager).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sub" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaTreeManager object to add</doc>
+            <type name="TreeManager" c:type="GdaTreeManager*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_new_node_attribute"
+              c:identifier="gda_tree_manager_add_new_node_attribute"
+              version="4.2">
+        <doc xml:whitespace="preserve">Requests that for any new node managed (eg. created) by @manager, a new attribute will be set. This allows
+one to customize the attributes of new nodes created by an existing #GdaTreeManager.
+
+As a side effect, if @value is %NULL, then the corresponding attribute, if it was set, is unset.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the attribute's value, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_node"
+              c:identifier="gda_tree_manager_create_node"
+              version="4.2">
+        <doc xml:whitespace="preserve">Requests that @manager creates a new #GdaTreeNode. The new node is not in any
+way linked to @manager yet, consider this method as a #GdaTreeNode factory.
+
+This method is usually used when implementing a #GdaTreeManagerNodesFunc function (to create nodes),
+or when subclassing the #GdaTreeManager.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaTreeNode</doc>
+          <type name="TreeNode" c:type="GdaTreeNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the parent the new node may have, or %NULL</doc>
+            <type name="TreeNode" c:type="GdaTreeNode*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">name given to the new node, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_managers"
+              c:identifier="gda_tree_manager_get_managers"
+              version="4.2">
+        <doc xml:whitespace="preserve">Get the list of sub managers which have already been added using gda_tree_manager_add_manager()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a list of #GdaTreeMenager which should not be modified.</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="TreeManager"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_node_create_func"
+              c:identifier="gda_tree_manager_get_node_create_func"
+              version="4.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the function used by @manager when creating new #GdaTreeNode nodes</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdaTreeManagerNodeFunc function, or %NULL if the default function is used</doc>
+          <type name="TreeManagerNodeFunc" c:type="GdaTreeManagerNodeFunc"/>
+        </return-value>
+      </method>
+      <method name="set_node_create_func"
+              c:identifier="gda_tree_manager_set_node_create_func"
+              version="4.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the function to be called when a new node is being created by @manager. If @func is %NULL
+then each created node will be a #GdaTreeNode object.
+
+Specifying a custom #GdaTreeManagerNodeFunc function for example allows one to use
+specialized sub-classed #GdaTreeNode objects.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call">
+            <doc xml:whitespace="preserve">a #GdaTreeManagerNodeFunc function pointer, or %NULL</doc>
+            <type name="TreeManagerNodeFunc" c:type="GdaTreeManagerNodeFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="func"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This property specifies the function which needs to be called when the list of #GdaTreeNode nodes
+managed has to be updated</doc>
+        <type name="gpointer"/>
+      </property>
+      <property name="recursive"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This property specifies if, when initially creating nodes or updating the list of nodes,
+the tree manager shoud also request that each node it has created or updated also
+initially create or update their children.
+
+This property can typically set to FALSE if the process of creating children nodes is lenghty
+and needs to be postponed while an event occurs.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="TreeManagerPrivate" c:type="GdaTreeManagerPrivate*"/>
+      </field>
+    </class>
+    <record name="TreeManagerClass"
+            c:type="GdaTreeManagerClass"
+            glib:is-gtype-struct-for="TreeManager">
+      <field name="object_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="update_children" introspectable="0">
+        <callback name="update_children" introspectable="0" throws="1">
+          <return-value>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="TreeManager" c:type="GdaTreeManager*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <type name="TreeNode" c:type="GdaTreeNode*"/>
+            </parameter>
+            <parameter name="children_nodes" transfer-ownership="none">
+              <type name="GLib.SList" c:type="GSList*">
+                <type name="gpointer" c:type="gpointer"/>
+              </type>
+            </parameter>
+            <parameter name="out_error" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TreeManagerError" c:type="GdaTreeManagerError">
+      <member name="tree_manager_unknown_error"
+              value="0"
+              c:identifier="GDA_TREE_MANAGER_UNKNOWN_ERROR"/>
+    </enumeration>
+    <callback name="TreeManagerNodeFunc"
+              c:type="GdaTreeManagerNodeFunc"
+              introspectable="0">
+      <return-value>
+        <type name="TreeNode" c:type="GdaTreeNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="manager" transfer-ownership="none">
+          <type name="TreeManager" c:type="GdaTreeManager*"/>
+        </parameter>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="TreeNode" c:type="GdaTreeNode*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TreeManagerNodesFunc"
+              c:type="GdaTreeManagerNodesFunc"
+              introspectable="0"
+              throws="1">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="manager" transfer-ownership="none">
+          <type name="TreeManager" c:type="GdaTreeManager*"/>
+        </parameter>
+        <parameter name="node" transfer-ownership="none">
+          <type name="TreeNode" c:type="GdaTreeNode*"/>
+        </parameter>
+        <parameter name="children_nodes" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="out_error" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TreeManagerPrivate"
+            c:type="GdaTreeManagerPrivate"
+            disguised="1">
+    </record>
+    <class name="TreeMgrColumns"
+           c:symbol-prefix="tree_mgr_columns"
+           c:type="GdaTreeMgrColumns"
+           parent="TreeManager"
+           glib:type-name="GdaTreeMgrColumns"
+           glib:get-type="gda_tree_mgr_columns_get_type"
+           glib:type-struct="TreeMgrColumnsClass">
+      <constructor name="new"
+                   c:identifier="gda_tree_mgr_columns_new"
+                   version="4.2">
+        <doc xml:whitespace="preserve">Creates a new #GdaTreeManager object which will add one tree node for each
+column in the table named @table_name in the @schema schema.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaTreeManager object</doc>
+          <type name="TreeManager" c:type="GdaTreeManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaConnection object</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="schema" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a schema name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="table_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the table</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="connection"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Defines the #GdaConnection to display information for. Necessary upon construction unless
+the #GdaTreeMgrColumns:meta-store property is specified instead.</doc>
+        <type name="Connection"/>
+      </property>
+      <property name="meta-store"
+                version="4.2.4"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Defines the #GdaMetaStore to extract information from. Necessary upon construction unless
+the #GdaTreeMgrColumns:connection property is specified instead. This property has
+priority over the GdaTreeMgrColumns:connection property.</doc>
+        <type name="MetaStore"/>
+      </property>
+      <property name="schema"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If no set, then the table name will be fetched from the parent node using the "schema" attribute</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="table-name"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If no set, then the table name will be fetched from the parent node using the "table_name" attribute</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="object">
+        <type name="TreeManager" c:type="GdaTreeManager"/>
+      </field>
+      <field name="priv">
+        <type name="TreeMgrColumnsPriv" c:type="GdaTreeMgrColumnsPriv*"/>
+      </field>
+    </class>
+    <record name="TreeMgrColumnsClass"
+            c:type="GdaTreeMgrColumnsClass"
+            glib:is-gtype-struct-for="TreeMgrColumns">
+      <field name="object_class">
+        <type name="TreeManagerClass" c:type="GdaTreeManagerClass"/>
+      </field>
+    </record>
+    <record name="TreeMgrColumnsPriv"
+            c:type="GdaTreeMgrColumnsPriv"
+            disguised="1">
+    </record>
+    <class name="TreeMgrLabel"
+           c:symbol-prefix="tree_mgr_label"
+           c:type="GdaTreeMgrLabel"
+           parent="TreeManager"
+           glib:type-name="GdaTreeMgrLabel"
+           glib:get-type="gda_tree_mgr_label_get_type"
+           glib:type-struct="TreeMgrLabelClass">
+      <constructor name="new"
+                   c:identifier="gda_tree_mgr_label_new"
+                   version="4.2">
+        <doc xml:whitespace="preserve">Creates a new #GdaTreeManager object which will add one tree node labelled @label</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaTreeManager object</doc>
+          <type name="TreeManager" c:type="GdaTreeManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a label string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="label"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="object">
+        <type name="TreeManager" c:type="GdaTreeManager"/>
+      </field>
+      <field name="priv">
+        <type name="TreeMgrLabelPriv" c:type="GdaTreeMgrLabelPriv*"/>
+      </field>
+    </class>
+    <record name="TreeMgrLabelClass"
+            c:type="GdaTreeMgrLabelClass"
+            glib:is-gtype-struct-for="TreeMgrLabel">
+      <field name="object_class">
+        <type name="TreeManagerClass" c:type="GdaTreeManagerClass"/>
+      </field>
+    </record>
+    <record name="TreeMgrLabelPriv" c:type="GdaTreeMgrLabelPriv" disguised="1">
+    </record>
+    <class name="TreeMgrSchemas"
+           c:symbol-prefix="tree_mgr_schemas"
+           c:type="GdaTreeMgrSchemas"
+           parent="TreeManager"
+           glib:type-name="GdaTreeMgrSchemas"
+           glib:get-type="gda_tree_mgr_schemas_get_type"
+           glib:type-struct="TreeMgrSchemasClass">
+      <constructor name="new"
+                   c:identifier="gda_tree_mgr_schemas_new"
+                   version="4.2">
+        <doc xml:whitespace="preserve">Creates a new #GdaTreeManager object which will add one tree node for each database schema found
+in @cnc.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaTreeManager object</doc>
+          <type name="TreeManager" c:type="GdaTreeManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaConnection object</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="connection"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Defines the #GdaConnection to display information for. Necessary upon construction unless
+the #GdaTreeMgrSchema:meta-store property is specified instead.</doc>
+        <type name="Connection"/>
+      </property>
+      <property name="meta-store"
+                version="4.2.4"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Defines the #GdaMetaStore to extract information from. Necessary upon construction unless
+the #GdaTreeMgrSchema:connection property is specified instead. This property has
+priority over the GdaTreeMgrSchema:connection property.</doc>
+        <type name="MetaStore"/>
+      </property>
+      <field name="object">
+        <type name="TreeManager" c:type="GdaTreeManager"/>
+      </field>
+      <field name="priv">
+        <type name="TreeMgrSchemasPriv" c:type="GdaTreeMgrSchemasPriv*"/>
+      </field>
+    </class>
+    <record name="TreeMgrSchemasClass"
+            c:type="GdaTreeMgrSchemasClass"
+            glib:is-gtype-struct-for="TreeMgrSchemas">
+      <field name="object_class">
+        <type name="TreeManagerClass" c:type="GdaTreeManagerClass"/>
+      </field>
+    </record>
+    <record name="TreeMgrSchemasPriv"
+            c:type="GdaTreeMgrSchemasPriv"
+            disguised="1">
+    </record>
+    <class name="TreeMgrSelect"
+           c:symbol-prefix="tree_mgr_select"
+           c:type="GdaTreeMgrSelect"
+           parent="TreeManager"
+           glib:type-name="GdaTreeMgrSelect"
+           glib:get-type="gda_tree_mgr_select_get_type"
+           glib:type-struct="TreeMgrSelectClass">
+      <constructor name="new"
+                   c:identifier="gda_tree_mgr_select_new"
+                   version="4.2">
+        <doc xml:whitespace="preserve">Creates a new #GdaTreeMgrSelect object which will add one tree node for each row in
+the #GdaDataModel resulting from the execution of @stmt.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaTreeManager object</doc>
+          <type name="TreeManager" c:type="GdaTreeManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaConnection object</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="stmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaStatement object representing a SELECT statement</doc>
+            <type name="Statement" c:type="GdaStatement*"/>
+          </parameter>
+          <parameter name="params" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaSet object representing fixed parameters which are to be used when executing @stmt</doc>
+            <type name="Set" c:type="GdaSet*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="connection"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Connection"/>
+      </property>
+      <property name="params"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Set"/>
+      </property>
+      <property name="statement"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Statement"/>
+      </property>
+      <field name="object">
+        <type name="TreeManager" c:type="GdaTreeManager"/>
+      </field>
+      <field name="priv">
+        <type name="TreeMgrSelectPriv" c:type="GdaTreeMgrSelectPriv*"/>
+      </field>
+    </class>
+    <record name="TreeMgrSelectClass"
+            c:type="GdaTreeMgrSelectClass"
+            glib:is-gtype-struct-for="TreeMgrSelect">
+      <field name="object_class">
+        <type name="TreeManagerClass" c:type="GdaTreeManagerClass"/>
+      </field>
+    </record>
+    <record name="TreeMgrSelectPriv"
+            c:type="GdaTreeMgrSelectPriv"
+            disguised="1">
+    </record>
+    <class name="TreeMgrTables"
+           c:symbol-prefix="tree_mgr_tables"
+           c:type="GdaTreeMgrTables"
+           parent="TreeManager"
+           glib:type-name="GdaTreeMgrTables"
+           glib:get-type="gda_tree_mgr_tables_get_type"
+           glib:type-struct="TreeMgrTablesClass">
+      <constructor name="new"
+                   c:identifier="gda_tree_mgr_tables_new"
+                   version="4.2">
+        <doc xml:whitespace="preserve">Creates a new #GdaTreeManager object which will add one tree node for each table found in the
+ schema if it is not %NULL, or for each table visible by default in @cnc.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaTreeManager object</doc>
+          <type name="TreeManager" c:type="GdaTreeManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdaConnection object</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="schema" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a schema name or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="connection"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Defines the #GdaConnection to display information for. Necessary upon construction unless
+the #GdaTreeMgrTables:meta-store property is specified instead.</doc>
+        <type name="Connection"/>
+      </property>
+      <property name="meta-store"
+                version="4.2.4"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Defines the #GdaMetaStore to extract information from. Necessary upon construction unless
+the #GdaTreeMgrTables:connection property is specified instead. This property has
+priority over the GdaTreeMgrTables:connection property.</doc>
+        <type name="MetaStore"/>
+      </property>
+      <property name="schema"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If no set, then the table name will be fetched from the parent node using the "schema" attribute. If not
+found that way, then the list of visible tables (tables which can be identified without having to specify
+a schema) will be used</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="object">
+        <type name="TreeManager" c:type="GdaTreeManager"/>
+      </field>
+      <field name="priv">
+        <type name="TreeMgrTablesPriv" c:type="GdaTreeMgrTablesPriv*"/>
+      </field>
+    </class>
+    <record name="TreeMgrTablesClass"
+            c:type="GdaTreeMgrTablesClass"
+            glib:is-gtype-struct-for="TreeMgrTables">
+      <field name="object_class">
+        <type name="TreeManagerClass" c:type="GdaTreeManagerClass"/>
+      </field>
+    </record>
+    <record name="TreeMgrTablesPriv"
+            c:type="GdaTreeMgrTablesPriv"
+            disguised="1">
+    </record>
+    <class name="TreeNode"
+           c:symbol-prefix="tree_node"
+           c:type="GdaTreeNode"
+           parent="GObject.Object"
+           glib:type-name="GdaTreeNode"
+           glib:get-type="gda_tree_node_get_type"
+           glib:type-struct="TreeNodeClass">
+      <constructor name="new" c:identifier="gda_tree_node_new" version="4.2">
+        <doc xml:whitespace="preserve">Creates a new #GdaTreeNode object</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdaTreeNode</doc>
+          <type name="TreeNode" c:type="GdaTreeNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="error_quark" c:identifier="gda_tree_node_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <virtual-method name="dump_children">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="prefix" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="in_string" transfer-ownership="none">
+            <type name="GLib.String" c:type="GString*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="dump_header">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="node_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="TreeNode" c:type="GdaTreeNode*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="node_deleted">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="relative_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="node_has_child_toggled">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="TreeNode" c:type="GdaTreeNode*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="node_inserted">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="TreeNode" c:type="GdaTreeNode*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="fetch_attribute"
+              c:identifier="gda_tree_node_fetch_attribute"
+              version="4.2">
+        <doc xml:whitespace="preserve">Get the value associated to the attribute named @attribute for @node. If the attribute is not set,
+then @node's parents is queries (recursively up to the top level node).
+
+Attributes can have any name, but Libgda proposes some default names,
+see &lt;link linkend="libgda-40-Attributes-manager.synopsis"&gt;this section&lt;/link&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a read-only #GValue, or %NULL if not attribute named @attribute has been set for @node</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute name as a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_index"
+              c:identifier="gda_tree_node_get_child_index"
+              version="4.2">
+        <doc xml:whitespace="preserve">Get the #GdaTreeNode child of @node at position @index (starting at 0).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaTreeNode, or %NULL if not found</doc>
+          <type name="TreeNode" c:type="GdaTreeNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a index</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_name"
+              c:identifier="gda_tree_node_get_child_name"
+              version="4.2">
+        <doc xml:whitespace="preserve">Get the #GdaTreeNode child of @node which has the #GDA_ATTRIBUTE_NAME set to @name</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdaTreeNode, or %NULL if not found</doc>
+          <type name="TreeNode" c:type="GdaTreeNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">requested node's name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_children"
+              c:identifier="gda_tree_node_get_children"
+              version="4.2">
+        <doc xml:whitespace="preserve">Get a list of all @node's children, free it with g_slist_free() after usage</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a new #GSList of #GdaTreeNode objects, or %NULL if @node does not have any child</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="TreeNode"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_node_attribute"
+              c:identifier="gda_tree_node_get_node_attribute"
+              version="4.2">
+        <doc xml:whitespace="preserve">Get the value associated to the attribute named @attribute for @node. The difference with gda_tree_node_fetch_attribute()
+is that gda_tree_node_fetch_attribute() will also query @node's parents (recursively up to the top level node) if
+the attribute is not set for @node.
+
+Attributes can have any name, but Libgda proposes some default names, 
+see &lt;link linkend="libgda-40-Attributes-manager.synopsis"&gt;this section&lt;/link&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a read-only #GValue, or %NULL if not attribute named @attribute has been set for @node</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute name as a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent"
+              c:identifier="gda_tree_node_get_parent"
+              version="4.2">
+        <doc xml:whitespace="preserve">Get the #GdaTreeNode parent of @node in the #GdaTree node belongs to. If @node is at the top level,
+then this method return %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parent #GdaTreeNode</doc>
+          <type name="TreeNode" c:type="GdaTreeNode*"/>
+        </return-value>
+      </method>
+      <method name="set_node_attribute"
+              c:identifier="gda_tree_node_set_node_attribute"
+              version="4.2">
+        <doc xml:whitespace="preserve">Set the value associated to a named attribute. The @attribute string is used AS IT IS by this method (eg.
+no copy of it is made), and
+the memory it uses will be freed using the @destroy function when no longer needed (if @destroy is %NULL,
+then the string will not be freed at all).
+
+Attributes can have any name, but Libgda proposes some default names, 
+see &lt;link linkend="libgda-40-Attributes-manager.synopsis"&gt;this section&lt;/link&gt;.
+
+For example one would use it as:
+
+&lt;code&gt;
+gda_tree_node_set_node_attribute (node, g_strdup (my_attribute), my_value, g_free);
+gda_tree_node_set_node_attribute (node, GDA_ATTRIBUTE_NAME, my_value, NULL);
+&lt;/code&gt;
+
+If there is already an attribute named @attribute set, then its value is replaced with the new value (@value is
+copied), except if @value is %NULL, in which case the attribute is removed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GValue, or %NULL</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">a function to be called when @attribute is not needed anymore, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="name" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="TreeNodePrivate" c:type="GdaTreeNodePrivate*"/>
+      </field>
+      <glib:signal name="node-changed" when="last" version="4.2">
+        <doc xml:whitespace="preserve">Gets emitted when a @node has changed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdaTreeNode which has changed</doc>
+            <type name="TreeNode"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="node-deleted" when="last" version="4.2">
+        <doc xml:whitespace="preserve">Gets emitted when a @node has been removed</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="relative_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path the node held, relative to @reporting</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="node-has-child-toggled" when="last" version="4.2">
+        <doc xml:whitespace="preserve">Gets emitted when a @node has has a child when it did not have any or when it
+does not have a ny children anymore when it had some</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdaTreeNode which changed from having children to being a leaf or the other way around</doc>
+            <type name="TreeNode"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="node-inserted" when="last" version="4.2">
+        <doc xml:whitespace="preserve">Gets emitted when a @node has been inserted</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdaTreeNode which has been inserted</doc>
+            <type name="TreeNode"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="TreeNodeClass"
+            c:type="GdaTreeNodeClass"
+            glib:is-gtype-struct-for="TreeNode">
+      <field name="object_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="node_changed">
+        <callback name="node_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="reporting" transfer-ownership="none">
+              <type name="TreeNode" c:type="GdaTreeNode*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <type name="TreeNode" c:type="GdaTreeNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="node_inserted">
+        <callback name="node_inserted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="reporting" transfer-ownership="none">
+              <type name="TreeNode" c:type="GdaTreeNode*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <type name="TreeNode" c:type="GdaTreeNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="node_has_child_toggled">
+        <callback name="node_has_child_toggled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="reporting" transfer-ownership="none">
+              <type name="TreeNode" c:type="GdaTreeNode*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <type name="TreeNode" c:type="GdaTreeNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="node_deleted">
+        <callback name="node_deleted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="reporting" transfer-ownership="none">
+              <type name="TreeNode" c:type="GdaTreeNode*"/>
+            </parameter>
+            <parameter name="relative_path" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="dump_header">
+        <callback name="dump_header">
+          <return-value transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="node" transfer-ownership="none">
+              <type name="TreeNode" c:type="GdaTreeNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="dump_children">
+        <callback name="dump_children">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="node" transfer-ownership="none">
+              <type name="TreeNode" c:type="GdaTreeNode*"/>
+            </parameter>
+            <parameter name="prefix" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="in_string" transfer-ownership="none">
+              <type name="GLib.String" c:type="GString*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TreeNodeError" c:type="GdaTreeNodeError">
+      <member name="tree_node_unknown_error"
+              value="0"
+              c:identifier="GDA_TREE_NODE_UNKNOWN_ERROR"/>
+    </enumeration>
+    <record name="TreeNodePrivate" c:type="GdaTreeNodePrivate" disguised="1">
+    </record>
+    <record name="TreePrivate" c:type="GdaTreePrivate" disguised="1">
+    </record>
+    <class name="UShort"
+           c:symbol-prefix="ushort"
+           glib:type-name="GdaUShort"
+           glib:get-type="gda_ushort_get_type"
+           glib:fundamental="1">
+    </class>
+    <bitfield name="ValueAttribute" c:type="GdaValueAttribute">
+      <member name="none" value="0" c:identifier="GDA_VALUE_ATTR_NONE"/>
+      <member name="is_null" value="1" c:identifier="GDA_VALUE_ATTR_IS_NULL"/>
+      <member name="can_be_null"
+              value="2"
+              c:identifier="GDA_VALUE_ATTR_CAN_BE_NULL"/>
+      <member name="is_default"
+              value="4"
+              c:identifier="GDA_VALUE_ATTR_IS_DEFAULT"/>
+      <member name="can_be_default"
+              value="8"
+              c:identifier="GDA_VALUE_ATTR_CAN_BE_DEFAULT"/>
+      <member name="is_unchanged"
+              value="16"
+              c:identifier="GDA_VALUE_ATTR_IS_UNCHANGED"/>
+      <member name="actions_shown"
+              value="32"
+              c:identifier="GDA_VALUE_ATTR_ACTIONS_SHOWN"/>
+      <member name="data_non_valid"
+              value="64"
+              c:identifier="GDA_VALUE_ATTR_DATA_NON_VALID"/>
+      <member name="has_value_orig"
+              value="128"
+              c:identifier="GDA_VALUE_ATTR_HAS_VALUE_ORIG"/>
+      <member name="no_modif"
+              value="256"
+              c:identifier="GDA_VALUE_ATTR_NO_MODIF"/>
+      <member name="unused" value="512" c:identifier="GDA_VALUE_ATTR_UNUSED"/>
+    </bitfield>
+    <class name="XaTransaction"
+           c:symbol-prefix="xa_transaction"
+           c:type="GdaXaTransaction"
+           parent="GObject.Object"
+           glib:type-name="GdaXaTransaction"
+           glib:get-type="gda_xa_transaction_get_type"
+           glib:type-struct="XaTransactionClass">
+      <constructor name="new" c:identifier="gda_xa_transaction_new">
+        <doc xml:whitespace="preserve">Creates a new #GdaXaTransaction object, which will control the process of
+performing a distributed transaction across several connections.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created object.</doc>
+          <type name="XaTransaction" c:type="GdaXaTransaction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a format ID</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="global_transaction_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the global transaction ID</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="error_quark"
+                c:identifier="gda_xa_transaction_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <function name="string_to_id"
+                c:identifier="gda_xa_transaction_string_to_id"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GdaXaTransactionId structure from its string representation, it's the opposite
+of gda_xa_transaction_id_to_string().
+
+
+Free-function: g_free</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a new #GdaXaTransactionId structure, or %NULL in @str has a wrong format</doc>
+          <type name="XaTransactionId" c:type="GdaXaTransactionId*"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string representation of a #GdaXaTransactionId, in the "gtrid,bqual,formatID" format</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="begin" c:identifier="gda_xa_transaction_begin" throws="1">
+        <doc xml:whitespace="preserve">Begins a distributed transaction (managed by @xa_trans). Please note that this phase may fail
+for some connections if a (normal) transaction is already started (this depends on the database
+provider being used), so it's better to avoid starting any (normal) transaction on any of the
+connections registered with @xa_trans.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="commit"
+              c:identifier="gda_xa_transaction_commit"
+              throws="1">
+        <doc xml:whitespace="preserve">Commits a distributed transaction (managed by @xa_trans). The commit is composed of two phases:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;a PREPARE phase where all the connections are required to store their transaction data to a 
+permanent place (to be able to complete the commit should a problem occur afterwards)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;a COMMIT phase where the transaction data is actually written to the database&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+If the PREPARE phase fails for any of the connection registered with @xa_trans, then the distributed commit
+fails and FALSE is returned. During the COMMIT phase, some commit may actually fail but the transaction can
+still be completed because the PREPARE phase succeeded (through the recover method).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if no error occurred (there may be some connections to recover, though)</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc_to_recover"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a place to store the list of connections for which the commit phase failed, or %NULL</doc>
+            <type name="GLib.SList" c:type="GSList**">
+              <type name="Connection"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="commit_recovered"
+              c:identifier="gda_xa_transaction_commit_recovered"
+              throws="1">
+        <doc xml:whitespace="preserve">Tries to commit the data prepared but which failed to commit (see gda_xa_transaction_commit()). This
+method allows one to terminate a distributed transaction which succeeded but for which some
+connections needed to be recovered.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if all the data which was still uncommitted has been committed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc_to_recover"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a place to store the list of connections for which the there were data to recover and which failed to be actually committed, or %NULL</doc>
+            <type name="GLib.SList" c:type="GSList**">
+              <type name="Connection"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_connection"
+              c:identifier="gda_xa_transaction_register_connection"
+              throws="1">
+        <doc xml:whitespace="preserve">Registers @cnc to be used by @xa_trans to create a distributed transaction.
+
+Note: any #GdaConnection object can only be registered with at most one #GdaXaTransaction object; also
+some connections may not be registered at all with a #GdaXaTransaction object because the database
+provider being used does not support it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the connection to add to @xa_trans</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+          <parameter name="branch" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the branch qualifier</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rollback"
+              c:identifier="gda_xa_transaction_rollback"
+              throws="1">
+        <doc xml:whitespace="preserve">Cancels a distributed transaction (managed by @xa_trans).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="unregister_connection"
+              c:identifier="gda_xa_transaction_unregister_connection">
+        <doc xml:whitespace="preserve">Unregisters @cnc to be used by @xa_trans to create a distributed transaction. This is
+the opposite of gda_xa_transaction_register_connection().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cnc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the connection to add to @xa_trans</doc>
+            <type name="Connection" c:type="GdaConnection*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="format-id"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="transaction-id"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="XaTransactionPrivate" c:type="GdaXaTransactionPrivate*"/>
+      </field>
+    </class>
+    <record name="XaTransactionClass"
+            c:type="GdaXaTransactionClass"
+            glib:is-gtype-struct-for="XaTransaction">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gda_reserved1" introspectable="0">
+        <callback name="_gda_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved2" introspectable="0">
+        <callback name="_gda_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved3" introspectable="0">
+        <callback name="_gda_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gda_reserved4" introspectable="0">
+        <callback name="_gda_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="XaTransactionError" c:type="GdaXaTransactionError">
+      <member name="already_registered_error"
+              value="0"
+              c:identifier="GDA_XA_TRANSACTION_ALREADY_REGISTERED_ERROR"/>
+      <member name="dtp_not_supported_error"
+              value="1"
+              c:identifier="GDA_XA_TRANSACTION_DTP_NOT_SUPPORTED_ERROR"/>
+      <member name="connection_branch_length_error"
+              value="2"
+              c:identifier="GDA_XA_TRANSACTION_CONNECTION_BRANCH_LENGTH_ERROR"/>
+    </enumeration>
+    <record name="XaTransactionId" c:type="GdaXaTransactionId">
+      <field name="format" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="gtrid_length" writable="1">
+        <type name="gushort" c:type="gushort"/>
+      </field>
+      <field name="bqual_length" writable="1">
+        <type name="gushort" c:type="gushort"/>
+      </field>
+      <field name="data" writable="1">
+        <array zero-terminated="0" c:type="gchar" fixed-size="128">
+          <type name="gchar" c:type="char"/>
+        </array>
+      </field>
+      <method name="to_string" c:identifier="gda_xa_transaction_id_to_string">
+        <doc xml:whitespace="preserve">Creates a string representation of @xid, in the format &amp;lt;gtrid&amp;gt;,&amp;lt;bqual&amp;gt;,&amp;lt;formatID&amp;gt; the 
+&amp;lt;gtrid&amp;gt; and &amp;lt;bqual&amp;gt; strings contain alphanumeric characters, and non alphanumeric characters
+are converted to "%ab" where ab is the hexadecimal representation of the character.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string representation of @xid</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="XaTransactionPrivate"
+            c:type="GdaXaTransactionPrivate"
+            disguised="1">
+    </record>
+    <record name="_ServerOperationNode" c:type="_GdaServerOperationNode">
+      <field name="type" writable="1">
+        <type name="ServerOperationNodeType"
+              c:type="GdaServerOperationNodeType"/>
+      </field>
+      <field name="status" writable="1">
+        <type name="ServerOperationNodeStatus"
+              c:type="GdaServerOperationNodeStatus"/>
+      </field>
+      <field name="plist" writable="1">
+        <type name="Set" c:type="GdaSet*"/>
+      </field>
+      <field name="model" writable="1">
+        <type name="DataModel" c:type="GdaDataModel*"/>
+      </field>
+      <field name="column" writable="1">
+        <type name="Column" c:type="GdaColumn*"/>
+      </field>
+      <field name="param" writable="1">
+        <type name="Holder" c:type="GdaHolder*"/>
+      </field>
+      <field name="priv" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <record name="_SqlParserIface" c:type="_GdaSqlParserIface">
+      <field name="parser" writable="1">
+        <type name="SqlParser" c:type="GdaSqlParser*"/>
+      </field>
+      <field name="parsed_statement" writable="1">
+        <type name="SqlStatement" c:type="GdaSqlStatement*"/>
+      </field>
+      <field name="_gda_reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gda_reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <function name="alphanum_to_text" c:identifier="gda_alphanum_to_text">
+      <doc xml:whitespace="preserve">Does the opposite of gda_text_to_alphanum(), in the same string</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">@text if conversion succeeded or %NULL if an error occurred</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binary_copy"
+              c:identifier="gda_binary_copy"
+              moved-to="Binary.copy">
+      <doc xml:whitespace="preserve">Creates a new #GdaBinary structure from an existing one.
+
+Free-function: gda_binary_free</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated #GdaBinary which contains a copy of information in @boxed.</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <doc xml:whitespace="preserve">source to get a copy from.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binary_free"
+              c:identifier="gda_binary_free"
+              moved-to="Binary.free">
+      <doc xml:whitespace="preserve">Deallocates all memory associated to the given #GdaBinary.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GdaBinary to free.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_copy"
+              c:identifier="gda_blob_copy"
+              moved-to="Blob.copy">
+      <doc xml:whitespace="preserve">Creates a new #GdaBlob structure from an existing one.
+
+Free-function: gda_blob_free</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated #GdaBlob which contains a copy of information in @boxed.</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <doc xml:whitespace="preserve">source to get a copy from.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_free"
+              c:identifier="gda_blob_free"
+              moved-to="Blob.free">
+      <doc xml:whitespace="preserve">Deallocates all memory associated to the given #GdaBlob.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GdaBlob to free.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="completion_list_get"
+              c:identifier="gda_completion_list_get">
+      <doc xml:whitespace="preserve">Creates an array of strings (terminated by a %NULL) corresponding to possible completions.
+If no completion is available, then the returned array contains just one NULL entry, and
+if it was not possible to try to compute a completions list, then %NULL is returned.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new array of strings, or %NULL (use g_strfreev() to free the returned array)</doc>
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="cnc" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaConnection object</doc>
+          <type name="Connection" c:type="GdaConnection*"/>
+        </parameter>
+        <parameter name="sql" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a partial SQL statement which is the context of the completion proposal</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <doc xml:whitespace="preserve">starting position within @sql of the "token" to complete (starts at 0)</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ending position within @sql of the "token" to complete</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="compute_dml_statements"
+              c:identifier="gda_compute_dml_statements"
+              throws="1">
+      <doc xml:whitespace="preserve">Creates an INSERT, an UPDATE and a DELETE statement from a SELECT statement
+using the database metadata available in @cnc's meta store. Each statements are computed only if
+the corresponding place to store the created statement is not %NULL.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="cnc" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaConnection</doc>
+          <type name="Connection" c:type="GdaConnection*"/>
+        </parameter>
+        <parameter name="select_stmt" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a SELECT #GdaStatement (compound statements not handled)</doc>
+          <type name="Statement" c:type="GdaStatement*"/>
+        </parameter>
+        <parameter name="require_pk" transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the created statement have to use a primary key</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="insert_stmt" transfer-ownership="full" allow-none="1">
+          <doc xml:whitespace="preserve">a place to store the created INSERT statement, or %NULL</doc>
+          <type name="Statement" c:type="GdaStatement**"/>
+        </parameter>
+        <parameter name="update_stmt" transfer-ownership="full" allow-none="1">
+          <doc xml:whitespace="preserve">a place to store the created UPDATE statement, or %NULL</doc>
+          <type name="Statement" c:type="GdaStatement**"/>
+        </parameter>
+        <parameter name="delete_stmt" transfer-ownership="full" allow-none="1">
+          <doc xml:whitespace="preserve">a place to store the created DELETE statement, or %NULL</doc>
+          <type name="Statement" c:type="GdaStatement**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="compute_select_statement_from_update"
+              c:identifier="gda_compute_select_statement_from_update"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Computes a SELECT statement which selects all the rows the @update_stmt would update. Beware
+however that this #GdaSqlStatement does not select anything (ie it would be rendered as "SELECT FROM ... WHERE ...")
+and before being usable, one needs to add some fields to actually select.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a new #GdaStatement if no error occurred, or %NULL otherwise</doc>
+        <type name="SqlStatement" c:type="GdaSqlStatement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="update_stmt" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an UPDATE statement</doc>
+          <type name="Statement" c:type="GdaStatement*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="compute_unique_table_row_condition"
+              c:identifier="gda_compute_unique_table_row_condition"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Computes a #GdaSqlExpr expression which can be used in the WHERE clause of an UPDATE
+or DELETE statement when a row from the result of the @stsel statement has to be modified.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GdaSqlExpr, or %NULL if an error occurred.</doc>
+        <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+      </return-value>
+      <parameters>
+        <parameter name="stsel" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaSqlSelectStatement</doc>
+          <type name="SqlStatementSelect" c:type="GdaSqlStatementSelect*"/>
+        </parameter>
+        <parameter name="mtable" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaMetaTable</doc>
+          <type name="MetaTable" c:type="GdaMetaTable*"/>
+        </parameter>
+        <parameter name="require_pk" transfer-ownership="none">
+          <doc xml:whitespace="preserve">set to TRUE if a primary key ir required</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="compute_unique_table_row_condition_with_cnc"
+              c:identifier="gda_compute_unique_table_row_condition_with_cnc"
+              version="4.0.3"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Computes a #GdaSqlExpr expression which can be used in the WHERE clause of an UPDATE
+or DELETE statement when a row from the result of the @stsel statement has to be modified.
+
+If @require_pk is %TRUE then this function will return a non %NULL #GdaSqlExpr only if it can
+use a primary key of @mtable. If @require_pk is %FALSE, then it will try to use a primary key of @mtable,
+and if none is available, it will use all the columns of @mtable to compute a condition statement.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GdaSqlExpr, or %NULL if an error occurred.</doc>
+        <type name="SqlExpr" c:type="GdaSqlExpr*"/>
+      </return-value>
+      <parameters>
+        <parameter name="cnc" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a #GdaConnection, or %NULL</doc>
+          <type name="Connection" c:type="GdaConnection*"/>
+        </parameter>
+        <parameter name="stsel" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaSqlSelectStatement</doc>
+          <type name="SqlStatementSelect" c:type="GdaSqlStatementSelect*"/>
+        </parameter>
+        <parameter name="mtable" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaMetaTable</doc>
+          <type name="MetaTable" c:type="GdaMetaTable*"/>
+        </parameter>
+        <parameter name="require_pk" transfer-ownership="none">
+          <doc xml:whitespace="preserve">set to %TRUE if a primary key is required</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="data_handler_get_default"
+              c:identifier="gda_data_handler_get_default"
+              moved-to="DataHandler.get_default"
+              version="4.2.3">
+      <doc xml:whitespace="preserve">Obtain a pointer to a #GdaDataHandler which can manage #GValue values of type @for_type. The returned
+data handler will be adapted to use the current locale information (for example dates will be formatted
+taking into account the locale).
+
+The returned pointer is %NULL if there is no default data handler available for the @for_type data type</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a #GdaDataHandler which must not be modified or destroyed.</doc>
+        <type name="DataHandler" c:type="GdaDataHandler*"/>
+      </return-value>
+      <parameters>
+        <parameter name="for_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="data_model_error_quark"
+              c:identifier="gda_data_model_error_quark"
+              moved-to="DataModel.error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="default_escape_string"
+              c:identifier="gda_default_escape_string"
+              moved-to="Default.escape_string">
+      <doc xml:whitespace="preserve">Escapes @string to make it understandable by a DBMS. The escape method is very common and replaces any
+occurrence of "'" with "''" and "\" with "\\"</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new string</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">string to escape</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="default_unescape_string"
+              c:identifier="gda_default_unescape_string"
+              moved-to="Default.unescape_string">
+      <doc xml:whitespace="preserve">Do the reverse of gda_default_escape_string(): transforms any "''" into "'", any
+"\\" into "\" and any "\'" into "'".</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new unescaped string, or %NULL in an error was found in @string</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">string to unescape</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dsn_split" c:identifier="gda_dsn_split">
+      <doc xml:whitespace="preserve">Extract the DSN, username and password from @string. in @string, the various parts are strings
+which are expected to be encoded using an RFC 1738 compliant encoding. If they are specified, 
+the returned username and password strings are correctly decoded.
+
+ out_username and @out_password may be set to %NULL depending on @string's format.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string in the "[&amp;lt;username&amp;gt;[:&amp;lt;password&amp;gt;] ]&amp;lt;DSN&amp;gt;" form</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="out_dsn" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a place to store the new string containing the &amp;lt;DSN&amp;gt; part</doc>
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="out_username" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a place to store the new string containing the &amp;lt;username&amp;gt; part</doc>
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="out_password" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a place to store the new string containing the &amp;lt;password&amp;gt; part</doc>
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="g_type_from_string" c:identifier="gda_g_type_from_string">
+      <doc xml:whitespace="preserve">Converts a named type to ts GType type (also see the gda_g_type_to_string() function).
+
+This function is a wrapper around the g_type_from_name() function, but also recognizes
+some type synonyms such as:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;"int" for G_TYPE_INT&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"uint" for G_TYPE_UINT&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"int64" for G_TYPE_INT64&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"uint64" for G_TYPE_UINT64&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"char" for G_TYPE_CHAR&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"uchar" for G_TYPE_UCHAR&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"short" for GDA_TYPE_SHORT&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"ushort" for GDA_TYPE_USHORT&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"string" for G_TYPE_STRING&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"date" for G_TYPE_DATE&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"time" for GDA_TYPE_TIME&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"timestamp" for GDA_TYPE_TIMESTAMP&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"boolean" for G_TYPE_BOOLEAN&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"blob" for GDA_TYPE_BLOB&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"binary" for GDA_TYPE_BINARY&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;"null" for GDA_TYPE_NULL&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #GType represented by the given @str, or #G_TYPE_INVALID if not found</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of a #GType, as returned by gda_g_type_to_string().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="g_type_to_string" c:identifier="gda_g_type_to_string">
+      <doc xml:whitespace="preserve">Converts a GType to its string representation (use gda_g_type_from_string() for the
+operation in the other direction).
+
+This function wraps g_type_name() but for common types it provides an easier to
+understand and remember name. For Example the G_TYPE_STRING is converted to "string"
+whereas g_type_name() converts it to "gchararray".
+
+returned by #g_type_name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the GDA's string representing the given #GType or the name</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Type to convert from.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="geometricpoint_copy"
+              c:identifier="gda_geometricpoint_copy"
+              moved-to="GeometricPoint.copy">
+      <return-value transfer-ownership="full">
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="geometricpoint_free"
+              c:identifier="gda_geometricpoint_free"
+              moved-to="GeometricPoint.free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="identifier_equal" c:identifier="gda_identifier_equal">
+      <doc xml:whitespace="preserve">Does the same as strcmp(@id1, @id2), but handles the case where id1 and/or id2 are enclosed in double quotes.
+can also be used in hash tables as a #GEqualFunc.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if @id1 and @id2 are equal.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="id1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an identifier string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="id2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an identifier string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="identifier_hash" c:identifier="gda_identifier_hash">
+      <doc xml:whitespace="preserve">computes a hash string from @id, to be used in hash tables as a #GHashFunc</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a new hash</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an identifier string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log_disable" c:identifier="gda_log_disable">
+      <doc xml:whitespace="preserve">Disables GDA logs.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="log_enable" c:identifier="gda_log_enable">
+      <doc xml:whitespace="preserve">Enables GDA logs.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="log_error" c:identifier="gda_log_error" introspectable="0">
+      <doc xml:whitespace="preserve">Logs the given error in the GDA log file.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">format string (see the printf(3) documentation).</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log_is_enabled" c:identifier="gda_log_is_enabled">
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">whether GDA logs are enabled (%TRUE or %FALSE).</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="log_message"
+              c:identifier="gda_log_message"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Logs the given message in the GDA log file.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">format string (see the printf(3) documentation).</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mutex_new"
+              c:identifier="gda_mutex_new"
+              moved-to="Mutex.new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GdaMutex.
+
+Note: Unlike g_mutex_new(), this function will return %NULL if g_thread_init() has not been called yet.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GdaMutex</doc>
+        <type name="Mutex" c:type="GdaMutex*"/>
+      </return-value>
+    </function>
+    <function name="parse_iso8601_date" c:identifier="gda_parse_iso8601_date">
+      <doc xml:whitespace="preserve">Extracts date parts from @value, and sets @gdate's contents
+
+Accepted date format is "YYYY-MM-DD" (more or less than 4 digits for years and
+less than 2 digits for month and day are accepted). Years must be in the 1-65535 range,
+a limitation imposed by #GDate.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="gdate" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #GDate structure which will be filled</doc>
+          <type name="GLib.Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_iso8601_time" c:identifier="gda_parse_iso8601_time">
+      <doc xml:whitespace="preserve">Extracts time parts from @value, and sets @timegda's contents
+
+Accepted date format is "HH:MM:SS[.ms][TZ]" where TZ is +hour or -hour</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="timegda" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #GdaTime structure which will be filled</doc>
+          <type name="Time" c:type="GdaTime*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_iso8601_timestamp"
+              c:identifier="gda_parse_iso8601_timestamp">
+      <doc xml:whitespace="preserve">Extracts date and time parts from @value, and sets @timestamp's contents
+
+Accepted date format is "YYYY-MM-DD HH:MM:SS[.ms][TZ]" where TZ is +hour or -hour</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="timestamp" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #GdaTimeStamp structure which will be filled</doc>
+          <type name="Timestamp" c:type="GdaTimestamp*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rewrite_sql_statement_for_null_parameters"
+              c:identifier="gda_rewrite_sql_statement_for_null_parameters"
+              version="4.2.9"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Modifies @sqlst to take into account any parameter which might be %NULL: if @sqlst contains the
+equivalent of "xxx = &amp;lt;parameter definition&amp;gt;" and if that parameter is in @params and
+its value is of type GDA_TYPE_NUL, then that part is replaced with "xxx IS NULL". It also
+handles the "xxx IS NOT NULL" transformation.
+
+If @out_modified is not %NULL, then it will be set to %TRUE if @sqlst has been modified
+by this function, and to %FALSE otherwise.
+
+This function is used by provider's implementations to make sure one can use parameters with
+NULL values in statements without having to rewrite statements, as database usually don't
+consider that "xxx = NULL" is the same as "xxx IS NULL" when using parameters.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the modified @sqlst statement, or %NULL if an error occurred</doc>
+        <type name="SqlStatement" c:type="GdaSqlStatement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="sqlst" transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdaSqlStatement</doc>
+          <type name="SqlStatement" c:type="GdaSqlStatement*"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaSet to be used as parameters when executing @stmt</doc>
+          <type name="Set" c:type="GdaSet*"/>
+        </parameter>
+        <parameter name="out_modified"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a place to store the boolean which tells if @stmt has been modified or not, or %NULL</doc>
+          <type name="gboolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rewrite_statement_for_null_parameters"
+              c:identifier="gda_rewrite_statement_for_null_parameters"
+              version="4.2.9"
+              throws="1">
+      <doc xml:whitespace="preserve">Modifies @stmt to take into account any parameter which might be %NULL: if @stmt contains the
+equivalent of "xxx = &amp;lt;parameter definition&amp;gt;" and if that parameter is in @params and
+its value is of type GDA_TYPE_NUL, then that part is replaced with "xxx IS NULL". It also
+handles the "xxx IS NOT NULL" transformation.
+
+For example the following SELECT:
+&lt;programlisting&gt;SELECT * FROM data WHERE id = ##id::int::null AND name = ##name::string&lt;/programlisting&gt;
+in case the "id" parameter is set to NULL, is converted to:
+&lt;programlisting&gt;SELECT * FROM data WHERE id IS NULL AND name = ##name::string&lt;/programlisting&gt;
+
+if @out_stmt is not %NULL, then it will contain:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;the modified statement if some modifications were required and no error occured (the function returns %TRUE)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;%NULL if no modification to @stmt were required and no erro occurred (the function returns %FALSE)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;%NULL if an error occured (the function returns %TRUE)&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+This function is used by provider's implementations to make sure one can use parameters with
+NULL values in statements without having to rewrite statements, as database usually don't
+consider that "xxx = NULL" is the same as "xxx IS NULL" when using parameters.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @stmt needs to be transformed to handle NULL parameters, and %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="stmt" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaStatement</doc>
+          <type name="Statement" c:type="GdaStatement*"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaSet to be used as parameters when executing @stmt</doc>
+          <type name="Set" c:type="GdaSet*"/>
+        </parameter>
+        <parameter name="out_stmt" transfer-ownership="full" allow-none="1">
+          <doc xml:whitespace="preserve">a place to store the new #GdaStatement, or %NULL</doc>
+          <type name="Statement" c:type="GdaStatement**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rfc1738_decode" c:identifier="gda_rfc1738_decode">
+      <doc xml:whitespace="preserve">Decodes @string using the RFC 1738 recommendations: the
+&lt;constant&gt;&amp;lt;&amp;gt;&amp;quot;#%{}|\^~[]&amp;apos;`;/?:@=&amp;amp;&lt;/constant&gt; and space characters are replaced by 
+&lt;constant&gt;&amp;quot;%%ab&amp;quot;&lt;/constant&gt; where
+&lt;constant&gt;ab&lt;/constant&gt; is the hexadecimal number corresponding to the character.
+
+ string should respect the RFC 1738 encoding. If this is not the case (for example if there
+is a "%2z" because 2z is not an hexadecimal value), then the part with the problem
+is not decoded, and the function returns FALSE.
+
+ string is decoded in place, no new string gets created.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if no error occurred.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string to decode</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rfc1738_encode" c:identifier="gda_rfc1738_encode">
+      <doc xml:whitespace="preserve">Encodes @string using the RFC 1738 recommendations: the
+&lt;constant&gt;&amp;lt;&amp;gt;&amp;quot;#%{}|\^~[]&amp;apos;`;/?:@=&amp;amp;&lt;/constant&gt; and space characters are replaced by 
+&lt;constant&gt;&amp;quot;%%ab&amp;quot;&lt;/constant&gt; where
+&lt;constant&gt;ab&lt;/constant&gt; is the hexadecimal number corresponding to the character.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new string</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string to encode</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="select_alter_select_for_empty"
+              c:identifier="gda_select_alter_select_for_empty"
+              throws="1">
+      <doc xml:whitespace="preserve">Creates a new #GdaStatement, selecting the same data as @stmt, but which always returns an
+empty (no row) data model. This is use dy database providers' implementations.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GdaStatement</doc>
+        <type name="Statement" c:type="GdaStatement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="stmt" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a SELECT #GdaStatement</doc>
+          <type name="Statement" c:type="GdaStatement*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_case_new"
+              c:identifier="gda_sql_case_new"
+              moved-to="SqlCase.new"
+              introspectable="0">
+      <return-value>
+        <type name="SqlCase" c:type="GdaSqlCase*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_error_quark" c:identifier="gda_sql_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="sql_field_new"
+              c:identifier="gda_sql_field_new"
+              moved-to="SqlField.new"
+              introspectable="0">
+      <return-value>
+        <type name="SqlField" c:type="GdaSqlField*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_function_new"
+              c:identifier="gda_sql_function_new"
+              moved-to="SqlFunction.new"
+              introspectable="0">
+      <return-value>
+        <type name="SqlFunction" c:type="GdaSqlFunction*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_identifier_quote"
+              c:identifier="gda_sql_identifier_quote"
+              version="4.0.3">
+      <doc xml:whitespace="preserve">Use this function for any SQL identifier to make sure that:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;
+&lt;para&gt;it is correctly formatted
+to be used with @cnc (if @cnc is %NULL, then some default SQL quoting rules will be applied,
+similar to PostgreSQL's way) if @for_meta_store is %FALSE;
+&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;it is correctly formatted to be used with the #GdaMetaStore's object associated to @cnc
+is @for_meta_store is %TRUE.
+&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+The @force_quotes allow some control of how to interpret @id: if %FALSE, then @id will be left
+unchanged most of the time (except for example if it's a reserved keyword), otherwise
+if @force_quotes is %TRUE, then the returned string will most probably have quotes around it
+to request that the database keep the case sensitiveness (but again, this may vary depending
+on the database being accessed through @cnc).
+
+For example, the following table gives the result of this function depending on the arguments
+when @cnc is %NULL (and @prov is also %NULL):
+&lt;table frame="all"&gt;
+&lt;tgroup cols="6" colsep="1" rowsep="1" align="justify"&gt;
+&lt;thead&gt;
+&lt;row&gt;
+&lt;entry&gt;id&lt;/entry&gt;
+&lt;entry&gt;for_meta_store=%FALSE, force_quotes=%FALSE&lt;/entry&gt;
+&lt;entry&gt;for_meta_store=%TRUE, force_quotes=%FALSE&lt;/entry&gt;
+&lt;entry&gt;for_meta_store=%FALSE, force_quotes=%TRUE&lt;/entry&gt;
+&lt;entry&gt;for_meta_store=%TRUE, force_quotes=%TRUE&lt;/entry&gt;
+&lt;entry&gt;remark&lt;/entry&gt;
+&lt;/row&gt;
+&lt;/thead&gt;
+&lt;tbody&gt;
+&lt;row&gt;
+&lt;entry&gt;"double word"&lt;/entry&gt;
+&lt;entry&gt;"double word"&lt;/entry&gt;
+&lt;entry&gt;"double word"&lt;/entry&gt;
+&lt;entry&gt;"double word"&lt;/entry&gt;
+&lt;entry&gt;"double word"&lt;/entry&gt;
+&lt;entry&gt;non allowed character in SQL identifier&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;"CapitalTest"&lt;/entry&gt;
+&lt;entry&gt;"CapitalTest"&lt;/entry&gt;
+&lt;entry&gt;"CapitalTest"&lt;/entry&gt;
+&lt;entry&gt;"CapitalTest"&lt;/entry&gt;
+&lt;entry&gt;"CapitalTest"&lt;/entry&gt;
+&lt;entry&gt;Mixed case SQL identifier, already quoted&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;CapitalTest&lt;/entry&gt;
+&lt;entry&gt;CapitalTest&lt;/entry&gt;
+&lt;entry&gt;capitaltest&lt;/entry&gt;
+&lt;entry&gt;"CapitalTest"&lt;/entry&gt;
+&lt;entry&gt;"CapitalTest"&lt;/entry&gt;
+&lt;entry&gt;Mixed case SQL identifier, non quoted&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;"mytable"&lt;/entry&gt;
+&lt;entry&gt;"mytable"&lt;/entry&gt;
+&lt;entry&gt;mytable&lt;/entry&gt;
+&lt;entry&gt;"mytable"&lt;/entry&gt;
+&lt;entry&gt;mytable&lt;/entry&gt;
+&lt;entry&gt;All lowser case, quoted&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;mytable&lt;/entry&gt;
+&lt;entry&gt;mytable&lt;/entry&gt;
+&lt;entry&gt;mytable&lt;/entry&gt;
+&lt;entry&gt;"mytable"&lt;/entry&gt;
+&lt;entry&gt;mytable&lt;/entry&gt;
+&lt;entry&gt;All lowser case&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;MYTABLE&lt;/entry&gt;
+&lt;entry&gt;MYTABLE&lt;/entry&gt;
+&lt;entry&gt;mytable&lt;/entry&gt;
+&lt;entry&gt;"MYTABLE"&lt;/entry&gt;
+&lt;entry&gt;"MYTABLE"&lt;/entry&gt;
+&lt;entry&gt;All upper case&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;"MYTABLE"&lt;/entry&gt;
+&lt;entry&gt;"MYTABLE"&lt;/entry&gt;
+&lt;entry&gt;"MYTABLE"&lt;/entry&gt;
+&lt;entry&gt;"MYTABLE"&lt;/entry&gt;
+&lt;entry&gt;"MYTABLE"&lt;/entry&gt;
+&lt;entry&gt;All upper case, quoted&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;desc&lt;/entry&gt;
+&lt;entry&gt;"desc"&lt;/entry&gt;
+&lt;entry&gt;"desc"&lt;/entry&gt;
+&lt;entry&gt;"desc"&lt;/entry&gt;
+&lt;entry&gt;"desc"&lt;/entry&gt;
+&lt;entry&gt;SQL reserved keyword&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;5ive&lt;/entry&gt;
+&lt;entry&gt;"5ive"&lt;/entry&gt;
+&lt;entry&gt;"5ive"&lt;/entry&gt;
+&lt;entry&gt;"5ive"&lt;/entry&gt;
+&lt;entry&gt;"5ive"&lt;/entry&gt;
+&lt;entry&gt;SQL identifier starting with a digit&lt;/entry&gt;
+&lt;/row&gt;
+&lt;/tbody&gt;
+&lt;/tgroup&gt;
+&lt;/table&gt;
+
+Here are a few examples of when and how to use this function:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;
+&lt;para&gt;
+When creating a table, the user has entered the table name, this function can be used to
+create a valid SQL identifier from the user provided table name:
+&lt;programlisting&gt;
+gchar *user_sqlid=...
+gchar *valid_sqlid = gda_sql_identifier_quote (user_sqlid, cnc, NULL, FALSE, FALSE);
+gchar *sql = g_strdup_printf ("CREATE TABLE %s ...", valid_sqlid);
+g_free (valid_sqlid);
+&lt;/programlisting&gt;
+Note that this is an illustration and creating a table should be sone using a #GdaServerOperation
+object.
+&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;
+When updating the meta data associated to a table which has been created with the code
+above:
+&lt;programlisting&gt;
+GValue table_name_value = { 0 };
+gchar* column_names[] = { (gchar*)"table_name" };
+GValue* column_values[] = { &amp;table_name_value };
+GdaMetaContext mcontext = { (gchar*)"_tables", 1, column_names, column_values };
+g_value_init (&amp;amp;table_name_value, G_TYPE_STRING);
+g_value_take_string (&amp;amp;table_name_value, gda_sql_identifier_quote (user_sqlid, cnc, NULL, TRUE, FALSE);
+gda_connection_update_meta_store (cnc, &amp;amp;mcontext, NULL);
+g_value_reset (&amp;amp;table_name_value);
+&lt;/programlisting&gt;
+&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;
+When using a #GdaMetaStruct object to fetch information about a table (which has been created with
+the code above):
+&lt;programlisting&gt;
+GValue table_name_value = { 0 };
+g_value_init (&amp;amp;table_name_value, G_TYPE_STRING);
+g_value_take_string (&amp;amp;table_name_value, gda_sql_identifier_quote (user_sqlid, cnc, NULL, TRUE, FALSE);
+GdaMetaDbObject *dbo;
+dbo = gda_meta_struct_complement (mstruct, GDA_META_DB_TABLE, NULL, NULL, &amp;amp;table_name_value, NULL);
+g_value_reset (&amp;amp;table_name_value);
+&lt;/programlisting&gt;
+&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+
+Note that @id must not be a composed SQL identifier (such as "mytable.mycolumn" which should be
+treated as the "mytable" and "mycolumn" SQL identifiers). If unsure, use gda_sql_identifier_split().
+
+Also note that if @cnc is %NULL, then it's possible to pass an non %NULL @prov to have a result specific
+to @prov.
+
+For more information, see the &lt;link linkend="gen:sql_identifiers"&gt;SQL identifiers and abstraction&lt;/link&gt; and
+&lt;link linkend="information_schema:sql_identifiers"&gt;SQL identifiers in meta data&lt;/link&gt; sections.
+
+or %NULL if @id is in a wrong format</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the representation of @id ready to be used in SQL statement, as a new string,</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an SQL identifier</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="cnc" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a #GdaConnection object, or %NULL</doc>
+          <type name="Connection" c:type="GdaConnection*"/>
+        </parameter>
+        <parameter name="prov" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a #GdaServerProvider object, or %NULL</doc>
+          <type name="ServerProvider" c:type="GdaServerProvider*"/>
+        </parameter>
+        <parameter name="meta_store_convention" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="force_quotes" transfer-ownership="none">
+          <doc xml:whitespace="preserve">set to %TRUE to force the returned string to be quoted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_identifier_split"
+              c:identifier="gda_sql_identifier_split">
+      <doc xml:whitespace="preserve">Splits @id into an array of it sub parts. @id's format has to be "&amp;lt;part&amp;gt;[.&amp;lt;part&amp;gt;[...]]" where
+each part is either a text surrounded by double quotes which can contain upper and lower cases or
+an SQL identifier in lower case.
+
+For example the &lt;![CDATA["test.\"ATable\""]]&gt; string will result in the array: &lt;![CDATA[{"test", "\"ATable\"", NULL}]]&gt;</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new %NULL-terminated array of strings, or NULL (use g_strfreev() to free the returned array)</doc>
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an SQL identifier</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_operation_new"
+              c:identifier="gda_sql_operation_new"
+              moved-to="SqlOperation.new"
+              introspectable="0">
+      <return-value>
+        <type name="SqlOperation" c:type="GdaSqlOperation*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_operation_operator_from_string"
+              c:identifier="gda_sql_operation_operator_from_string"
+              moved-to="SqlOperation.operator_from_string">
+      <return-value transfer-ownership="none">
+        <type name="SqlOperatorType" c:type="GdaSqlOperatorType"/>
+      </return-value>
+      <parameters>
+        <parameter name="op" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_operation_operator_to_string"
+              c:identifier="gda_sql_operation_operator_to_string"
+              moved-to="SqlOperation.operator_to_string">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="op" transfer-ownership="none">
+          <type name="SqlOperatorType" c:type="GdaSqlOperatorType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_select_field_new"
+              c:identifier="gda_sql_select_field_new"
+              moved-to="SqlSelectField.new"
+              introspectable="0">
+      <return-value>
+        <type name="SqlSelectField" c:type="GdaSqlSelectField*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_select_from_new"
+              c:identifier="gda_sql_select_from_new"
+              moved-to="SqlSelectFrom.new"
+              introspectable="0">
+      <return-value>
+        <type name="SqlSelectFrom" c:type="GdaSqlSelectFrom*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_select_join_new"
+              c:identifier="gda_sql_select_join_new"
+              moved-to="SqlSelectJoin.new"
+              introspectable="0">
+      <return-value>
+        <type name="SqlSelectJoin" c:type="GdaSqlSelectJoin*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_select_join_type_to_string"
+              c:identifier="gda_sql_select_join_type_to_string"
+              moved-to="SqlSelectJoin.type_to_string">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="SqlSelectJoinType" c:type="GdaSqlSelectJoinType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_select_order_new"
+              c:identifier="gda_sql_select_order_new"
+              moved-to="SqlSelectOrder.new"
+              introspectable="0">
+      <return-value>
+        <type name="SqlSelectOrder" c:type="GdaSqlSelectOrder*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_select_target_new"
+              c:identifier="gda_sql_select_target_new"
+              moved-to="SqlSelectTarget.new"
+              introspectable="0">
+      <return-value>
+        <type name="SqlSelectTarget" c:type="GdaSqlSelectTarget*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sql_table_new"
+              c:identifier="gda_sql_table_new"
+              moved-to="SqlTable.new"
+              introspectable="0">
+      <return-value>
+        <type name="SqlTable" c:type="GdaSqlTable*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="SqlAnyPart" c:type="GdaSqlAnyPart*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_to_binary" c:identifier="gda_string_to_binary">
+      <doc xml:whitespace="preserve">Performs the reverse of gda_binary_to_string() (note that for any "\xyz" succession
+of 4 characters where "xyz" represents a valid octal value, the resulting read value will
+be modulo 256).
+
+I @str is %NULL, then an empty (i.e. where the @data part is %NULL) #GdaBinary is created and returned.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GdaBinary if no error were found in @str, or %NULL otherwise</doc>
+        <type name="Binary" c:type="GdaBinary*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a string to convert, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_to_blob" c:identifier="gda_string_to_blob">
+      <doc xml:whitespace="preserve">Performs the reverse of gda_blob_to_string().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #gdaBlob if no error were found in @str, or NULL otherwise</doc>
+        <type name="Blob" c:type="GdaBlob*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string to convert</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_to_alphanum" c:identifier="gda_text_to_alphanum">
+      <doc xml:whitespace="preserve">The "encoding" consists in replacing non
+alphanumeric character with the string "__gdaXX" where XX is the hex. representation
+of the non alphanumeric char.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new string</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text to convert</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="time_copy"
+              c:identifier="gda_time_copy"
+              moved-to="Time.copy">
+      <return-value transfer-ownership="full">
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="time_free"
+              c:identifier="gda_time_free"
+              moved-to="Time.free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timestamp_copy"
+              c:identifier="gda_timestamp_copy"
+              moved-to="Timestamp.copy">
+      <return-value transfer-ownership="full">
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timestamp_free"
+              c:identifier="gda_timestamp_free"
+              moved-to="Timestamp.free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utility_check_data_model"
+              c:identifier="gda_utility_check_data_model"
+              shadowed-by="utility_check_data_model_v"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Check the column types of a GdaDataModel.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the data model's columns match the provided data types and number</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaDataModel object</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </parameter>
+        <parameter name="nbcols" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the minimum requested number of columns</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utility_check_data_model_v"
+              c:identifier="gda_utility_check_data_model_v"
+              shadows="utility_check_data_model"
+              version="4.2.6">
+      <doc xml:whitespace="preserve">Check the column types of a GdaDataModel.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the data model's columns match the provided data types and number</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaDataModel object</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </parameter>
+        <parameter name="nbcols" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the minimum requested number of columns</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="types" transfer-ownership="none">
+          <doc xml:whitespace="preserve">array with @nbcols length of type GType or null (if any data type is accepted)</doc>
+          <array length="1" zero-terminated="0" c:type="GType*">
+            <type name="GType" c:type="GType"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utility_data_model_dump_data_to_xml"
+              c:identifier="gda_utility_data_model_dump_data_to_xml">
+      <doc xml:whitespace="preserve">Dump the data in a #GdaDataModel into a xmlNodePtr (as used in libxml).
+
+Warning: this function uses a #GdaDataModelIter iterator, and if @model does not offer a random access
+(check using gda_data_model_get_access_flags()), the iterator will be the same as normally used
+to access data in @model previously to calling this method, and this iterator will be moved (point to
+another row).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if no error occurred</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaDataModel</doc>
+          <type name="DataModel" c:type="GdaDataModel*"/>
+        </parameter>
+        <parameter name="parent" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parent XML node</doc>
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </parameter>
+        <parameter name="cols" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">an array containing which columns of @model will be exported, or %NULL for all columns</doc>
+          <array length="3" zero-terminated="0" c:type="gint*">
+            <type name="gint" c:type="gint"/>
+          </array>
+        </parameter>
+        <parameter name="nb_cols" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of columns in @cols</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="rows" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">an array containing which rows of @model will be exported, or %NULL for all rows</doc>
+          <array length="5" zero-terminated="0" c:type="gint*">
+            <type name="gint" c:type="gint"/>
+          </array>
+        </parameter>
+        <parameter name="nb_rows" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of rows in @rows</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="use_col_ids" transfer-ownership="none">
+          <doc xml:whitespace="preserve">set to %TRUE to add column ID information</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utility_data_model_find_column_description"
+              c:identifier="gda_utility_data_model_find_column_description">
+      <doc xml:whitespace="preserve">Finds the description of a field into Metadata from a #GdaDataModel.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The field's description, or NULL if description is not set</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaDataSelect data model</doc>
+          <type name="DataSelect" c:type="GdaDataSelect*"/>
+        </parameter>
+        <parameter name="field_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">field name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utility_holder_load_attributes"
+              c:identifier="gda_utility_holder_load_attributes"
+              throws="1">
+      <doc xml:whitespace="preserve">Note: this method may set the "source" custom string property</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if no error occurred</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="holder" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaHolder</doc>
+          <type name="Holder" c:type="GdaHolder*"/>
+        </parameter>
+        <parameter name="node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an xmlNodePtr with a &amp;lt;parameter&amp;gt; tag</doc>
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </parameter>
+        <parameter name="sources" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a list of #GdaDataModel</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="DataModel"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_compare" c:identifier="gda_value_compare">
+      <doc xml:whitespace="preserve">Compares two values of the same type, with the exception that a value of any type can be
+compared to a GDA_TYPE_NULL value, specifically:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;if @value1 and @value2 are both GDA_TYPE_NULL values then the returned value is 0&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;if @value1 is a GDA_TYPE_NULL value and @value2 is of another type then the returned value is -1&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;if @value1 is of another type and @value2 is a GDA_TYPE_NULL value then the returned value is 1&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;in all other cases, @value1 and @value2 must be of the same type and their values are compared&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+the same value, an integer less than 0 if @value1 is less than @value2 or
+an integer greater than 0 if @value1 is greater than @value2.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">if both values have the same type, returns 0 if both contain</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue to compare (not %NULL)</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the other #GValue to be compared to @value1 (not %NULL)</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_copy" c:identifier="gda_value_copy">
+      <doc xml:whitespace="preserve">Creates a new #GValue from an existing one.
+
+
+Free-function: gda_value_free</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated #GValue with a copy of the data in @value.</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to get a copy from.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_differ" c:identifier="gda_value_differ">
+      <doc xml:whitespace="preserve">Tells if two values are equal or not, by comparing memory representations. Unlike gda_value_compare(),
+the returned value is boolean, and gives no idea about ordering.
+
+The two values must be of the same type, with the exception that a value of any type can be
+compared to a GDA_TYPE_NULL value, specifically:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;if @value1 and @value2 are both GDA_TYPE_NULL values then the returned value is 0&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;if @value1 is a GDA_TYPE_NULL value and @value2 is of another type then the returned value is 1&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;if @value1 is of another type and @value2 is a GDA_TYPE_NULL value then the returned value is 1&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;in all other cases, @value1 and @value2 must be of the same type and their values are compared&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a non 0 value if @value1 and @value2 differ, and 0 if they are equal</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue to compare.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the other #GValue to be compared to @value1.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_free" c:identifier="gda_value_free">
+      <doc xml:whitespace="preserve">Deallocates all memory associated to a #GValue.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="full" allow-none="1">
+          <doc xml:whitespace="preserve">the resource to free (or %NULL)</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_binary" c:identifier="gda_value_get_binary">
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the value stored in @value.</doc>
+        <type name="Binary" c:type="GdaBinary*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue whose value we want to get.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_blob" c:identifier="gda_value_get_blob">
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the value stored in @value.</doc>
+        <type name="Blob" c:type="GdaBlob*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue whose value we want to get.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_geometric_point"
+              c:identifier="gda_value_get_geometric_point">
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the value stored in @value.</doc>
+        <type name="GeometricPoint" c:type="GdaGeometricPoint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue whose value we want to get.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_numeric" c:identifier="gda_value_get_numeric">
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the value stored in @value.</doc>
+        <type name="Numeric" c:type="GdaNumeric*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue whose value we want to get.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_short" c:identifier="gda_value_get_short">
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the value stored in @value.</doc>
+        <type name="gshort" c:type="gshort"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue whose value we want to get.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_time" c:identifier="gda_value_get_time">
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the value stored in @value.</doc>
+        <type name="Time" c:type="GdaTime*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue whose value we want to get.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_timestamp"
+              c:identifier="gda_value_get_timestamp">
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the value stored in @value.</doc>
+        <type name="Timestamp" c:type="GdaTimestamp*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue whose value we want to get.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_ushort" c:identifier="gda_value_get_ushort">
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the value stored in @value.</doc>
+        <type name="gushort" c:type="gushort"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue whose value we want to get.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_is_null" c:identifier="gda_value_is_null">
+      <doc xml:whitespace="preserve">Tests if a given @value is of type #GDA_TYPE_NULL.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a boolean that says whether or not @value is of type #GDA_TYPE_NULL.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to test.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_is_number" c:identifier="gda_value_is_number">
+      <doc xml:whitespace="preserve">Gets whether the value stored in the given #GValue is of numeric type or not.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if a number, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_new" c:identifier="gda_value_new">
+      <doc xml:whitespace="preserve">Makes a new #GValue of type @type.
+
+
+Free-function: gda_value_free</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly created #GValue with the specified @type. You need to set the value in the returned GValue.</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_new_binary" c:identifier="gda_value_new_binary">
+      <doc xml:whitespace="preserve">Makes a new #GValue of type #GDA_TYPE_BINARY with value @val.
+
+
+Free-function: gda_value_free</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly created #GValue.</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to set for the new #GValue.</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the memory pool pointer to by @val.</doc>
+          <type name="glong" c:type="glong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_new_blob" c:identifier="gda_value_new_blob">
+      <doc xml:whitespace="preserve">Makes a new #GValue of type #GDA_TYPE_BLOB with the data contained by @val.
+
+
+Free-function: gda_value_free</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly created #GValue.</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to set for the new #GValue.</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the memory pool pointer to by @val.</doc>
+          <type name="glong" c:type="glong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_new_blob_from_file"
+              c:identifier="gda_value_new_blob_from_file">
+      <doc xml:whitespace="preserve">Makes a new #GValue of type #GDA_TYPE_BLOB interfacing with the contents of the file
+named @filename
+
+
+Free-function: gda_value_free</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly created #GValue.</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the file to manipulate</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_new_default"
+              c:identifier="gda_value_new_default"
+              version="4.2.9">
+      <doc xml:whitespace="preserve">Creates a new default value.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GValue of the type #GDA_TYPE_DEFAULT</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="default_val" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the default value as a string, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_new_from_string"
+              c:identifier="gda_value_new_from_string">
+      <doc xml:whitespace="preserve">Makes a new #GValue of type @type from its string representation.
+
+For more information
+about the string format, see the gda_value_set_from_string() function.
+This function is typically used when reading configuration files or other non-user input that should be locale
+independent.
+
+
+Free-function: gda_value_free</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly created #GValue or %NULL if the string representation cannot be converted to the specified @type.</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="as_string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">stringified representation of the value.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_new_from_xml" c:identifier="gda_value_new_from_xml">
+      <doc xml:whitespace="preserve">Creates a GValue from an XML representation of it. That XML
+node corresponds to the following string representation:
+&amp;lt;value type="gdatype"&amp;gt;value&amp;lt;/value&amp;gt;
+
+For more information
+about the string format, see the gda_value_set_from_string() function.
+This function is typically used when reading configuration files or other non-user input that should be locale
+independent.
+
+
+Free-function: gda_value_free</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly created #GValue.</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an XML node representing the value.</doc>
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_new_null" c:identifier="gda_value_new_null">
+      <doc xml:whitespace="preserve">Creates a new #GValue initiated to a #GdaNull structure with a #GDA_TYPE_NULL, to
+represent a NULL in the database.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GValue of the type #GDA_TYPE_NULL</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+    </function>
+    <function name="value_new_timestamp_from_timet"
+              c:identifier="gda_value_new_timestamp_from_timet">
+      <doc xml:whitespace="preserve">Makes a new #GValue of type #GDA_TYPE_TIMESTAMP with value @val
+(of type time_t).
+
+
+Free-function: gda_value_free</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly created #GValue.</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to set for the new #GValue.</doc>
+          <type name="glong" c:type="time_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_reset_with_type"
+              c:identifier="gda_value_reset_with_type">
+      <doc xml:whitespace="preserve">Resets the #GValue and set a new type to #GType.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GValue to be reseted</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType to set to</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_binary" c:identifier="gda_value_set_binary">
+      <doc xml:whitespace="preserve">Stores @val into @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue that will store @val.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="binary" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaBinary structure with the data and its size to be stored in @value.</doc>
+          <type name="Binary" c:type="GdaBinary*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_blob" c:identifier="gda_value_set_blob">
+      <doc xml:whitespace="preserve">Stores @val into @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue that will store @val.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="blob" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdaBlob structure with the data and its size to be stored in @value.</doc>
+          <type name="Blob" c:type="GdaBlob*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_from_string"
+              c:identifier="gda_value_set_from_string">
+      <doc xml:whitespace="preserve">Stores the value data from its string representation as @type.
+
+The accepted formats are:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;G_TYPE_BOOLEAN: a caseless comparison is made with "true" or "false"&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;numerical types: C locale format (dot as a fraction separator)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;G_TYPE_DATE: see &lt;link linkend="gda-parse-iso8601-date"&gt;gda_parse_iso8601_date()&lt;/link&gt;&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;GDA_TYPE_TIME: see &lt;link linkend="gda-parse-iso8601-time"&gt;gda_parse_iso8601_time()&lt;/link&gt;&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;GDA_TYPE_TIMESTAMP: see &lt;link linkend="gda-parse-iso8601-timestamp"&gt;gda_parse_iso8601_timestamp()&lt;/link&gt;&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+
+This function is typically used when reading configuration files or other non-user input that should be locale
+independent.
+
+its string representation; it not means that the value is converted
+successfully, just that the transformation is available. %FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the value has been converted to @type from</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue that will store @val.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="as_string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the stringified representation of the value.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the value</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_from_value"
+              c:identifier="gda_value_set_from_value">
+      <doc xml:whitespace="preserve">Sets the value of a #GValue from another #GValue. This
+is different from #gda_value_copy, which creates a new #GValue.
+#gda_value_set_from_value, on the other hand, copies the contents
+of @copy into @value, which must already be allocated.
+
+If values are incompatible (see @g_value_type_compatible) then @value is set to a
+#GDA_TYPE_NULL, and %FALSE is returned.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="from" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value to copy from.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_geometric_point"
+              c:identifier="gda_value_set_geometric_point">
+      <doc xml:whitespace="preserve">Stores @val into @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue that will store @val.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to be stored in @value.</doc>
+          <type name="GeometricPoint" c:type="GdaGeometricPoint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_null" c:identifier="gda_value_set_null">
+      <doc xml:whitespace="preserve">Sets the type of @value to #GDA_TYPE_NULL.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue that will store a value of type #GDA_TYPE_NULL.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_numeric" c:identifier="gda_value_set_numeric">
+      <doc xml:whitespace="preserve">Stores @val into @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue that will store @val.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to be stored in @value.</doc>
+          <type name="Numeric" c:type="GdaNumeric*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_short" c:identifier="gda_value_set_short">
+      <doc xml:whitespace="preserve">Stores @val into @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue that will store @val.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to be stored in @value.</doc>
+          <type name="gshort" c:type="gshort"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_time" c:identifier="gda_value_set_time">
+      <doc xml:whitespace="preserve">Stores @val into @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue that will store @val.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to be stored in @value.</doc>
+          <type name="Time" c:type="GdaTime*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_timestamp"
+              c:identifier="gda_value_set_timestamp">
+      <doc xml:whitespace="preserve">Stores @val into @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue that will store @val.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to be stored in @value.</doc>
+          <type name="Timestamp" c:type="GdaTimestamp*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_ushort" c:identifier="gda_value_set_ushort">
+      <doc xml:whitespace="preserve">Stores @val into @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue that will store @val.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to be stored in @value.</doc>
+          <type name="gushort" c:type="gushort"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_stringify" c:identifier="gda_value_stringify">
+      <doc xml:whitespace="preserve">Converts a GValue to its string representation which is a human readable value. Note that the
+returned string does not take into account the current locale of the user (on the contrary to the
+#GdaDataHandler objects). Using this function should be limited to debugging and values serialization
+purposes.
+
+Dates are converted in a YYYY-MM-DD format.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new string, or %NULL if the conversion cannot be done. Free the value with a g_free() when you've finished using it.</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_take_binary" c:identifier="gda_value_take_binary">
+      <doc xml:whitespace="preserve">Stores @val into @value, but on the contrary to gda_value_set_binary(), the @binary
+argument is not copied, but used as-is and it should be considered owned by @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue that will store @val.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="binary" transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdaBinary structure with the data and its size to be stored in @value.</doc>
+          <type name="Binary" c:type="GdaBinary*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_take_blob" c:identifier="gda_value_take_blob">
+      <doc xml:whitespace="preserve">Stores @val into @value, but on the contrary to gda_value_set_blob(), the @blob
+argument is not copied, but used as-is and it should be considered owned by @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue that will store @val.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="blob" transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdaBlob structure with the data and its size to be stored in @value.</doc>
+          <type name="Blob" c:type="GdaBlob*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_to_xml"
+              c:identifier="gda_value_to_xml"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Serializes the given #GValue to an XML node string.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the XML node. Once not needed anymore, you should free it.</doc>
+        <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/libgda/Makefile.am b/libgda/Makefile.am
index be7e636..9c99b8a 100644
--- a/libgda/Makefile.am
+++ b/libgda/Makefile.am
@@ -363,7 +363,7 @@ endif
 gir_DATA = $(INTROSPECTION_GIRS)
 typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
 
-CLEANFILES += $(INTROSPECTION_GIRS) $(typelibs_DATA)
+CLEANFILES += $(typelibs_DATA)
 endif
 
 if ENABLE_VALA
@@ -379,6 +379,4 @@ vapi_DATA=libgda-5.0.vapi
 EXTRA_DIST += \
 	Gda-5.0.metadata \
         $(vapi_DATA)
-
-CLEANFILES += libgda-5.0.vapi
 endif
diff --git a/libgda/libgda-5.0.vapi b/libgda/libgda-5.0.vapi
new file mode 100644
index 0000000..27a8cae
--- /dev/null
+++ b/libgda/libgda-5.0.vapi
@@ -0,0 +1,2142 @@
+/* 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 {
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[Compact]
+	public class AttributesManager {
+		public void clear (void* ptr);
+		public void copy (void* from, Gda.AttributesManager to_mgr, void* to);
+		public void free ();
+		public GLib.Value @get (void* ptr, string att_name);
+		public void @set (void* ptr, string att_name, GLib.Value value);
+		public void set_full (void* ptr, string att_name, GLib.Value value, GLib.DestroyNotify destroy);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_batch_get_type ()")]
+	public class Batch : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public Batch ();
+		public void add_statement (Gda.Statement stmt);
+		public Gda.Batch copy ();
+		public static GLib.Quark error_quark ();
+		public bool get_parameters (out Gda.Set out_params) throws GLib.Error;
+		public unowned GLib.SList<Gda.Statement> get_statements ();
+		public void remove_statement (Gda.Statement stmt);
+		public string serialize ();
+		public virtual signal void changed (GLib.Object changed_stmt);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gda_binary_get_type ()")]
+	[Compact]
+	public class Binary {
+		public long binary_length;
+		public uint8 data;
+		public static void* copy (void* boxed);
+		public static void free (owned void* boxed);
+		public string to_string (uint maxlen);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gda_blob_get_type ()")]
+	[Compact]
+	public class Blob {
+		public weak Gda.Binary data;
+		public weak Gda.BlobOp op;
+		public static void* copy (void* boxed);
+		public static void free (owned void* boxed);
+		public void set_op (Gda.BlobOp? op);
+		public string to_string (uint maxlen);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_blob_op_get_type ()")]
+	public abstract class BlobOp : GLib.Object {
+		public void* _gda_reserved1;
+		[CCode (has_construct_function = false)]
+		protected BlobOp ();
+		public virtual long get_length ();
+		public virtual long read (Gda.Blob blob, long offset, long size);
+		public bool read_all (Gda.Blob blob);
+		public virtual long write (Gda.Blob blob, long offset);
+		public virtual bool write_all (Gda.Blob blob);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_column_get_type ()")]
+	public class Column : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public Column ();
+		public Gda.Column copy ();
+		public bool get_allow_null ();
+		public GLib.Value get_attribute (string attribute);
+		public bool get_auto_increment ();
+		public unowned string get_dbms_type ();
+		public GLib.Value get_default_value ();
+		public unowned string get_description ();
+		public GLib.Type get_g_type ();
+		public unowned string get_name ();
+		public int get_position ();
+		public void set_allow_null (bool allow);
+		public void set_attribute (string attribute, GLib.Value? value, GLib.DestroyNotify? destroy);
+		public void set_auto_increment (bool is_auto);
+		public void set_dbms_type (string dbms_type);
+		public void set_default_value (GLib.Value? default_value);
+		public void set_description (string title);
+		public void set_g_type (GLib.Type type);
+		public void set_name (string name);
+		public void set_position (int position);
+		[NoAccessorMethod]
+		public string id { owned get; set; }
+		public virtual signal void g_type_changed (GLib.Type old_type, GLib.Type new_type);
+		public virtual signal void name_changed (string old_name);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_config_get_type ()")]
+	public class Config : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected Config ();
+		public static bool can_modify_system_config ();
+		public static bool define_dsn (Gda.DsnInfo info) throws GLib.Error;
+		public static bool dsn_needs_authentication (string dsn_name);
+		public static GLib.Quark error_quark ();
+		public static Gda.Config @get ();
+		public static Gda.DsnInfo get_dsn_info (string dsn_name);
+		public static Gda.DsnInfo get_dsn_info_at_index (int index);
+		public static int get_dsn_info_index (string dsn_name);
+		public static int get_nb_dsn ();
+		public static unowned Gda.ServerProvider get_provider (string provider_name) throws GLib.Error;
+		public static Gda.ProviderInfo get_provider_info (string provider_name);
+		public static Gda.DataModel list_dsn ();
+		public static Gda.DataModel list_providers ();
+		public static bool remove_dsn (string dsn_name) throws GLib.Error;
+		[NoAccessorMethod]
+		public string system_filename { owned get; set; }
+		[NoAccessorMethod]
+		public string user_filename { owned get; set; }
+		public virtual signal void dsn_added (void* new_dsn);
+		public virtual signal void dsn_changed (void* dsn);
+		public virtual signal void dsn_removed (void* old_dsn);
+		public virtual signal void dsn_to_be_removed (void* old_dsn);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_connection_get_type ()")]
+	public class Connection : GLib.Object, Gda.Lockable {
+		[CCode (has_construct_function = false)]
+		protected Connection ();
+		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;
+		public bool async_cancel (uint task_id) throws GLib.Error;
+		public GLib.Object async_fetch_result (uint task_id, out Gda.Set last_insert_row) throws GLib.Error;
+		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;
+		public void clear_events_list ();
+		public void close ();
+		public void close_no_warning ();
+		public bool commit_transaction (string? name) throws GLib.Error;
+		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);
+		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 ();
+		public int execute_non_select_command (string sql) throws GLib.Error;
+		public Gda.DataModel execute_select_command (string sql) throws GLib.Error;
+		[CCode (has_construct_function = false)]
+		public Connection.from_dsn (string dsn, string? auth_string, Gda.ConnectionOptions options) throws GLib.Error;
+		[CCode (has_construct_function = false)]
+		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 ();
+		public unowned string get_dsn ();
+		public unowned GLib.List<Gda.ConnectionEvent> get_events ();
+		public Gda.MetaStore get_meta_store ();
+		public Gda.DataModel get_meta_store_data_v (Gda.ConnectionMetaType meta_type, GLib.List<Gda.Holder> filters) throws GLib.Error;
+		public Gda.ConnectionOptions get_options ();
+		public unowned Gda.PStmt get_prepared_statement (Gda.Statement gda_stmt);
+		public unowned Gda.ServerProvider get_provider ();
+		public unowned string get_provider_name ();
+		public unowned Gda.TransactionStatus get_transaction_status ();
+		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);
+		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;
+		public Gda.ConnectionEvent point_available_event (Gda.ConnectionEventType type);
+		public string quote_sql_identifier (string id);
+		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;
+		public GLib.Object statement_execute (Gda.Statement stmt, Gda.Set? @params, Gda.StatementModelUsage model_usage, out Gda.Set last_insert_row) throws GLib.Error;
+		public int statement_execute_non_select (Gda.Statement stmt, Gda.Set? @params, out Gda.Set last_insert_row) throws GLib.Error;
+		public Gda.DataModel statement_execute_select (Gda.Statement stmt, Gda.Set? @params) throws GLib.Error;
+		public Gda.DataModel statement_execute_select_full (Gda.Statement stmt, Gda.Set? @params, Gda.StatementModelUsage model_usage, [CCode (array_length = false)] GLib.Type[]? col_types) throws GLib.Error;
+		public bool statement_prepare (Gda.Statement stmt) throws GLib.Error;
+		public string statement_to_sql (Gda.Statement stmt, Gda.Set? @params, Gda.StatementSqlFlag flags, out GLib.SList<weak Gda.Holder> params_used) throws GLib.Error;
+		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;
+		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]
+		public string auth_string { owned get; set; }
+		[NoAccessorMethod]
+		public string cnc_string { owned get; set; }
+		[NoAccessorMethod]
+		public string dsn { owned get; set; }
+		[NoAccessorMethod]
+		public int events_history_size { get; set; }
+		[NoAccessorMethod]
+		public bool execution_timer { get; set; }
+		[NoAccessorMethod]
+		public bool is_wrapper { get; construct; }
+		[NoAccessorMethod]
+		public Gda.MetaStore meta_store { owned get; set; }
+		[NoAccessorMethod]
+		public bool monitor_wrapped_in_mainloop { get; set; }
+		[NoAccessorMethod]
+		public Gda.ServerProvider provider { owned get; set; }
+		[NoAccessorMethod]
+		public void* thread_owner { get; set; }
+		public virtual signal void conn_closed ();
+		public virtual signal void conn_opened ();
+		public virtual signal void conn_to_close ();
+		public virtual signal void dsn_changed ();
+		public virtual signal void error (Gda.ConnectionEvent error);
+		public virtual signal void transaction_status_changed ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_connection_event_get_type ()")]
+	public class ConnectionEvent : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected ConnectionEvent ();
+		public long get_code ();
+		public unowned string get_description ();
+		public Gda.ConnectionEventType get_event_type ();
+		public Gda.ConnectionEventCode get_gda_code ();
+		public unowned string get_source ();
+		public unowned string get_sqlstate ();
+		public void set_code (long code);
+		public void set_description (string description);
+		public void set_event_type (Gda.ConnectionEventType type);
+		public void set_gda_code (Gda.ConnectionEventCode code);
+		public void set_source (string source);
+		public void set_sqlstate (string sqlstate);
+		[NoAccessorMethod]
+		public int type { get; set; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_data_access_wrapper_get_type ()")]
+	public class DataAccessWrapper : GLib.Object, Gda.DataModel {
+		[CCode (has_construct_function = false)]
+		protected DataAccessWrapper ();
+		public static Gda.DataModel @new (Gda.DataModel model);
+		[NoAccessorMethod]
+		public Gda.DataModel model { owned get; construct; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_data_comparator_get_type ()")]
+	public class DataComparator : GLib.Object {
+		[CCode (has_construct_function = false, type = "GObject*")]
+		public DataComparator (Gda.DataModel old_model, Gda.DataModel new_model);
+		public bool compute_diff () throws GLib.Error;
+		public static GLib.Quark error_quark ();
+		public Gda.Diff get_diff (int pos);
+		public int get_n_diffs ();
+		public void set_key_columns ([CCode (array_length_cname = "nb_cols", array_length_pos = 1.1)] int[] col_numbers);
+		[NoAccessorMethod]
+		public Gda.DataModel new_model { owned get; set; }
+		[NoAccessorMethod]
+		public Gda.DataModel old_model { owned get; set; }
+		public virtual signal bool diff_computed (void* diff);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_data_model_array_get_type ()")]
+	public class DataModelArray : GLib.Object, Gda.DataModel {
+		[CCode (has_construct_function = false)]
+		protected DataModelArray ();
+		public void clear ();
+		public unowned Gda.Row get_row (int row) throws GLib.Error;
+		public static Gda.DataModel @new (int cols);
+		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]
+		public uint n_columns { get; set; }
+		[NoAccessorMethod]
+		public bool read_only { get; set; }
+	}
+	[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)]
+		protected DataModelDir ();
+		public void clean_errors ();
+		public static Gda.DataModel @new (string basedir);
+		[NoAccessorMethod]
+		public string basedir { owned get; construct; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_data_model_dsn_list_get_type ()")]
+	public class DataModelDsnList : GLib.Object, Gda.DataModel {
+		[CCode (has_construct_function = false)]
+		protected DataModelDsnList ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_data_model_import_get_type ()")]
+	public class DataModelImport : GLib.Object, Gda.DataModel {
+		[CCode (has_construct_function = false)]
+		protected DataModelImport ();
+		public void clean_errors ();
+		public static Gda.DataModel new_file (string filename, bool random_access, Gda.Set? options);
+		public static Gda.DataModel new_mem (string data, bool random_access, Gda.Set? options);
+		public static Gda.DataModel new_xml_node ([CCode (type = "xmlNodePtr")] Xml.Node* node);
+		[NoAccessorMethod]
+		public string data_string { owned get; construct; }
+		[NoAccessorMethod]
+		public string filename { owned get; construct; }
+		[NoAccessorMethod]
+		public Gda.Set options { owned get; construct; }
+		[NoAccessorMethod]
+		public bool random_access { get; construct; }
+		[NoAccessorMethod]
+		public bool strict { get; set construct; }
+		[NoAccessorMethod]
+		public void* xml_node { get; construct; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_data_model_iter_get_type ()")]
+	public class DataModelIter : Gda.Set {
+		[CCode (has_construct_function = false)]
+		protected DataModelIter ();
+		public static GLib.Quark error_quark ();
+		public unowned Gda.Holder get_holder_for_field (int col);
+		public int get_row ();
+		public unowned GLib.Value? get_value_at (int col);
+		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 ();
+		public bool is_valid ();
+		public bool move_next ();
+		public bool move_prev ();
+		public bool move_to_row (int row);
+		public bool set_value_at (int col, GLib.Value value) throws GLib.Error;
+		[NoAccessorMethod]
+		public int current_row { get; set; }
+		[NoAccessorMethod]
+		public Gda.DataModel data_model { owned get; construct; }
+		[NoAccessorMethod]
+		public Gda.DataModel forced_model { owned get; set; }
+		[NoAccessorMethod]
+		public bool update_model { get; set; }
+		public virtual signal void end_of_data ();
+		public virtual signal void row_changed (int row);
+	}
+	[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 ();
+		public bool add_data (Gda.DataPivotAggregate aggregate_type, string field, string? alias) throws GLib.Error;
+		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);
+		public bool populate () throws GLib.Error;
+		[NoAccessorMethod]
+		public Gda.DataModel model { owned get; set; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_data_proxy_get_type ()")]
+	public class DataProxy : GLib.Object, Gda.DataModel {
+		[CCode (has_construct_function = false)]
+		protected DataProxy ();
+		public void alter_value_attributes (int proxy_row, int col, Gda.ValueAttribute alter_flags);
+		public bool apply_all_changes () throws GLib.Error;
+		public bool apply_row_changes (int proxy_row) throws GLib.Error;
+		public bool cancel_all_changes ();
+		public void cancel_row_changes (int proxy_row, int col);
+		public void @delete (int proxy_row);
+		public static GLib.Quark error_quark ();
+		public unowned string get_filter_expr ();
+		public int get_filtered_n_rows ();
+		public int get_n_modified_rows ();
+		public int get_n_new_rows ();
+		public unowned Gda.DataModel get_proxied_model ();
+		public int get_proxied_model_n_cols ();
+		public int get_proxied_model_n_rows ();
+		public int get_proxied_model_row (int proxy_row);
+		public int get_sample_end ();
+		public int get_sample_size ();
+		public int get_sample_start ();
+		public Gda.ValueAttribute get_value_attributes (int proxy_row, int col);
+		public GLib.SList<weak GLib.Value> get_values (int proxy_row, [CCode (array_length = false)] int[] cols_index, int n_cols);
+		public bool has_changed ();
+		public bool is_read_only ();
+		public static GLib.Object @new (Gda.DataModel model);
+		public bool row_has_changed (int proxy_row);
+		public bool row_is_deleted (int proxy_row);
+		public bool row_is_inserted (int proxy_row);
+		public bool set_filter_expr (string? filter_expr) throws GLib.Error;
+		public bool set_ordering_column (int col) throws GLib.Error;
+		public void set_sample_size (int sample_size);
+		public void set_sample_start (int sample_start);
+		public void undelete (int proxy_row);
+		[NoAccessorMethod]
+		public bool defer_sync { get; set; }
+		[NoAccessorMethod]
+		public Gda.DataModel model { owned get; set construct; }
+		[NoAccessorMethod]
+		public bool prepend_null_entry { get; set; }
+		public int sample_size { get; set construct; }
+		public virtual signal void filter_changed ();
+		public virtual signal void row_changes_applied (int row, int proxied_row);
+		public virtual signal void row_delete_changed (int row, bool to_be_deleted);
+		public virtual signal void sample_changed (int sample_start, int sample_end);
+		public virtual signal void sample_size_changed (int sample_size);
+		public virtual signal GLib.Error validate_row_changes (int row, int proxied_row);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_data_select_get_type ()")]
+	public abstract class DataSelect : GLib.Object, Gda.DataModel {
+		public int advertized_nrows;
+		public int nb_stored_rows;
+		public weak Gda.PStmt prep_stmt;
+		[CCode (has_construct_function = false)]
+		protected DataSelect ();
+		public bool compute_columns_attributes () throws GLib.Error;
+		public bool compute_modification_statements () throws GLib.Error;
+		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 ();
+		[NoWrapper]
+		public virtual bool fetch_at (Gda.Row prow, int rownum) throws GLib.Error;
+		[NoWrapper]
+		public virtual int fetch_nb_rows ();
+		[NoWrapper]
+		public virtual bool fetch_next (Gda.Row prow, int rownum) throws GLib.Error;
+		[NoWrapper]
+		public virtual bool fetch_prev (Gda.Row prow, int rownum) throws GLib.Error;
+		[NoWrapper]
+		public virtual bool fetch_random (Gda.Row prow, int rownum) throws GLib.Error;
+		public unowned Gda.Connection get_connection ();
+		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;
+		public bool set_row_selection_condition_sql (string sql_where) throws GLib.Error;
+		[NoWrapper]
+		public virtual bool store_all () throws GLib.Error;
+		[NoAccessorMethod]
+		public bool auto_reset { get; set; }
+		public Gda.Connection connection { get; construct; }
+		[NoAccessorMethod]
+		public Gda.Statement delete_stmt { owned get; set; }
+		[NoAccessorMethod]
+		public Gda.Set exec_params { owned get; construct; }
+		[NoAccessorMethod]
+		public double execution_delay { get; set; }
+		[NoAccessorMethod]
+		public Gda.Statement insert_stmt { owned get; set; }
+		[NoAccessorMethod]
+		public uint model_usage { get; construct; }
+		[NoAccessorMethod]
+		public Gda.PStmt prepared_stmt { owned get; set; }
+		[NoAccessorMethod]
+		public Gda.Statement select_stmt { owned get; }
+		[NoAccessorMethod]
+		public bool store_all_rows { get; set; }
+		[NoAccessorMethod]
+		public Gda.Statement update_stmt { owned get; set; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gda_default_get_type ()")]
+	[Compact]
+	public class Default {
+		public static string escape_string (string string);
+		public static string unescape_string (string string);
+	}
+	[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 ()")]
+	[Compact]
+	public class GeometricPoint {
+		public double x;
+		public double y;
+		public static void* copy (void* boxed);
+		public static void free (void* boxed);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_handler_bin_get_type ()")]
+	public class HandlerBin : GLib.Object, Gda.DataHandler {
+		[CCode (has_construct_function = false)]
+		protected HandlerBin ();
+		public static Gda.DataHandler @new ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[Compact]
+	public class HandlerBinPriv {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_handler_boolean_get_type ()")]
+	public class HandlerBoolean : GLib.Object, Gda.DataHandler {
+		[CCode (has_construct_function = false)]
+		protected HandlerBoolean ();
+		public static Gda.DataHandler @new ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[Compact]
+	public class HandlerBooleanPriv {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_handler_numerical_get_type ()")]
+	public class HandlerNumerical : GLib.Object, Gda.DataHandler {
+		[CCode (has_construct_function = false)]
+		protected HandlerNumerical ();
+		public static Gda.DataHandler @new ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[Compact]
+	public class HandlerNumericalPriv {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_handler_string_get_type ()")]
+	public class HandlerString : GLib.Object, Gda.DataHandler {
+		[CCode (has_construct_function = false)]
+		protected HandlerString ();
+		public static Gda.DataHandler @new ();
+		public static Gda.DataHandler new_with_provider (Gda.ServerProvider prov, Gda.Connection? cnc);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[Compact]
+	public class HandlerStringPriv {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_handler_time_get_type ()")]
+	public class HandlerTime : GLib.Object, Gda.DataHandler {
+		[CCode (has_construct_function = false)]
+		protected HandlerTime ();
+		public string get_format (GLib.Type type);
+		public string get_no_locale_str_from_value (GLib.Value value);
+		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);
+		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")]
+	[Compact]
+	public class HandlerTimePriv {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_handler_type_get_type ()")]
+	public class HandlerType : GLib.Object, Gda.DataHandler {
+		[CCode (has_construct_function = false)]
+		protected HandlerType ();
+		public static Gda.DataHandler @new ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[Compact]
+	public class HandlerTypePriv {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_holder_get_type ()")]
+	public class Holder : GLib.Object, Gda.Lockable {
+		[CCode (has_construct_function = false)]
+		public Holder (GLib.Type type);
+		[NoWrapper]
+		public virtual void att_changed (string att_name, GLib.Value att_value);
+		public Gda.Holder copy ();
+		public static GLib.Quark error_quark ();
+		public void force_invalid ();
+		public void force_invalid_e (owned GLib.Error? error);
+		public GLib.Value get_attribute (string attribute);
+		public unowned Gda.Holder get_bind ();
+		public GLib.Value get_default_value ();
+		public GLib.Type get_g_type ();
+		public unowned string get_id ();
+		public bool get_not_null ();
+		public unowned Gda.DataModel get_source_model (int col);
+		public unowned GLib.Value? get_value ();
+		public string get_value_str (Gda.DataHandler? dh);
+		public bool is_valid ();
+		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;
+		public void set_default_value (GLib.Value value);
+		public void set_not_null (bool not_null);
+		public bool set_source_model (Gda.DataModel model, int col) throws GLib.Error;
+		public bool set_value (GLib.Value? value) throws GLib.Error;
+		public bool set_value_str (Gda.DataHandler dh, string value) throws GLib.Error;
+		public bool set_value_to_default ();
+		public GLib.Value take_static_value (GLib.Value value, bool value_changed) throws GLib.Error;
+		public bool take_value (owned GLib.Value value) throws GLib.Error;
+		public bool value_is_default ();
+		[NoAccessorMethod]
+		public string description { owned get; set; }
+		[NoAccessorMethod]
+		public Gda.Holder full_bind { owned get; set; }
+		[NoAccessorMethod]
+		public GLib.Type g_type { get; set construct; }
+		[NoAccessorMethod]
+		public string id { owned get; set; }
+		[NoAccessorMethod]
+		public string name { owned get; set; }
+		public bool not_null { get; set; }
+		[NoAccessorMethod]
+		public Gda.Holder simple_bind { owned get; set; }
+		[NoAccessorMethod]
+		public int source_column { get; set; }
+		[NoAccessorMethod]
+		public Gda.DataModel source_model { owned get; set; }
+		public signal void attribute_changed (string att_name, GLib.Value att_value);
+		public virtual signal void changed ();
+		public virtual signal void source_changed ();
+		public virtual signal GLib.Error validate_change (GLib.Value new_value);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_meta_store_get_type ()")]
+	public class MetaStore : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public MetaStore (string? cnc_string);
+		public Gda.DataModel create_modify_data_model (string table_name);
+		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 ();
+		public Gda.DataModel extract_v (string select_sql, GLib.HashTable<char,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 ();
+		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;
+		public GLib.SList<weak string> schema_get_all_tables ();
+		public GLib.SList<weak string> schema_get_depend_tables (string table_name);
+		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;
+		public void set_identifiers_style (Gda.SqlIdentifierStyle style);
+		public void set_reserved_keywords_func (Gda.SqlReservedKeywordsFunc? func);
+		public static string sql_identifier_quote (string id, Gda.Connection cnc);
+		[NoWrapper]
+		public virtual GLib.Error suggest_update (Gda.MetaContext suggest);
+		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);
+		public string catalog { construct; }
+		[NoAccessorMethod]
+		public Gda.Connection cnc { owned get; construct; }
+		public string cnc_string { construct; }
+		public string schema { construct; }
+		public virtual signal void meta_reset ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_meta_struct_get_type ()")]
+	public class MetaStruct : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public MetaStruct (Gda.MetaStore store, Gda.MetaStructFeature features);
+		public Gda.MetaDbObject complement (Gda.MetaDbObjectType type, GLib.Value? catalog, GLib.Value? schema, GLib.Value name) throws GLib.Error;
+		public bool complement_all () throws GLib.Error;
+		public bool complement_default () throws GLib.Error;
+		public bool complement_depend (Gda.MetaDbObject dbo) throws GLib.Error;
+		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 Gda.MetaDbObject get_db_object (GLib.Value? catalog, GLib.Value? schema, GLib.Value name);
+		public bool sort_db_objects (Gda.MetaSortType sort_type) throws GLib.Error;
+		[NoAccessorMethod]
+		public uint features { get; construct; }
+		[NoAccessorMethod]
+		public Gda.MetaStore meta_store { owned get; construct; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[Compact]
+	public class Mutex {
+		public void free ();
+		public void @lock ();
+		public bool trylock ();
+		public void unlock ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gda_null_get_type ()")]
+	[Compact]
+	public class Null {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gda_numeric_get_type ()")]
+	[Compact]
+	public class Numeric {
+		public weak string number;
+		public long precision;
+		public long width;
+		[CCode (has_construct_function = false)]
+		public Numeric ();
+		public Gda.Numeric copy ();
+		public void free ();
+		public double get_double ();
+		public long get_precision ();
+		public string? get_string ();
+		public long get_width ();
+		public void set_double (double number);
+		public void set_from_string (string str);
+		public void set_precision (long precision);
+		public void set_width (long width);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_pstmt_get_type ()")]
+	public abstract class PStmt : GLib.Object {
+		public int ncols;
+		public weak string sql;
+		public GLib.Type types;
+		[CCode (has_construct_function = false)]
+		protected PStmt ();
+		public void copy_contents (Gda.PStmt dest);
+		public unowned Gda.Statement get_gda_statement ();
+		public void set_gda_statement (Gda.Statement stmt);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gda_quark_list_get_type ()")]
+	[Compact]
+	public class QuarkList {
+		[CCode (has_construct_function = false)]
+		public QuarkList ();
+		public void add_from_string (string string, bool cleanup);
+		public void clear ();
+		public Gda.QuarkList copy ();
+		public unowned string find (string name);
+		public void @foreach (GLib.HFunc func);
+		public void free ();
+		[CCode (has_construct_function = false)]
+		public QuarkList.from_string (string string);
+		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)]
+		public RepetitiveStatement (Gda.Statement stmt);
+		public bool append_set (Gda.Set values, bool make_copy);
+		public GLib.SList<weak Gda.Set> get_all_sets ();
+		public bool get_template_set (Gda.Set @set) throws GLib.Error;
+		[NoAccessorMethod]
+		public Gda.Statement statement { owned get; construct; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_row_get_type ()")]
+	public class Row : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public Row (int count);
+		public int get_length ();
+		public GLib.Value? get_value (int num);
+		public void invalidate_value (GLib.Value value);
+		public void invalidate_value_e (GLib.Value value, owned GLib.Error? error);
+		public bool value_is_valid (GLib.Value value);
+		public bool value_is_valid_e (GLib.Value value) throws GLib.Error;
+		[NoAccessorMethod]
+		public int nb_values { set; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_server_operation_get_type ()")]
+	public class ServerOperation : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public ServerOperation (Gda.ServerOperationType op_type, string xml_file);
+		public uint add_item_to_sequence (string seq_path);
+		public bool del_item_from_sequence (string item_path);
+		public static GLib.Quark error_quark ();
+		public string get_node_parent (string path);
+		public string get_node_path_portion (string path);
+		public Gda.ServerOperationNodeType get_node_type (string path, Gda.ServerOperationNodeStatus? status);
+		public Gda.ServerOperationType get_op_type ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public string[] get_root_nodes ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public string[] get_sequence_item_names (string path);
+		public uint get_sequence_max_size (string path);
+		public uint get_sequence_min_size (string path);
+		public unowned string get_sequence_name (string path);
+		public uint get_sequence_size (string path);
+		public string get_sql_identifier_at_path (Gda.Connection? cnc, Gda.ServerProvider? prov, string path);
+		public GLib.Value get_value_at_path (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);
+		public bool perform_create_database (string? provider) throws GLib.Error;
+		public bool perform_create_table () throws GLib.Error;
+		public bool perform_drop_database (string? provider) throws GLib.Error;
+		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;
+		[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);
+		public bool set_value_at_path (string? value, string path) throws GLib.Error;
+		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; }
+		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);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_server_provider_get_type ()")]
+	public abstract class ServerProvider : GLib.Object {
+		[CCode (has_construct_function = false)]
+		protected ServerProvider ();
+		[NoWrapper]
+		public virtual bool add_savepoint (Gda.Connection cnc, string name) throws GLib.Error;
+		[NoWrapper]
+		public virtual bool begin_transaction (Gda.Connection cnc, string name, Gda.TransactionIsolation level) throws GLib.Error;
+		[NoWrapper]
+		public virtual bool cancel (Gda.Connection cnc, uint task_id) throws GLib.Error;
+		[NoWrapper]
+		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.SqlParser create_parser (Gda.Connection? cnc);
+		[NoWrapper]
+		public virtual bool delete_savepoint (Gda.Connection cnc, string name) throws GLib.Error;
+		public static GLib.Quark error_quark ();
+		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);
+		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 virtual unowned string get_name ();
+		public virtual unowned string get_server_version (Gda.Connection cnc);
+		public virtual unowned string get_version ();
+		[NoWrapper]
+		public virtual bool handle_async (Gda.Connection cnc) throws GLib.Error;
+		public void handler_declare (Gda.DataHandler dh, Gda.Connection cnc, GLib.Type g_type, string dbms_type);
+		public unowned Gda.DataHandler handler_find (Gda.Connection cnc, GLib.Type g_type, string dbms_type);
+		[NoWrapper]
+		public virtual string identifier_quote (Gda.Connection cnc, string id, bool for_meta_store, bool force_quotes);
+		public unowned Gda.SqlParser internal_get_parser ();
+		[NoWrapper]
+		public virtual bool is_busy (Gda.Connection cnc) throws GLib.Error;
+		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;
+		[NoWrapper]
+		public virtual bool rollback_savepoint (Gda.Connection cnc, string name) throws GLib.Error;
+		[NoWrapper]
+		public virtual bool rollback_transaction (Gda.Connection cnc, string name) throws GLib.Error;
+		[NoWrapper]
+		public virtual bool statement_prepare (Gda.Connection cnc, Gda.Statement stmt) throws GLib.Error;
+		public GLib.Value string_to_value (Gda.Connection? cnc, string string, GLib.Type preferred_type, string? dbms_type);
+		public virtual bool supports_feature (Gda.Connection? cnc, Gda.ConnectionFeature feature);
+		public virtual bool supports_operation (Gda.Connection? cnc, Gda.ServerOperationType type, Gda.Set? options);
+		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")]
+	[Compact]
+	public class ServerProviderInfo {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_set_get_type ()")]
+	public class Set : GLib.Object {
+		public GLib.List<Gda.SetGroup> groups_list;
+		public GLib.List<Gda.SetNode> nodes_list;
+		public GLib.List<Gda.SetSource> sources_list;
+		[CCode (has_construct_function = false)]
+		public Set (GLib.SList<Gda.Holder> holders);
+		public bool add_holder (Gda.Holder holder);
+		public Gda.Set copy ();
+		public static GLib.Quark error_quark ();
+		[CCode (has_construct_function = false)]
+		public Set.from_spec_node ([CCode (type = "xmlNodePtr")] Xml.Node* xml_spec) throws GLib.Error;
+		[CCode (has_construct_function = false)]
+		public Set.from_spec_string (string xml_spec) throws GLib.Error;
+		public Gda.SetGroup get_group (Gda.Holder holder);
+		public unowned Gda.Holder get_holder (string holder_id);
+		public GLib.Value get_holder_value (string holder_id);
+		public Gda.SetNode get_node (Gda.Holder holder);
+		public unowned Gda.Holder get_nth_holder (int pos);
+		public Gda.SetSource get_source (Gda.Holder holder);
+		public 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)]
+		public Set.read_only (GLib.SList<Gda.Holder> holders);
+		public void remove_holder (Gda.Holder holder);
+		public void replace_source_model (Gda.SetSource source, Gda.DataModel model);
+		[NoAccessorMethod]
+		public string description { owned get; set; }
+		public void* holders { construct; }
+		[NoAccessorMethod]
+		public string id { owned get; set; }
+		[NoAccessorMethod]
+		public string name { owned 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);
+		public virtual signal void holder_type_set (Gda.Holder holder);
+		public virtual signal void public_data_changed ();
+		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 ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_short_get_type ()")]
+	public class Short {
+		[CCode (has_construct_function = false)]
+		protected Short ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_sql_builder_get_type ()")]
+	public class SqlBuilder : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public SqlBuilder (Gda.SqlStatementType stmt_type);
+		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);
+		public Gda.SqlBuilderId add_cond (Gda.SqlOperatorType op, Gda.SqlBuilderId op1, Gda.SqlBuilderId op2, Gda.SqlBuilderId op3);
+		public Gda.SqlBuilderId add_expr_value (Gda.DataHandler? dh, GLib.Value? value);
+		public Gda.SqlBuilderId add_field_id (string field_name, string? table_name);
+		public void add_field_value_as_gvalue (string field_name, GLib.Value? value);
+		public void add_field_value_id (Gda.SqlBuilderId field_id, Gda.SqlBuilderId value_id);
+		public Gda.SqlBuilderId add_function_v (string func_name, [CCode (array_length_cname = "args_size", array_length_pos = 2.1)] Gda.SqlBuilderId[] args);
+		public Gda.SqlBuilderId add_id (string str);
+		public Gda.SqlBuilderId add_param (string param_name, GLib.Type type, bool nullok);
+		public void compound_add_sub_select_from_builder (Gda.SqlBuilder subselect);
+		public void compound_set_type (Gda.SqlStatementCompoundType compound_type);
+		public static GLib.Quark error_quark ();
+		public Gda.Statement get_statement () throws GLib.Error;
+		public Gda.SqlBuilderId import_expression_from_builder (Gda.SqlBuilder query, Gda.SqlBuilderId expr_id);
+		public void join_add_field (Gda.SqlBuilderId join_id, string field_name);
+		public Gda.SqlBuilderId select_add_field (string field_name, string? table_name, string? alias);
+		public Gda.SqlBuilderId select_add_target (string table_name, string? alias);
+		public Gda.SqlBuilderId select_add_target_id (Gda.SqlBuilderId table_id, string? alias);
+		public void select_group_by (Gda.SqlBuilderId expr_id);
+		public void select_order_by (Gda.SqlBuilderId expr_id, bool asc, string? collation_name);
+		public void select_set_distinct (bool distinct, Gda.SqlBuilderId expr_id);
+		public void select_set_having (Gda.SqlBuilderId cond_id);
+		public void select_set_limit (Gda.SqlBuilderId limit_count_expr_id, Gda.SqlBuilderId limit_offset_expr_id);
+		public void set_table (string table_name);
+		public void set_where (Gda.SqlBuilderId cond_id);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_sql_parser_get_type ()")]
+	public class SqlParser : GLib.Object, Gda.Lockable {
+		[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 void set_overflow_error ();
+		public void set_syntax_error ();
+		[NoAccessorMethod]
+		public int column_error { get; }
+		[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")]
+	[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")]
+	[Compact]
+	public class SqlStatementDelete {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[Compact]
+	public class SqlStatementInsert {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[Compact]
+	public class SqlStatementSelect {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[Compact]
+	public class SqlStatementTransaction {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[Compact]
+	public class SqlStatementUnknown {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[Compact]
+	public class SqlStatementUpdate {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_statement_get_type ()")]
+	public class Statement : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public Statement ();
+		public bool check_structure () throws GLib.Error;
+		public bool check_validity (Gda.Connection? cnc) throws GLib.Error;
+		public Gda.Statement copy ();
+		public static GLib.Quark error_quark ();
+		public bool get_parameters (out Gda.Set out_params) throws GLib.Error;
+		public Gda.SqlStatementType get_statement_type ();
+		public bool is_useless ();
+		public bool normalize (Gda.Connection cnc) throws GLib.Error;
+		public string serialize ();
+		public string to_sql_extended (Gda.Connection? cnc, Gda.Set? @params, Gda.StatementSqlFlag flags, out GLib.SList<weak Gda.Holder> params_used) throws GLib.Error;
+		public string to_sql_real (Gda.SqlRenderingContext context) throws GLib.Error;
+		[NoAccessorMethod]
+		public void* structure { get; set; }
+		public virtual signal void checked (Gda.Connection cnc, bool checked);
+		public virtual signal void reset ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_thread_wrapper_get_type ()")]
+	public class ThreadWrapper : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public ThreadWrapper ();
+		public bool cancel (uint id);
+		public ulong connect_raw (void* instance, string sig_name, bool private_thread, bool private_job, Gda.ThreadWrapperCallback callback);
+		public void disconnect (ulong id);
+		public static GLib.Quark error_quark ();
+		public uint execute_void ([CCode (destroy_notify_pos = 2.1)] owned Gda.ThreadWrapperVoidFunc func, void* arg) throws GLib.Error;
+		public void* fetch_result (bool may_lock, uint exp_id) throws GLib.Error;
+		public unowned GLib.IOChannel get_io_channel ();
+		public int get_waiting_size ();
+		public void iterate (bool may_block);
+		public void steal_signal (ulong id);
+		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 ()")]
+	[Compact]
+	public class Time {
+		public ulong fraction;
+		public ushort hour;
+		public ushort minute;
+		public ushort second;
+		public long timezone;
+		public static void* copy (void* boxed);
+		public static void free (void* boxed);
+		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 ()")]
+	[Compact]
+	public class Timestamp {
+		public ushort day;
+		public ulong fraction;
+		public ushort hour;
+		public ushort minute;
+		public ushort month;
+		public ushort second;
+		public long timezone;
+		public short year;
+		public static void* copy (void* boxed);
+		public static void free (void* boxed);
+		public bool valid ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_transaction_status_get_type ()")]
+	public class TransactionStatus : GLib.Object {
+		public 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 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)]
+		public Tree ();
+		public void add_manager (Gda.TreeManager manager);
+		public void clean ();
+		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);
+		public unowned Gda.TreeManager get_node_manager (Gda.TreeNode node);
+		public string get_node_path (Gda.TreeNode node);
+		public GLib.SList<weak Gda.TreeNode> get_nodes_in_path (string? tree_path, bool use_names);
+		public void set_attribute (string attribute, GLib.Value value, GLib.DestroyNotify destroy);
+		public bool update_all () throws GLib.Error;
+		public bool update_children (Gda.TreeNode? node) throws GLib.Error;
+		public bool update_part (Gda.TreeNode node) throws GLib.Error;
+		[NoAccessorMethod]
+		public bool is_list { get; }
+		public virtual signal void node_changed (Gda.TreeNode node);
+		public virtual signal void node_deleted (string node_path);
+		public virtual signal void node_has_child_toggled (Gda.TreeNode node);
+		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 ();
+		public void add_manager (Gda.TreeManager sub);
+		public void add_new_node_attribute (string attribute, GLib.Value? value);
+		public Gda.TreeNode create_node (Gda.TreeNode? parent, string? name);
+		public static GLib.Quark error_quark ();
+		public unowned GLib.SList<Gda.TreeManager> get_managers ();
+		[NoAccessorMethod]
+		public void* func { get; set construct; }
+		[NoAccessorMethod]
+		public bool recursive { get; set construct; }
+	}
+	[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*")]
+		public TreeMgrColumns (Gda.Connection cnc, string schema, string table_name);
+		[NoAccessorMethod]
+		public Gda.Connection connection { owned get; construct; }
+		[NoAccessorMethod]
+		public Gda.MetaStore meta_store { owned get; construct; }
+		public string schema { construct; }
+		public string table_name { construct; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[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*")]
+		public TreeMgrLabel (string label);
+		public string label { construct; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[Compact]
+	public class TreeMgrLabelPriv {
+	}
+	[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*")]
+		public TreeMgrSchemas (Gda.Connection cnc);
+		[NoAccessorMethod]
+		public Gda.Connection connection { owned get; construct; }
+		[NoAccessorMethod]
+		public Gda.MetaStore meta_store { owned get; construct; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[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*")]
+		public TreeMgrSelect (Gda.Connection cnc, Gda.Statement stmt, Gda.Set @params);
+		[NoAccessorMethod]
+		public Gda.Connection connection { owned get; construct; }
+		[NoAccessorMethod]
+		public Gda.Set @params { owned get; construct; }
+		[NoAccessorMethod]
+		public Gda.Statement statement { owned get; construct; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[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*")]
+		public TreeMgrTables (Gda.Connection cnc, string? schema);
+		[NoAccessorMethod]
+		public Gda.Connection connection { owned get; construct; }
+		[NoAccessorMethod]
+		public Gda.MetaStore meta_store { owned get; construct; }
+		public string schema { construct; }
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[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)]
+		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 ();
+		public GLib.Value fetch_attribute (string attribute);
+		public unowned Gda.TreeNode get_child_index (int index);
+		public unowned Gda.TreeNode get_child_name (string name);
+		public GLib.SList<weak Gda.TreeNode> get_children ();
+		public GLib.Value get_node_attribute (string attribute);
+		public unowned Gda.TreeNode get_parent ();
+		public void set_node_attribute (string attribute, GLib.Value? value, GLib.DestroyNotify destroy);
+		[NoAccessorMethod]
+		public string name { owned get; set; }
+		public virtual signal void node_changed (Gda.TreeNode node);
+		public virtual signal void node_deleted (string relative_path);
+		public virtual signal void node_has_child_toggled (Gda.TreeNode node);
+		public virtual signal void node_inserted (Gda.TreeNode node);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_ushort_get_type ()")]
+	public class UShort {
+		[CCode (has_construct_function = false)]
+		protected UShort ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_xa_transaction_get_type ()")]
+	public class XaTransaction : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public XaTransaction (uint32 format, string global_transaction_id);
+		public bool begin () throws GLib.Error;
+		public bool commit (out GLib.SList<Gda.Connection> cnc_to_recover) throws GLib.Error;
+		public bool commit_recovered (out GLib.SList<Gda.Connection> cnc_to_recover) throws GLib.Error;
+		public static GLib.Quark error_quark ();
+		public bool register_connection (Gda.Connection cnc, string branch) throws GLib.Error;
+		public bool rollback () throws GLib.Error;
+		public void unregister_connection (Gda.Connection cnc);
+		[NoAccessorMethod]
+		public uint format_id { get; construct; }
+		[NoAccessorMethod]
+		public string transaction_id { owned get; construct; }
+	}
+	[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);
+		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);
+		public abstract string get_sql_from_value (GLib.Value? value);
+		public abstract string get_str_from_value (GLib.Value? value);
+		public abstract GLib.Value get_value_from_sql (string? sql, GLib.Type type);
+		public abstract GLib.Value get_value_from_str (string? str, GLib.Type type);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_data_model_get_type ()")]
+	public interface DataModel : GLib.Object {
+		public bool add_data_from_xml_node ([CCode (type = "xmlNodePtr")] Xml.Node* node) throws GLib.Error;
+		[CCode (vfunc_name = "i_append_row")]
+		public abstract int append_row () throws GLib.Error;
+		public Gda.DataModelArray array_copy_model () 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 void dump (void* to_stream);
+		public string dump_as_string ();
+		public static GLib.Quark error_quark ();
+		public bool export_to_file (Gda.DataModelIOFormat format, string file, [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, Gda.Set options) throws GLib.Error;
+		public string export_to_string (Gda.DataModelIOFormat format, [CCode (array_length_cname = "nb_cols", array_length_pos = 2.5)] int[]? cols, [CCode (array_length_cname = "nb_rows", array_length_pos = 3.5)] int[]? rows, Gda.Set options);
+		public void freeze ();
+		[CCode (vfunc_name = "i_get_access_flags")]
+		public abstract Gda.DataModelAccessFlags get_access_flags ();
+		[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);
+		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")]
+		public abstract unowned GLib.Error[] get_exceptions ();
+		[CCode (vfunc_name = "i_get_n_columns")]
+		public abstract int get_n_columns ();
+		[CCode (vfunc_name = "i_get_n_rows")]
+		public abstract int get_n_rows ();
+		[CCode (vfunc_name = "i_get_notify")]
+		public abstract bool get_notify ();
+		public unowned GLib.Value? get_typed_value_at (int col, int row, GLib.Type expected_type, bool nullok) throws GLib.Error;
+		[CCode (vfunc_name = "i_get_value_at")]
+		public abstract unowned GLib.Value? get_value_at (int col, int row) throws GLib.Error;
+		public bool import_from_file (string file, GLib.HashTable<int,int>? cols_trans, Gda.Set options) throws GLib.Error;
+		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")]
+		public abstract bool iter_at_row (Gda.DataModelIter iter, int row);
+		[CCode (vfunc_name = "i_iter_next")]
+		public abstract bool iter_next (Gda.DataModelIter iter);
+		[CCode (vfunc_name = "i_iter_prev")]
+		public abstract bool iter_prev (Gda.DataModelIter iter);
+		[CCode (vfunc_name = "i_iter_set_value")]
+		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);
+		public void set_column_name (int col, string name);
+		public void set_column_title (int col, string title);
+		[CCode (vfunc_name = "i_set_notify")]
+		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;
+		public void thaw ();
+		public virtual signal void access_changed ();
+		public virtual signal void changed ();
+		[HasEmitter]
+		public virtual signal void reset ();
+		[HasEmitter]
+		public virtual signal void row_inserted (int row);
+		[HasEmitter]
+		public virtual signal void row_removed (int row);
+		[HasEmitter]
+		public virtual signal void row_updated (int row);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", type_id = "gda_lockable_get_type ()")]
+	public interface Lockable : GLib.Object {
+		[NoWrapper]
+		public abstract void i_lock ();
+		[NoWrapper]
+		public abstract bool i_trylock ();
+		[NoWrapper]
+		public abstract void i_unlock ();
+		public void @lock ();
+		public bool trylock ();
+		public void unlock ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct DataMetaWrapper {
+		public weak GLib.Object object;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct DataMetaWrapperClass {
+		public weak GLib.ObjectClass parent_class;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct Diff {
+		public Gda.DiffType type;
+		public int old_row;
+		public int new_row;
+		public weak GLib.HashTable<void*,void*> values;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct DsnInfo {
+		public weak string name;
+		public weak string provider;
+		public weak string description;
+		public weak string cnc_string;
+		public weak string auth_string;
+		public bool is_system;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct MetaContext {
+		public weak string table_name;
+		public int size;
+		public weak string column_names;
+		public GLib.Value column_values;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct MetaDbObject {
+		public Gda.MetaDbObjectType obj_type;
+		public bool outdated;
+		public weak string obj_catalog;
+		public weak string obj_schema;
+		public weak string obj_name;
+		public weak string obj_short_name;
+		public weak string obj_full_name;
+		public weak string obj_owner;
+		public GLib.List<Gda.MetaDbObject> depend_list;
+		[CCode (cname = "extra.meta_table")]
+		public Gda.MetaTable extra_meta_table;
+		[CCode (cname = "extra.meta_view")]
+		public Gda.MetaView extra_meta_view;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct MetaStoreChange {
+		public Gda.MetaStoreChangeType c_type;
+		public weak string table_name;
+		public weak GLib.HashTable<void*,void*> keys;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct MetaTable {
+		public GLib.List<Gda.MetaTableColumn> columns;
+		public int pk_cols_array;
+		public int pk_cols_nb;
+		public GLib.List<Gda.MetaTableForeignKey> reverse_fk_list;
+		public GLib.List<Gda.MetaTableForeignKey> fk_list;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct MetaTableColumn {
+		public weak string column_name;
+		public weak string column_type;
+		public GLib.Type gtype;
+		public bool pkey;
+		public bool nullok;
+		public weak string default_value;
+		public void foreach_attribute (Gda.AttributesManagerFunc func);
+		public GLib.Value get_attribute (string attribute);
+		public void set_attribute (string attribute, GLib.Value? value, GLib.DestroyNotify? destroy);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct MetaTableForeignKey {
+		public Gda.MetaDbObject meta_table;
+		public Gda.MetaDbObject depend_on;
+		public int cols_nb;
+		public int fk_cols_array;
+		public weak string fk_names_array;
+		public int ref_pk_cols_array;
+		public weak string ref_pk_names_array;
+		public weak string fk_name;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct MetaView {
+		public Gda.MetaTable table;
+		public weak string view_def;
+		public bool is_updatable;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct ProviderInfo {
+		public weak string id;
+		public weak string location;
+		public weak string description;
+		public weak Gda.Set dsn_params;
+		public weak Gda.Set auth_params;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct ServerProviderHandlerInfo {
+		public weak Gda.Connection cnc;
+		public GLib.Type g_type;
+		public weak string dbms_type;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct SetGroup {
+		public GLib.List<Gda.SetNode> nodes;
+		public Gda.SetSource nodes_source;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct SetNode {
+		public weak Gda.Holder holder;
+		public weak Gda.DataModel source_model;
+		public int source_column;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct SetSource {
+		public weak Gda.DataModel data_model;
+		public GLib.List<Gda.SetNode> nodes;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	[SimpleType]
+	public struct SqlBuilderId : uint {
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct SqlRenderingContext {
+		public Gda.StatementSqlFlag flags;
+		public weak Gda.Set @params;
+		public GLib.List<Gda.Holder> params_used;
+		public weak Gda.ServerProvider provider;
+		public weak Gda.Connection cnc;
+		public weak Gda.SqlRenderingValue render_value;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct ThreadNotification {
+		public Gda.ThreadNotificationType type;
+		public uint job_id;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct TransactionStatusEvent {
+		public weak Gda.TransactionStatus trans;
+		public Gda.TransactionStatusEventType type;
+		public weak Gda.ConnectionEvent conn_event;
+		[CCode (cname = "pl.svp_name")]
+		public weak string pl_svp_name;
+		[CCode (cname = "pl.sql")]
+		public weak string pl_sql;
+		[CCode (cname = "pl.sub_trans")]
+		public weak Gda.TransactionStatus pl_sub_trans;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public struct XaTransactionId {
+		public uint32 format;
+		public ushort gtrid_length;
+		public ushort bqual_length;
+		[CCode (array_length = false, array_null_terminated = true)]
+		public weak char[] data;
+		public string to_string ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cname = "_GdaServerOperationNode")]
+	public struct _ServerOperationNode {
+		public Gda.ServerOperationNodeType type;
+		public Gda.ServerOperationNodeStatus status;
+		public weak Gda.Set plist;
+		public weak Gda.DataModel model;
+		public weak Gda.Column column;
+		public weak Gda.Holder param;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cname = "_GdaSqlParserIface")]
+	public struct _SqlParserIface {
+		public weak Gda.SqlParser parser;
+		public weak Gda.SqlStatement parsed_statement;
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_BATCH_CONFLICTING_PARAMETER_")]
+	public enum BatchError {
+		[CCode (cname = "GDA_BATCH_CONFLICTING_PARAMETER_ERROR")]
+		BATCH_CONFLICTING_PARAMETER_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_CONFIG_")]
+	public enum ConfigError {
+		DSN_NOT_FOUND_ERROR,
+		PERMISSION_ERROR,
+		PROVIDER_NOT_FOUND_ERROR,
+		PROVIDER_CREATION_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_CONNECTION_")]
+	public enum ConnectionError {
+		DSN_NOT_FOUND_ERROR,
+		PROVIDER_NOT_FOUND_ERROR,
+		PROVIDER_ERROR,
+		NO_CNC_SPEC_ERROR,
+		NO_PROVIDER_SPEC_ERROR,
+		OPEN_ERROR,
+		STATEMENT_TYPE_ERROR,
+		CANT_LOCK_ERROR,
+		TASK_NOT_FOUND_ERROR,
+		UNSUPPORTED_THREADS_ERROR,
+		CLOSED_ERROR,
+		META_DATA_CONTEXT_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_CONNECTION_EVENT_CODE_")]
+	public enum ConnectionEventCode {
+		CONSTRAINT_VIOLATION,
+		RESTRICT_VIOLATION,
+		NOT_NULL_VIOLATION,
+		FOREIGN_KEY_VIOLATION,
+		UNIQUE_VIOLATION,
+		CHECK_VIOLATION,
+		INSUFFICIENT_PRIVILEGES,
+		UNDEFINED_COLUMN,
+		UNDEFINED_FUNCTION,
+		UNDEFINED_TABLE,
+		DUPLICATE_COLUMN,
+		DUPLICATE_DATABASE,
+		DUPLICATE_FUNCTION,
+		DUPLICATE_SCHEMA,
+		DUPLICATE_TABLE,
+		DUPLICATE_ALIAS,
+		DUPLICATE_OBJECT,
+		SYNTAX_ERROR,
+		UNKNOWN
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_CONNECTION_EVENT_")]
+	public enum ConnectionEventType {
+		NOTICE,
+		WARNING,
+		ERROR,
+		COMMAND
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_CONNECTION_FEATURE_")]
+	public enum ConnectionFeature {
+		AGGREGATES,
+		BLOBS,
+		INDEXES,
+		INHERITANCE,
+		NAMESPACES,
+		PROCEDURES,
+		SEQUENCES,
+		SQL,
+		TRANSACTIONS,
+		SAVEPOINTS,
+		SAVEPOINTS_REMOVE,
+		TRIGGERS,
+		UPDATABLE_CURSOR,
+		USERS,
+		VIEWS,
+		XA_TRANSACTIONS,
+		MULTI_THREADING,
+		LAST
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_CONNECTION_META_")]
+	public enum ConnectionMetaType {
+		NAMESPACES,
+		TYPES,
+		TABLES,
+		VIEWS,
+		FIELDS,
+		INDEXES
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_CONNECTION_OPTIONS_")]
+	[Flags]
+	public enum ConnectionOptions {
+		NONE,
+		READ_ONLY,
+		SQL_IDENTIFIERS_CASE_SENSITIVE,
+		THREAD_SAFE,
+		THREAD_ISOLATED,
+		AUTO_META_DATA
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DATA_COMPARATOR_")]
+	public enum DataComparatorError {
+		MISSING_DATA_MODEL_ERROR,
+		COLUMN_TYPES_MISMATCH_ERROR,
+		MODEL_ACCESS_ERROR,
+		USER_CANCELLED_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DATA_META_WRAPPER_MODE_")]
+	public enum DataMetaWrapperMode {
+		LC,
+		UC
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DATA_MODEL_ACCESS_")]
+	[Flags]
+	public enum DataModelAccessFlags {
+		RANDOM,
+		CURSOR_FORWARD,
+		CURSOR_BACKWARD,
+		CURSOR,
+		INSERT,
+		UPDATE,
+		DELETE,
+		WRITE
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DATA_MODEL_HINT_")]
+	public enum DataModelHint {
+		START_BATCH_UPDATE,
+		END_BATCH_UPDATE,
+		REFRESH
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DATA_MODEL_IO_")]
+	public enum DataModelIOFormat {
+		DATA_ARRAY_XML,
+		TEXT_SEPARATED
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DATA_MODEL_ITER_COLUMN_OUT_OF_RANGE_")]
+	public enum DataModelIterError {
+		[CCode (cname = "GDA_DATA_MODEL_ITER_COLUMN_OUT_OF_RANGE_ERROR")]
+		DATA_MODEL_ITER_COLUMN_OUT_OF_RANGE_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DATA_PIVOT_")]
+	public enum DataPivotAggregate {
+		AVG,
+		COUNT,
+		MAX,
+		MIN,
+		SUM
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DATA_PIVOT_")]
+	public enum DataPivotError {
+		INTERNAL_ERROR,
+		SOURCE_MODEL_ERROR,
+		FIELD_FORMAT_ERROR,
+		USAGE_ERROR,
+		OVERFLOW_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DATA_PIVOT_FIELD_")]
+	public enum DataPivotFieldType {
+		ROW,
+		COLUMN
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DATA_PROXY_")]
+	public enum DataProxyError {
+		COMMIT_ERROR,
+		COMMIT_CANCELLED,
+		READ_ONLY_VALUE,
+		READ_ONLY_ROW,
+		FILTER_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DATA_SELECT_COND_")]
+	public enum DataSelectConditionType {
+		PK,
+		ALL_COLUMNS
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DATA_SELECT_")]
+	public enum DataSelectError {
+		MODIFICATION_STATEMENT_ERROR,
+		MISSING_MODIFICATION_STATEMENT_ERROR,
+		CONNECTION_ERROR,
+		ACCESS_ERROR,
+		SQL_ERROR,
+		SAFETY_LOCKED_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DIFF_")]
+	public enum DiffType {
+		ADD_ROW,
+		REMOVE_ROW,
+		MODIFY_ROW
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_HOLDER_")]
+	public enum HolderError {
+		STRING_CONVERSION_ERROR,
+		VALUE_TYPE_ERROR,
+		VALUE_NULL_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_META_DB_")]
+	public enum MetaDbObjectType {
+		UNKNOWN,
+		TABLE,
+		VIEW
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_META_FOREIGN_KEY_")]
+	public enum MetaForeignKeyPolicy {
+		UNKNOWN,
+		NONE,
+		NO_ACTION,
+		RESTRICT,
+		CASCADE,
+		SET_NULL,
+		SET_DEFAULT
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_META_GRAPH_")]
+	[Flags]
+	public enum MetaGraphInfo {
+		[CCode (cname = "GDA_META_GRAPH_COLUMNS")]
+		META_GRAPH_COLUMNS
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_META_SORT_")]
+	public enum MetaSortType {
+		ALHAPETICAL,
+		DEPENDENCIES
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_META_STORE_")]
+	public enum MetaStoreChangeType {
+		ADD,
+		REMOVE,
+		MODIFY
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_META_STORE_")]
+	public enum MetaStoreError {
+		INCORRECT_SCHEMA_ERROR,
+		UNSUPPORTED_PROVIDER_ERROR,
+		INTERNAL_ERROR,
+		META_CONTEXT_ERROR,
+		MODIFY_CONTENTS_ERROR,
+		EXTRACT_SQL_ERROR,
+		ATTRIBUTE_NOT_FOUND_ERROR,
+		ATTRIBUTE_ERROR,
+		SCHEMA_OBJECT_NOT_FOUND_ERROR,
+		SCHEMA_OBJECT_CONFLICT_ERROR,
+		SCHEMA_OBJECT_DESCR_ERROR,
+		TRANSACTION_ALREADY_STARTED_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_META_STRUCT_")]
+	public enum MetaStructError {
+		UNKNOWN_OBJECT_ERROR,
+		DUPLICATE_OBJECT_ERROR,
+		INCOHERENCE_ERROR,
+		XML_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_META_STRUCT_FEATURE_")]
+	[Flags]
+	public enum MetaStructFeature {
+		NONE,
+		FOREIGN_KEYS,
+		VIEW_DEPENDENCIES,
+		ALL
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SERVER_OPERATION_CREATE_TABLE_")]
+	[Flags]
+	public enum ServerOperationCreateTableFlag {
+		NOTHING_FLAG,
+		PKEY_FLAG,
+		NOT_NULL_FLAG,
+		UNIQUE_FLAG,
+		AUTOINC_FLAG,
+		FKEY_FLAG,
+		PKEY_AUTOINC_FLAG
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SERVER_OPERATION_")]
+	public enum ServerOperationError {
+		OBJECT_NAME_ERROR,
+		INCORRECT_VALUE_ERROR,
+		XML_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SERVER_OPERATION_STATUS_")]
+	public enum ServerOperationNodeStatus {
+		OPTIONAL,
+		REQUIRED,
+		UNKNOWN
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SERVER_OPERATION_NODE_")]
+	public enum ServerOperationNodeType {
+		PARAMLIST,
+		DATA_MODEL,
+		PARAM,
+		SEQUENCE,
+		SEQUENCE_ITEM,
+		DATA_MODEL_COLUMN,
+		UNKNOWN
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SERVER_OPERATION_")]
+	public enum ServerOperationType {
+		CREATE_DB,
+		DROP_DB,
+		CREATE_TABLE,
+		DROP_TABLE,
+		RENAME_TABLE,
+		ADD_COLUMN,
+		DROP_COLUMN,
+		CREATE_INDEX,
+		DROP_INDEX,
+		CREATE_VIEW,
+		DROP_VIEW,
+		COMMENT_TABLE,
+		COMMENT_COLUMN,
+		CREATE_USER,
+		ALTER_USER,
+		DROP_USER,
+		LAST
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SERVER_PROVIDER_")]
+	public enum ServerProviderError {
+		METHOD_NON_IMPLEMENTED_ERROR,
+		PREPARE_STMT_ERROR,
+		EMPTY_STMT_ERROR,
+		MISSING_PARAM_ERROR,
+		STATEMENT_EXEC_ERROR,
+		OPERATION_ERROR,
+		INTERNAL_ERROR,
+		BUSY_ERROR,
+		NON_SUPPORTED_ERROR,
+		SERVER_VERSION_ERROR,
+		DATA_ERROR,
+		DEFAULT_VALUE_HANDLING_ERROR,
+		MISUSE_ERROR,
+		FILE_NOT_FOUND_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SET_")]
+	public enum SetError {
+		XML_SPEC_ERROR,
+		HOLDER_NOT_FOUND_ERROR,
+		INVALID_ERROR,
+		READ_ONLY_ERROR,
+		IMPLEMENTATION_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SQL_BUILDER_")]
+	public enum SqlBuilderError {
+		WRONG_TYPE_ERROR,
+		MISUSE_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SQL_IDENTIFIERS_")]
+	[Flags]
+	public enum SqlIdentifierStyle {
+		LOWER_CASE,
+		UPPER_CASE
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SQL_OPERATOR_TYPE_")]
+	public enum SqlOperatorType {
+		AND,
+		OR,
+		EQ,
+		IS,
+		LIKE,
+		BETWEEN,
+		GT,
+		LT,
+		GEQ,
+		LEQ,
+		DIFF,
+		REGEXP,
+		REGEXP_CI,
+		NOT_REGEXP,
+		NOT_REGEXP_CI,
+		SIMILAR,
+		ISNULL,
+		ISNOTNULL,
+		NOT,
+		IN,
+		NOTIN,
+		CONCAT,
+		PLUS,
+		MINUS,
+		STAR,
+		DIV,
+		REM,
+		BITAND,
+		BITOR,
+		BITNOT,
+		ILIKE
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SQL_PARSER_")]
+	public enum SqlParserError {
+		SYNTAX_ERROR,
+		OVERFLOW_ERROR,
+		EMPTY_SQL_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SQL_PARSER_FLAVOUR_")]
+	public enum SqlParserFlavour {
+		STANDARD,
+		SQLITE,
+		MYSQL,
+		ORACLE,
+		POSTGRESQL
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SQL_PARSER_MODE_")]
+	public enum SqlParserMode {
+		PARSE,
+		DELIMIT
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SQL_SELECT_JOIN_")]
+	public enum SqlSelectJoinType {
+		CROSS,
+		NATURAL,
+		INNER,
+		LEFT,
+		RIGHT,
+		FULL;
+		public static unowned string to_string (Gda.SqlSelectJoinType type);
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SQL_STATEMENT_COMPOUND_")]
+	public enum SqlStatementCompoundType {
+		UNION,
+		UNION_ALL,
+		INTERSECT,
+		INTERSECT_ALL,
+		EXCEPT,
+		EXCEPT_ALL
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SQL_STATEMENT_")]
+	public enum SqlStatementType {
+		SELECT,
+		INSERT,
+		UPDATE,
+		DELETE,
+		COMPOUND,
+		BEGIN,
+		ROLLBACK,
+		COMMIT,
+		SAVEPOINT,
+		ROLLBACK_SAVEPOINT,
+		DELETE_SAVEPOINT,
+		UNKNOWN,
+		NONE
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_STATEMENT_")]
+	public enum StatementError {
+		PARSE_ERROR,
+		SYNTAX_ERROR,
+		NO_CNC_ERROR,
+		CNC_CLOSED_ERROR,
+		EXEC_ERROR,
+		PARAM_TYPE_ERROR,
+		PARAM_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_STATEMENT_MODEL_")]
+	[Flags]
+	public enum StatementModelUsage {
+		RANDOM_ACCESS,
+		CURSOR_FORWARD,
+		CURSOR_BACKWARD,
+		CURSOR,
+		ALLOW_NOPARAM
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_STATEMENT_SQL_")]
+	[Flags]
+	public enum StatementSqlFlag {
+		PARAMS_AS_VALUES,
+		PRETTY,
+		PARAMS_LONG,
+		PARAMS_SHORT,
+		PARAMS_AS_COLON,
+		PARAMS_AS_DOLLAR,
+		PARAMS_AS_QMARK,
+		PARAMS_AS_UQMARK
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_THREAD_NOTIFICATION_")]
+	public enum ThreadNotificationType {
+		JOB,
+		SIGNAL
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_THREAD_WRAPPER_UNKNOWN_")]
+	public enum ThreadWrapperError {
+		[CCode (cname = "GDA_THREAD_WRAPPER_UNKNOWN_ERROR")]
+		THREAD_WRAPPER_UNKNOWN_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_TRANSACTION_ISOLATION_")]
+	public enum TransactionIsolation {
+		UNKNOWN,
+		READ_COMMITTED,
+		READ_UNCOMMITTED,
+		REPEATABLE_READ,
+		SERIALIZABLE
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_TRANSACTION_STATUS_EVENT_")]
+	public enum TransactionStatusEventType {
+		SAVEPOINT,
+		SQL,
+		SUB_TRANSACTION
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_TRANSACTION_STATUS_STATE_")]
+	public enum TransactionStatusState {
+		OK,
+		FAILED
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_TREE_UNKNOWN_")]
+	public enum TreeError {
+		[CCode (cname = "GDA_TREE_UNKNOWN_ERROR")]
+		TREE_UNKNOWN_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_TREE_MANAGER_UNKNOWN_")]
+	public enum TreeManagerError {
+		[CCode (cname = "GDA_TREE_MANAGER_UNKNOWN_ERROR")]
+		TREE_MANAGER_UNKNOWN_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_TREE_NODE_UNKNOWN_")]
+	public enum TreeNodeError {
+		[CCode (cname = "GDA_TREE_NODE_UNKNOWN_ERROR")]
+		TREE_NODE_UNKNOWN_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_VALUE_ATTR_")]
+	[Flags]
+	public enum ValueAttribute {
+		NONE,
+		IS_NULL,
+		CAN_BE_NULL,
+		IS_DEFAULT,
+		CAN_BE_DEFAULT,
+		IS_UNCHANGED,
+		ACTIONS_SHOWN,
+		DATA_NON_VALID,
+		HAS_VALUE_ORIG,
+		NO_MODIF,
+		UNUSED
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_XA_TRANSACTION_")]
+	public enum XaTransactionError {
+		ALREADY_REGISTERED_ERROR,
+		DTP_NOT_SUPPORTED_ERROR,
+		CONNECTION_BRANCH_LENGTH_ERROR
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_DATA_MODEL_")]
+	public errordomain DataModelError {
+		ROW_OUT_OF_RANGE_ERROR,
+		COLUMN_OUT_OF_RANGE_ERROR,
+		VALUES_LIST_ERROR,
+		VALUE_TYPE_ERROR,
+		ROW_NOT_FOUND_ERROR,
+		ACCESS_ERROR,
+		FEATURE_NON_SUPPORTED_ERROR,
+		FILE_EXIST_ERROR,
+		XML_FORMAT_ERROR,
+		TRUNCATED_ERROR,
+		OTHER_ERROR;
+		public static GLib.Quark quark ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", cprefix = "GDA_SQL_")]
+	public errordomain SqlError {
+		STRUCTURE_CONTENTS_ERROR,
+		MALFORMED_IDENTIFIER_ERROR,
+		MISSING_IDENTIFIER_ERROR,
+		VALIDATION_ERROR;
+		public static GLib.Quark quark ();
+	}
+	[CCode (cheader_filename = "libgda/libgda.h", has_target = false)]
+	public delegate void AttributesManagerFunc (string att_name, GLib.Value value, void* data);
+	[CCode (cheader_filename = "libgda/libgda.h", has_target = false)]
+	public delegate void AttributesManagerSignal (GLib.Object obj, string att_name, GLib.Value value, void* data);
+	[CCode (cheader_filename = "libgda/libgda.h", has_target = false)]
+	public delegate void ServerProviderAsyncCallback (Gda.ServerProvider provider, Gda.Connection cnc, uint task_id, bool result_status, GLib.Error error, void* data);
+	[CCode (cheader_filename = "libgda/libgda.h", has_target = false)]
+	public delegate void ServerProviderExecCallback (Gda.ServerProvider provider, Gda.Connection cnc, uint task_id, GLib.Object result_obj, GLib.Error error, void* data);
+	[CCode (cheader_filename = "libgda/libgda.h", has_target = false)]
+	public delegate string SqlRenderingValue (GLib.Value value, Gda.SqlRenderingContext context) throws GLib.Error;
+	[CCode (cheader_filename = "libgda/libgda.h", has_target = false)]
+	public delegate bool SqlReservedKeywordsFunc (string word);
+	[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 ThreadWrapperVoidFunc (void* arg) throws GLib.Error;
+	[CCode (cheader_filename = "libgda/libgda.h", cname = "GDA_ATTRIBUTE_AUTO_INCREMENT")]
+	public const string ATTRIBUTE_AUTO_INCREMENT;
+	[CCode (cheader_filename = "libgda/libgda.h", cname = "GDA_ATTRIBUTE_DESCRIPTION")]
+	public const string ATTRIBUTE_DESCRIPTION;
+	[CCode (cheader_filename = "libgda/libgda.h", cname = "GDA_ATTRIBUTE_IS_DEFAULT")]
+	public const string ATTRIBUTE_IS_DEFAULT;
+	[CCode (cheader_filename = "libgda/libgda.h", cname = "GDA_ATTRIBUTE_NAME")]
+	public const string ATTRIBUTE_NAME;
+	[CCode (cheader_filename = "libgda/libgda.h", cname = "GDA_ATTRIBUTE_NUMERIC_PRECISION")]
+	public const string ATTRIBUTE_NUMERIC_PRECISION;
+	[CCode (cheader_filename = "libgda/libgda.h", cname = "GDA_ATTRIBUTE_NUMERIC_SCALE")]
+	public const string ATTRIBUTE_NUMERIC_SCALE;
+	[CCode (cheader_filename = "libgda/libgda.h", cname = "GDA_ATTRIBUTE_TREE_NODE_UNKNOWN_CHILDREN")]
+	public const string ATTRIBUTE_TREE_NODE_UNKNOWN_CHILDREN;
+	[CCode (cheader_filename = "libgda/libgda.h", cname = "GDA_EXTRA_AUTO_INCREMENT")]
+	public const string EXTRA_AUTO_INCREMENT;
+	[CCode (cheader_filename = "libgda/libgda.h", cname = "GDA_SQLSTATE_GENERAL_ERROR")]
+	public const string SQLSTATE_GENERAL_ERROR;
+	[CCode (cheader_filename = "libgda/libgda.h", cname = "GDA_SQLSTATE_NO_ERROR")]
+	public const string SQLSTATE_NO_ERROR;
+	[CCode (cheader_filename = "libgda/libgda.h", cname = "GDA_TIMEZONE_INVALID")]
+	public const int TIMEZONE_INVALID;
+	[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);
+	[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")]
+	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);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static GLib.Type g_type_from_string (string str);
+	[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 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 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")]
+	public static bool parse_iso8601_date (GLib.Date gdate, string value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static bool parse_iso8601_time (Gda.Time timegda, string value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static bool parse_iso8601_timestamp (Gda.Timestamp timestamp, string value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	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);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static string rfc1738_encode (string string);
+	[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")]
+	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);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static Gda.SqlOperatorType sql_operation_operator_from_string (string op);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static unowned string sql_operation_operator_to_string (Gda.SqlOperatorType op);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static Gda.Binary string_to_binary (string? str);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static Gda.Blob string_to_blob (string str);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static string text_to_alphanum (string text);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	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);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static unowned string utility_data_model_find_column_description (Gda.DataSelect model, string field_name);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static bool utility_holder_load_attributes (Gda.Holder holder, [CCode (type = "xmlNodePtr")] Xml.Node* node, GLib.SList<Gda.DataModel> sources) throws GLib.Error;
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static int value_compare (GLib.Value value1, GLib.Value value2);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static GLib.Value value_copy (GLib.Value value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static int value_differ (GLib.Value value1, GLib.Value value2);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static void value_free (owned GLib.Value? value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static unowned Gda.Binary value_get_binary (GLib.Value value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static unowned Gda.Blob value_get_blob (GLib.Value value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static unowned Gda.GeometricPoint value_get_geometric_point (GLib.Value value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static unowned Gda.Numeric value_get_numeric (GLib.Value value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static short value_get_short (GLib.Value value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static unowned Gda.Time value_get_time (GLib.Value value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static unowned Gda.Timestamp value_get_timestamp (GLib.Value value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static ushort value_get_ushort (GLib.Value value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static bool value_is_null (GLib.Value value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static bool value_is_number (GLib.Value value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static GLib.Value value_new (GLib.Type type);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static GLib.Value value_new_binary (uint8 val, long size);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static GLib.Value value_new_blob (uint8 val, long size);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static GLib.Value value_new_blob_from_file (string filename);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static GLib.Value value_new_default (string? default_val);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static GLib.Value value_new_from_string (string as_string, GLib.Type type);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static GLib.Value value_new_from_xml ([CCode (type = "xmlNodePtr")] Xml.Node* node);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static GLib.Value value_new_null ();
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static GLib.Value value_new_timestamp_from_timet (long val);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static void value_reset_with_type (GLib.Value value, GLib.Type type);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static void value_set_binary (GLib.Value value, Gda.Binary binary);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static void value_set_blob (GLib.Value value, Gda.Blob blob);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static bool value_set_from_string (GLib.Value value, string as_string, GLib.Type type);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static bool value_set_from_value (GLib.Value value, GLib.Value from);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static void value_set_geometric_point (GLib.Value value, Gda.GeometricPoint val);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static void value_set_null (GLib.Value value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static void value_set_numeric (GLib.Value value, Gda.Numeric val);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static void value_set_short (GLib.Value value, short val);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static void value_set_time (GLib.Value value, Gda.Time val);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static void value_set_timestamp (GLib.Value value, Gda.Timestamp val);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static void value_set_ushort (GLib.Value value, ushort val);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static string value_stringify (GLib.Value value);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static void value_take_binary (GLib.Value value, owned Gda.Binary binary);
+	[CCode (cheader_filename = "libgda/libgda.h")]
+	public static void value_take_blob (GLib.Value value, owned Gda.Blob blob);
+}



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