libgda r3069 - in trunk: . doc/C doc/C/tmpl libgda libgda/sqlite/virtual tests/data-models tests/meta-store tests/parser tests/value-holders tools



Author: vivien
Date: Thu Mar  6 19:57:02 2008
New Revision: 3069
URL: http://svn.gnome.org/viewvc/libgda?rev=3069&view=rev

Log:
2008-03-06  Vivien Malerba <malerba gnome-db org>

        * tests/value-holders/check_statement.c:
        * tests/parser/check_parser.c: don't crash on missing providers
        * tests/data-models/check_virtual.c: fixed a compilation problem
        * tests/data-models/check_data_proxy.c:
        * libgda/gda-data-proxy.c:
        * libgda/gda-server-operation.c:
        * libgda/gda-data-model-array.[ch]: make gda_data_model_array_copy_model() return a
        GdaDataModelArray instead of a GdaDataModel (fixes bug #519778)
        * doc/C/tmpl/gda-data-model-iter.sgml: added instructions on how to use a
        GdaDataModelIter (fixes bug #519769)
        * libgda/gda-data-proxy.c:
        * libgda/sqlite/virtual/virtual-test.c:
        * libgda/sqlite/virtual/gda-vprovider-data-model.c:
        * libgda/gda-data-model-iter.[ch]: removed gda_data_model_iter_new() as it is better to use
        gda_data_model_create_iter()
        * libgda/gda-data-access-wrapper.c:
        * libgda/sqlite/virtual/gda-vprovider-data-model.c:
        * libgda/gda-data-model.c:
        * libgda/gda-data-model-iter.[ch]: replaced gda_data_model_iter_get_param_for_column() by
        gda_data_model_iter_get_holder_for_field()
        * libgda/gda-meta-store.c: correctly initialize transaction status variable
        * tests/meta-store/data_columns.csv:
        * tests/meta-store/common.c: adaptations to the GdaMetaStore's internal schema changes, make the
        test pass again
        * libgda/gda-meta-struct.[ch]: converted to a GObject, and added some new features
        * tools/gda-sql.c: improved object's details reporting
        * doc/C: misc doc. updates



Modified:
   trunk/ChangeLog
   trunk/doc/C/libgda-4.0-docs.sgml
   trunk/doc/C/libgda-4.0-sections.txt
   trunk/doc/C/tmpl/gda-data-model-iter.sgml
   trunk/doc/C/tmpl/gda-meta-struct.sgml
   trunk/libgda/gda-data-access-wrapper.c
   trunk/libgda/gda-data-model-array.c
   trunk/libgda/gda-data-model-array.h
   trunk/libgda/gda-data-model-iter.c
   trunk/libgda/gda-data-model-iter.h
   trunk/libgda/gda-data-model.c
   trunk/libgda/gda-data-proxy.c
   trunk/libgda/gda-meta-store.c
   trunk/libgda/gda-meta-struct.c
   trunk/libgda/gda-meta-struct.h
   trunk/libgda/gda-server-operation.c
   trunk/libgda/sqlite/virtual/gda-vprovider-data-model.c
   trunk/libgda/sqlite/virtual/virtual-test.c
   trunk/tests/data-models/check_data_proxy.c
   trunk/tests/data-models/check_virtual.c
   trunk/tests/meta-store/common.c
   trunk/tests/meta-store/data_columns.csv
   trunk/tests/parser/check_parser.c
   trunk/tests/value-holders/check_statement.c
   trunk/tools/command-exec.c
   trunk/tools/gda-sql.c

Modified: trunk/doc/C/libgda-4.0-docs.sgml
==============================================================================
--- trunk/doc/C/libgda-4.0-docs.sgml	(original)
+++ trunk/doc/C/libgda-4.0-docs.sgml	Thu Mar  6 19:57:02 2008
@@ -522,29 +522,28 @@
     <chapter id="data_models">
       <title>Data handling</title>
       <para>
-	&LIBGDA; being a data oriented library, data handling is a central point of the library. 
-	Data handling is about:
+	&LIBGDA; being a data oriented library, data handling is a central point of the library:
 	<itemizedlist>
 	  <listitem>
-            <para>individual values: they are encapsulated within a <link linkend="GValue">GValue</link> 
-	      container (which is not much more than a <link linkend="GValue">GValue</link> from GLIB)</para>
+            <para>individual values are encapsulated within a <link linkend="GValue">GValue</link> 
+	      container (from GLIB)</para>
 	  </listitem>
 	  <listitem>
-            <para>parameters which are each a specification for a value: a type, a name, a description,
-	      a default value, etc. Parameters are encapsulated within a 
-	      <link linkend="GdaParameter">GdaParameter</link> container.</para>
+            <para>value holders which are each a specification for a value: a type, a name, a description,
+	      a default value, etc. Value holders are encapsulated within a 
+	      <link linkend="GdaHolder">GdaHolder</link> container object.</para>
 	    <para>
-	      Note that it is possible to set a hint on parameters to make them have a value which is
-	      among the values contained in a column of a <link linkend="GdaDataModel">GdaDataModel</link>.
+	      Note that it is possible to set a hint to make a value holder have its value constrained
+	      by the values contained in a column of a <link linkend="GdaDataModel">GdaDataModel</link>.
 	    </para>
 	  </listitem>
 	  <listitem>
-            <para>lists of parameters which are encapsulated within a 
-	      <link linkend="GdaParameterList">GdaParameterList</link> container.</para>
+            <para>lists of value holders which are encapsulated within a 
+	      <link linkend="GdaSet">GdaSet</link> container object.</para>
 	    <para>
-	      The GdaParameterList object also makes some computations to group parameters which are
-	      constrained by values in the same GdaDataModel to make it easy to use parameters
-	      which are not really independant.
+	      The GdaSet object also makes some computations to group value holders which are
+	      constrained by values in the same GdaDataModel (it makes it easy to use value holders
+	      which are not really independant).
 	    </para>
 	  </listitem>
 	  <listitem>
@@ -643,7 +642,7 @@
       </para>
       <para>
 	Extracting information about database objects can easily be done using a 
-	<link linkend="GdaMetaStruct">GdaMetaStruct</link> structure which creates an easy to use in-memory representation
+	<link linkend="GdaMetaStruct">GdaMetaStruct</link> object which creates an easy to use in-memory representation
 	of some database objects.
       </para>
       &libgda-GdaMetaStore;

Modified: trunk/doc/C/libgda-4.0-sections.txt
==============================================================================
--- trunk/doc/C/libgda-4.0-sections.txt	(original)
+++ trunk/doc/C/libgda-4.0-sections.txt	Thu Mar  6 19:57:02 2008
@@ -463,7 +463,6 @@
 <FILE>gda-data-model-iter</FILE>
 <TITLE>GdaDataModelIter</TITLE>
 GdaDataModelIter
-gda_data_model_iter_new
 gda_data_model_iter_get_value_at
 gda_data_model_iter_get_value_for_field
 gda_data_model_iter_is_valid
@@ -471,8 +470,8 @@
 gda_data_model_iter_move_next
 gda_data_model_iter_move_prev
 gda_data_model_iter_get_row
+gda_data_model_iter_get_holder_for_field
 gda_data_model_iter_invalidate_contents
-gda_data_model_iter_get_param_for_column
 <SUBSECTION Standard>
 GDA_DATA_MODEL_ITER
 GDA_DATA_MODEL_ITER_CLASS
@@ -1385,16 +1384,21 @@
 GDA_META_STRUCT_ERROR
 GdaMetaDbObjectType
 GdaMetaDbObject
+GDA_META_DB_OBJECT
+GDA_META_DB_OBJECT_GET_TABLE
+GDA_META_DB_OBJECT_GET_VIEW
 GdaMetaTable
 GdaMetaView
 GdaMetaTableColumn
+GDA_META_TABLE_COLUMN
 GdaMetaTableForeignKey
+GDA_META_TABLE_FOREIGN_KEY
 gda_meta_struct_new
 gda_meta_struct_complement
-gda_meta_struct_order_db_objects
+GdaMetaSortType
+gda_meta_struct_sort_db_objects
 gda_meta_struct_get_db_object
 gda_meta_struct_get_table_column
-gda_meta_struct_free
 </SECTION>
 
 <SECTION>

Modified: trunk/doc/C/tmpl/gda-data-model-iter.sgml
==============================================================================
--- trunk/doc/C/tmpl/gda-data-model-iter.sgml	(original)
+++ trunk/doc/C/tmpl/gda-data-model-iter.sgml	Thu Mar  6 19:57:02 2008
@@ -2,11 +2,39 @@
 GdaDataModelIter
 
 <!-- ##### SECTION Short_Description ##### -->
-
+Data model iterator
 
 <!-- ##### SECTION Long_Description ##### -->
 <para>
-
+  A #GdaDataModelIter object is used to iterate through the rows of a #GdaDataModel. If the data model is accessible
+  in a random access way then any number of #GdaDataModelIter objects can be created on the same data model, and
+  if the data model only supports a cursor based access then only one #GdaDataModelIter can be created. In any case
+  creating a #GdaDataModelIter should be done using the gda_data_model_create_iter() method. Note that if 
+  the data model only supports a cursor based access, then calling this method several times will always return
+  the same #GdaDataModelIter, but with its reference count increased by 1 (so you should call g_object_unref() when
+  finished with it).
+</para>
+<para>
+  When a #GdaDataModelIter is valid (that is when it points to an existing row in the data model it iterates through),
+  the individual values (corresponding to each column of the data model, at the pointer row) can be accessed 
+  using the gda_data_model_iter_get_value_at() or gda_data_model_iter_get_value_for_field() methods
+  (or in the same way #GdaSet's values are accessed as #GdaDataModelIter inherits the #GdaSet).
+</para>
+<para>
+  Right after being created, a #GdaDataModelIter is invalid (does not point to any row of its data model). To read the
+  first row of the data model, use the gda_data_model_iter_move_next() method. Calling this method several times will
+  move the iterator forward, up to when the data model has no more rows and the #GdaDataModelIter will be declared invalid
+  (and gda_data_model_iter_move_next() has returned FALSE). Note that at this point, the number of rows in the data
+  model will be known.
+</para>
+<para>
+  If the data model supports it, a #GdaDataModelIter can be moved backwards using the gda_data_model_iter_move_prev()
+  method. However if the iterator is invalid, moving backwards will not be possible (on the contrary to 
+  gda_data_model_iter_move_next() which moves to the first row).
+</para>
+<para>
+  The gda_data_model_iter_set_at_row() method, if the iterator can be moved both forward and backwards, can move the 
+  iterator to a specific row (sometimes faster than moving it forward or backwards a number of times).
 </para>
 
 <!-- ##### SECTION See_Also ##### -->
@@ -67,15 +95,6 @@
 
 </para>
 
-<!-- ##### FUNCTION gda_data_model_iter_new ##### -->
-<para>
-
-</para>
-
- model: 
- Returns: 
-
-
 <!-- ##### FUNCTION gda_data_model_iter_get_value_at ##### -->
 <para>
 
@@ -142,21 +161,21 @@
 @Returns: 
 
 
-<!-- ##### FUNCTION gda_data_model_iter_invalidate_contents ##### -->
+<!-- ##### FUNCTION gda_data_model_iter_get_holder_for_field ##### -->
 <para>
 
 </para>
 
 @iter: 
+ col: 
+ Returns: 
 
 
-<!-- ##### FUNCTION gda_data_model_iter_get_param_for_column ##### -->
+<!-- ##### FUNCTION gda_data_model_iter_invalidate_contents ##### -->
 <para>
 
 </para>
 
 @iter: 
- col: 
- Returns: 
 
 

Modified: trunk/doc/C/tmpl/gda-meta-struct.sgml
==============================================================================
--- trunk/doc/C/tmpl/gda-meta-struct.sgml	(original)
+++ trunk/doc/C/tmpl/gda-meta-struct.sgml	Thu Mar  6 19:57:02 2008
@@ -6,13 +6,15 @@
 
 <!-- ##### SECTION Long_Description ##### -->
 <para>
-  The #GdaMetaStruct structure reads data from a #GdaMetaStore object and
+  The #GdaMetaStruct object reads data from a #GdaMetaStore object and
   creates an easy to use in memory representation for some database objects. For example one can easily
   analyse the columns of a table (or its foreign keys) using a #GdaMetaStruct.
 </para>
 <para>
-  It is not permitted to modify a #GdaMetaStruct structure, one should only use the public API
-  to add information about database objects (using gda_meta_struct_complement()).
+  The #GdaMetaStruct object exports a single #GSList list of database objects as #GdaMetaDbObject structures,
+  which should not be modified. The list is the <parameter>db_objects</parameter> member of the
+  structure. Use gda_meta_struct_complement() to request that the #GdaMetaStruct object add some information
+  about some database object.
 </para>
 <para>
   In the following code sample, one prints the columns names and types of a table:
@@ -21,7 +23,7 @@
 GdaMetaDbObject *dbo;
 GValue *catalog, *schema, *name;
 
-/* Define catalog, schema and name */
+/* Define name (and optionnally catalog and schema) */
 [...]
 
 mstruct = gda_meta_struct_new ();
@@ -53,8 +55,9 @@
 
 </para>
 
+ object: 
 @db_objects: 
- index: 
+ priv: 
 
 <!-- ##### ENUM GdaMetaStructError ##### -->
 <para>
@@ -81,6 +84,30 @@
 @GDA_META_DB_TABLE: 
 @GDA_META_DB_VIEW: 
 
+<!-- ##### MACRO GDA_META_DB_OBJECT ##### -->
+<para>
+
+</para>
+
+ x: 
+
+
+<!-- ##### MACRO GDA_META_DB_OBJECT_GET_TABLE ##### -->
+<para>
+
+</para>
+
+ dbobj: 
+
+
+<!-- ##### MACRO GDA_META_DB_OBJECT_GET_VIEW ##### -->
+<para>
+
+</para>
+
+ dbobj: 
+
+
 <!-- ##### STRUCT GdaMetaTable ##### -->
 <para>
 
@@ -113,6 +140,14 @@
 @nullok: 
 @default_value: 
 
+<!-- ##### MACRO GDA_META_TABLE_COLUMN ##### -->
+<para>
+
+</para>
+
+ x: 
+
+
 <!-- ##### STRUCT GdaMetaTableForeignKey ##### -->
 <para>
 
@@ -126,6 +161,14 @@
 @ref_pk_cols_array: 
 @ref_pk_names_array: 
 
+<!-- ##### MACRO GDA_META_TABLE_FOREIGN_KEY ##### -->
+<para>
+
+</para>
+
+ x: 
+
+
 <!-- ##### FUNCTION gda_meta_struct_new ##### -->
 <para>
 
@@ -149,12 +192,21 @@
 @Returns: 
 
 
-<!-- ##### FUNCTION gda_meta_struct_order_db_objects ##### -->
+<!-- ##### ENUM GdaMetaSortType ##### -->
+<para>
+
+</para>
+
+ GDA_META_SORT_ALHAPETICAL: sort by alphabetical order on the schema name and on the object name
+ GDA_META_SORT_DEPENDENCIES: sort such as that for any given #GdaMetaDbObject in the list, all its dependencies are _before_ it in the list
+
+<!-- ##### FUNCTION gda_meta_struct_sort_db_objects ##### -->
 <para>
 
 </para>
 
 @mstruct: 
+ sort_type: 
 @error: 
 @Returns: 
 
@@ -182,11 +234,3 @@
 @Returns: 
 
 
-<!-- ##### FUNCTION gda_meta_struct_free ##### -->
-<para>
-
-</para>
-
- mstruct: 
-
-

Modified: trunk/libgda/gda-data-access-wrapper.c
==============================================================================
--- trunk/libgda/gda-data-access-wrapper.c	(original)
+++ trunk/libgda/gda-data-access-wrapper.c	Thu Mar  6 19:57:02 2008
@@ -453,7 +453,7 @@
 	for (i = 0; i < model->priv->nb_cols; i++) {
 		GdaHolder *holder;
 
-		holder = gda_data_model_iter_get_param_for_column (model->priv->iter, i);
+		holder = gda_data_model_iter_get_holder_for_field (model->priv->iter, i);
 		if (holder)
 			gda_row_set_value (row, i, gda_holder_get_value (holder));
 	}

Modified: trunk/libgda/gda-data-model-array.c
==============================================================================
--- trunk/libgda/gda-data-model-array.c	(original)
+++ trunk/libgda/gda-data-model-array.c	Thu Mar  6 19:57:02 2008
@@ -416,7 +416,7 @@
  *
  * Returns: a new data model, or %NULL if an error occurred
  */
-GdaDataModel *
+GdaDataModelArray *
 gda_data_model_array_copy_model (GdaDataModel *src, GError **error)
 {
 	GdaDataModel *model;
@@ -458,7 +458,7 @@
 	/*else
 	  gda_data_model_dump (model, stdout);*/
 
-	return model;
+	return (GdaDataModelArray*) model;
 }
 
 /**

Modified: trunk/libgda/gda-data-model-array.h
==============================================================================
--- trunk/libgda/gda-data-model-array.h	(original)
+++ trunk/libgda/gda-data-model-array.h	Thu Mar  6 19:57:02 2008
@@ -1,5 +1,5 @@
 /* GDA common library
- * Copyright (C) 1998 - 2006 The GNOME Foundation.
+ * Copyright (C) 1998 - 2008 The GNOME Foundation.
  *
  * AUTHORS:
  *	Rodrigo Moya <rodrigo gnome-db org>
@@ -48,12 +48,12 @@
 	GdaDataModelRowClass      parent_class;
 };
 
-GType         gda_data_model_array_get_type          (void) G_GNUC_CONST;
-GdaDataModel *gda_data_model_array_new_with_g_types  (gint cols, ...);
-GdaDataModel *gda_data_model_array_new               (gint cols);
-GdaDataModel *gda_data_model_array_copy_model        (GdaDataModel *src, GError **error);
-void          gda_data_model_array_set_n_columns     (GdaDataModelArray *model, gint cols);
-void          gda_data_model_array_clear             (GdaDataModelArray *model);
+GType              gda_data_model_array_get_type          (void) G_GNUC_CONST;
+GdaDataModel      *gda_data_model_array_new_with_g_types  (gint cols, ...);
+GdaDataModel      *gda_data_model_array_new               (gint cols);
+GdaDataModelArray *gda_data_model_array_copy_model        (GdaDataModel *src, GError **error);
+void               gda_data_model_array_set_n_columns     (GdaDataModelArray *model, gint cols);
+void               gda_data_model_array_clear             (GdaDataModelArray *model);
 
 G_END_DECLS
 

Modified: trunk/libgda/gda-data-model-iter.c
==============================================================================
--- trunk/libgda/gda-data-model-iter.c	(original)
+++ trunk/libgda/gda-data-model-iter.c	Thu Mar  6 19:57:02 2008
@@ -211,23 +211,6 @@
 	iter->priv->keep_param_changes = FALSE;
 }
 
-/**
- * gda_data_model_iter_new
- * @model: Model used to create the #GdaDataModelIter
- *
- * Creates a new GdaDataModelIter object which represents a value or a parameter.
- *
- * Returns: the new object
- */
-GdaDataModelIter *
-gda_data_model_iter_new (GdaDataModel *model)
-{
-	g_return_val_if_fail (GDA_IS_DATA_MODEL (model), NULL);
-
-	/* use the data model's own creation method here */
-	return gda_data_model_create_iter (model);
-}
-
 static void 
 model_row_updated_cb (GdaDataModel *model, gint row, GdaDataModelIter *iter)
 {
@@ -608,7 +591,8 @@
  * @iter: a #GdaDataModelIter object
  *
  * Declare all the parameters in @iter invalid, without modifying the
- * #GdaDataModel @iter is for or changing the row it represents
+ * #GdaDataModel @iter is for or changing the row it represents. This method
+ * is for internal usage.
  */
 void
 gda_data_model_iter_invalidate_contents (GdaDataModelIter *iter)
@@ -665,7 +649,7 @@
 }
 
 /**
- * gda_data_model_iter_get_param_for_column
+ * gda_data_model_iter_get_holder_for_field
  * @iter: a #GdaDataModelIter object
  * @col: the requested column
  *
@@ -675,7 +659,7 @@
  * Returns: the #GdaHolder, or %NULL if an error occurred
  */
 GdaHolder *
-gda_data_model_iter_get_param_for_column (GdaDataModelIter *iter, gint col)
+gda_data_model_iter_get_holder_for_field (GdaDataModelIter *iter, gint col)
 {
 	g_return_val_if_fail (GDA_IS_DATA_MODEL_ITER (iter), NULL);
 	g_return_val_if_fail (iter->priv, NULL);

Modified: trunk/libgda/gda-data-model-iter.h
==============================================================================
--- trunk/libgda/gda-data-model-iter.h	(original)
+++ trunk/libgda/gda-data-model-iter.h	Thu Mar  6 19:57:02 2008
@@ -61,7 +61,6 @@
 };
 
 GType             gda_data_model_iter_get_type             (void) G_GNUC_CONST;
-GdaDataModelIter *gda_data_model_iter_new                  (GdaDataModel *model);
 
 const GValue     *gda_data_model_iter_get_value_at         (GdaDataModelIter *iter, gint col);
 const GValue     *gda_data_model_iter_get_value_for_field  (GdaDataModelIter *iter, const gchar *field_name);
@@ -75,7 +74,7 @@
 void              gda_data_model_iter_invalidate_contents  (GdaDataModelIter *iter);
 gboolean          gda_data_model_iter_is_valid             (GdaDataModelIter *iter);
 
-GdaHolder        *gda_data_model_iter_get_param_for_column (GdaDataModelIter *iter, gint col);
+GdaHolder        *gda_data_model_iter_get_holder_for_field (GdaDataModelIter *iter, gint col);
 
 G_END_DECLS
 

Modified: trunk/libgda/gda-data-model.c
==============================================================================
--- trunk/libgda/gda-data-model.c	(original)
+++ trunk/libgda/gda-data-model.c	Thu Mar  6 19:57:02 2008
@@ -1707,7 +1707,7 @@
 		else
 			col = i;
 		if (col >= 0)
-			param = gda_data_model_iter_get_param_for_column (from_iter, col);
+			param = gda_data_model_iter_get_holder_for_field (from_iter, col);
 
 		/* tests */
 		column = gda_data_model_describe_column (to, i);

Modified: trunk/libgda/gda-data-proxy.c
==============================================================================
--- trunk/libgda/gda-data-proxy.c	(original)
+++ trunk/libgda/gda-data-proxy.c	Thu Mar  6 19:57:02 2008
@@ -2854,7 +2854,7 @@
 
 	/* copy filtered_rows and remove virtual table */
 	GdaDataModel *copy;
-	copy = gda_data_model_array_copy_model (filtered_rows, NULL);
+	copy = (GdaDataModel*) gda_data_model_array_copy_model (filtered_rows, NULL);
 	g_object_unref (filtered_rows);
 	gda_vconnection_data_model_remove (GDA_VCONNECTION_DATA_MODEL (vcnc), "proxy", NULL);
 	if (!copy) {

Modified: trunk/libgda/gda-meta-store.c
==============================================================================
--- trunk/libgda/gda-meta-store.c	(original)
+++ trunk/libgda/gda-meta-store.c	Thu Mar  6 19:57:02 2008
@@ -440,7 +440,8 @@
  * Returns: the newly created object, or %NULL if an error occurred
  */
 GdaMetaStore *
-gda_meta_store_new_with_file (const gchar *file_name) {
+gda_meta_store_new_with_file (const gchar *file_name) 
+{
 	gchar *string;
 	gchar *base, *dir;
 	GdaMetaStore *store;
@@ -468,7 +469,8 @@
  * Returns: the newly created object, or %NULL if an error occurred
  */
 GdaMetaStore *
-gda_meta_store_new (const gchar *string) {
+gda_meta_store_new (const gchar *string) 
+{
 	GObject *obj;
 	GdaMetaStore *store;
 	
@@ -486,7 +488,8 @@
 }
 
 static void
-gda_meta_store_dispose (GObject   * object) {
+gda_meta_store_dispose (GObject *object) 
+{
 	GdaMetaStore *store;
 	
 	g_return_if_fail (GDA_IS_META_STORE (object));
@@ -505,7 +508,8 @@
 }
 
 static void
-gda_meta_store_finalize (GObject   * object) {
+gda_meta_store_finalize (GObject *object)
+{
 	GdaMetaStore *store;
 	
 	g_return_if_fail (object != NULL);
@@ -523,9 +527,10 @@
 
 static void
 gda_meta_store_set_property (GObject *object,
-	guint param_id,
-	const GValue *value,
-	GParamSpec *pspec) {
+			     guint param_id,
+			     const GValue *value,
+			     GParamSpec *pspec) 
+{
 	GdaMetaStore *store;
 	const gchar *cnc_string;
 	
@@ -552,9 +557,10 @@
 
 static void
 gda_meta_store_get_property (GObject *object,
-	guint param_id,
-	GValue *value,
-	GParamSpec *pspec) {
+			     guint param_id,
+			     GValue *value,
+			     GParamSpec *pspec) 
+{
 	GdaMetaStore *store;
 	store = GDA_META_STORE (object);
 	
@@ -576,7 +582,8 @@
 static gboolean prepare_server_operations (GdaMetaStore *store, GError **error);
 static gboolean handle_schema_version (GdaMetaStore *store, gboolean *schema_present, GError **error);
 static gboolean
-initialize_cnc_struct (GdaMetaStore *store, GError **error) {
+initialize_cnc_struct (GdaMetaStore *store, GError **error)
+{
 	gboolean schema_present;
 	GdaMetaStoreClass *klass;
 	g_return_val_if_fail (GDA_IS_CONNECTION (store->priv->cnc), FALSE);
@@ -1868,7 +1875,7 @@
 	gboolean prep, with_cond;
 	gboolean retval = TRUE;
 	GSList *all_changes = NULL;
-	gboolean started_transaction;
+	gboolean started_transaction = FALSE;
 
 	g_return_val_if_fail (GDA_IS_META_STORE (store), FALSE);
 	g_return_val_if_fail (store->priv, FALSE);

Modified: trunk/libgda/gda-meta-struct.c
==============================================================================
--- trunk/libgda/gda-meta-struct.c	(original)
+++ trunk/libgda/gda-meta-struct.c	Thu Mar  6 19:57:02 2008
@@ -20,19 +20,31 @@
 
 #include <string.h>
 #include <glib/gi18n-lib.h>
-#include <libgda/gda-meta-store.h>
 #include <libgda/gda-meta-struct.h>
 #include <libgda/gda-util.h>
 #include <sql-parser/gda-sql-parser.h>
 #include <sql-parser/gda-sql-statement.h>
 
-/* module error */
-GQuark gda_meta_struct_error_quark (void) {
-        static GQuark quark;
-        if (!quark)
-                quark = g_quark_from_static_string ("gda_meta_struct_error");
-        return quark;
-}
+/*
+ * Main static functions
+ */
+static void gda_meta_struct_class_init (GdaMetaStructClass *klass);
+static void gda_meta_struct_init (GdaMetaStruct *mstruct);
+static void gda_meta_struct_finalize (GObject *object);
+
+static void gda_meta_struct_set_property (GObject *object,
+                                         guint param_id,
+                                         const GValue *value,
+                                         GParamSpec *pspec);
+static void gda_meta_struct_get_property (GObject *object,
+                                         guint param_id,
+                                         GValue *value,
+                                         GParamSpec *pspec);
+
+
+struct _GdaMetaStructPrivate {
+	GHashTable *index; /* key = [catalog].[schema].[name], value = a GdaMetaDbObject */
+};
 
 static void gda_meta_db_object_free (GdaMetaDbObject *dbo);
 static void gda_meta_table_free_contents (GdaMetaTable *table);
@@ -40,24 +52,149 @@
 static void gda_meta_table_column_free (GdaMetaTableColumn *tcol);
 static void gda_meta_table_foreign_key_free (GdaMetaTableForeignKey *tfk);
 
+/* get a pointer to the parents to be able to call their destructor */
+static GObjectClass  *parent_class = NULL;
+
+/* properties */
+enum {
+        PROP_0,
+        PROP_FEATURES
+};
+
+/* module error */
+GQuark gda_meta_struct_error_quark (void) {
+	static GQuark quark;
+	if (!quark)
+		quark = g_quark_from_static_string ("gda_meta_struct_error");
+	return quark;
+}
+
+GType
+gda_meta_struct_get_type (void) {
+	static GType type = 0;
+	
+	if (G_UNLIKELY (type == 0)) {
+		static const GTypeInfo info = {
+			sizeof (GdaMetaStructClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) gda_meta_struct_class_init,
+			NULL,
+			NULL,
+			sizeof (GdaMetaStruct),
+			0,
+			(GInstanceInitFunc) gda_meta_struct_init
+		};
+		
+		type = g_type_register_static (G_TYPE_OBJECT, "GdaMetaStruct", &info, 0);
+	}
+	return type;
+}
+
+
+static void
+gda_meta_struct_class_init (GdaMetaStructClass *klass) {
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+	
+	parent_class = g_type_class_peek_parent (klass);
+	
+	/* Properties */
+        object_class->set_property = gda_meta_struct_set_property;
+        object_class->get_property = gda_meta_struct_get_property;
+        g_object_class_install_property (object_class, PROP_FEATURES,
+					 g_param_spec_int ("fetures", _ ("Features to compute"), NULL, 
+							   GDA_META_STRUCT_FEATURE_ALL, G_MAXINT,
+							   GDA_META_STRUCT_FEATURE_ALL,
+							   (G_PARAM_WRITABLE | G_PARAM_READABLE | 
+							    G_PARAM_CONSTRUCT_ONLY)));
+
+	/* virtual methods */
+	object_class->finalize = gda_meta_struct_finalize;
+}
+
+
+static void
+gda_meta_struct_init (GdaMetaStruct *mstruct) {
+	mstruct->priv = g_new0 (GdaMetaStructPrivate, 1);
+	mstruct->priv->index = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+}
+
+
 /**
  * gda_meta_struct_new
  *
- * Creates a new initialized #GdaMetaStruct structure
+ * Returns: the newly created #GdaMetaStruct object
  */
 GdaMetaStruct *
-gda_meta_struct_new (void)
+gda_meta_struct_new (void) 
 {
+	return (GdaMetaStruct*) g_object_new (GDA_TYPE_META_STRUCT, NULL);
+}
+
+static void
+gda_meta_struct_finalize (GObject   * object) {
 	GdaMetaStruct *mstruct;
-	mstruct = g_new0 (GdaMetaStruct, 1);
-	mstruct->db_objects = NULL;
-	mstruct->index = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+	
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GDA_IS_META_STRUCT (object));
+	
+	mstruct = GDA_META_STRUCT (object);
+	if (mstruct->priv) {
+		g_slist_foreach (mstruct->db_objects, (GFunc) gda_meta_db_object_free, NULL);
+		g_slist_free (mstruct->db_objects);
+		g_hash_table_destroy (mstruct->priv->index);
+		g_free (mstruct->priv);
+		mstruct->priv = NULL;
+	}
+	
+	/* parent class */
+	parent_class->finalize (object);
+}
 
-	return mstruct;
+static void
+gda_meta_struct_set_property (GObject *object,
+			      guint param_id,
+			      const GValue *value,
+			      GParamSpec *pspec)
+{
+        GdaMetaStruct *mstruct;
+
+        mstruct = GDA_META_STRUCT (object);
+        if (mstruct->priv) {
+                switch (param_id) {
+		case PROP_FEATURES:
+			TO_IMPLEMENT;
+			break;
+		default:
+			break;
+		}
+	}
 }
 
 static void
-compute_view_dependencies (GdaMetaStruct *mstruct, GdaMetaDbObject *view_dbobj, GdaSqlStatement *sqlst) {	
+gda_meta_struct_get_property (GObject *object,
+			      guint param_id,
+			      GValue *value,
+			      GParamSpec *pspec)
+{
+        GdaMetaStruct *mstruct;
+        mstruct = GDA_META_STRUCT (object);
+
+        if (mstruct->priv) {
+                switch (param_id) {
+		case PROP_FEATURES:
+			TO_IMPLEMENT;
+			break;
+		default:
+			break;
+		}
+	}
+}
+
+
+static void
+compute_view_dependencies (GdaMetaStruct *mstruct, GdaMetaDbObject *view_dbobj, GdaSqlStatement *sqlst) 
+{	
 	if (sqlst->stmt_type == GDA_SQL_STATEMENT_SELECT) {
 		GdaSqlStatementSelect *selst;
 		selst = (GdaSqlStatementSelect*) (sqlst->contents);
@@ -83,7 +220,7 @@
 				str = g_strdup_printf ("%s.%s.%s", g_value_get_string (fk_catalog), 
 						       g_value_get_string (fk_schema), 
 						       g_value_get_string (fk_name));
-				g_hash_table_insert (mstruct->index, str, ref_obj);
+				g_hash_table_insert (mstruct->priv->index, str, ref_obj);
 			}
 			view_dbobj->depend_list = g_slist_append (view_dbobj->depend_list, ref_obj);
 			*/
@@ -100,19 +237,34 @@
 		g_assert_not_reached ();
 }
 
+static gboolean determine_db_object_from_schema_and_name (GdaMetaStruct *mstruct, GdaMetaStore *store, 
+							  GdaMetaDbObjectType type, GValue **out_catalog,
+							  GValue **out_short_name, GValue **out_full_name,
+							  GValue **out_owner, const GValue *schema, const GValue *name);
+static gboolean determine_db_object_from_short_name (GdaMetaStruct *mstruct, GdaMetaStore *store, 
+						     GdaMetaDbObjectType type, GValue **out_catalog,
+						     GValue **out_schema, GValue **out_name, GValue **out_short_name, 
+						     GValue **out_full_name, GValue **out_owner, const GValue *name);
+
 /**
  * gda_meta_struct_complement
- * @mstruct: a #GdaMetaStruct structure
+ * @mstruct: a #GdaMetaStruct object
  * @store: the #GdaMetaStore to use
  * @type: the type of object to add
- * @catalog: the catalog the object belongs to (as a G_TYPE_STRING GValue)
- * @schema: the schema the object belongs to (as a G_TYPE_STRING GValue)
- * @name: the object's name (as a G_TYPE_STRING GValue)
+ * @catalog: the catalog the object belongs to (as a G_TYPE_STRING GValue), or %NULL
+ * @schema: the schema the object belongs to (as a G_TYPE_STRING GValue), or %NULL
+ * @name: the object's name (as a G_TYPE_STRING GValue), not %NULL
  * @error: a place to store errors, or %NULL
  *
  * 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 %NULL and @schema is not %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 both @catalog and @schema are %NULL, then the database object will be the one which 
+ * can be accessed by its @schema  name name.
+ *
  * Returns: the #GdaMetaDbObject corresponding to the database object if no error occurred, or %NULL
  */
 GdaMetaDbObject *
@@ -121,12 +273,42 @@
 			    GError **error)
 {
 	GdaMetaDbObject *dbo = NULL;
+	GValue *real_catalog = NULL, *real_schema = NULL, *real_name = NULL;
+	GValue *short_name = NULL, *full_name=NULL, *owner=NULL;
 
 	g_return_val_if_fail (GDA_IS_META_STORE (store), NULL);
 	g_return_val_if_fail (mstruct, NULL);
+	g_return_val_if_fail (name && (G_VALUE_TYPE (name) == G_TYPE_STRING), NULL);
+
+	if (!catalog) {
+		if (schema) {
+			g_return_val_if_fail (schema && (G_VALUE_TYPE (schema) == G_TYPE_STRING), NULL);
+			if (! determine_db_object_from_schema_and_name (mstruct, store, type, &real_catalog, 
+									&short_name, &full_name, &owner,
+									schema, name)) {
+				g_set_error (error, GDA_META_STRUCT_ERROR, GDA_META_STRUCT_UNKNOWN_OBJECT_ERROR,
+					     _("Could not find object named '%s.%s'"), 
+					     g_value_get_string (schema), g_value_get_string (name));
+				return NULL;
+			}
+			catalog = real_catalog;
+		}
+		else {
+			if (! determine_db_object_from_short_name (mstruct, store, type, &real_catalog, 
+								   &real_schema, &real_name, 
+								   &short_name, &full_name, &owner, name)) {
+				g_set_error (error, GDA_META_STRUCT_ERROR, GDA_META_STRUCT_UNKNOWN_OBJECT_ERROR,
+					     _("Could not find object named '%s'"), g_value_get_string (name));
+				return NULL;
+			}
+			if (real_name)
+				name = real_name;
+			catalog = real_catalog;
+			schema = real_schema;
+		}
+	}
 	g_return_val_if_fail (catalog && (G_VALUE_TYPE (catalog) == G_TYPE_STRING), NULL);
 	g_return_val_if_fail (schema && (G_VALUE_TYPE (schema) == G_TYPE_STRING), NULL);
-	g_return_val_if_fail (name && (G_VALUE_TYPE (name) == G_TYPE_STRING), NULL);
 	
 	/* create new GdaMetaDbObject or get already existing one */
 	dbo = gda_meta_struct_get_db_object (mstruct, catalog, schema, name);
@@ -135,8 +317,12 @@
 		dbo->obj_catalog = g_strdup (g_value_get_string (catalog));
 		dbo->obj_schema = g_strdup (g_value_get_string (schema));
 		dbo->obj_name = g_strdup (g_value_get_string (name));
-		dbo->obj_short_name = NULL;
-		dbo->obj_full_name = NULL;
+		if (short_name)
+			dbo->obj_short_name = g_strdup (g_value_get_string (short_name));
+		if (full_name)
+			dbo->obj_full_name = g_strdup (g_value_get_string (full_name));
+		if (owner)
+			dbo->obj_owner = g_strdup (g_value_get_string (owner));
 	}
 	else if (dbo->obj_type == type)
 		return dbo; /* nothing to do */
@@ -153,7 +339,8 @@
 
 	switch (type) {
 	case GDA_META_DB_VIEW: {
-		gchar *sql = "SELECT view_definition, is_updatable FROM _views "
+		gchar *sql = "SELECT view_definition, is_updatable, table_short_name, table_full_name, table_owner "
+			"FROM _views NATURAL JOIN _tables "
 			"WHERE table_catalog = ##tc::string "
 			"AND table_schema = ##ts::string AND table_name = ##tname::string";
 		GdaDataModel *model;
@@ -173,6 +360,13 @@
 			goto onerror;
 		}
 		
+		if (!dbo->obj_short_name)
+			dbo->obj_short_name = g_strdup (g_value_get_string (gda_data_model_get_value_at (model, 2, 0)));
+		if (!dbo->obj_full_name)
+			dbo->obj_full_name = g_strdup (g_value_get_string (gda_data_model_get_value_at (model, 3, 0)));
+		if (!dbo->obj_owner)
+			dbo->obj_owner = g_strdup (g_value_get_string (gda_data_model_get_value_at (model, 4, 0)));
+
 		mv = GDA_META_DB_OBJECT_GET_VIEW (dbo);
 		mv->view_def = g_strdup (g_value_get_string (gda_data_model_get_value_at (model, 0, 0)));
 		mv->is_updatable = g_value_get_boolean (gda_data_model_get_value_at (model, 1, 0));
@@ -207,7 +401,7 @@
 	case GDA_META_DB_TABLE: {
 		/* columns */
 		gchar *sql = "SELECT c.column_name, c.data_type, c.gtype, c.is_nullable, t.table_short_name, t.table_full_name, "
-			"c.column_default FROM _columns as c NATURAL JOIN _tables as t WHERE table_catalog = ##tc::string "
+			"c.column_default, t.table_owner FROM _columns as c NATURAL JOIN _tables as t WHERE table_catalog = ##tc::string "
 			"AND table_schema = ##ts::string AND table_name = ##tname::string "
 			"ORDER BY ordinal_position";
 		GdaMetaTable *mt;
@@ -227,6 +421,12 @@
 				     g_value_get_string (name));
 			goto onerror;
 		}
+		if (!dbo->obj_short_name)
+			dbo->obj_short_name = g_strdup (g_value_get_string (gda_data_model_get_value_at (model, 4, 0)));
+		if (!dbo->obj_full_name)
+			dbo->obj_full_name = g_strdup (g_value_get_string (gda_data_model_get_value_at (model, 5, 0)));
+		if (!dbo->obj_owner)
+			dbo->obj_owner = g_strdup (g_value_get_string (gda_data_model_get_value_at (model, 7, 0)));
 
 		mt = GDA_META_DB_OBJECT_GET_TABLE (dbo);
 		for (i = 0; i < nrows; i++) {
@@ -243,11 +443,6 @@
 
 			/* Note: tcol->pkey is not determined here */
 			mt->columns = g_slist_prepend (mt->columns, tcol);
-
-			if (i == 0) {
-				dbo->obj_short_name = g_strdup (g_value_get_string (gda_data_model_get_value_at (model, 4, i)));
-				dbo->obj_full_name = g_strdup (g_value_get_string (gda_data_model_get_value_at (model, 5, i)));
-			}
 		}
 		mt->columns = g_slist_reverse (mt->columns);
 		g_object_unref (model);
@@ -320,7 +515,7 @@
 				str = g_strdup_printf ("%s.%s.%s", g_value_get_string (fk_catalog), 
 						       g_value_get_string (fk_schema), 
 						       g_value_get_string (fk_name));
-				g_hash_table_insert (mstruct->index, str, tfk->depend_on);
+				g_hash_table_insert (mstruct->priv->index, str, tfk->depend_on);
 			}
 			dbo->depend_list = g_slist_append (dbo->depend_list, tfk->depend_on);
 
@@ -345,7 +540,7 @@
 		str = g_strdup_printf ("%s.%s.%s", g_value_get_string (catalog), 
 				       g_value_get_string (schema), 
 				       g_value_get_string (name));
-		g_hash_table_insert (mstruct->index, str, dbo);
+		g_hash_table_insert (mstruct->priv->index, str, dbo);
 	}
 	if (dbo) {
 		/* compute GdaMetaTableForeignKey's @ref_pk_cols_array arrays and GdaMetaTable' @reverse_fk_list lists*/
@@ -389,11 +584,24 @@
 			}
 		}
 	}
+	if (real_catalog) gda_value_free (real_catalog);
+	if (real_schema) gda_value_free (real_schema);
+	if (real_name) gda_value_free (real_name);
+	if (short_name)	gda_value_free (short_name);
+	if (full_name)	gda_value_free (full_name);
+	if (owner) gda_value_free (owner);
 	return dbo;
 
  onerror:
 	if (dbo)
 		gda_meta_db_object_free (dbo);
+	if (real_catalog) gda_value_free (real_catalog);
+	if (real_schema) gda_value_free (real_schema);
+	if (real_name) gda_value_free (real_name);
+	if (short_name)	gda_value_free (short_name);
+	if (full_name)	gda_value_free (full_name);
+	if (owner) gda_value_free (owner);
+
 	return NULL;
 }
 
@@ -432,42 +640,62 @@
 	return retlist;
 }
 
+static gint
+db_object_sort_func (GdaMetaDbObject *dbo1, GdaMetaDbObject *dbo2)
+{
+	gint retval;
+	retval = strcmp (dbo1->obj_schema, dbo2->obj_schema);
+	if (retval)
+		return retval;
+	return strcmp (dbo1->obj_name, dbo2->obj_name);
+}
+
 /**
- * gda_meta_struct_order_db_objects
- * @mstruct: a #GdaMetaStruct structure
+ * gda_meta_struct_sort_db_objects
+ * @mstruct: a #GdaMetaStruct object
+ * @sort_type: the kind of sorting requested
  * @error: a place to store errors, or %NULL
  *
- * Reorders the list of database objects within @mstruct in a way that for any given GdaMetaDbObject in the list, 
- * all the dependencies are _before_ it in the list.
+ * Reorders the list of database objects within @mstruct in a way specified by @sort_type.
  *
  * Returns: TRUE if no error occurred
  */ 
 gboolean
-gda_meta_struct_order_db_objects (GdaMetaStruct *mstruct, GError **error)
+gda_meta_struct_sort_db_objects (GdaMetaStruct *mstruct, GdaMetaSortType sort_type, GError **error)
 {
 	GSList *pass_list;
 	GSList *ordered_list = NULL;
 
-	g_return_val_if_fail (mstruct, FALSE);
-	for (pass_list = build_pass (mstruct->db_objects, ordered_list); 
-	     pass_list; 
-	     pass_list = build_pass (mstruct->db_objects, ordered_list)) 
-		ordered_list = g_slist_concat (ordered_list, pass_list);
+	switch (sort_type) {
+	case GDA_META_SORT_ALHAPETICAL:
+		mstruct->db_objects = g_slist_sort (mstruct->db_objects, (GCompareFunc) db_object_sort_func);
+		ordered_list = mstruct->db_objects;
+		break;
+	case GDA_META_SORT_DEPENDENCIES:
+		g_return_val_if_fail (mstruct, FALSE);
+		for (pass_list = build_pass (mstruct->db_objects, ordered_list); 
+		     pass_list; 
+		     pass_list = build_pass (mstruct->db_objects, ordered_list)) 
+			ordered_list = g_slist_concat (ordered_list, pass_list);
+		g_slist_free (mstruct->db_objects);
+		mstruct->db_objects = ordered_list;
+		break;
+	default:
+		TO_IMPLEMENT;
+		break;
+	}
 
 #ifdef GDA_DEBUG_NO
 	GSList *list;
 	for (list = ordered_list; list; list = list->next) 
 		g_print ("--> %s\n", GDA_META_DB_OBJECT (list->data)->obj_name);
 #endif
-
-	g_slist_free (mstruct->db_objects);
-	mstruct->db_objects = ordered_list;
 	return TRUE;
 }
 
 /**
  * gda_meta_struct_get_db_object
- * @mstruct: a #GdaMetaStruct structure
+ * @mstruct: a #GdaMetaStruct object
  * @catalog: the catalog the object belongs to (as a G_TYPE_STRING GValue)
  * @schema: the schema the object belongs to (as a G_TYPE_STRING GValue)
  * @name: the object's name (as a G_TYPE_STRING GValue)
@@ -490,14 +718,14 @@
 
 	key = g_strdup_printf ("%s.%s.%s", g_value_get_string (catalog), g_value_get_string (schema), 
 			       g_value_get_string (name));
-	dbo = g_hash_table_lookup (mstruct->index, key);
+	dbo = g_hash_table_lookup (mstruct->priv->index, key);
 	g_free (key);
 	return dbo;
 }
 
 /**
  * gda_meta_struct_get_table_column
- * @mstruct: a #GdaMetaStruct structure
+ * @mstruct: a #GdaMetaStruct object
  * @table: the #GdaMetaTable structure to find the column for
  * @col_name: the name of the column to find (as a G_TYPE_STRING GValue)
  *
@@ -525,7 +753,7 @@
 
 /**
  * gda_meta_struct_free
- * @mstruct: a #GdaMetaStruct structure
+ * @mstruct: a #GdaMetaStruct object
  * 
  * Releases any memory associated to @mstruct.
  */
@@ -537,7 +765,7 @@
 
 	g_slist_foreach (mstruct->db_objects, (GFunc) gda_meta_db_object_free, NULL);
 	g_slist_free (mstruct->db_objects);
-	g_hash_table_destroy (mstruct->index);
+	g_hash_table_destroy (mstruct->priv->index);
 	g_free (mstruct);
 }
 
@@ -550,6 +778,7 @@
 	g_free (dbo->obj_name);
 	g_free (dbo->obj_short_name);
 	g_free (dbo->obj_full_name);
+	g_free (dbo->obj_owner);
 	switch (dbo->obj_type) {
 	case GDA_META_DB_UNKNOWN:
 		break;
@@ -606,3 +835,164 @@
 	g_free (tfk->ref_pk_names_array);
 	g_free (tfk);
 }
+
+static gboolean 
+determine_db_object_from_schema_and_name (GdaMetaStruct *mstruct, GdaMetaStore *store, 
+					  GdaMetaDbObjectType type, GValue **out_catalog,
+					  GValue **out_short_name, 
+					  GValue **out_full_name, GValue **out_owner, 
+					  const GValue *schema, const GValue *name)
+{
+	*out_catalog = NULL;
+	*out_short_name = NULL;
+	*out_full_name = NULL;
+	*out_owner = NULL;
+
+	switch (type) {
+	case GDA_META_DB_UNKNOWN:
+		break;
+	case GDA_META_DB_TABLE: {
+		const gchar *sql = "SELECT table_catalog, table_short_name, table_full_name, table_owner FROM _tables as t WHERE table_schema = ##ts::string AND table_short_name = ##tname::string AND table_name NOT IN (SELECT v.table_name FROM _views as v WHERE v.table_catalog=t.table_catalog AND v.table_schema=t.table_schema)";
+		GdaDataModel *model;
+		gint nrows;
+		model = gda_meta_store_extract (store, sql, NULL, "ts", schema, "tname", name, NULL);
+		if (!model) 
+			return FALSE;
+
+		nrows = gda_data_model_get_n_rows (model);
+		if (nrows != 1) {
+			g_object_unref (model);
+			return FALSE;
+		}
+		*out_catalog = gda_value_copy (gda_data_model_get_value_at (model, 0, 0));
+		*out_short_name = gda_value_copy (gda_data_model_get_value_at (model, 1, 0));
+		*out_full_name = gda_value_copy (gda_data_model_get_value_at (model, 2, 0));
+		*out_owner = gda_value_copy (gda_data_model_get_value_at (model, 3, 0));
+		g_object_unref (model);
+		return TRUE;
+	}
+	case GDA_META_DB_VIEW:{
+		const gchar *sql = "SELECT table_catalog, table_short_name, table_full_name, table_owner FROM _tables NATURAL JOIN _views WHERE table_schema = ##ts::string AND table_short_name = ##tname::string";
+		GdaDataModel *model;
+		gint nrows;
+		model = gda_meta_store_extract (store, sql, NULL, "ts", schema, "tname", name, NULL);
+		if (!model) 
+			return FALSE;
+
+		nrows = gda_data_model_get_n_rows (model);
+		if (nrows != 1) {
+			g_object_unref (model);
+			return FALSE;
+		}
+		*out_catalog = gda_value_copy (gda_data_model_get_value_at (model, 0, 0));
+		*out_short_name = gda_value_copy (gda_data_model_get_value_at (model, 1, 0));
+		*out_full_name = gda_value_copy (gda_data_model_get_value_at (model, 2, 0));
+		*out_owner = gda_value_copy (gda_data_model_get_value_at (model, 3, 0));
+		g_object_unref (model);
+		return TRUE;
+	}
+	default:
+		TO_IMPLEMENT;
+	}
+
+	return FALSE;
+}
+
+static gboolean
+determine_db_object_from_short_name (GdaMetaStruct *mstruct, GdaMetaStore *store, 
+				     GdaMetaDbObjectType type, GValue **out_catalog,
+				     GValue **out_schema, GValue **out_name, GValue **out_short_name, 
+				     GValue **out_full_name, GValue **out_owner, const GValue *name)
+{
+	*out_name = NULL;
+	*out_schema = NULL;
+	*out_catalog = NULL;
+	*out_short_name = NULL;
+	*out_full_name = NULL;
+	*out_owner = NULL;
+
+	/* general lookup */
+	switch (type) {
+	case GDA_META_DB_UNKNOWN:
+		break;
+	case GDA_META_DB_TABLE: {
+		const gchar *sql = "SELECT table_catalog, table_schema, table_name, table_short_name, table_full_name, table_owner FROM _tables as t WHERE table_short_name = ##tname::string AND table_name NOT IN (SELECT v.table_name FROM _views as v WHERE v.table_catalog=t.table_catalog AND v.table_schema=t.table_schema)";
+		GdaDataModel *model;
+		gint nrows;
+		model = gda_meta_store_extract (store, sql, NULL, "tname", name, NULL);
+		if (!model) 
+			return FALSE;
+
+		nrows = gda_data_model_get_n_rows (model);
+		if (nrows != 1) {
+			g_object_unref (model);
+			goto next;
+		}
+		*out_catalog = gda_value_copy (gda_data_model_get_value_at (model, 0, 0));
+		*out_schema = gda_value_copy (gda_data_model_get_value_at (model, 1, 0));
+		*out_name = gda_value_copy (gda_data_model_get_value_at (model, 2, 0));
+		*out_short_name = gda_value_copy (gda_data_model_get_value_at (model, 3, 0));
+		*out_full_name = gda_value_copy (gda_data_model_get_value_at (model, 4, 0));
+		*out_owner = gda_value_copy (gda_data_model_get_value_at (model, 5, 0));
+		g_object_unref (model);
+		return TRUE;
+	}
+	case GDA_META_DB_VIEW:{
+		const gchar *sql = "SELECT table_catalog, table_schema, table_name, table_short_name, table_full_name, table_owner FROM _tables NATURAL JOIN _views WHERE table_short_name = ##tname::string";
+		GdaDataModel *model;
+		gint nrows;
+		model = gda_meta_store_extract (store, sql, NULL, "tname", name, NULL);
+		if (!model) 
+			return FALSE;
+
+		nrows = gda_data_model_get_n_rows (model);
+		if (nrows != 1) {
+			g_object_unref (model);
+			goto next;
+		}
+		*out_catalog = gda_value_copy (gda_data_model_get_value_at (model, 0, 0));
+		*out_schema = gda_value_copy (gda_data_model_get_value_at (model, 1, 0));
+		*out_name = gda_value_copy (gda_data_model_get_value_at (model, 2, 0));
+		*out_short_name = gda_value_copy (gda_data_model_get_value_at (model, 3, 0));
+		*out_full_name = gda_value_copy (gda_data_model_get_value_at (model, 4, 0));
+		*out_owner = gda_value_copy (gda_data_model_get_value_at (model, 5, 0));
+		g_object_unref (model);
+		return TRUE;
+	}
+	default:
+		TO_IMPLEMENT;
+	}
+
+ next:
+	{
+		/* treat the case where name is in fact <schema>.<name> */
+		const gchar *sname;
+		gchar *ptr;
+		sname = g_value_get_string (name);
+		for (ptr = (gchar *) sname; *ptr && (*ptr != '.'); ptr++);
+		if (*ptr == '.') {
+			gchar *tmp = g_strdup (sname);
+			GValue *sv, *nv;
+			gboolean retval;
+			ptr = tmp + (ptr - sname);
+			*ptr = 0;
+			g_value_set_string ((sv = gda_value_new (G_TYPE_STRING)), tmp);
+			g_value_set_string ((nv = gda_value_new (G_TYPE_STRING)), ptr + 1);
+			retval = determine_db_object_from_schema_and_name (mstruct, store, type, out_catalog, 
+									   out_short_name, out_full_name, out_owner, 
+									   sv, nv);
+			if (retval) {
+				*out_schema = sv;
+				*out_name = nv;
+			}
+			else {
+				gda_value_free (sv);
+				gda_value_free (nv);
+			}
+			g_free (tmp);
+			return retval;
+		}
+	}
+
+	return FALSE;
+}

Modified: trunk/libgda/gda-meta-struct.h
==============================================================================
--- trunk/libgda/gda-meta-struct.h	(original)
+++ trunk/libgda/gda-meta-struct.h	Thu Mar  6 19:57:02 2008
@@ -22,22 +22,48 @@
 #define __GDA_META_STRUCT_H_
 
 #include <glib-object.h>
-#include <libgda/gda-enums.h>
 #include <libgda/gda-data-model.h>
+#include <libgda/gda-meta-store.h>
 
 G_BEGIN_DECLS
 
+#define GDA_TYPE_META_STRUCT          (gda_meta_struct_get_type())
+#define GDA_META_STRUCT(obj)          G_TYPE_CHECK_INSTANCE_CAST (obj, gda_meta_struct_get_type(), GdaMetaStruct)
+#define GDA_META_STRUCT_CLASS(klass)  G_TYPE_CHECK_CLASS_CAST (klass, gda_meta_struct_get_type (), GdaMetaStructClass)
+#define GDA_IS_META_STRUCT(obj)       G_TYPE_CHECK_INSTANCE_TYPE (obj, gda_meta_struct_get_type ())
+
+typedef struct _GdaMetaStruct        GdaMetaStruct;
+typedef struct _GdaMetaStructClass   GdaMetaStructClass;
+typedef struct _GdaMetaStructPrivate GdaMetaStructPrivate;
+
 /* error reporting */
 extern GQuark gda_meta_struct_error_quark (void);
 #define GDA_META_STRUCT_ERROR gda_meta_struct_error_quark ()
 
 typedef enum {
-        GDA_META_STRUCT_UNKNOWN_OBJECT_ERROR,
-	GDA_META_STRUCT_DUPLICATE_OBJECT_ERROR,
-	GDA_META_STRUCT_INCOHERENCE_ERROR
+	GDA_META_STRUCT_UNKNOWN_OBJECT_ERROR,
+        GDA_META_STRUCT_DUPLICATE_OBJECT_ERROR,
+        GDA_META_STRUCT_INCOHERENCE_ERROR
 } GdaMetaStructError;
 
 
+/* struct for the object's data */
+struct _GdaMetaStruct
+{
+	GObject               object;
+	GSList                *db_objects; /* list of GdaMetaDbObject structures */
+	GdaMetaStructPrivate  *priv;
+};
+
+/* struct for the object's class */
+struct _GdaMetaStructClass
+{
+	GObjectClass              parent_class;
+};
+
+/*
+ * Type of database object which can be handled
+ */
 typedef enum {
 	GDA_META_DB_UNKNOWN,
 	GDA_META_DB_TABLE,
@@ -45,6 +71,23 @@
 } GdaMetaDbObjectType;
 
 /*
+ * Controls which features are computed about database objects
+ */
+typedef enum {
+	GDA_META_STRUCT_FEATURE_ALL,
+	GDA_META_STRUCT_FEATURE_FOREIGN_KEYS,
+	GDA_META_STRUCT_FEATURE_VIEW_DEPENDENCIES
+} GdaMetaStructFeature;
+
+/*
+ * Types of sorting
+ */
+typedef enum {
+	GDA_META_SORT_ALHAPETICAL,
+	GDA_META_SORT_DEPENDENCIES
+} GdaMetaSortType;
+
+/*
  * Complements the GdaMetaDbObject structure, for tables only
  * contains predefined statements for data selection and modifications
  */
@@ -82,6 +125,7 @@
 	gchar                  *obj_name;
 	gchar                  *obj_short_name;
 	gchar                  *obj_full_name;
+	gchar                  *obj_owner;
 
 	union {
 		GdaMetaTable    meta_table;
@@ -116,21 +160,17 @@
 } GdaMetaTableForeignKey;
 #define GDA_META_TABLE_FOREIGN_KEY(x) ((GdaMetaTableForeignKey*)(x))
 
-typedef struct {
-	GSList *db_objects; /* list of GdaMetaDbObject structures */
-	GHashTable *index; /* key = [catalog].[schema].[name], value = a GdaMetaDbObject */
-} GdaMetaStruct;
 
+GType               gda_meta_struct_get_type         (void) G_GNUC_CONST;
 GdaMetaStruct      *gda_meta_struct_new              (void);
 GdaMetaDbObject    *gda_meta_struct_complement       (GdaMetaStruct *mstruct, GdaMetaStore *store, GdaMetaDbObjectType type,
-						      const GValue *catalog, const GValue *schema, const GValue *name, 
-						      GError **error);
-gboolean            gda_meta_struct_order_db_objects (GdaMetaStruct *mstruct, GError **error);
-GdaMetaDbObject    *gda_meta_struct_get_db_object    (GdaMetaStruct *mstruct, 
-						      const GValue *catalog, const GValue *schema, const GValue *name);
-GdaMetaTableColumn *gda_meta_struct_get_table_column (GdaMetaStruct *mstruct, GdaMetaTable *table, 
-						      const GValue *col_name);
-void                gda_meta_struct_free             (GdaMetaStruct *mstruct);
+                                                      const GValue *catalog, const GValue *schema, const GValue *name,
+                                                      GError **error);
+gboolean            gda_meta_struct_sort_db_objects  (GdaMetaStruct *mstruct, GdaMetaSortType sort_type, GError **error);
+GdaMetaDbObject    *gda_meta_struct_get_db_object    (GdaMetaStruct *mstruct,
+                                                      const GValue *catalog, const GValue *schema, const GValue *name);
+GdaMetaTableColumn *gda_meta_struct_get_table_column (GdaMetaStruct *mstruct, GdaMetaTable *table,
+                                                      const GValue *col_name);
 
 G_END_DECLS
 

Modified: trunk/libgda/gda-server-operation.c
==============================================================================
--- trunk/libgda/gda-server-operation.c	(original)
+++ trunk/libgda/gda-server-operation.c	Thu Mar  6 19:57:02 2008
@@ -804,7 +804,7 @@
 			}
 			else {
 				GdaDataModel *model;
-				model = gda_data_model_array_copy_model (import, NULL);
+				model = (GdaDataModel*) gda_data_model_array_copy_model (import, NULL);
 				opnode = node_new (parent, GDA_SERVER_OPERATION_NODE_DATA_MODEL, path_name);
 				opnode->d.model = model;
 				g_object_unref (import);

Modified: trunk/libgda/sqlite/virtual/gda-vprovider-data-model.c
==============================================================================
--- trunk/libgda/sqlite/virtual/gda-vprovider-data-model.c	(original)
+++ trunk/libgda/sqlite/virtual/gda-vprovider-data-model.c	Thu Mar  6 19:57:02 2008
@@ -566,7 +566,7 @@
 	virtual_table_manage_real_data_model (vtable);
 
 	cursor = g_new0 (VirtualCursor, 1);
-	cursor->iter = gda_data_model_iter_new (GDA_DATA_MODEL (vtable->proxy));
+	cursor->iter = gda_data_model_create_iter (GDA_DATA_MODEL (vtable->proxy));
 	cursor->ncols = gda_data_model_get_n_columns (GDA_DATA_MODEL (vtable->td->real_model));
 	*ppCursor = &(cursor->base);
 	return SQLITE_OK;
@@ -628,7 +628,7 @@
 		return SQLITE_OK;
 	}
 
-	param = gda_data_model_iter_get_param_for_column (cursor->iter, i);
+	param = gda_data_model_iter_get_holder_for_field (cursor->iter, i);
 	if (!param) {
 		sqlite3_result_error (ctx, _("Column not found"), -1);
 		return SQLITE_EMPTY;

Modified: trunk/libgda/sqlite/virtual/virtual-test.c
==============================================================================
--- trunk/libgda/sqlite/virtual/virtual-test.c	(original)
+++ trunk/libgda/sqlite/virtual/virtual-test.c	Thu Mar  6 19:57:02 2008
@@ -40,7 +40,7 @@
 		gda_data_model_dump (xml_model, stdout);
 
 		GdaDataModelIter *iter;
-		iter = gda_data_model_iter_new (xml_model);
+		iter = gda_data_model_create_iter (xml_model);
 		gda_data_model_iter_set_at_row (iter, -1);
 		for (gda_data_model_iter_move_next (iter); gda_data_model_iter_is_valid (iter); 
 		     gda_data_model_iter_move_next (iter)) {
@@ -60,7 +60,7 @@
 		gda_data_model_dump (csv_model, stdout);
 
 		GdaDataModelIter *iter;
-		iter = gda_data_model_iter_new (csv_model);
+		iter = gda_data_model_create_iter (csv_model);
 		gda_data_model_iter_set_at_row (iter, -1);
 		for (gda_data_model_iter_move_next (iter); gda_data_model_iter_is_valid (iter); 
 		     gda_data_model_iter_move_next (iter)) {

Modified: trunk/tests/data-models/check_data_proxy.c
==============================================================================
--- trunk/tests/data-models/check_data_proxy.c	(original)
+++ trunk/tests/data-models/check_data_proxy.c	Thu Mar  6 19:57:02 2008
@@ -221,7 +221,7 @@
 		return FALSE;
 	}
 
-	model = gda_data_model_array_copy_model (import, &error);
+	model = (GdaDataModel*) gda_data_model_array_copy_model (import, &error);
 	if (!model) {
 #ifdef CHECK_EXTRA_INFO
 		g_print ("ERROR: Could not copy GdaDataModelImport into a GdaDataModelArray: %s\n", 
@@ -268,7 +268,7 @@
 		return FALSE;
 	}
 
-	model = gda_data_model_array_copy_model (import, &error);
+	model = (GdaDataModel*) gda_data_model_array_copy_model (import, &error);
 	if (!model) {
 #ifdef CHECK_EXTRA_INFO
 		g_print ("ERROR: Could not copy GdaDataModelImport into a GdaDataModelArray: %s\n", 
@@ -366,7 +366,7 @@
 		return FALSE;
 	}
 
-	model = gda_data_model_array_copy_model (import, &error);
+	model = (GdaDataModel*) gda_data_model_array_copy_model (import, &error);
 	if (!model) {
 #ifdef CHECK_EXTRA_INFO
 		g_print ("ERROR: Could not copy GdaDataModelImport into a GdaDataModelArray: %s\n", 

Modified: trunk/tests/data-models/check_virtual.c
==============================================================================
--- trunk/tests/data-models/check_virtual.c	(original)
+++ trunk/tests/data-models/check_virtual.c	Thu Mar  6 19:57:02 2008
@@ -19,7 +19,7 @@
 	gda_init ("SQlite virtual test", "1.0", argc, argv);
 
 	provider = gda_vprovider_data_model_new ();
-	cnc = gda_virtual_connection (provider, NULL);
+	cnc = gda_virtual_connection_open (provider, NULL);
 	g_assert (cnc);
 
 	/* create RW data model to store results */

Modified: trunk/tests/meta-store/common.c
==============================================================================
--- trunk/tests/meta-store/common.c	(original)
+++ trunk/tests/meta-store/common.c	Thu Mar  6 19:57:02 2008
@@ -364,8 +364,8 @@
 #define TEST_HEADER g_print ("... TEST '%s' ...\n", __FUNCTION__)
 #define TEST_MODIFY(s,n,m,c,e,...) \
 if (!gda_meta_store_modify ((s),(n),(m),(c),(e),__VA_ARGS__)) { \
-		g_print ("Error while modifying GdaMetaStore: %s\n", \
-			 error && error->message ? error->message : "No detail"); \
+		g_print ("Error while modifying GdaMetaStore, table '%s': %s\n", \
+			 (n), error && error->message ? error->message : "No detail"); \
 		exit (EXIT_FAILURE); \
 	}
 
@@ -548,7 +548,7 @@
 	TEST_HEADER;
 
 	/* load CSV file */
-	import = common_load_csv_file ("data_columns.csv", 4, "gint", 6, "boolean", 9, "gint", 10, "gint", 11, "gint", 12, "gint", 13, "gint", 21, "boolean", -1);
+	import = common_load_csv_file ("data_columns.csv", 4, "gint", 6, "boolean", 8, "gint", 11, "gint", 12, "gint", 13, "gint", 14, "gint", 15, "gint", 23, "boolean", -1);
 	common_declare_expected_insertions_from_model (TNAME, import);
 	TEST_MODIFY (store, TNAME, import, NULL, &error, NULL);
 	TEST_END (import);

Modified: trunk/tests/meta-store/data_columns.csv
==============================================================================
--- trunk/tests/meta-store/data_columns.csv	(original)
+++ trunk/tests/meta-store/data_columns.csv	Thu Mar  6 19:57:02 2008
@@ -1,286 +1,286 @@
-meta,public,_attributes,att_name,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_attributes,att_value,2,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_information_schema_catalog_name,catalog_name,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_schemata,catalog_name,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_schemata,schema_name,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_schemata,schema_owner,3,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_schemata,schema_internal,4,false,FALSE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_builtin_data_types,short_type_name,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_builtin_data_types,full_type_name,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_builtin_data_types,gtype,3,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_builtin_data_types,comments,4,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_builtin_data_types,synonyms,5,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_builtin_data_types,internal,6,false,FALSE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,udt_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,udt_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,udt_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,udt_column,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,udt_ordinal_position,5,NULL,FALSE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,data_type,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,character_maximum_length,7,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,character_octet_length,8,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,numeric_precision,9,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,numeric_scale,10,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,datetime_precision,11,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,character_set_catalog,12,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,character_set_schema,13,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,character_set_name,14,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,collation_catalog,15,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,collation_schema,16,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt_columns,collation_name,17,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_enums,udt_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_enums,udt_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_enums,udt_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_enums,label,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt,udt_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt,udt_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt,udt_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt,udt_gtype,4,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt,udt_comments,5,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt,udt_short_name,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt,udt_full_name,7,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt,udt_internal,8,false,FALSE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_udt,udt_owner,9,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_element_types,specific_name,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_element_types,object_catalog,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_element_types,object_schema,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_element_types,object_name,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_element_types,object_ordinal_position,5,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_element_types,object_type,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_element_types,data_type,7,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_element_types,min_cardinality,8,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_element_types,max_cardinality,9,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_all_types,short_type_name,1,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_all_types,gtype,2,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_all_types,full_type_name,3,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_all_types,comments,4,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_all_types,internal,5,NULL,TRUE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_all_types,domain_catalog,6,NULL,TRUE,pg_catalog.text,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_all_types,domain_schema,7,NULL,TRUE,pg_catalog.text,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_all_types,domain_name,8,NULL,TRUE,pg_catalog.text,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_all_types,udt_catalog,9,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_all_types,udt_schema,10,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_all_types,udt_name,11,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_triggers,trigger_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_triggers,trigger_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_triggers,trigger_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_triggers,event_manipulation,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_triggers,event_object_catalog,5,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_triggers,event_object_schema,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_triggers,event_object_table,7,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_triggers,action_statement,8,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_triggers,action_orientation,9,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_triggers,condition_timing,10,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_triggers,trigger_comments,11,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_triggers,trigger_short_name,12,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_triggers,trigger_full_name,13,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_character_sets,character_set_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_character_sets,character_set_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_character_sets,character_set_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_character_sets,default_collate_catalog,4,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_character_sets,default_collate_schema,5,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_character_sets,default_collate_name,6,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_character_sets,character_set_comments,7,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_character_sets,character_set_short_name,8,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_character_sets,character_set_full_name,9,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_collations,collation_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_collations,collation_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_collations,collation_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_collations,collation_comments,4,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_collations,collation_short_name,5,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_collations,collation_full_name,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_referential_constraints,constraint_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_referential_constraints,constraint_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_referential_constraints,constraint_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_referential_constraints,unique_constraint_catalog,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_referential_constraints,unique_constraint_schema,5,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_referential_constraints,unique_constraint_name,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_referential_constraints,match_option,7,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_referential_constraints,update_rule,8,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_referential_constraints,delete_rule,9,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_check_constraints,constraint_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_check_constraints,constraint_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_check_constraints,constraint_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_check_constraints,constraint_real_name,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_check_constraints,check_clause,5,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_key_column_usage,constraint_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_key_column_usage,constraint_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_key_column_usage,constraint_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_key_column_usage,table_catalog,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_key_column_usage,table_schema,5,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_key_column_usage,table_name,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_key_column_usage,column_name,7,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_key_column_usage,ordinal_position,8,NULL,FALSE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_constraints,constraint_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_constraints,constraint_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_constraints,constraint_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_constraints,constraint_real_name,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_constraints,table_catalog,5,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_constraints,table_schema,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_constraints,table_name,7,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_constraints,constraint_type,8,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_constraints,is_deferrable,9,NULL,TRUE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_constraints,initially_deferred,10,NULL,TRUE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_check_column_usage,constraint_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_check_column_usage,constraint_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_check_column_usage,constraint_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_check_column_usage,table_catalog,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_check_column_usage,table_schema,5,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_check_column_usage,table_name,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_check_column_usage,column_name,7,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_constraint_column_usage,table_catalog,1,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_constraint_column_usage,table_schema,2,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_constraint_column_usage,table_name,3,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_constraint_column_usage,column_name,4,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_constraint_column_usage,constraint_catalog,5,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_constraint_column_usage,constraint_schema,6,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_constraint_column_usage,constraint_name,7,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_constraint_table_usage,table_catalog,1,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_constraint_table_usage,table_schema,2,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_constraint_table_usage,table_name,3,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_constraint_table_usage,constraint_catalog,4,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_constraint_table_usage,constraint_schema,5,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_constraint_table_usage,constraint_name,6,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_views,table_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_views,table_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_views,table_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_views,view_definition,4,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_views,check_option,5,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_views,is_updatable,6,NULL,TRUE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_view_column_usage,view_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_view_column_usage,view_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_view_column_usage,view_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_view_column_usage,table_catalog,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_view_column_usage,table_schema,5,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_view_column_usage,table_name,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_view_column_usage,column_name,7,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_view_table_usage,view_catalog,1,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_view_table_usage,view_schema,2,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_view_table_usage,view_name,3,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_view_table_usage,table_catalog,4,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_view_table_usage,table_schema,5,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_view_table_usage,table_name,6,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_domain_constraints,constraint_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domain_constraints,constraint_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domain_constraints,constraint_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domain_constraints,domain_catalog,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domain_constraints,domain_schema,5,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domain_constraints,domain_name,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domain_constraints,is_deferrable,7,NULL,TRUE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domain_constraints,initially_deferred,8,NULL,TRUE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,domain_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,domain_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,domain_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,data_type,4,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,character_maximum_length,5,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,character_octet_length,6,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,collation_catalog,7,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,collation_schema,8,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,collation_name,9,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,character_set_catalog,10,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,character_set_schema,11,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,character_set_name,12,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,numeric_precision,13,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,numeric_scale,14,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,domain_default,15,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,domain_gtype,16,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,domain_comments,17,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,domain_short_name,18,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,domain_full_name,19,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,domain_internal,20,false,FALSE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domains,domain_owner,21,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_domain_column_usage,domain_catalog,1,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_domain_column_usage,domain_schema,2,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_domain_column_usage,domain_name,3,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_domain_column_usage,table_catalog,4,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_domain_column_usage,table_schema,5,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_domain_column_usage,table_name,6,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_domain_column_usage,column_name,7,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
-meta,public,_parameters,specific_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_parameters,specific_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_parameters,specific_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_parameters,ordinal_position,4,NULL,FALSE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_parameters,parameter_mode,5,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_parameters,parameter_name,6,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_parameters,data_type,7,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routine_columns,specific_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routine_columns,specific_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routine_columns,specific_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routine_columns,column_name,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routine_columns,ordinal_position,5,NULL,FALSE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routine_columns,data_type,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,specific_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,specific_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,specific_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,routine_catalog,4,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,routine_schema,5,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,routine_name,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,routine_type,7,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,return_type,8,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,returns_set,9,false,FALSE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,routine_body,10,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,routine_definition,11,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,external_name,12,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,external_language,13,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,parameter_style,14,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,is_deterministic,15,NULL,TRUE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,sql_data_access,16,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,is_null_call,17,NULL,TRUE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,routine_comments,18,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,routine_short_name,19,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,routine_full_name,20,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_routines,routine_owner,21,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_privileges,grantor,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_privileges,grantee,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_privileges,table_catalog,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_privileges,table_schema,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_privileges,table_name,5,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_privileges,privilege_type,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_table_privileges,is_grantable,7,NULL,TRUE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_tables,table_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_tables,table_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_tables,table_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_tables,table_type,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_tables,is_insertable_into,5,NULL,TRUE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_tables,table_comments,6,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_tables,table_short_name,7,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_tables,table_full_name,8,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_tables,table_owner,9,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_column_privileges,grantor,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_column_privileges,grantee,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_column_privileges,table_catalog,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_column_privileges,table_schema,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_column_privileges,table_name,5,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_column_privileges,column_name,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_column_privileges,privilege_type,7,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_column_privileges,is_grantable,8,NULL,TRUE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,table_catalog,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,table_schema,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,table_name,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,column_name,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,ordinal_position,5,NULL,FALSE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,column_default,6,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,is_nullable,7,NULL,FALSE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,data_type,8,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,character_maximum_length,9,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,character_octet_length,10,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,numeric_precision,11,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,numeric_scale,12,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,datetime_precision,13,NULL,TRUE,pg_catalog.int4,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,character_set_catalog,14,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,character_set_schema,15,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,character_set_name,16,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,collation_catalog,17,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,collation_schema,18,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,collation_name,19,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,extra,20,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,is_updatable,21,NULL,TRUE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_columns,column_comments,22,NULL,TRUE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_usage_privileges,grantor,1,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_usage_privileges,grantee,2,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_usage_privileges,object_catalog,3,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_usage_privileges,object_schema,4,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_usage_privileges,object_name,5,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_usage_privileges,object_type,6,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_usage_privileges,privilege_type,7,NULL,FALSE,pg_catalog.varchar,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
-meta,public,_usage_privileges,is_grantable,8,NULL,TRUE,pg_catalog.bool,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_attributes,att_name,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_attributes,att_value,2,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_information_schema_catalog_name,catalog_name,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_schemata,catalog_name,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_schemata,schema_name,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_schemata,schema_owner,3,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_schemata,schema_internal,4,false,FALSE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_builtin_data_types,short_type_name,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_builtin_data_types,full_type_name,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_builtin_data_types,gtype,3,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_builtin_data_types,comments,4,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_builtin_data_types,synonyms,5,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_builtin_data_types,internal,6,false,FALSE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,udt_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,udt_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,udt_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,udt_column,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,udt_ordinal_position,5,NULL,FALSE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,data_type,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,character_maximum_length,7,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,character_octet_length,8,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,numeric_precision,9,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,numeric_scale,10,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,datetime_precision,11,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,character_set_catalog,12,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,character_set_schema,13,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,character_set_name,14,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,collation_catalog,15,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,collation_schema,16,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt_columns,collation_name,17,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_enums,udt_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_enums,udt_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_enums,udt_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_enums,label,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt,udt_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt,udt_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt,udt_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt,udt_gtype,4,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt,udt_comments,5,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt,udt_short_name,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt,udt_full_name,7,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt,udt_internal,8,false,FALSE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_udt,udt_owner,9,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_element_types,specific_name,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_element_types,object_catalog,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_element_types,object_schema,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_element_types,object_name,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_element_types,object_ordinal_position,5,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_element_types,object_type,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_element_types,data_type,7,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_element_types,min_cardinality,8,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_element_types,max_cardinality,9,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_all_types,short_type_name,1,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_all_types,gtype,2,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_all_types,full_type_name,3,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_all_types,comments,4,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_all_types,internal,5,NULL,TRUE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_all_types,domain_catalog,6,NULL,TRUE,pg_catalog.text,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_all_types,domain_schema,7,NULL,TRUE,pg_catalog.text,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_all_types,domain_name,8,NULL,TRUE,pg_catalog.text,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_all_types,udt_catalog,9,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_all_types,udt_schema,10,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_all_types,udt_name,11,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_triggers,trigger_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_triggers,trigger_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_triggers,trigger_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_triggers,event_manipulation,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_triggers,event_object_catalog,5,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_triggers,event_object_schema,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_triggers,event_object_table,7,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_triggers,action_statement,8,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_triggers,action_orientation,9,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_triggers,condition_timing,10,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_triggers,trigger_comments,11,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_triggers,trigger_short_name,12,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_triggers,trigger_full_name,13,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_character_sets,character_set_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_character_sets,character_set_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_character_sets,character_set_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_character_sets,default_collate_catalog,4,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_character_sets,default_collate_schema,5,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_character_sets,default_collate_name,6,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_character_sets,character_set_comments,7,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_character_sets,character_set_short_name,8,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_character_sets,character_set_full_name,9,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_collations,collation_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_collations,collation_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_collations,collation_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_collations,collation_comments,4,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_collations,collation_short_name,5,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_collations,collation_full_name,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_referential_constraints,constraint_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_referential_constraints,constraint_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_referential_constraints,constraint_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_referential_constraints,unique_constraint_catalog,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_referential_constraints,unique_constraint_schema,5,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_referential_constraints,unique_constraint_name,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_referential_constraints,match_option,7,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_referential_constraints,update_rule,8,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_referential_constraints,delete_rule,9,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_check_constraints,constraint_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_check_constraints,constraint_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_check_constraints,constraint_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_check_constraints,constraint_real_name,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_check_constraints,check_clause,5,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_key_column_usage,constraint_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_key_column_usage,constraint_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_key_column_usage,constraint_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_key_column_usage,table_catalog,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_key_column_usage,table_schema,5,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_key_column_usage,table_name,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_key_column_usage,column_name,7,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_key_column_usage,ordinal_position,8,NULL,FALSE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_constraints,constraint_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_constraints,constraint_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_constraints,constraint_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_constraints,constraint_real_name,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_constraints,table_catalog,5,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_constraints,table_schema,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_constraints,table_name,7,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_constraints,constraint_type,8,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_constraints,is_deferrable,9,NULL,TRUE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_constraints,initially_deferred,10,NULL,TRUE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_check_column_usage,constraint_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_check_column_usage,constraint_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_check_column_usage,constraint_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_check_column_usage,table_catalog,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_check_column_usage,table_schema,5,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_check_column_usage,table_name,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_check_column_usage,column_name,7,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_constraint_column_usage,table_catalog,1,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_constraint_column_usage,table_schema,2,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_constraint_column_usage,table_name,3,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_constraint_column_usage,column_name,4,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_constraint_column_usage,constraint_catalog,5,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_constraint_column_usage,constraint_schema,6,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_constraint_column_usage,constraint_name,7,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_constraint_table_usage,table_catalog,1,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_constraint_table_usage,table_schema,2,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_constraint_table_usage,table_name,3,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_constraint_table_usage,constraint_catalog,4,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_constraint_table_usage,constraint_schema,5,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_constraint_table_usage,constraint_name,6,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_views,table_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_views,table_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_views,table_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_views,view_definition,4,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_views,check_option,5,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_views,is_updatable,6,NULL,TRUE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_view_column_usage,view_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_view_column_usage,view_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_view_column_usage,view_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_view_column_usage,table_catalog,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_view_column_usage,table_schema,5,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_view_column_usage,table_name,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_view_column_usage,column_name,7,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_view_table_usage,view_catalog,1,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_view_table_usage,view_schema,2,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_view_table_usage,view_name,3,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_view_table_usage,table_catalog,4,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_view_table_usage,table_schema,5,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_view_table_usage,table_name,6,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_domain_constraints,constraint_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domain_constraints,constraint_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domain_constraints,constraint_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domain_constraints,domain_catalog,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domain_constraints,domain_schema,5,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domain_constraints,domain_name,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domain_constraints,is_deferrable,7,NULL,TRUE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domain_constraints,initially_deferred,8,NULL,TRUE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,domain_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,domain_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,domain_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,data_type,4,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,character_maximum_length,5,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,character_octet_length,6,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,collation_catalog,7,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,collation_schema,8,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,collation_name,9,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,character_set_catalog,10,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,character_set_schema,11,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,character_set_name,12,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,numeric_precision,13,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,numeric_scale,14,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,domain_default,15,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,domain_gtype,16,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,domain_comments,17,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,domain_short_name,18,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,domain_full_name,19,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,domain_internal,20,false,FALSE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domains,domain_owner,21,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_domain_column_usage,domain_catalog,1,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_domain_column_usage,domain_schema,2,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_domain_column_usage,domain_name,3,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_domain_column_usage,table_catalog,4,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_domain_column_usage,table_schema,5,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_domain_column_usage,table_name,6,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_domain_column_usage,column_name,7,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL
+meta,public,_parameters,specific_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_parameters,specific_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_parameters,specific_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_parameters,ordinal_position,4,NULL,FALSE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_parameters,parameter_mode,5,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_parameters,parameter_name,6,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_parameters,data_type,7,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routine_columns,specific_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routine_columns,specific_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routine_columns,specific_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routine_columns,column_name,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routine_columns,ordinal_position,5,NULL,FALSE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routine_columns,data_type,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,specific_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,specific_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,specific_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,routine_catalog,4,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,routine_schema,5,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,routine_name,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,routine_type,7,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,return_type,8,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,returns_set,9,false,FALSE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,routine_body,10,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,routine_definition,11,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,external_name,12,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,external_language,13,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,parameter_style,14,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,is_deterministic,15,NULL,TRUE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,sql_data_access,16,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,is_null_call,17,NULL,TRUE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,routine_comments,18,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,routine_short_name,19,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,routine_full_name,20,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_routines,routine_owner,21,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_privileges,grantor,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_privileges,grantee,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_privileges,table_catalog,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_privileges,table_schema,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_privileges,table_name,5,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_privileges,privilege_type,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_table_privileges,is_grantable,7,NULL,TRUE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_tables,table_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_tables,table_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_tables,table_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_tables,table_type,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_tables,is_insertable_into,5,NULL,TRUE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_tables,table_comments,6,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_tables,table_short_name,7,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_tables,table_full_name,8,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_tables,table_owner,9,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_column_privileges,grantor,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_column_privileges,grantee,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_column_privileges,table_catalog,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_column_privileges,table_schema,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_column_privileges,table_name,5,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_column_privileges,column_name,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_column_privileges,privilege_type,7,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_column_privileges,is_grantable,8,NULL,TRUE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,table_catalog,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,table_schema,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,table_name,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,column_name,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,ordinal_position,5,NULL,FALSE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,column_default,6,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,is_nullable,7,NULL,FALSE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,data_type,8,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,character_maximum_length,9,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,character_octet_length,10,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,numeric_precision,11,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,numeric_scale,12,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,datetime_precision,13,NULL,TRUE,pg_catalog.int4,0,NULL,gchararray,NULL,NULL,32,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,character_set_catalog,14,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,character_set_schema,15,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,character_set_name,16,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,collation_catalog,17,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,collation_schema,18,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,collation_name,19,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,extra,20,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,is_updatable,21,NULL,TRUE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_columns,column_comments,22,NULL,TRUE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_usage_privileges,grantor,1,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_usage_privileges,grantee,2,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_usage_privileges,object_catalog,3,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_usage_privileges,object_schema,4,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_usage_privileges,object_name,5,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_usage_privileges,object_type,6,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_usage_privileges,privilege_type,7,NULL,FALSE,pg_catalog.varchar,0,NULL,gchararray,NULL,1073741824,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL
+meta,public,_usage_privileges,is_grantable,8,NULL,TRUE,pg_catalog.bool,0,NULL,gchararray,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TRUE,NULL

Modified: trunk/tests/parser/check_parser.c
==============================================================================
--- trunk/tests/parser/check_parser.c	(original)
+++ trunk/tests/parser/check_parser.c	Thu Mar  6 19:57:02 2008
@@ -71,7 +71,8 @@
 		}
 		else
 			parser = g_hash_table_lookup (parsers_hash, "");
-		g_assert (parser);
+		if (!parser)
+			continue;
 
 		id = xmlGetProp (node, BAD_CAST "id");
 		for (snode = node->children; snode; snode = snode->next) {

Modified: trunk/tests/value-holders/check_statement.c
==============================================================================
--- trunk/tests/value-holders/check_statement.c	(original)
+++ trunk/tests/value-holders/check_statement.c	Thu Mar  6 19:57:02 2008
@@ -166,7 +166,8 @@
 		}
 		else
 			parser = g_hash_table_lookup (parsers_hash, "");
-		g_assert (parser);
+		if (!parser)
+			continue;
 
 		for (snode = node->children; snode && strcmp ((gchar*) snode->name, "sql"); snode = snode->next);
 		if (!snode)

Modified: trunk/tools/command-exec.c
==============================================================================
--- trunk/tools/command-exec.c	(original)
+++ trunk/tools/command-exec.c	Thu Mar  6 19:57:02 2008
@@ -549,68 +549,6 @@
 		GValue *v;
 		g_value_set_string (v = gda_value_new (G_TYPE_STRING), arg);
 
-		/* try to find it as a table or view */
-		{
-			GdaDataModel *model;
-			gint i, nrows;
-			gboolean include_deps = FALSE;
-
-			const gchar *sql = "SELECT t.table_catalog, t.table_schema, t.table_name, v.table_name FROM _tables as t LEFT JOIN _views as v ON (t.table_catalog=v.table_catalog AND t.table_schema=v.table_schema AND t.table_name=v.table_name) WHERE table_short_name = ##tname::string";
-
-			if (g_str_has_suffix (arg, "=")) {
-				gchar *str;
-				str = g_strdup (arg);
-				str[strlen (str) - 1] = 0;
-				g_value_take_string (v, str);
-				include_deps = TRUE;
-			}
-			model = gda_meta_store_extract (store, sql, error, "tname", v, NULL);
-			if (!model)
-				return NULL;
-			nrows = gda_data_model_get_n_rows (model);
-			for (i = 0; i < nrows; i++) {
-				const GValue *detv;
-				detv = gda_data_model_get_value_at (model, 3, i);
-				if (! gda_meta_struct_complement (mstruct, store, 
-								  detv && !gda_value_is_null (detv) && 
-								  g_value_get_string (detv) && *g_value_get_string (detv) ? 
-								  GDA_META_DB_VIEW : GDA_META_DB_TABLE,
-								  gda_data_model_get_value_at (model, 0, i),
-								  gda_data_model_get_value_at (model, 1, i),
-								  gda_data_model_get_value_at (model, 2, i), error)) 
-					goto onerror;
-			}
-			g_object_unref (model);
-
-			if (include_deps) {
-				GSList *list;
-				for (list = mstruct->db_objects; list; ) {
-					GdaMetaDbObject *dbo = GDA_META_DB_OBJECT (list->data);
-					GValue *v1, *v2, *v3;
-					
-					g_value_set_string ((v1 = gda_value_new (G_TYPE_STRING)), dbo->obj_catalog);
-					g_value_set_string ((v2 = gda_value_new (G_TYPE_STRING)), dbo->obj_schema);
-					g_value_set_string ((v3 = gda_value_new (G_TYPE_STRING)), dbo->obj_name);
-					
-					if (dbo->obj_type == GDA_META_DB_UNKNOWN) {
-						if (! gda_meta_struct_complement (mstruct, store, GDA_META_DB_TABLE,
-										  v1, v2, v3, error)) {
-							gda_value_free (v1);
-							gda_value_free (v2);
-							gda_value_free (v3);
-							goto onerror;
-						}
-						gda_value_free (v1);
-						gda_value_free (v2);
-						gda_value_free (v3);
-						list = mstruct->db_objects;
-					}
-					else
-						list = list->next;	
-				}
-			}
-		}
-
 		/* see if we have the form <schema_name>.*, to list all the objects in a given schema */
 		if (g_str_has_suffix (arg, ".*") && (*arg != '.')) {
 			gchar *str;
@@ -639,6 +577,11 @@
 			}
 			g_object_unref (model);
 		}
+		else {
+			/* try to find it as a table or view */
+			if (!gda_meta_struct_complement (mstruct, store, GDA_META_DB_TABLE, NULL, NULL, v, NULL))
+				gda_meta_struct_complement (mstruct, store, GDA_META_DB_VIEW, NULL, NULL, v, NULL);
+		}
 	}
 
 	if (!mstruct->db_objects) {
@@ -646,11 +589,11 @@
 			     _("No object found"));
 		goto onerror;
 	}
-	gda_meta_struct_order_db_objects (mstruct, NULL);
+	gda_meta_struct_sort_db_objects (mstruct, GDA_META_SORT_ALHAPETICAL, NULL);
 	return mstruct;
 
  onerror:
-	gda_meta_struct_free (mstruct);
+	g_object_unref (mstruct);
 	return NULL;
 }
 
@@ -685,6 +628,54 @@
 	if (!mstruct)
 		return NULL;
 
+	/* if more than one object, then show a list */
+	if (mstruct->db_objects && mstruct->db_objects->next) {
+		model = gda_data_model_array_new (4);
+		gda_data_model_set_column_title (model, 0, _("Schema"));
+		gda_data_model_set_column_title (model, 1, _("Name"));
+		gda_data_model_set_column_title (model, 2, _("Type"));
+		gda_data_model_set_column_title (model, 3, _("Owner"));
+		for (dbo_list = mstruct->db_objects; dbo_list; dbo_list = dbo_list->next) {
+			GdaMetaDbObject *dbo = GDA_META_DB_OBJECT (dbo_list->data);
+			GList *values = NULL;
+			GValue *val;
+			
+			if (dbo->obj_type == GDA_META_DB_UNKNOWN)
+				continue;
+
+			g_value_set_string ((val = gda_value_new (G_TYPE_STRING)), dbo->obj_schema);
+			values = g_list_append (values, val);
+			g_value_set_string ((val = gda_value_new (G_TYPE_STRING)), dbo->obj_name);
+			values = g_list_append (values, val);
+
+			val = gda_value_new (G_TYPE_STRING);
+			switch (dbo->obj_type) {
+			case GDA_META_DB_TABLE:
+				g_value_set_string (val, "BASE TABLE");
+				break;
+			case GDA_META_DB_VIEW:
+				g_value_set_string (val, "VIEW");
+				break;
+			default:
+				g_value_set_string (val, "???");
+				TO_IMPLEMENT;
+			}
+			values = g_list_append (values, val);
+			if (dbo->obj_owner)
+				g_value_set_string ((val = gda_value_new (G_TYPE_STRING)), dbo->obj_owner);
+			else
+				g_value_set_string ((val = gda_value_new (G_TYPE_STRING)), "");
+			values = g_list_append (values, val);
+			gda_data_model_append_values (model, values, NULL);
+			g_list_foreach (values, (GFunc) gda_value_free, NULL);
+			g_list_free (values);
+		}
+		res = g_new0 (GdaInternalCommandResult, 1);
+		res->type = GDA_INTERNAL_COMMAND_RESULT_DATA_MODEL;
+		res->u.model = model;
+		return res;
+	}
+
 	res = g_new0 (GdaInternalCommandResult, 1);
 	res->type = GDA_INTERNAL_COMMAND_RESULT_MULTIPLE;
 	res->u.multiple_results = NULL;
@@ -754,6 +745,6 @@
 		}
 	}
 
-	gda_meta_struct_free (mstruct);
+	g_object_unref (mstruct);
 	return res;
 }

Modified: trunk/tools/gda-sql.c
==============================================================================
--- trunk/tools/gda-sql.c	(original)
+++ trunk/tools/gda-sql.c	Thu Mar  6 19:57:02 2008
@@ -2515,7 +2515,7 @@
 		return NULL;
 	
 	result = create_graph_from_meta_struct (cnc, mstruct, error);
-	gda_meta_struct_free (mstruct);
+	g_object_unref (mstruct);
 	if (result) {
 		GdaInternalCommandResult *res;
 		res = g_new0 (GdaInternalCommandResult, 1);



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