• Sylvain Thénault's avatar
    [source storage] refactor source sql generation and results handling to allow... · ad91f93bbb93
    Sylvain Thénault authored
    [source storage] refactor source sql generation and results handling to allow repository side callbacks
    
    for instance with the BytesFileSystemStorage, before this change:
    * fspath, _fsopen function were stored procedures executed on the database
      -> files had to be available both on the repository *and* the database host
    * we needed implementation for each handled database
    
    Now, those function are python callbacks executed when necessary on the
    repository side, on data comming from the database.
    
    The litle cons are:
    * you can't do anymore restriction on mapped attributes
    * you can't write queries which will return in the same rset column
      some mapped attributes (or not mapped the same way) / some not
    
    This seems much acceptable since:
    * it's much more easy to handle when you start having the db on another host
      than the repo
    * BFSS works seemlessly on any backend now
    * you don't bother that much about the cons (at least in the bfss case):
      you usually don't do any restriction on Bytes...
    
    Bonus points: BFSS is more efficient (no queries under the cover as it
    was done in the registered procedure) and we have a much nicer/efficient
    fspath implementation.
    
    IMO, that rocks :D
    
    --HG--
    branch : stable
    ad91f93bbb93