[Acedb-soft] aql error 810, Inconsistent value types

Dave Matthews via acedb%40net.bio.net (by matthews from greengenes.cit.cornell.edu)
Wed Mar 14 12:25:43 EST 2007


Hi jean,

> f is type float
> g is type tag
> 
> it means that in m[2] you had something heterogeneous
> the only way i see to produce that is that the model
> allowed either float or tag at this position

Aha!  You nailed it.  I have

?Locus  Location Map ?Map #map_position

?map_position Position Float
              Ends Left Float
                   Right Float

Changing the query to this fixes the problem:

select l, m, p
from s in class sequence where exists_tag s->dna_homol,
     l in s->probe->locus,
     m in l->map,
     p in m[Position]


> 1) do you have a suggestion to improve the error message

How about 
"Value type was 'tag' and now the field evaluates to type 'float' in row 19822"

Thanks for the help!!
- Dave


> From mieg from ncbi.nlm.nih.gov  Wed Mar 14 12:29:04 2007
> 
> >What does this error message mean?
> >
> >// AQL error 810 around: 'l, m, p from s in'
> >//                              ^
> >// Inconsistent value types in table column 3
> >// Value type was 'g' and now the field evaluates to type 'f' in row 19822
> >
> >What are value types g and f?
> >
> f is type float
> g is type tag
> 
> it means that in m[2] you had something heterogeneous
> the only way i see to produce that is that the model
> allowed either float or tag at this position
> 
> either you did a read-model during the lifetime of the database
> this does not erase the data, the dumper still works
> the purpose of this is that we do not lose data in acedb
> by reading a wrong model, we just loose access via queries
> (direct query, table maker, aql, aceperl)
> but the dumper survives
> 
> or the schema is complex and you should select on m[1]
> to be sure that m[2] is a float
> 
> Maybe te schema is
> 
> ?Sequence Map #map_info
> 
> #map_info Position float
>           Neighbours Left ?Sequence
>                      Right ?Sequence
>                      
>                   
> .ace file:
> 
> Sequence s1
> Map 2 Position 3.2
> 
> Sequence s2
> Map 4 Neighbours Left s1
> 
> 
> ==
> 
> not the aql query will give a float 3.2 for s1
> and a tag Left (type 'g') for s2
> 
> Table maker is this case would have imposed 'float'
> and just export a void cell,
> aql reports a detailled error message, which is nice,
> although a bit cryptic, sorry
>  
> 1) do you have a suggestion to improve the error message
> 2) the solu is to select on m[1]==Position
>    or on selecting  p from m.Position or maybe m[Position]
>    (i am never sure of the aql syntax, but something like this
>    works)
>    naming tags is more secure than offsets if you access
>    constructed types, and more robust if the schema changes in the
>    future and gets enriched
>    
>    
> 
> Please let me know if the explanation is clear enough
> 
> 
> >This comes from the following aql query, explorable at 
> >http://grain.jouy.inra.fr/cgi-bin/ace/custom/aqlInterface/graingenes :
> >
> >select l, m, p
> >from s in class sequence where exists_tag s->dna_homol,
> >     l in s->probe->locus,
> >     m in l->map,
> >     p in m[2]
> >
> >
> >I routinely aql out every map position in the database using a different
> >query, but it gets them all with no errors, so this is strange.
> >
> >This is using ace4_9t.
> >
> >- Dave



More information about the Acedb mailing list