Re: [gnome-db] Partial Meta Store update.





2009/7/19 Bas Driessen <bas driessen xobas com>
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.
 


A partial update to update ALL the tables works fine:

        g_print ("\nPartial metastore update for all the tables...\n");
        GdaMetaContext mcontext2 = {"_tables", 0, NULL, NULL};
        if (!gda_connection_update_meta_store (connection, &mcontext2, &error))
                return -1;


The "full" update to update everything also works fine.

Therefore my question, are there any issues with the "single" table update? Also, is this supposed to work if I DELETE a table or is it only when new tables are added?

It should work fine even with removed tables (the table which has been removed won't appear in the meta store afterwards).

Vivien



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]