On Tue, 2012-05-15 at 19:51 -0400, Adam Tauno Williams wrote: 
> On Tue, 2012-05-15 at 16:27 -0400, Michael Bayer wrote: 
> > Could be tough, you'd need to test it against the informix dbapi directly, 
> using bound parameters, to see what it needs.   Could be a typing issue.
> Ok, I got a response from an Informix guru and maintainer of the
> informix dbapi.
> <quote>
> I see two different approaches around this issue:
> * Use literal values instead of bound parameters in the projection
> clause.
> * If you must use bound parameters, use type casts for the parameters
> that are used in the projection clause. For example: CASE WHEN
> (xrefr.xr_supersede = :1) THEN :2::int ELSE :3::int
> </quote>
> I assume this same kind of issue must be addressed in other dialects???

I've constructed a sequence that seems to work perfectly.

class XrefrRecord(Base):
                     
    __tablename__    = 'xrefr'
    record_id        = Column("xr_serial_no", Integer, primary_key=True)
    sku              = Column("xr_stock_no", Integer, nullable=False)
    ....
    list_price       = Column("xr_list_price", Float(precision=3))
    _supersede       = Column("xr_supersede", String(1))
    is_supersede     = column_property( 
                           case( [ ( _supersede == 'S', 
                                     literal_column('1', Integer) ) ],
                                 else_ = literal_column('0', Integer) 
                               ) 
                       )
  
    __mapper_args__     = { 'polymorphic_on': is_supersede }


class Cross(XrefrRecord):  
    __mapper_args__ = {'polymorphic_identity': 0}  
    
        
class Supersede(XrefrRecord):  
    __mapper_args__ = {'polymorphic_identity':

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to