Re: [gnome-db] Gda Column question.





2008/10/15 Bas Driessen <bas driessen xobas com>
On Thu, 2008-10-09 at 09:52 +0200, Vivien Malerba wrote:


2008/10/8 Bas Driessen <bas driessen xobas com>

On Thu, 2008-10-02 at 20:50 +0200, Vivien Malerba wrote:


2008/10/1 Vivien Malerba <vmalerba gmail com>


2008/10/1 Daniel Espinosa <esodan gmail com>

In V4 you have GdaMetaStore to get columns and others db objects information. In order to get that information you have to do:

- Get a GdaMetaStore from a GdaConnnection using gda_connection_get_meta_store
- Update meta information gda_connection_update_meta_store
- Get columns information using gda_meta_store_extract and use GdaDataModel API to access to the required information

The required SQL to do it could be:

SELECT *  FROM _columns WHERE table_schema = ##schema::string AND table_catalog = ##catalog::string AND table_name = ##table::string

For gda_column_get_scale you can use numeric_scale column; sorry but don't know about defined_size.


You can use the numeric_precision or numeric_scale columns, with both these columns you should have all the characteristics of a column.
Now, this was to get meta data information. I agree that I've been a bit too quick in simplifying the GdaColumn API and I should bring back the API which handles numeric presicion and scale, but probably not as it was. Let me think about it.


In Rev #3221, I've added functions to set any attribute (as (name, value) pairs) to GdaColumn, GdaHolder and the GdaMetaTableColumn, which means those 3 types of objects (well the last one is not an object) can pass onto the other attributes. For example when creating a GdaDataModelIter, the attributes for each GdaHolder are set from those of the corresponding GdaColumn of the data model the iter is for.

Looking at these new gda_column_get/set_attribute functions. Still it is not clear to me how to get the size and scale of a column. Again, in V3,  I just use gda_column_get_defined_size and gda_column_get_scale and done. Can you please give a small example/snippet how to use this with these new functions?  How/where can I find out about the attribute names?


const GValue *value;
value = gda_column_get_attribute (column, GDA_ATTRIBUTE_NUMERIC_SCALE);
You can use any of the predefined attribute names in gda-attributes-manager.h

However, these attributes are not yet AFAIK set by any database provider.


Ok, this appears to work. Thanks for that Vivien. As you expected, it has not been implemented yet for the providers.

Can you perhaps give me some (rough) pointers of how/where to implement this GDA_ATTRIBUTE_NUMERIC_SCALE (and other attributes) for some of the database providers? Is there a similar situation in place already that I can use as an example?

This should be done using, for each database provider, the capabilities of the native database API, ig they support this, or as it's probably the case most of the time using the meta data associated to the connection which is used when executing the SELECT statement, which is done in  gda-data-model-iter.c:set_holders_properties_from_select_stmt(), but needs to be completed (and I will probably move this code to the GdaDataSelect object to set the column's properties but the code will be very similar as there is a mapping between the GdaHolders in an iterator and the GdaColumn of the data model the iterator is for).

Regards,

Vivien



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