> To Pavel: My application reads the column types out in order to pretty
> print the values - as mentioned by Tom - but also to generate a dialog
> for entering new data (of course combined with INSTEAD OF TRIGGERs).

So as I see it: you have some universal code for displaying and
inputing data. And you don't want to lessen scalability of your
application by hard-coding the relation between column names and their
data types. So you can create additional table that will contain this
information. And I think this solution is better than just relying on
declared type of columns - more straightforward and more
understandable by somebody coming to your project in the future.


Pavel

On Thu, May 6, 2010 at 7:11 PM, Stefan Keller <sfkel...@gmail.com> wrote:
> Thank you, Tom and Dan, for your constructive answers.
>
> To Pavel: My application reads the column types out in order to pretty
> print the values - as mentioned by Tom - but also to generate a dialog
> for entering new data (of course combined with INSTEAD OF TRIGGERs).
>
> I understand that it's difficult to implement result-types for
> expressions in general. To me it would be enough if there would be at
> least one way to assign result-types with a CAST "wrapper" as I have
> mentioned before.
>
> Does anybody know whom to present this proposal in order remedy this
> current inconsistency in SQLite? sqlite-dev?
>
> In the meantime I thought of a hack and to assign the result-type by
> hand in the data dictionary after having created the VIEW.
> Would this be a feasible work around?
>
> Yours, S.
>
> 2010/5/6 BareFeetWare <list....@tandb.com.au>:
>> On 06/05/2010, at 2:51 PM, Dan Bishop wrote:
>>
>>> BareFeetWare wrote:
>>>>
>>
>>>> I've had the same issue. In the end I had to parse my view functions in my 
>>>> own code and look for functions that give a particular type of result. So, 
>>>> for instance, round() gives an integer, round(..., 2) gives a real, 
>>>> concat() gives text. I also look for a cast(... as type) to use that 
>>>> declared type. It's fiddly and I would have hoped SQLite would have at 
>>>> least declared the type if a cast was present, but it seems not.
>>>>
>>
>>> A CAST expression could be assigned a declared type
>>
>> Yes, that should be fairly easy to do in SQLite, simpler than my adding it 
>> in my own code (which then requires my own parser - not a trivial exercise).
>>
>>> but it would be difficult to implement it for expressions in general.  Not 
>>> only would you have to declare a type for every function
>>
>> Yes, probably half the functions don't have a consistently returned type (eg 
>> length, concat). The ones that don't (eg coalesce) should just be left to 
>> return a null (unknown) type. The schema developer can simply wrap those 
>> expressions in a cast if they want a predetermined output type.
>>
>>> but you'd have to do it for operators as well, and what type should A * B 
>>> be if A is "SMALLINT" and B is "UINT"?
>>
>> I hadn't thought of operators. As far as I know, mathematical operators (* / 
>> + -) only work with integers and reals, Perhaps the result type could be set 
>> to "numeric" or some other superclass. Or, to get real fancy, if the two 
>> operands are declared integers, then the result is an integer; if one is 
>> real then the result is real. AFAIK SMALLINT and UINT are both treated by 
>> SQLite as integer, so the result would be an integer.
>>
>>> Should relational operators have a declared type of BOOLEAN?
>>
>> Good idea.
>>
>> Tom
>> BareFeetWare
>>
>>  --
>> Comparison of SQLite GUI tools:
>> http://www.tandb.com.au/sqlite/compare/?ml
>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to