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
- From: vivien svn gnome org
- To: svn-commits-list gnome org
- Subject: 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
- Date: Thu, 6 Mar 2008 19:57:03 +0000 (GMT)
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]