Christian,

Would it be possible to leave the columns as text then coerce at the time the 
data is read from the database?  In other words, convert the result of the 
python expression to a string and store the string in the database.  Then, when 
the result is needed, coerce the string to a more suitable type.  In other 
words, defer when the type needs to be known until the value is used.


-----Original Message-----
From: [email protected] 
[mailto:[email protected]] On Behalf Of Christian Schmidt
Sent: Monday, October 19, 2009 12:12 PM
To: Discussion of IronPython
Subject: Re: [IronPython] Type analysis of expression

Hi all,

thanks for your discussion.

Actually I'm having an in-memory table of strongly typed columns. The 
user can provide per-row (python-)expressions as additional columns. Now 
if the user wants his result to be exported to a database (e.g. SQL 
Server or Oracle) I need to set a type for each column - also for the 
expression columns.

I thought there might be a way to figure out the return type in a 
similar way for example Boo (boo.codehaus.org) does at compile time. 
When an expression is parsed at runtime, the interpreter also needs to 
decide which .NET-functions to call. For strongly typed input these 
functions should normally have typed return values... Wouldn't this work 
somehow?

If the Boo way is not possible then the only option is evaluating the 
expressions for some random rows and coerce to a common type. What would 
be the rules? int->float->string is trivial, but what about decimal, 
int64, double, ...? I assume python must have implemented these rules 
somewhere. How would one have to implement the general function:

Type GetCoercedType(IEnumerable<object> list) { ... }

Thanks,
Christian



_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to