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

Murray Cumming <[email protected]>
Newsgroups gmane.comp.gnome.db
Message-ID <1246291347.8635.25.camel@murrayc-desktop>
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.

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


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
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.