Re: [gnome-db] Per-table meta-data with capital letters in the table name?

Vivien Malerba <[email protected]>
Newsgroups gmane.comp.gnome.db
Message-ID <[email protected]>
2009/6/29 Murray Cumming <[email protected]>

> On Mon, 2009-06-29 at 17:45 +0200, Vivien Malerba wrote:
> >
> >
> > 2009/6/29 Murray Cumming <[email protected]>
> >         I should take the time to make a test case, but it looks like
> >         libgda 4.0
> >         fails to get the meta-data for a specified table if the table
> >         name has
> >         capital letters. I guess that this is a quoting (and escaping)
> >         problem
> >         somewhere.
> >
> > Yes, you need to surround any SQL identifier which is not case
> > insensitive (or which has some spaces, etc in it) with double quotes.
> > You can use gda_sql_identifier_needs_quotes().
>
> So we need to add quotes around the table_name (and escape the text),
> when setting the table name in GdaMetaContext, as in the libgdamm code
> below? If so, that's definitely something that should be mentioned in
> the gda_connection_update_meta_store() and/or GdaMetaContext
> documentation.


Yes, and I'll correct that documentation point.


>
>
> Is there a function we can use to quote and escape the table name?


Yes:  gda_sql_identifier_add_quotes(); not that there is also a
gda_sql_identifier_remove_quotes() function.


>
>
> bool Connection::update_meta_store_table(const Glib::ustring&
> table_name, const Glib::ustring& schema_name)
> {
>  GValue table_name_value = { 0 };
>  g_value_init(&table_name_value, G_TYPE_STRING);
>  g_value_set_static_string(&table_name_value, table_name.c_str());
>
>  GValue table_schema_value = { 0 };
>  g_value_init(&table_schema_value, G_TYPE_STRING);
>  g_value_set_static_string(&table_schema_value, schema_name.c_str());
>
>  gchar* column_names[] = { (gchar*)"table_name" ,
> (gchar*)"table_schema"};
>  GValue* column_values[] = { &table_name_value, &table_schema_value };
>
>  GdaMetaContext mcontext = {(gchar*)"_tables", schema_name.empty() ?
> 1 : 2, column_names, column_values };
>  GError* gerror = 0;
>  const bool retval = gda_connection_update_meta_store(gobj(),
> &mcontext, &gerror);
>
>  g_value_unset(&table_name_value);
>  g_value_unset(&table_schema_value);
>
>  if(gerror)
>    ::Glib::Error::throw_exception(gerror);
>
>  return retval;
> }
>
> >
> > The doc in
> >
> http://library.gnome.org/devel/libgda/4.0/information_schema.html#information_schema:sql_identifiers
> > mentions the quotes usage in Libgda, but maybe I should add reminders
> > in the functions's documentation for functions where this may be a
> > problem.
> >
> > Vivien
> >
> >
> >
> >
> --
> [email protected]
> www.murrayc.com
> www.openismus.com
>
>

_______________________________________________
gnome-db-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-db-list
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.