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
