Re: [gnome-db] Introspection - DataModel structures



> On Sun, 2004-04-25 at 17:46 +0200, Murray Cumming wrote:
>> On Fri, 2004-04-09 at 08:50, Vivien wrote:
>> > Yes, the number and type of columns returned for each schema should be
>> the
>> > same for every provider (note that this is not yet the case and some
>> work
>> > needs to be done on some of the providers).
>> >
>> > The "format" of each returned data model for each schema is documented
>> in
>> > libgda's doc (such as
>> > http://www.gnome-db.org/docs/libgda/libgda-provider-class.html#LIBGDA-PROVIDER-GET-SCHEMA).
>>
>> Are the types documented anywhere. For instance, when getting the
>> GDA_CONNECTION_SCHEMA_FIELDS, the field type column is of type
>> GDA_VALUE_TYPE_STRING, but I would expect it to be GDA_VALUE_TYPE_TYPE.
>>
>> This looks like a bug to me.
>>
> it should be GDA_VALUE_TYPE_TYPE, if the docs say _STRING, it's a bug
> there. AFAIK, all providers use the _TYPE one.

No, it's not a bug. The column returns the type of the corresponding field
as understood by the DBMS, which is not the GDA type. The corresponding
GDA type, for a DBMS data type is given by the SCHEMA_TYPES schema.

For example Postgres has a data type for storing IP adresses and the
returned data type is 'cidr' for such fields; the corresponding GDA type
is STRING.

It is necessary to keep that distinction for Mergeant at least (because of
the plugin system which is really usefull only if the DBMS type is known).

If you need to have the GDA type, then either you first get the
SCHEMA_TYPES schema and keep a correspondance table, or you can use
libmergeant which does it, or a new column could be added to the
SCHEMA_FIELDS schema to return the GDA type.

>
>> > To cope with this problem in libmergeant (which uses get_schema a lot
>> to
>> > build and maintain its dictionnary), I've created some functions which
>> > check that the returned data model in in the right "format" (see the
>> > mg_resultset_check_data_model() in mg-result-set.[ch ]).
>>
>> Yes, looking at the use of that function, mergeant does seem to expect a
>> GDA_VALUE_TYPE_STRING, rather than a GDA_VALUE_TYPE_TYPE.
>>
> hmm, this seems wrong. Vivien?

No, it's correct, see the explanation above.

Cheers,

Vivien



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