On Sun, 2009-07-19 at 13:31 +0200, Vivien Malerba wrote:

> 
> 
> 
> 2009/7/19 Bas Driessen <[email protected]>
> 
>         Hello,
>         
>         Question regarding partial meta store update. I found that the
>         following to update a single table does not appear to work:
>         
>                 g_print ("\nPartial metastore update for table '%
>         s'...\n", TABLE_NAME);
>                 GdaMetaContext mcontext = {"_tables", 1, NULL, NULL};
>                 mcontext.column_names = g_new (gchar *, 1);
>                 mcontext.column_names[0] = "table_name";
>                 mcontext.column_values = g_new (GValue *, 1);
>                 g_value_set_string ((mcontext.column_values[0] =
>         gda_value_new (G_TYPE_STRING)), TABLE_NAME);
>                 if (!gda_connection_update_meta_store (connection,
>         &mcontext, &error))
>                         return -1;
>         
>         After this, my meta store is NOT updated.
> 
> This may depend on the actual value of TABLE_NAME, specifically if it
> is a mix of upper and lower case, or if it's a reserved keyword. The
> proper way is:
> tmp = gda_sql_identifier_quote (TABLE_NAME, cnc, NULL, TRUE,
> FALSE); // or with the last argument being TRUE, see the doc
> g_value_set_string ((mcontext.column_values[0] = gda_value_new
> (G_TYPE_STRING)), tmp);
> g_free (tmp);
> 
> Note that this is brand new (just been sorted out) and will require
> the master or LIBGDA_4.0 branches up to date.
>  
>         

Thanks Vivien, but this unfortunately is not still not working. Let me
explain my testing scenario and if I understand this the correct way.

-1 I have a database with a table called "groups"
-2 I run the gda_connection_update_meta_store to update the meta store.
-3 I look into the meta store with sqlite3 and execute "select * from
_tables". I can see the "groups" table in that list.
-4 I add a table called "parts"
-5 I run the code above (with your modification) where the TABLE_NAME is
set to "parts" (without quotes).
-6 I execute "select * from _tables" and I expect to see the "parts"
entry, but it is not there.
-7 I execute the gda_connection_update_meta_store to do the full update.
-8 I execute "select * from _tables" and I expect to see the "parts"
entry and now it is there.

My questions:

-1 Is my understanding of how this mechanism should work correct?
-2 Anything (obvious) that is not in the code above?
-3 I use "gda_meta_store_new_with_file" to open my (sqlite3) meta store
database. Is it possible that somehow it is mixing up the internal
(memory) database with the external one?

Any additional tips/hints?

Thanks in advance for any assistance.

Bas.


_______________________________________________
gnome-db-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-db-list

Reply via email to