# [0.57.0](
v0.56.0...v0.57.0) (2025-11-13)
### Bug Fixes
* Improve trino to feast type mapping with (real,varchar,timestamp,decimal) ([
#5691](
#5691)) ([
f855ad2](
f855ad2))
* Materialize API - ODFV views not looked-up (thinks views non existant) - crashes materialize ([
#5716](
#5716)) ([
1b050b3](
1b050b3))
* Support historical feature retrieval with start_date/end_date in RemoteOfflineStore ([
#5703](
#5703)) ([
ad32756](
ad32756))
* Thread safe Clickhouse offline store ([
#5710](
#5710)) ([
5f446ed](
5f446ed))
### Features
* Add annotations to cronjob CRDs ([
#5701](
#5701)) ([
be6e6c2](
be6e6c2))
* Add batch commit mode for MySQL OnlineStore ([
#5699](
#5699)) ([
3cfe4eb](
3cfe4eb))
* Add possibility to materialize only latest values, to increase performance ([
#5713](
#5713)) ([
8d77b72](
8d77b72))
* Support table format: Iceberg, Delta, and Hudi ([
#5650](
#5650)) ([
2915ad1](
2915ad1))
What this PR does / why we need it:
PR adjusts the Clickhouse offline store to be thread safe. Issue with the current implementation results in the issue as follows:
raise ProgrammingError('Attempt to execute concurrent queries within the same session.'
if you bombard it - feast serve - with concurrent requests, the under the hood threadpool is more than 1 thread by default (arbitrary number decided by uvicorn).
as per Clickhouse docs here:
Because each query or insert executed maintains state in its own QueryContext or InsertContext object, respectively, these helper objects are not thread-safe, and they should not be shared between multiple processing streams.
Solution - using threading.local() we can initialize a per-thread container for variables, to make sure we re-use the client on subsequent calls. Can we just drop the caching? Not really, unless the store is heavily refactored.
Which issue(s) this PR fixes:
No issue raised yet.
Misc